From 4214c920a4796a061537f82ee82227c0a5e5a75f Mon Sep 17 00:00:00 2001 From: Alexandr Date: Thu, 4 Sep 2025 23:50:46 +0300 Subject: [PATCH 1/5] Fixed UI and labels, added connection messages locally, added RU language --- .gitignore | 2 + CS2M.API/CS2M.API.csproj | 2 +- CS2M.BaseGame/CS2M.BaseGame.csproj | 4 +- CS2M.Test/CS2M.Test.csproj | 14 +- CS2M.UI/package-lock.json | 170 ------- CS2M.UI/package.json | 2 +- CS2M.UI/src/extends/main-menu.tsx | 2 +- CS2M.UI/src/screens/host-game-menu.tsx | 14 +- CS2M.UI/src/screens/join-game-menu.tsx | 24 +- CS2M.UI/src/util/input-field.tsx | 2 +- CS2M.UI/types/api.d.ts | 63 +++ CS2M.UI/types/bindings.d.ts | 472 +++++++++++++----- CS2M.UI/types/cohtml.d.ts | 351 +++++++------ CS2M.UI/types/input.d.ts | 215 +++++--- CS2M.UI/types/l10n.d.ts | 19 +- CS2M.UI/types/ui.d.ts | 112 +++-- CS2M.UI/types/utils.d.ts | 1 + CS2M.UI/webpack.config.js | 7 +- CS2M/CS2M.csproj | 42 +- CS2M/CS2M.csproj.user | 9 + CS2M/CS2M.txt | 144 ++++++ CS2M/Log.cs | 7 + CS2M/Networking/LocalPlayer.cs | 15 +- CS2M/Networking/NetworkInterface.cs | 9 +- CS2M/Networking/NetworkManager.cs | 19 +- CS2M/UI/UISystem.cs | 80 ++- .../vs/.vstemplates.global.etag | 1 + TemplateEngineHost/vs/.vstemplates.local | 11 + TemplateEngineHost/vs/.vstemplates.local.etag | 1 + TemplateEngineHost/vs/templatecache.json | 1 + lang/en-US.json | 3 +- lang/ru-RU.json | 28 ++ server_err_on_Join.txt | 47 ++ 33 files changed, 1274 insertions(+), 619 deletions(-) create mode 100644 CS2M/CS2M.csproj.user create mode 100644 CS2M/CS2M.txt create mode 100644 TemplateEngineHost/vs/.vstemplates.global.etag create mode 100644 TemplateEngineHost/vs/.vstemplates.local create mode 100644 TemplateEngineHost/vs/.vstemplates.local.etag create mode 100644 TemplateEngineHost/vs/templatecache.json create mode 100644 lang/ru-RU.json create mode 100644 server_err_on_Join.txt diff --git a/.gitignore b/.gitignore index 1b9bb8b..d37eec4 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ assemblies/*.dll CS2M/Library *.sln.DotSettings.user *.drawio.bkp +*.url +/.vs diff --git a/CS2M.API/CS2M.API.csproj b/CS2M.API/CS2M.API.csproj index 01e084c..5aa94e6 100644 --- a/CS2M.API/CS2M.API.csproj +++ b/CS2M.API/CS2M.API.csproj @@ -1,7 +1,7 @@  - net472 + net48 diff --git a/CS2M.BaseGame/CS2M.BaseGame.csproj b/CS2M.BaseGame/CS2M.BaseGame.csproj index bad228d..d504db1 100644 --- a/CS2M.BaseGame/CS2M.BaseGame.csproj +++ b/CS2M.BaseGame/CS2M.BaseGame.csproj @@ -1,14 +1,14 @@  - net472 + net48 - + diff --git a/CS2M.Test/CS2M.Test.csproj b/CS2M.Test/CS2M.Test.csproj index d8e680f..c7b8e1e 100644 --- a/CS2M.Test/CS2M.Test.csproj +++ b/CS2M.Test/CS2M.Test.csproj @@ -1,7 +1,7 @@ - + - net472 + net48 false true @@ -11,11 +11,11 @@ - - - - - + + + + + diff --git a/CS2M.UI/package-lock.json b/CS2M.UI/package-lock.json index 8b774fd..1ab7e8f 100644 --- a/CS2M.UI/package-lock.json +++ b/CS2M.UI/package-lock.json @@ -135,176 +135,6 @@ } } }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.6.tgz", - "integrity": "sha512-bpggpx/BfLFyy48aUKq1PsNUxb7J6CINlpAUk0V4yXfmGnpZH80Gp1pM3GkFDQyCfq7L7IpjPrIjWQwCrL4hYw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.6.tgz", - "integrity": "sha512-vJn+/ZuBTg+vtNkcmgZdH6FQpa0hFVdnB9bAeqYwKkyqP15zaPe6jfC+qL2y/cIeC7ASvHXEKrnCZgBLxfVQ9w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.6.tgz", - "integrity": "sha512-hEmYcB/9XBAl02MtuVHszhNjQpjBzhk/NFulnU33tBMbNZpy2TN5yTsitezMq090QXdDz8sKIALApDyg07ZR8g==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.6.tgz", - "integrity": "sha512-/UCYIVoGpm2YVvGHZM2QOA3dexa28BjcpLAIYnoCbgH5f7ulDhE8FAIO/9pasj+kixDBsdqewHfsNXFYlgGJjQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.6.tgz", - "integrity": "sha512-LGQsKJ8MA9zZ8xHCkbGkcPSmpkZL2O7drvwsGKynyCttHhpwVjj9lguhD4DWU3+FWIsjvho5Vu0Ggei8OYi/Lw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.6.tgz", - "integrity": "sha512-10JL2nLIreMQDKvq2TECnQe5fCuoqBHu1yW8aChqgHUyg9d7gfZX/kppUsuimqcgRBnS0AjTDAA+JF6UsG/2Yg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.6.tgz", - "integrity": "sha512-EGyjFVzVY6Do89x8sfah7I3cuP4MwtwzmA6OlfD/KASqfCFf5eIaEBMbajgR41bVfMV7lK72lwAIea5xEyq1AQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.6.tgz", - "integrity": "sha512-gfW9AuXvwSyK07Vb8Y8E9m2oJZk21WqcD+X4BZhkbKB0TCZK0zk1j/HpS2UFlr1JB2zPKPpSWLU3ll0GEHRG2A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.6.tgz", - "integrity": "sha512-ZuQm81FhhvNVYtVb9GfZ+Du6e7fZlkisWvuCeBeRiyseNt1tcrQ8J3V67jD2nxje8CVXrwG3oUIbPcybv2rxfQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.6.tgz", - "integrity": "sha512-UagPb7w5V0uzWSjrXwOavGa7s9iv3wrVdEgWy+/inm0OwY4lj3zpK9qDnMWAwYLuFwkI3UG4Q3dH8wD+CUUcjw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", diff --git a/CS2M.UI/package.json b/CS2M.UI/package.json index 718d349..c122c01 100755 --- a/CS2M.UI/package.json +++ b/CS2M.UI/package.json @@ -35,4 +35,4 @@ "webpack": "^5.74.0", "webpack-cli": "^4.10.0" } -} +} \ No newline at end of file diff --git a/CS2M.UI/src/extends/main-menu.tsx b/CS2M.UI/src/extends/main-menu.tsx index c3f7fc8..960c017 100755 --- a/CS2M.UI/src/extends/main-menu.tsx +++ b/CS2M.UI/src/extends/main-menu.tsx @@ -40,7 +40,7 @@ export const PauseMenuCSMExtend : ModuleRegistryExtend = (Component) => { if (props.src == 'Media/Glyphs/ArrowRight.svg') { return ( <> - Multiplayer + Multiplayer [CS2M] {children} diff --git a/CS2M.UI/src/screens/host-game-menu.tsx b/CS2M.UI/src/screens/host-game-menu.tsx index 64ca051..d5699ba 100644 --- a/CS2M.UI/src/screens/host-game-menu.tsx +++ b/CS2M.UI/src/screens/host-game-menu.tsx @@ -48,7 +48,7 @@ export const HostGameSettings = () => {
- + Some info from server
@@ -78,11 +78,11 @@ export const HostGameMenu = () => { let details = []; let detailsTitle; if (enabled) { - detailsTitle = translate("CS2M.UI.Compatibility"); + detailsTitle = translate("CS2M.UI.Compatibility", "Compatibility"); for (let support of modSupports) { let support_str = translate("CS2M.UI.Compatibility[" + support.support + "]", support.support); if (support.client_side) { - support_str = translate("CS2M.UI.ClientSide"); + support_str = translate("CS2M.UI.ClientSide", "Client Side"); } let color; switch (support.support) { @@ -102,21 +102,21 @@ export const HostGameMenu = () => { details.push(
{support_str}
); } } else { - detailsTitle = status ?? translate("CS2M.UI.StartingServer"); + detailsTitle = status ?? translate("CS2M.UI.StartingServer", "StartingServer"); } - let footer = {translate("CS2M.UI.StartServer")}; + let footer = {translate("CS2M.UI.StartServer", "Start Server")}; let content; if (visible) { content = ( - +
-
{translate("CS2M.UI.HostGame")}
+
{translate("CS2M.UI.HostGame", "Host Game")}
diff --git a/CS2M.UI/src/screens/join-game-menu.tsx b/CS2M.UI/src/screens/join-game-menu.tsx index 705daa3..d4697bc 100644 --- a/CS2M.UI/src/screens/join-game-menu.tsx +++ b/CS2M.UI/src/screens/join-game-menu.tsx @@ -12,6 +12,9 @@ export const ipAddress = bindValue(mod.id, 'JoinIpAddress'); export const port = bindValue(mod.id, 'JoinPort'); export const username = bindValue(mod.id, 'Username'); export const joinGameEnabled = bindValue(mod.id, 'JoinGameEnabled'); +export const hostGameEnabled = bindValue(mod.id, 'HostGameEnabled'); + +export const listNetworkStates = bindValue(mod.id, 'uiNetworkStates'); export function hideJoinGame() { trigger(mod.id, "HideJoinGameMenu"); @@ -41,6 +44,8 @@ export const JoinGameSettings = () => { let usernameValue = useValue(username); let enabled = useValue(joinGameEnabled); + let outNetworkStates = useValue(listNetworkStates); + const { translate } = useLocalization(); const focusChange = () => {}; @@ -57,8 +62,8 @@ export const JoinGameSettings = () => { onChange={(val: any) => {setVal("SetUsername", val)}}>
-
- +
+ {outNetworkStates}
@@ -79,6 +84,7 @@ export const JoinGameMenu = () => { const visible : boolean = useValue(joinMenuVisible); const modSupports = useValue(modSupport); const enabled = useValue(joinGameEnabled); + const enabled2 = useValue(hostGameEnabled); const { translate } = useLocalization(); @@ -87,11 +93,11 @@ export const JoinGameMenu = () => { let details = []; let detailsTitle; if (enabled) { - detailsTitle = translate("CS2M.UI.Compatibility"); + detailsTitle = translate("CS2M.UI.Compatibility", "Compatibility"); for (let support of modSupports) { let support_str = translate("CS2M.UI.Compatibility[" + support.support + "]", support.support); if (support.client_side) { - support_str = translate("CS2M.UI.ClientSide"); + support_str = translate("CS2M.UI.ClientSide", "Client Side"); } let color; switch (support.support) { @@ -111,24 +117,24 @@ export const JoinGameMenu = () => { details.push(
{support_str}
); } } else { - detailsTitle = translate("CS2M.UI.JoiningGame"); + detailsTitle = translate("CS2M.UI.JoiningGame", "Joining Game"); } let footer = <> - {translate("CS2M.UI.HostGame")} - {translate("CS2M.UI.JoinGame")} + {translate("CS2M.UI.HostChat", "Host Chat")} + {translate("CS2M.UI.JoinGame", "Join Game")} ; let content; if (visible) { content = ( - +
-
{translate("CS2M.UI.JoinGame")}
+
{translate("CS2M.UI.JoinGame", "Join_Game")}
diff --git a/CS2M.UI/src/util/input-field.tsx b/CS2M.UI/src/util/input-field.tsx index 52f951c..ca59d09 100644 --- a/CS2M.UI/src/util/input-field.tsx +++ b/CS2M.UI/src/util/input-field.tsx @@ -14,7 +14,7 @@ export const InputField = (props : any) => {
- {translate(props.label)} + {translate(props.label, props.label)}
diff --git a/CS2M.UI/types/api.d.ts b/CS2M.UI/types/api.d.ts index 64ae835..b6ace1a 100755 --- a/CS2M.UI/types/api.d.ts +++ b/CS2M.UI/types/api.d.ts @@ -1,9 +1,20 @@ declare module "cs2/api" { + import { MutableRefObject } from 'react'; + export interface ValueBinding { readonly value: T; subscribe(listener?: BindingListener): ValueSubscription; dispose(): void; } + export interface MapBinding { + getValue(key: K): V; + subscribe(key: K, listener?: BindingListener): ValueSubscription; + dispose(): void; + } + export interface EventBinding { + subscribe(listener: BindingListener): Subscription; + dispose(): void; + } export interface BindingListener { (value: T): void; } @@ -15,10 +26,62 @@ declare module "cs2/api" { setChangeListener(listener: BindingListener): void; } export export function bindValue(group: string, name: string, fallbackValue?: T): ValueBinding; + export export function bindLocalValue(initialValue: T): LocalValueBinding; + export export function bindMap(group: string, name: string, keyStringifier?: (key: K) => string): MapBinding; + export export function bindEvent(group: string, name: string): EventBinding; + export export function bindTrigger(group: string, name: string): () => void; + export export function bindTriggerWithArgs(group: string, name: string): T extends [ + ] ? unknown : (...args: T) => void; export export function trigger(group: string, name: string, ...args: any[]): void; export export function call(group: string, name: string, ...args: any[]): Promise; /** Subscribe to a ValueBinding. Return fallback value or throw an error if the binding is not registered on the C# side */ export export function useValue(binding: ValueBinding): V; + export export function useReducedValue(binding: ValueBinding, reducer: (current: T, next: V) => T, initial: T): T; + export export function useValueRef(binding: ValueBinding): MutableRefObject; + export export function useValueOnChange(binding: ValueBinding, onChange: (value: V, prevValue: V) => void, depth?: number): V; + export export function useMapValueOnChange(binding: MapBinding, key: K, onChange: (newValue: V) => void): V; + /** Subscribe to a MapBinding value. throw an error if the binding is not registered on the C# side */ + export export function useMapValue(binding: MapBinding, key: undefined): undefined; + export export function useMapValue(binding: MapBinding, key: K): V; + export export function useMapValues(binding: MapBinding, keys: K[]): V[]; + export class LocalValueBinding implements ValueBinding { + readonly listeners: ListenerRef[]; + disposed: boolean; + _value: T; + constructor(initialValue: T); + get registered(): boolean; + get value(): T; + subscribe: (listener?: BindingListener) => { + readonly value: T; + setChangeListener: (listener: BindingListener) => void; + dispose(): void; + }; + dispose: () => void; + update: (newValue: T) => void; + } + export class ListenerRef { + listener: BindingListener | undefined; + constructor(listener: BindingListener | undefined); + set: (listener: BindingListener) => void; + call: (newValue: T) => void; + } + // https://coherent-labs.com/Documentation/cpp-gameface/d1/dea/shape_morphing.html + // https://coherent-labs.com/Documentation/cpp-gameface/d4/d08/interface_morph_animation.html + export export interface HTMLImageElement { + getSrcSVGAnimation(): MorphAnimation | null; + } + export export interface Element { + getMaskSVGAnimation(): MorphAnimation | null; + } + export export interface MorphAnimation { + currentTime: number; + playbackRate: number; + play(): void; + pause(): void; + reverse(): void; + playFromTo(playTime: number, pauseTime: number, callback?: () => void): void; + } export {}; diff --git a/CS2M.UI/types/bindings.d.ts b/CS2M.UI/types/bindings.d.ts index 61ae738..72e10b3 100755 --- a/CS2M.UI/types/bindings.d.ts +++ b/CS2M.UI/types/bindings.d.ts @@ -76,17 +76,17 @@ declare module "cs2/bindings" { } export interface Chirp { entity: Entity; - sender: { - link: ChirpLink; - avatar: string | null; - randomIndex: number; - }; + sender: ChirpSender; date: number; messageId: string; links: ChirpLink[]; likes: number; liked: boolean; } + export interface ChirpSender { + entity: Entity; + link: ChirpLink; + } export interface ChirpLink { name: Name; target: string; @@ -258,6 +258,7 @@ declare module "cs2/bindings" { icon: string; color: Color; sources: BudgetSource[]; + active: boolean; } export interface BudgetSource { id: string; @@ -519,6 +520,7 @@ declare module "cs2/bindings" { Temperature = "temperature", NetElevation = "netElevation", ScreenFrequency = "screenFrequency", + Height = "height", Custom = "custom" } export enum LocElementType { @@ -554,13 +556,15 @@ declare module "cs2/bindings" { value: string | null; args: Record | null; } - export type NumericProperty = NumberProperty | Number2Property; + export type NumericProperty = NumberProperty | Number2Property | NumberRangeProperty; const NUMBER_PROPERTY = "Game.UI.Common.NumberProperty"; export interface NumberProperty { labelId: string; unit: Unit; value: number; signed: boolean; + icon?: string; + valueIcon?: string; } const NUMBER2_PROPERTY = "Game.UI.Common.Number2Property"; export interface Number2Property { @@ -568,11 +572,24 @@ declare module "cs2/bindings" { unit: Unit; value: Number2; signed: boolean; + icon?: string; + valueIcon?: string; + } + export interface NumberRangeProperty { + labelId: string; + unit: Unit; + minValue: number; + maxValue: number; + signed: boolean; + icon?: string; + valueIcon?: string; } const STRING_PROPERTY = "Game.UI.Common.StringProperty"; export interface StringProperty { labelId: string; valueId: string; + icon?: string; + valueIcon?: string; } export type Properties = { [NUMBER_PROPERTY]: NumberProperty; @@ -635,7 +652,9 @@ declare module "cs2/bindings" { IndustrialEfficiency = "IndustrialEfficiency", OfficeEfficiency = "OfficeEfficiency", PollutionHealthAffect = "PollutionHealthAffect", - HospitalEfficiency = "HospitalEfficiency" + HospitalEfficiency = "HospitalEfficiency", + IndustrialFishInputEfficiency = "IndustrialFishInputEfficiency", + IndustrialFishHubEfficiency = "IndustrialFishHubEfficiency" } export interface LocalModifierEffect { modifiers: LocalModifier[]; @@ -657,14 +676,209 @@ declare module "cs2/bindings" { providers: LeisureProvider[]; } export interface LeisureProvider { - type: string; + type: LeisureType; efficiency: number; } + export enum LeisureType { + Meals = "Meals", + Entertainment = "Entertainment", + Commercial = "Commercial", + CityIndoors = "CityIndoors", + Travel = "Travel", + CityPark = "CityPark", + CityBeach = "CityBeach", + Attractions = "Attractions", + Relaxation = "Relaxation", + Sightseeing = "Sightseeing" + } export interface AdjustHappinessEffect { targets: string[]; wellbeingEffect: number; healthEffect: number; } + export enum UISound { + selectItem = "select-item", + dragSlider = "drag-slider", + hoverItem = "hover-item", + expandPanel = "expand-panel", + grabSlider = "grabSlider", + selectDropdown = "select-dropdown", + selectToggle = "select-toggle", + focusInputField = "focus-input-field", + signatureBuildingEvent = "signature-building-event", + bulldoze = "bulldoze", + bulldozeEnd = "bulldoze-end", + relocateBuilding = "relocate-building", + mapTilePurchaseMode = "map-tile-purchase-mode", + mapTilePurchaseModeEnd = "map-tile-purchase-mode-end", + xpEvent = "xp-event", + milestoneEvent = "milestone-event", + economy = "economy", + chirpEvent = "chirp-event", + likeChirp = "like-chirp", + chirper = "chirper", + purchase = "purchase", + enableBuilding = "enable-building", + disableBuilding = "disable-building", + pauseSimulation = "pause-simulation", + resumeSimulation = "resume-simulation", + simulationSpeed1 = "simulation-speed-1", + simulationSpeed2 = "simulation-speed-2", + simulationSpeed3 = "simulation-speed-3", + togglePolicy = "toggle-policy", + takeLoan = "take-loan", + removeItem = "remove-item", + toggleInfoMode = "toggle-info-mode", + takePhoto = "take-photo", + tutorialTriggerCompleteEvent = "tutorial-trigger-complete-event", + selectRadioNetwork = "select-radio-network", + selectRadioStation = "select-radio-station", + generateRandomName = "generate-random-name", + decreaseElevation = "decrease-elevation", + increaseElevation = "increase-elevation", + selectPreviousItem = "select-previous-item", + selectNextItem = "select-next-item", + openPanel = "open-panel", + closePanel = "close-panel", + openMenu = "open-menu", + closeMenu = "close-menu", + clickDisableButton = "click-disable-button" + } + export class FocusSymbol { + readonly debugName: string; + readonly r: number; + constructor(debugName: string); + toString(): string; + } + const FOCUS_DISABLED: FocusSymbol; + const FOCUS_AUTO: FocusSymbol; + export type FocusKey = typeof FOCUS_DISABLED | typeof FOCUS_AUTO | UniqueFocusKey; + export type UniqueFocusKey = FocusSymbol | string | number; + export type Action = () => void | boolean; + export type Action1D = (value: number) => void | boolean; + export interface InputActionsDefinition { + "Move Horizontal": Action1D; + "Change Slider Value": Action1D; + "Change Tool Option": Action1D; + "Change Value": Action1D; + "Change Line Schedule": Action1D; + "Select Popup Button": Action1D; + "Move Vertical": Action1D; + "Switch Radio Station": Action1D; + "Scroll Vertical": Action1D; + "Scroll Assets": Action1D; + "Select": Action; + "Purchase Dev Tree Node": Action; + "Select Chirp Sender": Action; + "Save Game": Action; + "Overwrite Save": Action; + "Confirm": Action; + "Expand Group": Action; + "Collapse Group": Action; + "Select Route": Action; + "Remove Operating District": Action; + "Upgrades Menu": Action; + "Purchase Map Tile": Action; + "Unfollow Citizen": Action; + "Like Chirp": Action; + "Unlike Chirp": Action; + "Enable Info Mode": Action; + "Disable Info Mode": Action; + "Toggle Tool Color Picker": Action; + "Cinematic Mode": Action; + "Photo Mode": Action; + "Focus Citizen": Action; + "Unfocus Citizen": Action; + "Focus Line Panel": Action; + "Focus Occupants Panel": Action; + "Focus Info Panel": Action; + "Close": Action; + "Back": Action; + "Leave Underground Mode": Action; + "Leave Info View": Action; + "Leave Map Tile View": Action; + "Jump Section": Action1D; + "Switch Tab": Action1D; + "Switch Option Section": Action1D; + "Switch DLC": Action1D; + "Switch Ordering": Action1D; + "Switch Radio Network": Action1D; + "Change Time Scale": Action1D; + "Switch Page": Action1D; + "Default Tool": Action; + "Default Tool UI": Action; + "Tool Options": Action; + "Switch Toolmode": Action; + "Toggle Snapping": Action; + "Toggle Contour Lines": Action; + "Capture Keyframe": Action; + "Reset Property": Action; + "Toggle Property": Action; + "Previous Tutorial Phase": Action; + "Continue Tutorial": Action; + "Finish Tutorial": Action; + "Close Tutorial": Action; + "Focus Tutorial List": Action; + "Start Next Tutorial": Action; + "Pause Simulation": Action; + "Resume Simulation": Action; + "Switch Speed": Action; + "Speed 1": Action; + "Speed 2": Action; + "Speed 3": Action; + "Bulldozer": Action; + "Exit Underground Mode": Action; + "Enter Underground Mode": Action; + "Increase Elevation": Action; + "Decrease Elevation": Action; + "Change Elevation": Action1D; + "Advisor": Action; + "Quicksave": Action; + "Quickload": Action; + "Focus Selected Object": Action; + "Hide UI": Action; + "Map Tile Purchase Panel": Action; + "Info View": Action; + "Progression Panel": Action; + "Economy Panel": Action; + "City Information Panel": Action; + "Statistic Panel": Action; + "Transportation Overview Panel": Action; + "Notification Panel": Action; + "Chirper Panel": Action; + "Lifepath Panel": Action; + "Event Journal Panel": Action; + "Radio Panel": Action; + "Photo Mode Panel": Action; + "Take Photo": Action; + "Relocate Selected Object": Action; + "Toggle Selected Object Active": Action; + "Delete Selected Object": Action; + "Toggle Selected Object Emptying": Action; + "Toggle Selected Lot Edit": Action; + "Toggle Follow Selected Citizen": Action; + "Toggle Traffic Routes": Action; + "Pause Menu": Action; + "Load Game": Action; + "Start Game": Action; + "Save Options": Action; + "Switch User": Action; + "Unset Binding": Action; + "Reset Binding": Action; + "Switch Savegame Location": Action1D; + "Show Advanced": Action; + "Hide Advanced": Action; + "Select Directory": Action; + "Search Options": Action; + "Clear Search": Action; + "Credit Speed": Action1D; + "Debug UI": Action; + "Debug Prefab Tool": Action; + "Debug Change Field": Action1D; + "Debug Multiplier": Action1D; + } + export type InputAction = keyof InputActionsDefinition; + export type InputActionName = InputAction | string; export enum WidgetType { Column = "Game.UI.Widgets.Column", Row = "Game.UI.Widgets.Row", @@ -708,8 +922,10 @@ declare module "cs2/bindings" { Bounds2InputField = "Game.UI.Widgets.Bounds2InputField", Bounds3InputField = "Game.UI.Widgets.Bounds3InputField", Bezier4x3Field = "Game.UI.Widgets.Bezier4x3Field", + RangedSliderField = "Game.UI.Widgets.RangedSliderField", StringInputField = "Game.UI.Widgets.StringInputField", ColorField = "Game.UI.Widgets.ColorField", + GradientSliderField = "Game.UI.Widgets.GradientSliderField", AnimationCurveField = "Game.UI.Widgets.AnimationCurveField", EnumField = "Game.UI.Widgets.EnumField", FlagsField = "Game.UI.Widgets.FlagsField", @@ -744,6 +960,9 @@ declare module "cs2/bindings" { selected: boolean; disabled: boolean; } + export interface WarningSign { + warning?: boolean; + } export enum TooltipPos { Title = 0, Container = 1 @@ -754,14 +973,19 @@ declare module "cs2/bindings" { export interface Field extends BaseWidget, Named, TooltipTarget, WidgetTutorialTarget { value: T; } - export type ToggleField = Field; - export interface IntInputField extends Field { + export interface MinMaxField extends Field { + min?: T; + max?: T; + } + export interface ToggleField extends Field, WarningSign { + } + export interface IntInputFieldBase extends Field { min?: number; max?: number; step?: number; stepMultiplier?: number; } - export interface IntSliderField extends Field { + export interface IntSliderFieldBase extends Field { min: number; max: number; step?: number; @@ -769,16 +993,19 @@ declare module "cs2/bindings" { unit?: string | null; scaleDragVolume?: boolean; updateOnDragEnd: boolean; + } + export type IntInputField = IntInputFieldBase; + export interface IntSliderField extends IntSliderFieldBase, WarningSign { separateThousands?: boolean; signed?: boolean; } - export interface FloatInputField extends Field { - min?: number; - max?: number; + export interface FloatInputFieldBase extends MinMaxField { fractionDigits?: number; step?: number; stepMultiplier?: number; } + export interface FloatInputField extends FloatInputFieldBase { + } export interface FloatSliderFieldBase extends Field { min: number; max: number; @@ -788,7 +1015,7 @@ declare module "cs2/bindings" { scaleDragVolume?: boolean; updateOnDragEnd: boolean; } - export interface FloatSliderField extends FloatSliderFieldBase { + export interface FloatSliderField extends FloatSliderFieldBase, WarningSign { separateThousands?: boolean; maxValueWithFraction?: number; signed?: boolean; @@ -797,7 +1024,7 @@ declare module "cs2/bindings" { hdr?: boolean; showAlpha: boolean; } - export interface EnumField extends Field { + export interface EnumField extends Field, WarningSign { enumMembers: EnumMember[]; } export interface EnumMember { @@ -805,7 +1032,7 @@ declare module "cs2/bindings" { displayName: LocElement; disabled?: boolean; } - export interface DropdownField extends Field { + export interface DropdownField extends Field, WarningSign { items: DropdownItem[]; } export interface DropdownItem { @@ -937,6 +1164,7 @@ declare module "cs2/bindings" { icon: string; requirement: string; minimumCount: number; + isUpgrade: boolean; } export interface ZoneBuiltRequirement extends PrefabRequirementBase { labelId: string | null; @@ -987,7 +1215,8 @@ declare module "cs2/bindings" { Processing = "prefabs.ProcessingRequirement", ObjectBuilt = "prefabs.ObjectBuiltRequirement", Unlock = "prefabs.UnlockRequirement", - Tutorial = "prefabs.TutorialRequirement" + Tutorial = "prefabs.TutorialRequirement", + PrefabUnlocked = "prefabs.PrefabUnlockedRequirement" } export interface PrefabRequirements { [PrefabRequirementType.Milestone]: MilestoneRequirement; @@ -999,6 +1228,7 @@ declare module "cs2/bindings" { [PrefabRequirementType.ObjectBuilt]: ObjectBuiltRequirement; [PrefabRequirementType.Unlock]: UnlockRequirement; [PrefabRequirementType.Tutorial]: TutorialRequirement; + [PrefabRequirementType.PrefabUnlocked]: UnlockRequirement; } export type PrefabRequirement = TypeFromMap; export interface Theme { @@ -1020,7 +1250,8 @@ declare module "cs2/bindings" { titleId: string; descriptionId: string | null; locked: boolean; - uniquePlaced: boolean; + unique: boolean; + placed: boolean; constructionCost: NumericProperty | null; effects: PrefabEffect[]; properties: PrefabProperty[]; @@ -1163,7 +1394,18 @@ declare module "cs2/bindings" { selectedInfoPanelDelete: string; pauseMenuButton: string; upgradeGrid: string; + assetGrid: string; actionHints: string; + assetImportButton: string; + editorInfoViewsPanel: string; + resetTODButton: string; + simulationPlayButton: string; + tutorialsToggle: string; + workspaceTitleBar: string; + selectProjectRoot: string; + selectAssets: string; + selectTemplate: string; + importButton: string; } export interface Infoview { entity: Entity; @@ -1205,6 +1447,7 @@ declare module "cs2/bindings" { } const infoviews$: ValueBinding; const activeInfoview$: ValueBinding; + function closeInfoviewMenu(): void; function setActiveInfoview(entity: Entity): void; function clearActiveInfoview(): void; function setInfomodeActive(entity: Entity, active: boolean, priority: number): void; @@ -1307,6 +1550,8 @@ declare module "cs2/bindings" { const jobs$: ValueBinding; const unemployment$: ValueBinding; const birthRate$: ValueBinding; + const homeless$: ValueBinding; + const homelessness$: ValueBinding; const movedIn$: ValueBinding; const movedAway$: ValueBinding; const ageData$: ValueBinding; @@ -1329,6 +1574,9 @@ declare module "cs2/bindings" { const fertilityExtractionRate$: ValueBinding; const forestRenewalRate$: ValueBinding; const fertilityRenewalRate$: ValueBinding; + const availableFish$: ValueBinding; + const fishExtractionRate$: ValueBinding; + const fishRenewalRate$: ValueBinding; const workplacesData$: ValueBinding; const employeesData$: ValueBinding; const worksplaces$: ValueBinding; @@ -1372,15 +1620,11 @@ declare module "cs2/bindings" { export interface FollowedCitizen { entity: Entity; name: Name; - avatar: string | null; - randomIndex: number; age: string; } export interface LifePathDetails { entity: Entity; name: Name; - avatar: string | null; - randomIndex: number; birthDay: number; age: string; education: string; @@ -1440,9 +1684,11 @@ declare module "cs2/bindings" { } export enum MapTileStatus { None = 0, - NoSelection = 1, - InsufficientFunds = 2, - InsufficientPermits = 4 + NoCurrentlyAvailable = 1, + NoAvailable = 2, + NoSelection = 4, + InsufficientFunds = 8, + InsufficientPermits = 16 } const group$1 = "photoMode"; function resetCamera(): void; @@ -1672,7 +1918,7 @@ declare module "cs2/bindings" { const milestoneUnlocks$: MapBinding; const unlockDetails$: MapBinding; const unlockedSignatures$: ValueBinding; - function clearUnlockedSignatures(): void; + function removeUnlockedSignature(): void; const radioEnabled$: ValueBinding; const volume$: ValueBinding; const paused$: ValueBinding; @@ -1727,23 +1973,14 @@ declare module "cs2/bindings" { title: string; info: string | null; } - const FOCUS_DISABLED: unique symbol; - const FOCUS_AUTO: unique symbol; - export type FocusKey = typeof FOCUS_DISABLED | typeof FOCUS_AUTO | UniqueFocusKey; - export type UniqueFocusKey = FocusSymbol | string | number; - export class FocusSymbol { - readonly debugName: string; - readonly r: number; - constructor(debugName: string); - toString(): string; - } const selectedEntity$: ValueBinding; + const selectedTrailerController$: ValueBinding; const selectedUITag$: ValueBinding; const activeSelection$: ValueBinding; const selectedInfoPosition$: ValueBinding; - const topSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed) | (RoadSection & Typed) | (CompanySection & Typed) | (StorageSection & Typed) | (PrivateVehicleSection & Typed) | (PublicTransportVehicleSection & Typed) | (CargoTransportVehicleSection & Typed) | (DeliveryVehicleSection & Typed) | (HealthcareVehicleSection & Typed) | (FireVehicleSection & Typed) | (PoliceVehicleSection & Typed) | (MaintenanceVehicleSection & Typed) | (DeathcareVehicleSection & Typed) | (PostVehicleSection & Typed) | (GarbageVehicleSection & Typed) | (PassengersSection & Typed) | (CargoSection & Typed) | (StatusSection & Typed) | (CitizenSection & Typed) | (SelectVehiclesSection & Typed) | (DestroyedBuildingSection & Typed) | (DestroyedTreeSection & Typed) | (ComfortSection & Typed) | (UpgradesSection & Typed) | (UpgradePropertiesSection & Typed) | null)[]>; - const middleSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed) | (RoadSection & Typed) | (CompanySection & Typed) | (StorageSection & Typed) | (PrivateVehicleSection & Typed) | (PublicTransportVehicleSection & Typed) | (CargoTransportVehicleSection & Typed) | (DeliveryVehicleSection & Typed) | (HealthcareVehicleSection & Typed) | (FireVehicleSection & Typed) | (PoliceVehicleSection & Typed) | (MaintenanceVehicleSection & Typed) | (DeathcareVehicleSection & Typed) | (PostVehicleSection & Typed) | (GarbageVehicleSection & Typed) | (PassengersSection & Typed) | (CargoSection & Typed) | (StatusSection & Typed) | (CitizenSection & Typed) | (SelectVehiclesSection & Typed) | (DestroyedBuildingSection & Typed) | (DestroyedTreeSection & Typed) | (ComfortSection & Typed) | (UpgradesSection & Typed) | (UpgradePropertiesSection & Typed) | null)[]>; - const bottomSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed) | (RoadSection & Typed) | (CompanySection & Typed) | (StorageSection & Typed) | (PrivateVehicleSection & Typed) | (PublicTransportVehicleSection & Typed) | (CargoTransportVehicleSection & Typed) | (DeliveryVehicleSection & Typed) | (HealthcareVehicleSection & Typed) | (FireVehicleSection & Typed) | (PoliceVehicleSection & Typed) | (MaintenanceVehicleSection & Typed) | (DeathcareVehicleSection & Typed) | (PostVehicleSection & Typed) | (GarbageVehicleSection & Typed) | (PassengersSection & Typed) | (CargoSection & Typed) | (StatusSection & Typed) | (CitizenSection & Typed) | (SelectVehiclesSection & Typed) | (DestroyedBuildingSection & Typed) | (DestroyedTreeSection & Typed) | (ComfortSection & Typed) | (UpgradesSection & Typed) | (UpgradePropertiesSection & Typed) | null)[]>; + const topSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (ContentPrerequisiteSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed) | (RoadSection & Typed) | (CompanySection & Typed) | (StorageSection & Typed) | (TradedResourcesSection & Typed) | (PrivateVehicleSection & Typed) | (PublicTransportVehicleSection & Typed) | (CargoTransportVehicleSection & Typed) | (DeliveryVehicleSection & Typed) | (HealthcareVehicleSection & Typed) | (FireVehicleSection & Typed) | (PoliceVehicleSection & Typed) | (MaintenanceVehicleSection & Typed) | (DeathcareVehicleSection & Typed) | (PostVehicleSection & Typed) | (GarbageVehicleSection & Typed) | (ExtractorVehicleSection & Typed) | (PassengersSection & Typed) | (CargoSection & Typed) | (StatusSection & Typed) | (CitizenSection & Typed) | (SelectVehiclesSection & Typed) | (DestroyedBuildingSection & Typed) | (DestroyedTreeSection & Typed) | (ComfortSection & Typed) | (UpgradesSection & Typed) | (UpgradePropertiesSection & Typed) | null)[]>; + const middleSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (ContentPrerequisiteSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed) | (RoadSection & Typed) | (CompanySection & Typed) | (StorageSection & Typed) | (TradedResourcesSection & Typed) | (PrivateVehicleSection & Typed) | (PublicTransportVehicleSection & Typed) | (CargoTransportVehicleSection & Typed) | (DeliveryVehicleSection & Typed) | (HealthcareVehicleSection & Typed) | (FireVehicleSection & Typed) | (PoliceVehicleSection & Typed) | (MaintenanceVehicleSection & Typed) | (DeathcareVehicleSection & Typed) | (PostVehicleSection & Typed) | (GarbageVehicleSection & Typed) | (ExtractorVehicleSection & Typed) | (PassengersSection & Typed) | (CargoSection & Typed) | (StatusSection & Typed) | (CitizenSection & Typed) | (SelectVehiclesSection & Typed) | (DestroyedBuildingSection & Typed) | (DestroyedTreeSection & Typed) | (ComfortSection & Typed) | (UpgradesSection & Typed) | (UpgradePropertiesSection & Typed) | null)[]>; + const bottomSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (ContentPrerequisiteSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed) | (RoadSection & Typed) | (CompanySection & Typed) | (StorageSection & Typed) | (TradedResourcesSection & Typed) | (PrivateVehicleSection & Typed) | (PublicTransportVehicleSection & Typed) | (CargoTransportVehicleSection & Typed) | (DeliveryVehicleSection & Typed) | (HealthcareVehicleSection & Typed) | (FireVehicleSection & Typed) | (PoliceVehicleSection & Typed) | (MaintenanceVehicleSection & Typed) | (DeathcareVehicleSection & Typed) | (PostVehicleSection & Typed) | (GarbageVehicleSection & Typed) | (ExtractorVehicleSection & Typed) | (PassengersSection & Typed) | (CargoSection & Typed) | (StatusSection & Typed) | (CitizenSection & Typed) | (SelectVehiclesSection & Typed) | (DestroyedBuildingSection & Typed) | (DestroyedTreeSection & Typed) | (ComfortSection & Typed) | (UpgradesSection & Typed) | (UpgradePropertiesSection & Typed) | null)[]>; const titleSection$: ValueBinding; const developerSection$: ValueBinding; const lineVisualizerSection$: ValueBinding; @@ -1758,6 +1995,7 @@ declare module "cs2/bindings" { LocalServices = "Game.UI.InGame.LocalServicesSection", Actions = "Game.UI.InGame.ActionsSection", Description = "Game.UI.InGame.DescriptionSection", + ContentPrerequisite = "Game.UI.InGame.ContentPrerequisiteSection", Developer = "Game.UI.InGame.DeveloperSection", Residents = "Game.UI.InGame.ResidentsSection", HouseholdSidebar = "Game.UI.InGame.HouseholdSidebarSection", @@ -1801,6 +2039,7 @@ declare module "cs2/bindings" { Road = "Game.UI.InGame.RoadSection", Company = "Game.UI.InGame.CompanySection", Storage = "Game.UI.InGame.StorageSection", + TradedResourcesSection = "Game.UI.InGame.TradedResourcesSection", PrivateVehicle = "Game.UI.InGame.PrivateVehicleSection", PublicTransportVehicle = "Game.UI.InGame.PublicTransportVehicleSection", CargoTransportVehicle = "Game.UI.InGame.CargoTransportVehicleSection", @@ -1812,6 +2051,7 @@ declare module "cs2/bindings" { DeathcareVehicle = "Game.UI.InGame.DeathcareVehicleSection", PostVehicle = "Game.UI.InGame.PostVehicleSection", GarbageVehicle = "Game.UI.InGame.GarbageVehicleSection", + ExtractorVehicle = "Game.UI.InGame.ExtractorVehicleSection", Passengers = "Game.UI.InGame.PassengersSection", Cargo = "Game.UI.InGame.CargoSection", Load = "Game.UI.InGame.LoadSection", @@ -1831,6 +2071,7 @@ declare module "cs2/bindings" { [SectionType.LocalServices]: LocalServicesSection; [SectionType.Actions]: ActionsSection; [SectionType.Description]: DescriptionSection; + [SectionType.ContentPrerequisite]: ContentPrerequisiteSection; [SectionType.Developer]: DeveloperSection; [SectionType.Residents]: ResidentsSection; [SectionType.HouseholdSidebar]: HouseholdSidebarSection; @@ -1874,6 +2115,7 @@ declare module "cs2/bindings" { [SectionType.Road]: RoadSection; [SectionType.Company]: CompanySection; [SectionType.Storage]: StorageSection; + [SectionType.TradedResourcesSection]: TradedResourcesSection; [SectionType.PrivateVehicle]: PrivateVehicleSection; [SectionType.PublicTransportVehicle]: PublicTransportVehicleSection; [SectionType.CargoTransportVehicle]: CargoTransportVehicleSection; @@ -1885,6 +2127,7 @@ declare module "cs2/bindings" { [SectionType.DeathcareVehicle]: DeathcareVehicleSection; [SectionType.PostVehicle]: PostVehicleSection; [SectionType.GarbageVehicle]: GarbageVehicleSection; + [SectionType.ExtractorVehicle]: ExtractorVehicleSection; [SectionType.Passengers]: PassengersSection; [SectionType.Cargo]: CargoSection; [SectionType.Load]: LoadSection; @@ -1924,11 +2167,15 @@ declare module "cs2/bindings" { emptying: boolean; emptiable: boolean; hasLotTool: boolean; + hasTrafficRoutes: boolean; } export interface DescriptionSection extends SelectedInfoSectionBase { localeId: string; effects: PrefabEffect[]; } + export interface ContentPrerequisiteSection extends SelectedInfoSectionBase { + contentPrefab: string; + } export interface DeveloperSection extends SelectedInfoSectionBase { subsections: DeveloperSubsection[]; } @@ -1946,11 +2193,12 @@ declare module "cs2/bindings" { ageData: ChartData; } export interface HouseholdSidebarSection extends SelectedInfoSectionBase { - householdSidebarVariant: HouseholdSidebarVariant; + variant: HouseholdSidebarVariant; residence: HouseholdSidebarItem; - households: HouseholdSidebarItem[]; - householdMembers: HouseholdSidebarItem[]; - householdPets: HouseholdSidebarItem[]; + household: HouseholdSidebarItem; + households: number; + residents: number; + pets: number; } export interface DistrictsSection extends SelectedInfoSectionBase { districtMissing: boolean; @@ -2007,7 +2255,8 @@ declare module "cs2/bindings" { export interface VehicleCountSection extends SelectedInfoSectionBase { vehicleCount: number; activeVehicles: number; - vehicleCounts: Number2[]; + vehicleCountMin: number; + vehicleCountMax: number; } export interface SelectVehiclesSection extends SelectedInfoSectionBase { primaryVehicle: VehiclePrefab | null; @@ -2041,6 +2290,7 @@ declare module "cs2/bindings" { maxLevel: number; isUnderConstruction: boolean; progress: number; + zone: string; } export interface EducationSection extends SelectedInfoSectionBase { studentCount: number; @@ -2161,16 +2411,27 @@ declare module "cs2/bindings" { } export interface CompanySection extends SelectedInfoSectionBase { companyName: Name | null; + isRentable: boolean; input1: string | null; input2: string | null; output: string | null; sells: string | null; stores: string | null; + customers: Number2 | null; } export interface StorageSection extends SelectedInfoSectionBase { stored: number; capacity: number; - resources: Resource$1[]; + status: string; + storageType: string; + rawMaterials: Resource$1[]; + processedGoods: Resource$1[]; + mail: Resource$1[]; + } + export interface TradedResourcesSection extends SelectedInfoSectionBase { + rawMaterials: Resource$1[]; + processedGoods: Resource$1[]; + mail: Resource$1[]; } export interface DestroyedBuildingSection extends SelectedInfoSectionBase { destroyer: string | null; @@ -2253,6 +2514,9 @@ declare module "cs2/bindings" { export interface GarbageVehicleSection extends VehicleSection { vehicleKey: string; } + export interface ExtractorVehicleSection extends VehicleSection { + vehicleKey: string; + } export interface PassengersSection extends SelectedInfoSectionBase { expanded: boolean; passengers: number; @@ -2264,7 +2528,9 @@ declare module "cs2/bindings" { expanded: boolean; cargo: number; capacity: number; - resources: Resource$1[]; + rawMaterials: Resource$1[]; + processedGoods: Resource$1[]; + mail: Resource$1[]; cargoKey: string; } export interface LoadSection extends SelectedInfoSectionBase { @@ -2372,6 +2638,7 @@ declare module "cs2/bindings" { interface Resource$1 { key: string; amount: number; + status: string; } export interface SelectedInfoSectionProps { group: string; @@ -2383,6 +2650,7 @@ declare module "cs2/bindings" { name: Name; color: Color; entity: Entity; + active: boolean; } export type LineItem = LineStop | LineVehicle; const LINE_STOP = "Game.UI.InGame.LineVisualizerSection+LineStop"; @@ -2391,6 +2659,7 @@ declare module "cs2/bindings" { name: Name; position: number; cargo: number; + capacity: number; isCargo: boolean; isOutsideConnection: boolean; } @@ -2449,9 +2718,10 @@ declare module "cs2/bindings" { export interface HouseholdSidebarItem { entity: Entity; name: Name; - iconPath: string; + familyName: Name; + icon: string | null; selected: boolean; - memberCount: number | null; + count: number | null; } export enum HouseholdSidebarVariant { Citizen = "Citizen", @@ -2493,6 +2763,7 @@ declare module "cs2/bindings" { const statUnlockingRequirements$: MapBinding; const updatesPerDay$: ValueBinding; function addStat(stat: StatItem): void; + function addStatChildren(stat: StatItem): void; function removeStat(stat: StatItem): void; function clearStats(): void; function setSampleRange(range: number): void; @@ -2550,6 +2821,9 @@ declare module "cs2/bindings" { const colorSupported$: ValueBinding; const color$: ValueBinding; const isEditor$: ValueBinding; + const replacingTrees$: ValueBinding; + const distance$: ValueBinding; + const distanceScale$: ValueBinding; function setColor(color: Color): void; function selectTool(toolID: string): void; function selectToolMode(modeIndex: number): void; @@ -2563,6 +2837,7 @@ declare module "cs2/bindings" { function toggleParallelMode(): void; function setParallelOffset(offset: number): void; function setUndergroundMode(enabled: boolean): void; + function setDistance(distance: number): void; const BULLDOZE_TOOL = "Bulldoze Tool"; const DEFAULT_TOOL = "Default Tool"; const ZONE_TOOL = "Zone Tool"; @@ -2588,6 +2863,9 @@ declare module "cs2/bindings" { const brushes$: ValueBinding; const brushSize$: ValueBinding; const brushStrength$: ValueBinding; + const brushHeight$: ValueBinding; + const brushHeightMin$: ValueBinding; + const brushHeightMax$: ValueBinding; const brushAngle$: ValueBinding; const brushSizeMin$: ValueBinding; const brushSizeMax$: ValueBinding; @@ -2601,53 +2879,7 @@ declare module "cs2/bindings" { function setBrushSize(size: number): void; function setBrushStrength(strength: number): void; function setBrushAngle(angle: number): void; - export enum UISound { - selectItem = "select-item", - dragSlider = "drag-slider", - hoverItem = "hover-item", - expandPanel = "expand-panel", - grabSlider = "grabSlider", - selectDropdown = "select-dropdown", - selectToggle = "select-toggle", - focusInputField = "focus-input-field", - signatureBuildingEvent = "signature-building-event", - bulldoze = "bulldoze", - bulldozeEnd = "bulldoze-end", - relocateBuilding = "relocate-building", - mapTilePurchaseMode = "map-tile-purchase-mode", - mapTilePurchaseModeEnd = "map-tile-purchase-mode-end", - xpEvent = "xp-event", - milestoneEvent = "milestone-event", - economy = "economy", - chirpEvent = "chirp-event", - likeChirp = "like-chirp", - chirper = "chirper", - purchase = "purchase", - enableBuilding = "enable-building", - disableBuilding = "disable-building", - pauseSimulation = "pause-simulation", - resumeSimulation = "resume-simulation", - simulationSpeed1 = "simulation-speed-1", - simulationSpeed2 = "simulation-speed-2", - simulationSpeed3 = "simulation-speed-3", - togglePolicy = "toggle-policy", - takeLoan = "take-loan", - removeItem = "remove-item", - toggleInfoMode = "toggle-info-mode", - takePhoto = "take-photo", - tutorialTriggerCompleteEvent = "tutorial-trigger-complete-event", - selectRadioNetwork = "select-radio-network", - selectRadioStation = "select-radio-station", - generateRandomName = "generate-random-name", - decreaseElevation = "decrease-elevation", - increaseElevation = "increase-elevation", - selectPreviousItem = "select-previous-item", - selectNextItem = "select-next-item", - openPanel = "open-panel", - closePanel = "close-panel", - openMenu = "open-menu", - closeMenu = "close-menu" - } + function setBrushHeight(angle: number): void; export interface ToolbarGroup { entity: Entity; children: ToolbarItem[]; @@ -2663,6 +2895,7 @@ declare module "cs2/bindings" { highlight: boolean; selectSound: UISound | string | null; deselectSound: UISound | string | null; + shortcut: InputActionName; } export enum ToolbarItemType { asset = 0, @@ -2679,11 +2912,14 @@ declare module "cs2/bindings" { interface Asset$1 { entity: Entity; name: string; + priority: number; icon: string; dlc: string | null; + theme: string | null; locked: boolean; uiTag: string; - uniquePlaced: boolean; + unique: boolean; + placed: boolean; highlight: boolean; constructionCost: NumericProperty | null; } @@ -2723,9 +2959,10 @@ declare module "cs2/bindings" { const setSelectedAssetPacks: (packs: Entity[]) => void; const selectAssetMenu: (assetMenu: Entity) => void; const selectAssetCategory: (assetCategory: Entity) => void; - const selectAsset: (asset: Entity) => void; + const selectAsset: (asset: Entity, updateTool: boolean) => void; const clearAssetSelection: () => void; const toggleToolOptions: (isActive: boolean) => void; + const CompareAssetsByPriority: (a: Asset$1, b: Asset$1) => number; const population$$1: ValueBinding; const populationDelta$: ValueBinding; const money$: ValueBinding; @@ -2819,7 +3056,7 @@ declare module "cs2/bindings" { const activateTutorial: (tutorial: Entity) => void; const activateTutorialPhase: (tutorial: Entity, phase: Entity) => void; const forceTutorial: (tutorial: Entity, phase: Entity, advisorActivation: boolean) => void; - const toggleTutorialListFocus: () => void; + const toggleTutorialListFocus: (state?: boolean) => void; const completeActiveTutorialPhase: () => void; const completeActiveTutorial: () => void; const completeIntro: (tutorialsEnabled: boolean) => void; @@ -2827,6 +3064,7 @@ declare module "cs2/bindings" { const completeListOutro: () => void; const activateTutorialTag: (tag: string, active: boolean) => void; const triggerTutorialTag: (trigger: string) => void; + const untriggerTutorialTag: (trigger: string) => void; const useTutorialTagActivation: (uiTag: string | undefined, active?: boolean) => void; const useTutorialTagTrigger: (uiTag: string | undefined, active?: boolean) => void; function useTutorialTag(uiTag: string | undefined, active?: boolean): void; @@ -2848,11 +3086,12 @@ declare module "cs2/bindings" { dispose: () => void; update: (newValue: boolean) => void; }; - function toggleAdvisorPanel(): void; + function toggleAdvisorPanel(state?: boolean): void; export interface AdvisorCategory { entity: Entity; name: string; shown: boolean; + force: boolean; locked: boolean; children: AdvisorItem[]; } @@ -2866,6 +3105,7 @@ declare module "cs2/bindings" { icon: string | null; type: AdvisorItemType; shown: boolean; + force: boolean; locked: boolean; children: AdvisorItem[]; } @@ -2885,18 +3125,25 @@ declare module "cs2/bindings" { active: boolean; completed: boolean; shown: boolean; + force: boolean; mandatory: boolean; advisorActivation: boolean; phases: TutorialPhase[]; filters: string[] | null; alternatives: Entity[] | null; } + export enum TutorialControlScheme { + KeyboardAndMouse = 1, + Gamepad = 2, + All = 3 + } export interface TutorialPhase { entity: Entity; name: string; type: TutorialPhaseType; active: boolean; shown: boolean; + force: boolean; completed: boolean; forcesCompletion: boolean; isBranch: boolean; @@ -2907,6 +3154,7 @@ declare module "cs2/bindings" { titleVisible: boolean; descriptionVisible: boolean; balloonTargets: BalloonUITarget[]; + controlScheme: TutorialControlScheme; trigger: TutorialTrigger | null; } export interface BalloonUITarget { @@ -2952,6 +3200,9 @@ declare module "cs2/bindings" { playFromTo(playTime: number, pauseTime: number, callback?: () => void): void; } + export namespace upgrade { + export { clearUpgradeSelection, selectUpgrade, selectedUpgrade$, upgradeDetails$, upgrades$, upgrading$ }; + } export namespace budget { export { ServiceBudget, ServiceBuildingBudgetData, ServiceBuildingBudgetInfo, ServiceFee }; } @@ -2959,7 +3210,7 @@ declare module "cs2/bindings" { export { focusEntity, focusedEntity$ }; } export namespace chirper { - export { Chirp, ChirpLink, addLike, chirpAdded$, chirps$, removeLike, selectLink }; + export { Chirp, ChirpLink, ChirpSender, addLike, chirpAdded$, chirps$, removeLike, selectLink }; } export namespace cinematic { export { CinematicCameraAsset, CinematicCameraCurveModifier, addKeyFrame, availableCloudTargets$, captureKey, cinematicCameraSequenceAssets$, deleteCinematicCameraSequence, getControllerDelta, getControllerPanDelta, getControllerZoomDelta, group, lastLoadedCinematicCameraSequence$, loadCinematicCameraSequence, loop$, modifierAnimationCurveData$, moveKeyFrame, onAfterPlaybackDurationChange, playbackDuration$, playing$, removeCameraTransformKey, removeKeyFrame, resetCinematicCameraSequence, saveCinematicCameraSequence, selectCloudTarget, selectedCloudTarget$, setPlaybackDuration, setTimelinePosition, stopPlayback, timelineLength$, timelinePosition$, toggleCurveEditorFocus, toggleLoop, togglePlayback, transformAnimationCurveData$, useCinematicCameraBindings }; @@ -2989,7 +3240,7 @@ declare module "cs2/bindings" { export { ChirperPanel, CinematicCameraPanel, CityInfoPanel, CityInfoPanelTab, EconomyPanel, EconomyPanelTab, GamePanel, GamePanelType, GamePanels, GameScreen, InfoviewMenu, JournalPanel, LayoutPosition, LifePathPanel, NotificationsPanel, PhotoModePanel, ProgressionPanel, ProgressionPanelTab, RadioPanel, StatisticsPanel, TabbedGamePanel, TransportationOverviewPanel, TransportationOverviewPanelTab, activeGamePanel$, activeGameScreen$, activePanelPosition$, blockingPanelActive$, canUseSaveSystem$, closeActiveGamePanel, closeGamePanel, setActiveGameScreen, showCityInfoPanel, showEconomyPanel, showFreeCameraScreen, showGamePanel, showLifePathDetail, showLifePathList, showMainScreen, showPauseScreen, showProgressionPanel, showTransportationOverviewPanel, toggleGamePanel, toggleInfoviewMenu, toggleLifePathPanel, toggleRadioPanel, toggleTransportationOverviewPanel }; } export namespace infoview { - export { CargoSummary, ChartData, IndicatorValue, PassengerSummary, TransportSummaries, activeInfoview$, ageData$, arrestedCriminals$, attractiveness$, availableFertility$, availableForest$, availableOil$, availableOre$, averageAirPollution$, averageCrimeProbability$, averageFireHazard$, averageGroundPollution$, averageHealth$, averageHotelPrice$, averageLandValue$, averageNoisePollution$, averageWaterPollution$, batteryCharge$, birthRate$, cemeteryAvailability$, cemeteryCapacity$, cemeteryUse$, clearActiveInfoview, collectedMail$, collegeAvailability$, collegeCapacity$, collegeEligible$, collegeStudents$, commercialLevels$, commercialProfitability$, crimePerMonth$, crimeProbability$, crimeProducers$, criminals$, deathRate$, deathcareAvailability$, deliveredMail$, educationData$, electricityAvailability$, electricityConsumption$, electricityExport$, electricityImport$, electricityProduction$, electricityTrade$, electricityTransmission$, electricityTransmitted$, elementaryAvailability$, elementaryCapacity$, elementaryEligible$, elementaryStudents$, employed$, employeesData$, escapedRate$, fertilityExtractionRate$, fertilityRenewalRate$, forestExtractionRate$, forestRenewalRate$, garbageProcessingRate$, garbageProductionRate$, healthcareAvailability$, highSchoolAvailability$, highSchoolCapacity$, highSchoolEligible$, highSchoolStudents$, inJail$, inPrison$, industrialLevels$, industrialProfitability$, infoviews$, jailAvailability$, jailCapacity$, jobs$, landfillAvailability$, landfillCapacity$, mailProductionRate$, movedAway$, movedIn$, officeLevels$, officeProfitability$, oilExtractionRate$, oreExtractionRate$, parkedCars$, parkingAvailability$, parkingCapacity$, parkingIncome$, patientCapacity$, patientCount$, population$, postServiceAvailability$, prisonAvailability$, prisonCapacity$, prisoners$, processingAvailability$, processingRate$, residentialLevels$, setActiveInfoview, setInfomodeActive, sewageAvailability$, sewageCapacity$, sewageConsumption$, sewageExport$, shelterAvailability$, shelterCapacity$, shelteredCount$, sickCount$, storedGarbage$, topExportColors$, topExportData$, topExportNames$, topImportColors$, topImportData$, topImportNames$, tourismRate$, trafficFlow$, transportSummaries$, unemployment$, universityAvailability$, universityCapacity$, universityEligible$, universityStudents$, useInfoviewToggle, waterAvailability$, waterCapacity$, waterConsumption$, waterExport$, waterImport$, waterTrade$, weatherEffect$, workers$, workplacesData$, worksplaces$ }; + export { CargoSummary, ChartData, IndicatorValue, PassengerSummary, TransportSummaries, activeInfoview$, ageData$, arrestedCriminals$, attractiveness$, availableFertility$, availableFish$, availableForest$, availableOil$, availableOre$, averageAirPollution$, averageCrimeProbability$, averageFireHazard$, averageGroundPollution$, averageHealth$, averageHotelPrice$, averageLandValue$, averageNoisePollution$, averageWaterPollution$, batteryCharge$, birthRate$, cemeteryAvailability$, cemeteryCapacity$, cemeteryUse$, clearActiveInfoview, closeInfoviewMenu, collectedMail$, collegeAvailability$, collegeCapacity$, collegeEligible$, collegeStudents$, commercialLevels$, commercialProfitability$, crimePerMonth$, crimeProbability$, crimeProducers$, criminals$, deathRate$, deathcareAvailability$, deliveredMail$, educationData$, electricityAvailability$, electricityConsumption$, electricityExport$, electricityImport$, electricityProduction$, electricityTrade$, electricityTransmission$, electricityTransmitted$, elementaryAvailability$, elementaryCapacity$, elementaryEligible$, elementaryStudents$, employed$, employeesData$, escapedRate$, fertilityExtractionRate$, fertilityRenewalRate$, fishExtractionRate$, fishRenewalRate$, forestExtractionRate$, forestRenewalRate$, garbageProcessingRate$, garbageProductionRate$, healthcareAvailability$, highSchoolAvailability$, highSchoolCapacity$, highSchoolEligible$, highSchoolStudents$, homeless$, homelessness$, inJail$, inPrison$, industrialLevels$, industrialProfitability$, infoviews$, jailAvailability$, jailCapacity$, jobs$, landfillAvailability$, landfillCapacity$, mailProductionRate$, movedAway$, movedIn$, officeLevels$, officeProfitability$, oilExtractionRate$, oreExtractionRate$, parkedCars$, parkingAvailability$, parkingCapacity$, parkingIncome$, patientCapacity$, patientCount$, population$, postServiceAvailability$, prisonAvailability$, prisonCapacity$, prisoners$, processingAvailability$, processingRate$, residentialLevels$, setActiveInfoview, setInfomodeActive, sewageAvailability$, sewageCapacity$, sewageConsumption$, sewageExport$, shelterAvailability$, shelterCapacity$, shelteredCount$, sickCount$, storedGarbage$, topExportColors$, topExportData$, topExportNames$, topImportColors$, topImportData$, topImportNames$, tourismRate$, trafficFlow$, transportSummaries$, unemployment$, universityAvailability$, universityCapacity$, universityEligible$, universityStudents$, useInfoviewToggle, waterAvailability$, waterCapacity$, waterConsumption$, waterExport$, waterImport$, waterTrade$, weatherEffect$, workers$, workplacesData$, worksplaces$ }; } export namespace infoviewTypes { export { ActiveInfoview, Infomode, InfomodeColorLegend, InfomodeGradientLegend, Infoview }; @@ -3010,7 +3261,7 @@ declare module "cs2/bindings" { export { ManualUITagsConfiguration, PrefabDetails, Theme, UnlockingRequirements, emptyPrefabDetails, manualUITags$, prefabDetails$, themes$ }; } export namespace prefabEffects { - export { AdjustHappinessEffect, CityModifier, CityModifierEffect, CityModifierType, LeisureProvider, LeisureProviderEffect, LocalModifier, LocalModifierEffect, LocalModifierType, PrefabEffect, PrefabEffectType, PrefabEffects }; + export { AdjustHappinessEffect, CityModifier, CityModifierEffect, CityModifierType, LeisureProvider, LeisureProviderEffect, LeisureType, LocalModifier, LocalModifierEffect, LocalModifierType, PrefabEffect, PrefabEffectType, PrefabEffects }; } export namespace prefabProperties { export { CONSUMPTION_PROPERTY, ConsumptionProperty, ELECTRICITY_PROPERTY, ElectricityProperty, POLLUTION_PROPERTY, Pollution, PollutionProperty, PrefabProperties, PrefabProperty, TRANSPORT_STOP_PROPERTY, TransportStopProperty, UPKEEPNUMBER2_PROPERTY, UPKEEPNUMBER_PROPERTY, UpkeepNumber2Property, UpkeepNumberProperty, Voltage }; @@ -3028,16 +3279,16 @@ declare module "cs2/bindings" { export { Asset, Feature, Milestone, MilestoneDetails, MilestoneUnlock, MilestoneUnlockType, MilestoneUnlocks, Policy, Service$2 as Service, UnlockDetails, XpMessage, achievedMilestone$, achievedMilestoneXP$, clearUnlockedMilestone, defaultMilestoneDetails, maxMilestoneReached$, milestoneDetails$, milestoneUnlocks$, milestones$, nextMilestoneXP$, totalXP$, unlockDetails$, unlockedMilestone$, xpMessageAdded$ }; } export namespace signatureBuilding { - export { clearUnlockedSignatures, unlockedSignatures$ }; + export { removeUnlockedSignature, unlockedSignatures$ }; } export namespace radio { export { RadioClip, RadioNetwork, RadioProgram, RadioStation, currentSegment$, emergencyFocusable$, emergencyMessage$, emergencyMode$, focusEmergency, muted$, networks$, paused$, playNext, playPrevious, radioEnabled$, segmentChanged$, selectNetwork, selectStation, selectedNetwork$, selectedStation$, setMuted, setPaused, setSkipAds, setVolume, skipAds$, stations$, toggleMuted, togglePaused, toggleSkipAds, volume$ }; } export namespace selectedInfo { - export { ActionsSection, AnimalSection, AttractivenessFactor, AttractivenessSection, AverageHappinessSection, BatterySection, CapacityInfo, CargoSection, CargoTransportVehicleSection, CitizenSection, ColorSection, ComfortSection, CompanySection, DeathcareSection, DeathcareVehicleSection, DeliveryVehicleSection, DescriptionSection, DestroyedBuildingSection, DestroyedTreeSection, DeveloperSection, DeveloperSubsection, DeveloperSubsectionType, DeveloperSubsections, DispatchedVehiclesSection, District, DistrictsSection, DummyHumanSection, EducationSection, EfficiencyFactor, EfficiencySection, ElectricitySection, EmployeesSection, FireSection, FireVehicleSection, GarbageSection, GarbageVehicleSection, GenericInfo, HealthcareSection, HealthcareVehicleSection, HouseholdSidebarItem, HouseholdSidebarSection, HouseholdSidebarVariant, InfoList, Item, LINE_STOP, LINE_VEHICLE, LevelSection, Line, LineItem, LineSection, LineSegment, LineStop, LineVehicle, LineVisualizerSection, LinesSection, LoadSection, LocalServiceBuilding, LocalServicesSection, Location$1 as Location, MailSection, MailSectionType, MaintenanceVehicleSection, NotificationsSection, ParkSection, ParkingSection, PassengersSection, PoliceSection, PoliceVehicleSection, PoliciesSection, Pollution$1 as Pollution, PollutionSection, PostVehicleSection, PrisonSection, PrivateVehicleSection, ProfitabilitySection, PublicTransportVehicleSection, ResidentsSection, Resource$1 as Resource, ResourceSection, RoadSection, ScheduleSection, SectionType, SelectVehiclesSection, SelectedInfoSection, SelectedInfoSectionBase, SelectedInfoSectionProps, SelectedInfoSections, SewageSection, ShelterSection, StatusSection, StorageSection, TicketPriceSection, TitleSection, TransformerSection, Upgrade, UpgradeInfo, UpgradePropertiesSection, UpgradeType, UpgradesSection, UpkeepItem, UpkeepSection, Vehicle, VehicleCountSection, VehiclePrefab, VehicleSectionProps, VehicleWithLineSectionProps, VehiclesSection, WaterSection, activeSelection$, bottomSections$, clearSelection, developerSection$, householdSidebarSection$, lineVisualizerSection$, middleSections$, selectEntity, selectedEntity$, selectedInfoPosition$, selectedRoute$, selectedUITag$, setSelectedRoute, titleSection$, tooltipTags$, topSections$, useGeneratedTooltipParagraphs, useTooltipParagraph, useTooltipParagraphs }; + export { ActionsSection, AnimalSection, AttractivenessFactor, AttractivenessSection, AverageHappinessSection, BatterySection, CapacityInfo, CargoSection, CargoTransportVehicleSection, CitizenSection, ColorSection, ComfortSection, CompanySection, ContentPrerequisiteSection, DeathcareSection, DeathcareVehicleSection, DeliveryVehicleSection, DescriptionSection, DestroyedBuildingSection, DestroyedTreeSection, DeveloperSection, DeveloperSubsection, DeveloperSubsectionType, DeveloperSubsections, DispatchedVehiclesSection, District, DistrictsSection, DummyHumanSection, EducationSection, EfficiencyFactor, EfficiencySection, ElectricitySection, EmployeesSection, ExtractorVehicleSection, FireSection, FireVehicleSection, GarbageSection, GarbageVehicleSection, GenericInfo, HealthcareSection, HealthcareVehicleSection, HouseholdSidebarItem, HouseholdSidebarSection, HouseholdSidebarVariant, InfoList, Item, LINE_STOP, LINE_VEHICLE, LevelSection, Line, LineItem, LineSection, LineSegment, LineStop, LineVehicle, LineVisualizerSection, LinesSection, LoadSection, LocalServiceBuilding, LocalServicesSection, Location$1 as Location, MailSection, MailSectionType, MaintenanceVehicleSection, NotificationsSection, ParkSection, ParkingSection, PassengersSection, PoliceSection, PoliceVehicleSection, PoliciesSection, Pollution$1 as Pollution, PollutionSection, PostVehicleSection, PrisonSection, PrivateVehicleSection, ProfitabilitySection, PublicTransportVehicleSection, ResidentsSection, Resource$1 as Resource, ResourceSection, RoadSection, ScheduleSection, SectionType, SelectVehiclesSection, SelectedInfoSection, SelectedInfoSectionBase, SelectedInfoSectionProps, SelectedInfoSections, SewageSection, ShelterSection, StatusSection, StorageSection, TicketPriceSection, TitleSection, TradedResourcesSection, TransformerSection, Upgrade, UpgradeInfo, UpgradePropertiesSection, UpgradeType, UpgradesSection, UpkeepItem, UpkeepSection, Vehicle, VehicleCountSection, VehiclePrefab, VehicleSectionProps, VehicleWithLineSectionProps, VehiclesSection, WaterSection, activeSelection$, bottomSections$, clearSelection, developerSection$, householdSidebarSection$, lineVisualizerSection$, middleSections$, selectEntity, selectedEntity$, selectedInfoPosition$, selectedRoute$, selectedTrailerController$, selectedUITag$, setSelectedRoute, titleSection$, tooltipTags$, topSections$, useGeneratedTooltipParagraphs, useTooltipParagraph, useTooltipParagraphs }; } export namespace statistics { - export { StatCategory, StatItem, activeCategory$, activeGroup$, addStat, clearStats, removeStat, sampleCount$, sampleRange$, selectedStatistics$, setSampleRange, stacked$, statGroupsMap$, statLabels$, statUnlockingRequirements$, statisticsCategories$, statsData$, updatesPerDay$ }; + export { StatCategory, StatItem, activeCategory$, activeGroup$, addStat, addStatChildren, clearStats, removeStat, sampleCount$, sampleRange$, selectedStatistics$, setSampleRange, stacked$, statGroupsMap$, statLabels$, statUnlockingRequirements$, statisticsCategories$, statsData$, updatesPerDay$ }; } export namespace taxation { export { TaxAreaType, TaxResource, TaxResourceInfo, areaResourceTaxRanges$, areaResources$, areaTaxEffects$, areaTaxIncomes$, areaTaxRates$, areaTypes$, maxTaxRate, minTaxRate, resourceTaxIncomes, resourceTaxRates, setAreaTaxRate, setResourceTaxRate, setTaxRate, taxEffect, taxIncome, taxRate, taxResourceInfos }; @@ -3046,10 +3297,10 @@ declare module "cs2/bindings" { export { LightingState, SimulationDate, SimulationDateTime, SimulationTime, TimeSettings, calculateDateFromDays, calculateDateFromTicks, calculateDateTimeFromTicks, calculateMinutesSinceMidnightFromTicks, calculateTimeFromMinutesSinceMidnight, dateEquals, day$, lightingState$, setSimulationPaused, setSimulationSpeed, simulationPaused$, simulationPausedBarrier$, simulationSpeed$, ticks$, timeSettings$ }; } export namespace tool { - export { AREA_TOOL, BULLDOZE_TOOL, Brush, DEFAULT_TOOL, NET_TOOL, OBJECT_TOOL, ROUTE_TOOL, SELECTION_TOOL, TERRAIN_TOOL, Tool, ToolMode, UPGRADE_TOOL, ZONE_TOOL, activeTool$, allSnapMask$, allowBrush$, availableSnapMask$, brushAngle$, brushSize$, brushSizeMax$, brushSizeMin$, brushStrength$, brushes$, bulldozeConfirmationRequested$, changeElevation, color$, colorSupported$, confirmBulldoze, elevation$, elevationDown, elevationDownDisabled$, elevationRange$, elevationScroll, elevationStep$, elevationUp, elevationUpDisabled$, isEditor$, parallelMode$, parallelModeSupported$, parallelOffset$, selectBrush, selectTool, selectToolMode, selectedBrush$, selectedSnapMask$, setBrushAngle, setBrushSize, setBrushStrength, setColor, setElevationStep, setParallelOffset, setSelectedSnapMask, setUndergroundMode, snapOptionNames$, toggleParallelMode, undergroundMode$, undergroundModeSupported$ }; + export { AREA_TOOL, BULLDOZE_TOOL, Brush, DEFAULT_TOOL, NET_TOOL, OBJECT_TOOL, ROUTE_TOOL, SELECTION_TOOL, TERRAIN_TOOL, Tool, ToolMode, UPGRADE_TOOL, ZONE_TOOL, activeTool$, allSnapMask$, allowBrush$, availableSnapMask$, brushAngle$, brushHeight$, brushHeightMax$, brushHeightMin$, brushSize$, brushSizeMax$, brushSizeMin$, brushStrength$, brushes$, bulldozeConfirmationRequested$, changeElevation, color$, colorSupported$, confirmBulldoze, distance$, distanceScale$, elevation$, elevationDown, elevationDownDisabled$, elevationRange$, elevationScroll, elevationStep$, elevationUp, elevationUpDisabled$, isEditor$, parallelMode$, parallelModeSupported$, parallelOffset$, replacingTrees$, selectBrush, selectTool, selectToolMode, selectedBrush$, selectedSnapMask$, setBrushAngle, setBrushHeight, setBrushSize, setBrushStrength, setColor, setDistance, setElevationStep, setParallelOffset, setSelectedSnapMask, setUndergroundMode, snapOptionNames$, toggleParallelMode, undergroundMode$, undergroundModeSupported$ }; } export namespace toolbar$1 { - export { AgeMask, Asset$1 as Asset, AssetCategory, AssetPack, Theme$1 as Theme, ToolbarGroup, ToolbarItem, ToolbarItemType, ageMask$, assetCategories$, assetPacks$, assets$, clearAssetSelection, selectAsset, selectAssetCategory, selectAssetMenu, selectedAsset$, selectedAssetCategory$, selectedAssetMenu$, selectedAssetPacks$, selectedThemes$, setAgeMask, setSelectedAssetPacks, setSelectedThemes, themes$$1 as themes$, toggleToolOptions, toolbarGroups$, vegetationAges$ }; + export { AgeMask, Asset$1 as Asset, AssetCategory, AssetPack, CompareAssetsByPriority, Theme$1 as Theme, ToolbarGroup, ToolbarItem, ToolbarItemType, ageMask$, assetCategories$, assetPacks$, assets$, clearAssetSelection, selectAsset, selectAssetCategory, selectAssetMenu, selectedAsset$, selectedAssetCategory$, selectedAssetMenu$, selectedAssetPacks$, selectedThemes$, setAgeMask, setSelectedAssetPacks, setSelectedThemes, themes$$1 as themes$, toggleToolOptions, toolbarGroups$, vegetationAges$ }; } export namespace toolbarBottom { export { cityName$, money$, moneyDelta$, moneyTrendThresholds$, population$$1 as population$, populationDelta$, populationTrendThresholds$, setCityName, unlimitedMoney$ }; @@ -3058,10 +3309,7 @@ declare module "cs2/bindings" { export { TransportLine, TransportLineData, TransportStop, TransportType, cargoTypes$, deleteLine, hideLine, passengerTypes$, renameLine, resetVisibility, selectLine, selectedCargoType$, selectedPassengerType$, setLineActive, setLineColor, setLineSchedule, setSelectedCargoType, setSelectedPassengerType, showLine, toggleHighlight, transportLines$ }; } export namespace tutorial { - export { AdvisorCategory, AdvisorItem, AdvisorItemType, BalloonUITarget, Tutorial, TutorialList, TutorialPhase, TutorialPhaseType, TutorialTrigger, activateTutorial, activateTutorialPhase, activateTutorialTag, activeTutorial$, activeTutorialList$, activeTutorialPhase$, advisorPanelVisible$, completeActiveTutorial, completeActiveTutorialPhase, completeIntro, completeListIntro, completeListOutro, forceTutorial, listIntroActive$, listOutroActive$, nextTutorial$, setTutorialListFocused, toggleAdvisorPanel, toggleTutorialListFocus, triggerTutorialTag, tutorialCategories$, tutorialGroups$, tutorialIntroActive$, tutorialListFocused$, tutorialPending$, tutorials$, tutorialsEnabled$, useTutorialTag, useTutorialTagActivation, useTutorialTagTrigger }; - } - export namespace upgrade { - export { clearUpgradeSelection, selectUpgrade, selectedUpgrade$, upgradeDetails$, upgrades$, upgrading$ }; + export { AdvisorCategory, AdvisorItem, AdvisorItemType, BalloonUITarget, Tutorial, TutorialControlScheme, TutorialList, TutorialPhase, TutorialPhaseType, TutorialTrigger, activateTutorial, activateTutorialPhase, activateTutorialTag, activeTutorial$, activeTutorialList$, activeTutorialPhase$, advisorPanelVisible$, completeActiveTutorial, completeActiveTutorialPhase, completeIntro, completeListIntro, completeListOutro, forceTutorial, listIntroActive$, listOutroActive$, nextTutorial$, setTutorialListFocused, toggleAdvisorPanel, toggleTutorialListFocus, triggerTutorialTag, tutorialCategories$, tutorialGroups$, tutorialIntroActive$, tutorialListFocused$, tutorialPending$, tutorials$, tutorialsEnabled$, untriggerTutorialTag, useTutorialTag, useTutorialTagActivation, useTutorialTagTrigger }; } export { diff --git a/CS2M.UI/types/cohtml.d.ts b/CS2M.UI/types/cohtml.d.ts index a83430a..6f9aa45 100755 --- a/CS2M.UI/types/cohtml.d.ts +++ b/CS2M.UI/types/cohtml.d.ts @@ -1,166 +1,195 @@ declare module "cohtml/cohtml" { - // There are minor edits here to make cohtml.d.ts valid with more strict tscofnig setup denoted with - // modified by Colossal - comment - - interface SingleArgumentCallback { - (result: T): any; - } - - interface ArbitraryCallback { + interface SingleArgumentCallback { + (result: T): any; + } + + interface ArbitraryCallback { (...args: any[]): any; // modified by Colossal - } - - export interface EventHandle { - /** - * Detach this handler from the event - **/ - clear(): void; - } - - interface VirtualList { - /** - * Index from which the data-bind-for will start generating DOM elements. The default value is 0. - **/ - startIndex: number; - - /** - * The maximum number of elements that will be generated from the data-bind-for. - **/ - pageSize: number; - } - - interface AttributeHandler { - /** - * This will be executed only once per element when the attribute attached to it is bound with a model. - * Set up any initial state, event handlers, etc. here. - * @param element The DOM element to which the handler is attached - * @param value The result from the evaluation of the attribute's expression in the HTML - **/ - init(element: Element, value: any): void; - - /** - * This will be executed only once per element when the element is detached from the DOM. - * Cleanup state, event handlers, etc. here. - * @param element The DOM element to which the handler is attached - **/ - deinit(element: Element): void; - - /** - * This will be executed every time when the model on which the attribute is attached is synchronized. - * @param element The DOM element to which the handler is attached - * @param value The result from the evaluation of the attribute's expression in the HTML - **/ - update(element: Element, value: any): void; - } - - interface AttributeHandlerConstructor { - new(): AttributeHandler; - } - - interface Deferred extends Promise { - /** - * Resolve the promise with the specified value. All success handlers will be called with value - * @param value The success value of the promise - **/ - resolve(value: T): void; - - /** - * Reject the promise with the specified value. All failure handlers will be called with value - * @param value The failure value of the promise - **/ - reject(value: T): void; - } - + } + + export interface EventHandle { // modified by Colossal + /** + * Detach this handler from the event + **/ + clear(): void; + } + + interface VirtualList { + /** + * Index from which the data-bind-for will start generating DOM elements. The default value is 0. + **/ + startIndex: number; + + /** + * The maximum number of elements that will be generated from the data-bind-for. + **/ + pageSize: number; + } + + interface AttributeHandler { + /** + * This will be executed only once per element when the attribute attached to it is bound with a model. + * Set up any initial state, event handlers, etc. here. + * @param element The DOM element to which the handler is attached + * @param value The result from the evaluation of the attribute's expression in the HTML + **/ + init(element: Element, value: any): void; + + /** + * This will be executed only once per element when the element is detached from the DOM. + * Cleanup state, event handlers, etc. here. + * @param element The DOM element to which the handler is attached + **/ + deinit(element: Element): void; + + /** + * This will be executed every time when the model on which the attribute is attached is synchronized. + * @param element The DOM element to which the handler is attached + * @param value The result from the evaluation of the attribute's expression in the HTML + **/ + update(element: Element, value: any): void; + } + + interface AttributeHandlerConstructor { + new(): AttributeHandler; + } + + interface Deferred extends Promise { + /** + * Resolve the promise with the specified value. All success handlers will be called with value + * @param value The success value of the promise + **/ + resolve(value: T): void; + + /** + * Reject the promise with the specified value. All failure handlers will be called with value + * @param value The failure value of the promise + **/ + reject(value: T): void; + } + export interface Engine { // modified by Colossal - /** - * A promise that is resolved after the page has loaded and the bindings are ready - **/ - whenReady: Promise; - - /** - * Register handler for an event - * @param name The name of the event - * @param callback A function to be executed when the event has been triggered - * @param context *this* context for the function, by default the engine object - * @return handle for unsubscribing this callback to the event - **/ - on(name: string, callback: ArbitraryCallback, context?: any): EventHandle; - - /** - * Remove handler for an event - * @param name The name of the event, by default removes all callbacks - * @param callback The callback to be removed, by default removes a callback regardless of the context - * @param context *this* context for the function, when specified only the callback with the specified context will be removed - **/ - off(name: string, callback?: ArbitraryCallback, context?: any): void; - - /** - * Trigger an event - * This function will trigger any C++ handler registered for this event with `Coherent::UI::View::RegisterForEvent` - * @param name The name of the event - * @param args Any extra arguments to be passed to the event handlers - **/ - trigger(name: string, ...args: any[]): void; - - /** - * Call asynchronously a C++ handler and retrieve the result - * The C++ handler must have been registered with `Coherent::UI::View::BindCall` - * @param name The name of the C++ handler to be called - * @param args Any extra parameters to be passed to the C++ handler - * @return A promise for the result of the C++ function - **/ - call(name: string, ...args: any[]): Promise; - - /** - * Registers a JavaScript data binding model - * @param name The name of the model - * @param model The model's definition - **/ - createJSModel(name: string, model: object): void; - - /** - * Applies the changes accumulated by updateWholeModel to the corresponding JavaScript objects. - **/ - synchronizeModels(): void; - - /** - * Marks a model as dirty. Properties will be synchronized using the synchronizeModels call. - * @param model The model to be marked as dirty - **/ - updateWholeModel(model: object): void; - - /** - * Unregisters a model and removes the global variable that is associated with it. - * @param model The model to be removed - **/ - unregisterModel(model: object): void; - - /** - * Creates a virtual list object to be used for pagination in data-bind-for - * @return VirtualList object for configuring the pagination options - **/ - createVirtualList(): VirtualList; - - /** - * Registers a custom handler for a given data-bind attribute name - * @param attributeName The name for the custom data-bind attribute, excluding the "data-bind-" prefix - * @param attributeHandler The AttributeHandler for the data-bind attribute - **/ - registerBindingAttribute(attributeName: string, attributeHandler: AttributeHandlerConstructor): void; - - /** - * Registers a JavaScript data binding model - * @param id The id that will be requested in the localization manager - * @return The translated text from the localization manager - **/ - translate(id: string): string; - - /** - * Updates all localized elements having `data-l10n-id`. Useful after changing the locale. - **/ - reloadLocalization(): void; - } - - export const engine: Engine; // modified by Colossal - export default engine; + /** + * A promise that is resolved after the page has loaded and the bindings are ready + **/ + whenReady: Promise; + + /** + * Register handler for an event + * @param name The name of the event + * @param callback A function to be executed when the event has been triggered + * @param context *this* context for the function, by default the engine object + * @return handle for unsubscribing this callback to the event + **/ + on(name: string, callback: ArbitraryCallback, context?: any): EventHandle; + + /** + * Remove handler for an event + * @param name The name of the event, by default removes all callbacks + * @param callback The callback to be removed, by default removes a callback regardless of the context + * @param context *this* context for the function, when specified only the callback with the specified context will be removed + **/ + off(name: string, callback?: ArbitraryCallback, context?: any): void; + + /** + * Trigger an event + * This function will trigger any C++ handler registered for this event with `Coherent::UI::View::RegisterForEvent` + * @param name The name of the event + * @param args Any extra arguments to be passed to the event handlers + **/ + trigger(name: string, ...args: any[]): void; + + /** + * Call asynchronously a C++ handler and retrieve the result + * The C++ handler must have been registered with `Coherent::UI::View::BindCall` + * @param name The name of the C++ handler to be called + * @param args Any extra parameters to be passed to the C++ handler + * @return A promise for the result of the C++ function + **/ + call(name: string, ...args: any[]): Promise; + + /** + * Registers a JavaScript data binding model + * @param name The name of the model + * @param model The model's definition + **/ + createJSModel(name: string, model: object): void; + + /** + * Applies the changes accumulated by updateWholeModel to the corresponding JavaScript objects. + **/ + synchronizeModels(): void; + + /** + * Marks a model as dirty. Properties will be synchronized using the synchronizeModels call. + * @param model The model to be marked as dirty + **/ + updateWholeModel(model: object): void; + + /** + * Unregisters a model and removes the global variable that is associated with it. + * @param model The model to be removed + **/ + unregisterModel(model: object): void; + + /** + * Creates a virtual list object to be used for pagination in data-bind-for + * @return VirtualList object for configuring the pagination options + **/ + createVirtualList(): VirtualList; + + /** + * Registers a custom handler for a given data-bind attribute name + * @param attributeName The name for the custom data-bind attribute, excluding the "data-bind-" prefix + * @param attributeHandler The AttributeHandler for the data-bind attribute + **/ + registerBindingAttribute(attributeName: string, attributeHandler: AttributeHandlerConstructor): void; + + /** + * Enable or disable safe data binding by reference of properties of exposed models. Enabled by default. + * @param enable + * @warning Changing this setting doesn't affect already exposed properties + **/ + enableSafeDataBinding(enable: boolean): void; + + /** + * Returns an unsafe reference to a property of an exposed model in JavaScript + * @param property Property of an exposed model, e.g. model.property1.property2 + * @return An unsafe reference to the specified property. The C++ is responsible to call View::DestroyExposedObject() when the pointer to that C++ object is no longer valid + **/ + pinUnsafeReference(property: object): object; + + /** + * Registers a JavaScript data binding model + * @param id The id that will be requested in the localization manager + * @return The translated text from the localization manager + **/ + translate(id: string): string; + + /** + * Updates all localized elements having `data-l10n-id`. Useful after changing the locale. + **/ + reloadLocalization(): void; + + /** + * Enables or disables immediate layout. Disabled by default. + * @param isEnabled Whether to enable immediate layout + **/ + enableImmediateLayout(isEnabled: boolean): void; + + /** + * Returns whether or not immediate layout is enabled. + * @return boolean + **/ + isImmediateLayoutEnabled(): boolean; + + /** + * Performs Immediate Layout sync + **/ + executeImmediateLayoutSync(): void; + } + + export const engine: Engine; // modified by Colossal + export default engine; } \ No newline at end of file diff --git a/CS2M.UI/types/input.d.ts b/CS2M.UI/types/input.d.ts index 86577e3..bd71136 100755 --- a/CS2M.UI/types/input.d.ts +++ b/CS2M.UI/types/input.d.ts @@ -1,26 +1,26 @@ declare module "cs2/input" { import React$1 from 'react'; - import { CSSProperties, ReactNode } from 'react'; + import { CSSProperties, PropsWithChildren, ReactNode } from 'react'; + export export class FocusSymbol { + readonly debugName: string; + readonly r: number; + constructor(debugName: string); + toString(): string; + } /** * Special focus key that disables the focus of the component. */ - export export const FOCUS_DISABLED: unique symbol; + export export const FOCUS_DISABLED: FocusSymbol; /** * Special focus key that assigns an internally generated, unique focus key to the component. * * This is useful if the component is inside of a `NavigationScope` and there is no need to manually control focus, * or the focus key is defined by a higher level `FocusKeyOverride` component. */ - export export const FOCUS_AUTO: unique symbol; + export export const FOCUS_AUTO: FocusSymbol; export type FocusKey = typeof FOCUS_DISABLED | typeof FOCUS_AUTO | UniqueFocusKey; export type UniqueFocusKey = FocusSymbol | string | number; - export export class FocusSymbol { - readonly debugName: string; - readonly r: number; - constructor(debugName: string); - toString(): string; - } export export function useUniqueFocusKey(focusKey: FocusKey, debugName: string): UniqueFocusKey | null; export interface FocusController { isChildFocused(focusKey: UniqueFocusKey): boolean; @@ -210,14 +210,17 @@ declare module "cs2/input" { limits?: FocusLimits; onRefocus?: (controller: MultiChildFocusController, lastElement: FocusController | null) => UniqueFocusKey | null; onChange?: (key: UniqueFocusKey | null) => void; + onFocused?: (focused: boolean) => void; allowFocusExit?: boolean; forceFocus?: UniqueFocusKey | null; debugName?: string; + allowLooping?: boolean | "x" | "y"; + jumpSections?: boolean; } /** * Automatic navigation in lists, grids and forms. */ - export export const AutoNavigationScope: ({ focusKey, initialFocused, direction, activation, limits, children, onChange, onRefocus, allowFocusExit, forceFocus, debugName }: React$1.PropsWithChildren) => JSX.Element; + export export const AutoNavigationScope: ({ onRefocus, onChange, allowFocusExit, allowLooping, debugName, focusKey, forceFocus, initialFocused, ...props }: React$1.PropsWithChildren) => JSX.Element; export interface FocusBoundaryProps { disabled?: boolean; onFocusChange?: FocusCallback; @@ -289,7 +292,8 @@ declare module "cs2/input" { openPanel = "open-panel", closePanel = "close-panel", openMenu = "open-menu", - closeMenu = "close-menu" + closeMenu = "close-menu", + clickDisableButton = "click-disable-button" } export interface PassiveFocusDivProps extends React$1.HTMLAttributes { onFocusChange?: (focused: boolean) => void; @@ -361,9 +365,12 @@ declare module "cs2/input" { direction?: NavigationDirection; activation?: FocusActivation; limits?: FocusLimits; + onFocused?: (focused: boolean) => void; onChange: (key: UniqueFocusKey | null) => void; onRefocus?: (controller: MultiChildFocusController, lastElement: FocusController | null) => UniqueFocusKey | null; allowFocusExit?: boolean; + allowLooping?: boolean | "x" | "y"; + jumpSections?: boolean; } /** * A stateless component that allows the user to navigate between multiple focusable children with a gamepad. @@ -374,44 +381,14 @@ declare module "cs2/input" { * * Optionally, a `focusKey` for the component itself can be set. */ - export export const NavigationScope: ({ focusKey, debugName, focused, direction, activation, limits, children, onChange, onRefocus, allowFocusExit, }: React$1.PropsWithChildren) => JSX.Element; - export export function refocusClosestKeyIfNoFocus(focusController: MultiChildFocusController, lastElement: FocusController | null): UniqueFocusKey | null; - export export function refocusClosestKey(focusController: MultiChildFocusController, lastElement: FocusController | null): UniqueFocusKey | null; + export export const NavigationScope: ({ focusKey, debugName, focused, direction, activation, limits, children, onFocused, onChange, onRefocus, allowFocusExit, allowLooping, jumpSections, }: React$1.PropsWithChildren) => JSX.Element; + export type RefocusHandler = (focusController: MultiChildFocusController, lastElement: FocusController | null) => UniqueFocusKey | null; + export export const refocusClosestKeyIfNoFocus: RefocusHandler; + export export const refocusClosestKey: RefocusHandler; export interface SelectableFocusBoundaryProps { onSelectedStateChanged?: (selected: boolean) => void; } export export const SelectableFocusBoundary: ({ onSelectedStateChanged, children }: React$1.PropsWithChildren) => JSX.Element; - export interface ValueBinding { - readonly value: T; - subscribe(listener?: BindingListener): ValueSubscription; - dispose(): void; - } - export interface EventBinding { - subscribe(listener: BindingListener): Subscription; - dispose(): void; - } - export interface BindingListener { - (value: T): void; - } - export interface Subscription { - dispose(): void; - } - export interface ValueSubscription extends Subscription { - readonly value: T; - setChangeListener(listener: BindingListener): void; - } - export interface ControlPath { - name: string; - group: string; - displayName?: string; - } - export enum GamepadType { - Xbox = 0, - PS = 1 - } - export interface ClassProps { - className?: string; - } export type Action = () => void | boolean; export type Action1D = (value: number) => void | boolean; export type Action2D = (value: Number2) => void | boolean; @@ -420,13 +397,18 @@ declare module "cs2/input" { "Change Slider Value": Action1D; "Change Tool Option": Action1D; "Change Value": Action1D; + "Change Line Schedule": Action1D; + "Select Popup Button": Action1D; "Move Vertical": Action1D; "Switch Radio Station": Action1D; "Scroll Vertical": Action1D; + "Scroll Assets": Action1D; "Select": Action; "Purchase Dev Tree Node": Action; "Select Chirp Sender": Action; "Save Game": Action; + "Overwrite Save": Action; + "Confirm": Action; "Expand Group": Action; "Collapse Group": Action; "Select Route": Action; @@ -441,9 +423,17 @@ declare module "cs2/input" { "Toggle Tool Color Picker": Action; "Cinematic Mode": Action; "Photo Mode": Action; + "Focus Citizen": Action; + "Unfocus Citizen": Action; + "Focus Line Panel": Action; + "Focus Occupants Panel": Action; + "Focus Info Panel": Action; + "Close": Action; "Back": Action; "Leave Underground Mode": Action; "Leave Info View": Action; + "Leave Map Tile View": Action; + "Jump Section": Action1D; "Switch Tab": Action1D; "Switch Option Section": Action1D; "Switch DLC": Action1D; @@ -451,15 +441,21 @@ declare module "cs2/input" { "Switch Radio Network": Action1D; "Change Time Scale": Action1D; "Switch Page": Action1D; + "Default Tool": Action; + "Default Tool UI": Action; "Tool Options": Action; "Switch Toolmode": Action; "Toggle Snapping": Action; + "Toggle Contour Lines": Action; "Capture Keyframe": Action; "Reset Property": Action; "Toggle Property": Action; "Previous Tutorial Phase": Action; "Continue Tutorial": Action; + "Finish Tutorial": Action; + "Close Tutorial": Action; "Focus Tutorial List": Action; + "Start Next Tutorial": Action; "Pause Simulation": Action; "Resume Simulation": Action; "Switch Speed": Action; @@ -467,25 +463,37 @@ declare module "cs2/input" { "Speed 2": Action; "Speed 3": Action; "Bulldozer": Action; + "Exit Underground Mode": Action; + "Enter Underground Mode": Action; + "Increase Elevation": Action; + "Decrease Elevation": Action; "Change Elevation": Action1D; "Advisor": Action; "Quicksave": Action; "Quickload": Action; "Focus Selected Object": Action; "Hide UI": Action; - "Map tile Purchase Panel": Action; + "Map Tile Purchase Panel": Action; "Info View": Action; "Progression Panel": Action; "Economy Panel": Action; "City Information Panel": Action; "Statistic Panel": Action; "Transportation Overview Panel": Action; + "Notification Panel": Action; "Chirper Panel": Action; "Lifepath Panel": Action; "Event Journal Panel": Action; "Radio Panel": Action; "Photo Mode Panel": Action; "Take Photo": Action; + "Relocate Selected Object": Action; + "Toggle Selected Object Active": Action; + "Delete Selected Object": Action; + "Toggle Selected Object Emptying": Action; + "Toggle Selected Lot Edit": Action; + "Toggle Follow Selected Citizen": Action; + "Toggle Traffic Routes": Action; "Pause Menu": Action; "Load Game": Action; "Start Game": Action; @@ -499,6 +507,7 @@ declare module "cs2/input" { "Select Directory": Action; "Search Options": Action; "Clear Search": Action; + "Credit Speed": Action1D; "Debug UI": Action; "Debug Prefab Tool": Action; "Debug Change Field": Action1D; @@ -510,6 +519,7 @@ declare module "cs2/input" { }; export interface ButtonTheme { button: string; + hint: string; } export interface ButtonSounds { select?: UISound | string | null; @@ -525,33 +535,109 @@ declare module "cs2/input" { selectAction?: InputAction; selectSound?: UISound | string | null; tooltipLabel?: React$1.ReactNode; + disableHint?: boolean; /** When the button is clicked or the SELECT button on a gamepad is pressed */ onSelect?: () => void; as?: "button" | "div"; + hintAction?: InputAction; + forceHint?: boolean; + shortcut?: InputAction; + allowFocusableChildren?: boolean; } - export enum ShortInputPathOption { - FallbackToLong = 1, - FallbackToControl = 2 + export interface ClassProps { + className?: string; + } + export interface StyleProps extends ClassProps { + style?: React$1.CSSProperties; + } + export interface ValueBinding { + readonly value: T; + subscribe(listener?: BindingListener): ValueSubscription; + dispose(): void; + } + export interface EventBinding { + subscribe(listener: BindingListener): Subscription; + dispose(): void; + } + export interface BindingListener { + (value: T): void; + } + export interface Subscription { + dispose(): void; + } + export interface ValueSubscription extends Subscription { + readonly value: T; + setChangeListener(listener: BindingListener): void; + } + export interface ControlPath { + name: string; + device: string; + displayName?: string; + } + export enum KeyboardLayout { + AutoDetect = 0, + International = 1 + } + export enum ControlScheme { + keyboardAndMouse = 0, + gamepad = 1 + } + export enum GamepadType { + Xbox = 0, + PS = 1 } export interface InputActionHintsProps extends ClassProps { disabled?: boolean; specifiedActions?: string[]; + excludedActions?: string[]; labels?: boolean; buttonAs?: ButtonProps["as"]; + delay?: number; + delayIgnoreCounter?: number; } - export export const InputActionHints: React$1.FC; + export export const InputActionHints: (props: InputActionHintsProps & React$1.RefAttributes) => React$1.ReactElement> | null; + export export const ActionHintLayout: ({ children, className, ...props }: ButtonProps) => JSX.Element; + export export function useGamepadType(): GamepadType; + export export function useKeyboardLayout(): KeyboardLayout; + export export function useLayoutMap(): Record; + export enum ShortInputPathOption { + FallbackToLong = 1, + FallbackToControl = 2 + } + export interface InputHintTheme { + hint: string; + button: string; + icon: string; + label: string; + } + export interface InputHintProps extends ClassProps, StyleProps { + action?: InputAction; + bindingIndex?: number; + active?: boolean; + controlScheme?: ControlScheme; + theme?: Partial; + shortName?: ShortInputPathOption; + showLabel?: boolean; + } + export export const InputHint: ({ action, active, controlScheme, ...props }: InputHintProps) => JSX.Element | null; + export export const ActiveControlSchemeInputHint: (props: InputHintProps) => JSX.Element; + export export const FocusedInputHint: (props: InputHintProps) => JSX.Element | null; + export interface ControlIconsProps extends ClassProps, StyleProps { + modifiers: ControlPath[]; + bindings: ControlPath[]; + showName?: boolean; + shortName?: ShortInputPathOption; + theme?: Partial; + } + export export const ControlIcons: ({ modifiers, bindings, showName, shortName, theme, className, style, children }: React$1.PropsWithChildren) => JSX.Element; export interface ControlIconProps extends ClassProps { binding: ControlPath; modifier: boolean; shortName?: ShortInputPathOption; - style?: React$1.CSSProperties; - iconClassName?: string; - buttonClassName?: string; + theme?: InputHintTheme; } export export const ControlIcon: React$1.FC; - export export const ActionHintLayout: ({ children, className, ...props }: ButtonProps) => JSX.Element; export export function useInputControlIcon(binding: ControlPath): string | null; - export export function useGamepadType(): GamepadType; export enum GamepadButton$1 { buttonSouth = 0, buttonEast = 1, @@ -594,22 +680,24 @@ declare module "cs2/input" { export interface InputActionConsumerProps { actions: InputActions | null; disabled?: boolean; + ignoreFocusState?: boolean; } export export const InputActionConsumer: React$1.NamedExoticComponent>; export interface SingleActionConsumerProps { + action: string; disabled?: boolean; onAction?: () => void; } /** When the Gamepad "A" button is pressed */ - export export const SelectConsumer: ({ disabled, children, onAction }: React$1.PropsWithChildren) => JSX.Element; - export interface ExpandConsumerProps extends SingleActionConsumerProps { + export export const SelectConsumer: ({ action, ...props }: React$1.PropsWithChildren>) => JSX.Element; + /** When the Keyboard "ESC" or Gamepad "B" button is pressed */ + export export const BackConsumer: ({ action, ...props }: React$1.PropsWithChildren>) => JSX.Element; + export interface ExpandConsumerProps extends Omit { expanded: boolean; expandable: boolean; } /** When the Gamepad "X" button is pressed */ export export const ExpandConsumer: ({ expanded, expandable, disabled, children, onAction }: React$1.PropsWithChildren) => JSX.Element; - /** When the Keyboard "ESC" or Gamepad "B" button is pressed */ - export export const BackConsumer: ({ disabled, children, onAction }: React$1.PropsWithChildren) => JSX.Element; export interface InputActionEvent { action: InputAction; value: null | number | Number2; @@ -617,7 +705,7 @@ declare module "cs2/input" { export export const inputActionNames$: ValueBinding<(keyof InputActionsDefinition)[]>; export export const onInputActionPerformed$: EventBinding; export export const onInputActionReleased$: EventBinding; - export export function setInputActionPriority(index: number, priority: number): void; + export export function setInputActionPriority(action: InputAction, priority: number, force: boolean): void; export export class InputStack { _items: InputStackItem[]; contains(action: InputAction): boolean; @@ -642,7 +730,12 @@ declare module "cs2/input" { export export const defaultInputController: InputController; export export const InputContext: React$1.Context; export type InputStackTransformer = (stack: InputStack) => void; - export export function useInputController(enabled: boolean, transformer: InputStackTransformer | null): InputController; + export enum InputControllerState { + Disabled = 0, + ActiveOnFocus = 1, + AlwaysActive = 2 + } + export export function useInputController(state: InputControllerState, transformer: InputStackTransformer | null): InputController; export export class InputControllerImpl implements InputController { private _parent; private _child; diff --git a/CS2M.UI/types/l10n.d.ts b/CS2M.UI/types/l10n.d.ts index aab8250..81dde70 100755 --- a/CS2M.UI/types/l10n.d.ts +++ b/CS2M.UI/types/l10n.d.ts @@ -1,6 +1,13 @@ declare module "cs2/l10n" { import { FC, FunctionComponent, MemoExoticComponent } from 'react'; + export interface LocComponent

extends MemoExoticComponent> { + renderString: LocStringRenderer

; + propsAreEqual: PropsAreEqual

; + } + export type LocStringRenderer

= (loc: Localization, props: P) => string; + export type PropsAreEqual

= (prevProps: P, nextProps: P) => boolean; + export type LocReactNode = JSX.Element | string; export interface Typed { __Type: T; } @@ -41,6 +48,7 @@ declare module "cs2/l10n" { Temperature = "temperature", NetElevation = "netElevation", ScreenFrequency = "screenFrequency", + Height = "height", Custom = "custom" } export enum LocElementType { @@ -99,15 +107,12 @@ declare module "cs2/l10n" { unitSettings: UnitSettings; } export function useCachedLocalization(): Localization; - export interface LocComponent

extends MemoExoticComponent> { - renderString: LocStringRenderer

; - propsAreEqual: PropsAreEqual

; - } - export type LocStringRenderer

= (loc: Localization, props: P) => string; - export type PropsAreEqual

= (prevProps: P, nextProps: P) => boolean; - export type LocReactNode = JSX.Element | string; export interface LocalizedProps { value: LocElement; + transformer?: LocTransformer; + } + export interface LocTransformer { + (value: string): string; } export export const Localized: LocComponent; export interface LocalizedBoundsProps { diff --git a/CS2M.UI/types/ui.d.ts b/CS2M.UI/types/ui.d.ts index ad64d6c..77ff0ab 100755 --- a/CS2M.UI/types/ui.d.ts +++ b/CS2M.UI/types/ui.d.ts @@ -1,5 +1,5 @@ declare module "cs2/ui" { - import { CSSProperties, HTMLAttributes, PropsWithChildren, ReactElement, ReactNode, Ref } from 'react'; + import { CSSProperties, HTMLAttributes, PropsWithChildren, ReactElement, ReactNode, Ref, RefObject } from 'react'; export interface RefReactElement extends ReactElement

{ ref?: Ref; @@ -39,23 +39,25 @@ declare module "cs2/ui" { direction?: BalloonDirection; alignment?: BalloonAlignment; children: RefReactElement; + anchorElRef?: RefObject; } - export export const Tooltip: ({ tooltip, forceVisible, disabled, theme, direction, alignment, className, children }: PropsWithChildren) => JSX.Element; - export const FOCUS_DISABLED: unique symbol; - export const FOCUS_AUTO: unique symbol; - export type FocusKey = typeof FOCUS_DISABLED | typeof FOCUS_AUTO | UniqueFocusKey; - export type UniqueFocusKey = FocusSymbol | string | number; + export export const Tooltip: ({ tooltip, forceVisible, disabled, theme, direction, alignment, className, children, anchorElRef }: PropsWithChildren) => JSX.Element; export class FocusSymbol { readonly debugName: string; readonly r: number; constructor(debugName: string); toString(): string; } + export const FOCUS_DISABLED: FocusSymbol; + export const FOCUS_AUTO: FocusSymbol; + export type FocusKey = typeof FOCUS_DISABLED | typeof FOCUS_AUTO | UniqueFocusKey; + export type UniqueFocusKey = FocusSymbol | string | number; export interface PanelTheme extends PanelTitleBarTheme { panel: string; header: string; content: string; footer: string; + floatingHint?: string; } export interface PanelTitleBarTheme { titleBar: string; @@ -78,17 +80,22 @@ declare module "cs2/ui" { } export export const DialogContext: import("react").Context; export export const DialogRenderer: ({ children }: PropsWithChildren) => JSX.Element; - export interface ConfirmationDialogProps { + export interface Number2 { + readonly x: number; + readonly y: number; + } + export interface ConfirmationDialogProps extends PropsWithChildren { title?: ReactNode; - message: ReactNode; + message?: ReactNode; details?: string; confirm?: ReactNode; cancel?: ReactNode; onConfirm: (dismiss: boolean) => void; onCancel?: () => void; - dismissable?: boolean; + dismissible?: boolean; cancellable?: boolean; zIndex?: number; + multiline?: boolean; } export const UITriggeredConfirmationDialog: React.FC; export enum UISound { @@ -136,11 +143,8 @@ declare module "cs2/ui" { openPanel = "open-panel", closePanel = "close-panel", openMenu = "open-menu", - closeMenu = "close-menu" - } - export interface Number2 { - readonly x: number; - readonly y: number; + closeMenu = "close-menu", + clickDisableButton = "click-disable-button" } export type Action = () => void | boolean; export type Action1D = (value: number) => void | boolean; @@ -149,13 +153,18 @@ declare module "cs2/ui" { "Change Slider Value": Action1D; "Change Tool Option": Action1D; "Change Value": Action1D; + "Change Line Schedule": Action1D; + "Select Popup Button": Action1D; "Move Vertical": Action1D; "Switch Radio Station": Action1D; "Scroll Vertical": Action1D; + "Scroll Assets": Action1D; "Select": Action; "Purchase Dev Tree Node": Action; "Select Chirp Sender": Action; "Save Game": Action; + "Overwrite Save": Action; + "Confirm": Action; "Expand Group": Action; "Collapse Group": Action; "Select Route": Action; @@ -170,9 +179,17 @@ declare module "cs2/ui" { "Toggle Tool Color Picker": Action; "Cinematic Mode": Action; "Photo Mode": Action; + "Focus Citizen": Action; + "Unfocus Citizen": Action; + "Focus Line Panel": Action; + "Focus Occupants Panel": Action; + "Focus Info Panel": Action; + "Close": Action; "Back": Action; "Leave Underground Mode": Action; "Leave Info View": Action; + "Leave Map Tile View": Action; + "Jump Section": Action1D; "Switch Tab": Action1D; "Switch Option Section": Action1D; "Switch DLC": Action1D; @@ -180,15 +197,21 @@ declare module "cs2/ui" { "Switch Radio Network": Action1D; "Change Time Scale": Action1D; "Switch Page": Action1D; + "Default Tool": Action; + "Default Tool UI": Action; "Tool Options": Action; "Switch Toolmode": Action; "Toggle Snapping": Action; + "Toggle Contour Lines": Action; "Capture Keyframe": Action; "Reset Property": Action; "Toggle Property": Action; "Previous Tutorial Phase": Action; "Continue Tutorial": Action; + "Finish Tutorial": Action; + "Close Tutorial": Action; "Focus Tutorial List": Action; + "Start Next Tutorial": Action; "Pause Simulation": Action; "Resume Simulation": Action; "Switch Speed": Action; @@ -196,25 +219,37 @@ declare module "cs2/ui" { "Speed 2": Action; "Speed 3": Action; "Bulldozer": Action; + "Exit Underground Mode": Action; + "Enter Underground Mode": Action; + "Increase Elevation": Action; + "Decrease Elevation": Action; "Change Elevation": Action1D; "Advisor": Action; "Quicksave": Action; "Quickload": Action; "Focus Selected Object": Action; "Hide UI": Action; - "Map tile Purchase Panel": Action; + "Map Tile Purchase Panel": Action; "Info View": Action; "Progression Panel": Action; "Economy Panel": Action; "City Information Panel": Action; "Statistic Panel": Action; "Transportation Overview Panel": Action; + "Notification Panel": Action; "Chirper Panel": Action; "Lifepath Panel": Action; "Event Journal Panel": Action; "Radio Panel": Action; "Photo Mode Panel": Action; "Take Photo": Action; + "Relocate Selected Object": Action; + "Toggle Selected Object Active": Action; + "Delete Selected Object": Action; + "Toggle Selected Object Emptying": Action; + "Toggle Selected Lot Edit": Action; + "Toggle Follow Selected Citizen": Action; + "Toggle Traffic Routes": Action; "Pause Menu": Action; "Load Game": Action; "Start Game": Action; @@ -228,6 +263,7 @@ declare module "cs2/ui" { "Select Directory": Action; "Search Options": Action; "Clear Search": Action; + "Credit Speed": Action1D; "Debug UI": Action; "Debug Prefab Tool": Action; "Debug Change Field": Action1D; @@ -236,6 +272,7 @@ declare module "cs2/ui" { export type InputAction = keyof InputActionsDefinition; export interface ButtonTheme { button: string; + hint: string; } export interface ButtonSounds { select?: UISound | string | null; @@ -251,9 +288,14 @@ declare module "cs2/ui" { selectAction?: InputAction; selectSound?: UISound | string | null; tooltipLabel?: ReactNode; + disableHint?: boolean; /** When the button is clicked or the SELECT button on a gamepad is pressed */ onSelect?: () => void; as?: "button" | "div"; + hintAction?: InputAction; + forceHint?: boolean; + shortcut?: InputAction; + allowFocusableChildren?: boolean; } export interface IconButtonTheme extends ButtonTheme { icon: string; @@ -301,15 +343,20 @@ declare module "cs2/ui" { theme?: Partial; content: ReactNode; alignment?: AnchoredPopupAlignment; + onToggle?: (visible: boolean) => void; } - export export const Dropdown: ({ focusKey, initialFocused, theme: partialTheme, content, alignment, children }: PropsWithChildren) => JSX.Element; - export interface DropdownToggleProps extends DropdownToggleBaseProps { + export export const Dropdown: ({ focusKey, initialFocused, theme: partialTheme, content, alignment, children, onToggle }: PropsWithChildren) => JSX.Element; + export interface DropdownToggleProps extends DropdownToggleBaseProps, ClassProps { theme?: DropdownToggleTheme; + openIconComponent?: ReactNode; + closeIconComponent?: ReactNode; } - export export const DropdownToggle: ({ theme, children, ...props }: PropsWithChildren) => JSX.Element; + export export const DropdownToggle: ({ theme, openIconComponent, closeIconComponent, children, ...props }: PropsWithChildren) => JSX.Element; export interface DropdownToggleBaseProps extends React.ButtonHTMLAttributes { tooltip?: ReactNode; + showHint?: boolean; theme?: Partial; + buttonTheme?: ButtonProps$1["theme"]; sounds?: ButtonSounds | null; selectSound?: UISound | string | null; tooltipLabel?: ReactNode; @@ -342,6 +389,7 @@ declare module "cs2/ui" { enter?: UISound | string | null; exit?: UISound | string | null; } + export type LocReactNode = JSX.Element | string; export interface PanelProps extends HTMLAttributes { focusKey?: FocusKey; header?: ReactNode; @@ -352,6 +400,11 @@ declare module "cs2/ui" { contentClassName?: string; onClose?: () => void; allowFocusExit?: boolean; + hintClassName?: string; + showCloseHint?: boolean | InputAction; + unfocusedHintAction?: InputAction; + backActionOverride?: string; + allowLooping?: boolean; } export interface DraggablePanelProps extends PanelProps { initialPosition?: Number2; @@ -378,8 +431,9 @@ declare module "cs2/ui" { uppercase?: boolean; subRow?: boolean; disableFocus?: boolean; + noShrinkRight?: boolean; } - export const InfoRow: ({ icon, left, right, tooltip, link, uppercase, subRow, disableFocus, className }: InfoRowProps) => JSX.Element; + export const InfoRow: ({ icon, left, right, tooltip, link, uppercase, subRow, disableFocus, className, noShrinkRight }: InfoRowProps) => JSX.Element; export interface SimplePanelProps extends PanelProps { draggable?: false | undefined; } @@ -392,8 +446,9 @@ declare module "cs2/ui" { src: string; tinted?: boolean; className?: string; + children?: ReactNode; } - export export const Icon: ({ tinted, className, src }: IconProps) => JSX.Element; + export export const Icon: ({ tinted, className, src, children }: IconProps) => JSX.Element; export const PortalContainerProvider: ({ children }: { children: RefReactElement; }) => JSX.Element; @@ -444,7 +499,6 @@ declare module "cs2/ui" { export export const Scrollable: (props: ScrollableProps & { children?: import("react").ReactNode; } & import("react").RefAttributes) => import("react").ReactElement> | null; - export type LocReactNode = JSX.Element | string; export enum ParagraphStyle { None = 0, Heading1 = 1, @@ -455,11 +509,11 @@ declare module "cs2/ui" { Heading6 = 6, ListItem = 7 } - export type FormattedTextRenderResult = [ - node: ReactNode, - style: ParagraphStyle, - images: string[] - ]; + export type FormattedTextRenderResult = { + node: ReactNode; + style: ParagraphStyle; + images: string[]; + }; export interface FormattedTextRenderer { render(str: string): FormattedTextRenderResult; } @@ -480,8 +534,9 @@ declare module "cs2/ui" { theme?: Partial; renderer?: FormattedTextRenderer; onLinkSelect?: (data: string) => void; + selectAction?: InputAction; } - export export const FormattedText: ({ focusKey, text, theme: partialTheme, renderer, className, onLinkSelect, ...props }: FormattedTextProps) => JSX.Element; + export export const FormattedText: ({ focusKey, text, theme: partialTheme, renderer, className, onLinkSelect, selectAction, ...props }: FormattedTextProps) => JSX.Element; export interface FormattedParagraphsTheme extends FormattedTextTheme { paragraphs: string; } @@ -492,10 +547,11 @@ declare module "cs2/ui" { theme?: Partial; renderer?: FormattedTextRenderer; onLinkSelect?: (data: string) => void; + selectAction?: InputAction; maxLineLength?: number; splitLineLength?: number; } - export export const FormattedParagraphs: ({ focusKey, text, theme: partialTheme, renderer, className, children, onLinkSelect, maxLineLength, splitLineLength, ...props }: PropsWithChildren) => JSX.Element; + export export const FormattedParagraphs: ({ focusKey, text, theme: partialTheme, renderer, className, children, onLinkSelect, selectAction, maxLineLength, splitLineLength, ...props }: PropsWithChildren) => JSX.Element; export export class MarkdownRenderer implements FormattedTextRenderer { render(str: string): FormattedTextRenderResult; } diff --git a/CS2M.UI/types/utils.d.ts b/CS2M.UI/types/utils.d.ts index b267e50..8d8b530 100755 --- a/CS2M.UI/types/utils.d.ts +++ b/CS2M.UI/types/utils.d.ts @@ -19,6 +19,7 @@ declare module "cs2/utils" { export export function useFormattedLargeNumber(value: number): string; export export function useRem(): number; export export function useCssLength(length: string): number; + export export function preloadImages | string[]>(urls: T): T; export {}; diff --git a/CS2M.UI/webpack.config.js b/CS2M.UI/webpack.config.js index 86130f3..c08c607 100755 --- a/CS2M.UI/webpack.config.js +++ b/CS2M.UI/webpack.config.js @@ -11,7 +11,7 @@ if (!CSII_USERDATAPATH) { throw "CSII_USERDATAPATH environment variable is not set, ensure the CSII Modding Toolchain is installed correctly"; } -const OUTPUT_DIR = `${CSII_USERDATAPATH}/Mods/${MOD.id}`; +const OUTPUT_DIR = `${CSII_USERDATAPATH}\\Mods\\${MOD.id}`; const banner = ` * Cities: Skylines II UI Module @@ -34,10 +34,10 @@ module.exports = { "react-dom": "ReactDOM", "cs2/modding": "cs2/modding", "cs2/api": "cs2/api", - "cs2/input": "cs2/input", "cs2/bindings": "cs2/bindings", "cs2/l10n": "cs2/l10n", "cs2/ui": "cs2/ui", + "cs2/input": "cs2/input", "cs2/utils": "cs2/utils", "cohtml/cohtml": "cohtml/cohtml", }, @@ -80,6 +80,9 @@ module.exports = { resolve: { extensions: [".tsx", ".ts", ".js"], modules: ["node_modules", path.join(__dirname, "src")], + alias: { + "mod.json": path.resolve(__dirname, "mod.json"), + }, }, output: { path: path.resolve(__dirname, OUTPUT_DIR), diff --git a/CS2M/CS2M.csproj b/CS2M/CS2M.csproj index 03f2641..e0c2781 100644 --- a/CS2M/CS2M.csproj +++ b/CS2M/CS2M.csproj @@ -2,7 +2,7 @@ Library - net472 + net48 Debug;Release @@ -10,8 +10,8 @@ - - + + @@ -65,8 +65,8 @@ - - + + @@ -83,6 +83,10 @@ + + + + @@ -104,9 +108,7 @@ - - - + @@ -121,28 +123,32 @@ - + - + + - + + + + + + + + + + + diff --git a/CS2M/CS2M.csproj.user b/CS2M/CS2M.csproj.user new file mode 100644 index 0000000..289152f --- /dev/null +++ b/CS2M/CS2M.csproj.user @@ -0,0 +1,9 @@ + + + + + + Component + + + \ No newline at end of file diff --git a/CS2M/CS2M.txt b/CS2M/CS2M.txt new file mode 100644 index 0000000..282878f --- /dev/null +++ b/CS2M/CS2M.txt @@ -0,0 +1,144 @@ + + + + Library + net48 + Debug;Release + + + Properties\PublishConfiguration.xml + + + + + + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + + + false + + + false + + + false + + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + PreserveNewest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CS2M/Log.cs b/CS2M/Log.cs index 9488e65..6549805 100644 --- a/CS2M/Log.cs +++ b/CS2M/Log.cs @@ -1,5 +1,6 @@ using System; using Colossal.Logging; +using System.Diagnostics; namespace CS2M { @@ -18,31 +19,37 @@ public static void ErrorWithStackTrace(string message) Logger.SetLogStackTrace(true); Logger.Error(message); Logger.SetLogStackTrace(false); + System.Diagnostics.Debug.Print(message); } public static void Error(string message) { Logger.Error(message); + System.Diagnostics.Debug.Print(message); } public static void Error(string message, Exception ex) { Logger.Error(ex, message); + System.Diagnostics.Debug.Print(message); } public static void Warn(string message) { Logger.Warn(message); + System.Diagnostics.Debug.Print(message); } public static void Info(string message) { Logger.Info(message); + System.Diagnostics.Debug.Print(message); } public static void Debug(string message) { Logger.Debug(message); + System.Diagnostics.Debug.Print(message); } } } diff --git a/CS2M/Networking/LocalPlayer.cs b/CS2M/Networking/LocalPlayer.cs index 86cef91..01f0253 100644 --- a/CS2M/Networking/LocalPlayer.cs +++ b/CS2M/Networking/LocalPlayer.cs @@ -2,6 +2,7 @@ using CS2M.API.Networking; using CS2M.Commands.ApiServer; using LiteNetLib; +using System; namespace CS2M.Networking { @@ -13,7 +14,7 @@ public LocalPlayer() : base() { } - public bool GetServerInfo(ConnectionConfig connectionConfig) + public bool GetServerInfo(ConnectionConfig connectionConfig, Action onStart) { if (PlayerStatus != PlayerStatus.INACTIVE) { @@ -31,16 +32,19 @@ public bool GetServerInfo(ConnectionConfig connectionConfig) if (!_networkManager.InitConnect(connectionConfig)) { + onStart?.Invoke("= Can't init connect to server ="); return false; } if (!_networkManager.SetupNatConnect()) { + onStart?.Invoke("= Can't perform NAT connection to server "); return false; } PlayerType = PlayerType.CLIENT; PlayerStatus = PlayerStatus.GET_SERVER_INFO; + onStart?.Invoke("= Connection to server is succsesful! ="); return true; } @@ -95,7 +99,7 @@ public bool Playing() } // INACTIVE -> PLAYING (Server) - public bool Playing(ConnectionConfig connectionConfig) + public bool Playing(ConnectionConfig connectionConfig, Action onStart) { if (PlayerStatus != PlayerStatus.INACTIVE) { @@ -107,12 +111,15 @@ public bool Playing(ConnectionConfig connectionConfig) bool serverStarted = _networkManager.StartServer(connectionConfig); if (!serverStarted) { + onStart?.Invoke("= Error! The server failed to start. ="); return false; } - - //TODO: Setup server variables (player list, etc.) + //TODO: Setup server variables (player list, etc.) + PlayerType = PlayerType.SERVER; PlayerStatus = PlayerStatus.PLAYING; + + onStart?.Invoke("= The server has started succesfully. ="); return true; } diff --git a/CS2M/Networking/NetworkInterface.cs b/CS2M/Networking/NetworkInterface.cs index ea809ab..fc319b0 100644 --- a/CS2M/Networking/NetworkInterface.cs +++ b/CS2M/Networking/NetworkInterface.cs @@ -1,6 +1,7 @@ using CS2M.API.Commands; using CS2M.API.Networking; using CS2M.Commands.ApiServer; +using System; namespace CS2M.Networking { @@ -17,14 +18,14 @@ public void OnUpdate() LocalPlayer.OnUpdate(); } - public void Connect(ConnectionConfig connectionConfig) + public void Connect(ConnectionConfig connectionConfig, Action onStart) { - LocalPlayer.GetServerInfo(connectionConfig); + LocalPlayer.GetServerInfo(connectionConfig, onStart); } - public void StartServer(ConnectionConfig connectionConfig) + public void StartServer(ConnectionConfig connectionConfig, Action onStart) { - LocalPlayer.Playing(connectionConfig); + LocalPlayer.Playing(connectionConfig, onStart); } public void SendToAll(CommandBase message) diff --git a/CS2M/Networking/NetworkManager.cs b/CS2M/Networking/NetworkManager.cs index ae1f464..ed1b4e5 100644 --- a/CS2M/Networking/NetworkManager.cs +++ b/CS2M/Networking/NetworkManager.cs @@ -1,12 +1,14 @@ -using System; -using System.Net; -using System.Net.Sockets; +using Colossal.UI.Binding; using CS2M.API.Commands; using CS2M.API.Networking; using CS2M.Commands; using CS2M.Commands.ApiServer; +using CS2M.UI; using CS2M.Util; using LiteNetLib; +using System; +using System.Net; +using System.Net.Sockets; using Timer = System.Timers.Timer; namespace CS2M.Networking @@ -46,10 +48,13 @@ public NetworkManager() listener.PeerDisconnectedEvent += ListenerOnPeerDisconnectedEvent; listener.NetworkLatencyUpdateEvent += ListenerOnNetworkLatencyUpdateEvent; listener.ConnectionRequestEvent += ListenerOnConnectionRequestEvent; + + } public bool InitConnect(ConnectionConfig connectionConfig) { + if (connectionConfig.IsTokenBased()) { Log.Info($"Attempting to connect to server {connectionConfig.Token}..."); @@ -69,6 +74,10 @@ public bool InitConnect(ConnectionConfig connectionConfig) //ConnectionMessage = "Client failed to start."; return false; } + else + { + Log.Info("The client conected to server succesfuly!"); + } return true; } @@ -86,6 +95,7 @@ public bool SetupNatConnect() catch { //ConnectionMessage = "Invalid server IP"; + Log.Error("Invalid server IP"); return false; } } @@ -238,8 +248,9 @@ public void ProcessEvents() _netManager.NatPunchModule.PollEvents(); } _netManager.PollEvents(); + // Trigger keepalive to api server - _apiServer.KeepAlive(_connectionConfig); + // _apiServer.KeepAlive(_connectionConfig); } public void SendToAllClients(CommandBase message) diff --git a/CS2M/UI/UISystem.cs b/CS2M/UI/UISystem.cs index 9333d5d..494ceec 100644 --- a/CS2M/UI/UISystem.cs +++ b/CS2M/UI/UISystem.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using Colossal.Logging; using Colossal.Serialization.Entities; using Colossal.UI.Binding; using CS2M.API.Networking; @@ -7,6 +7,8 @@ using Game; using Game.UI; using Game.UI.InGame; +using System.Collections.Generic; +using System.Diagnostics; namespace CS2M.UI { @@ -18,6 +20,8 @@ public partial class UISystem : UISystemBase private ValueBinding _joinMenuVisible; private ValueBinding _hostMenuVisible; + public ValueBinding _NetworkStates; + private ValueBinding _joinIPAddress; private ValueBinding _joinPort; private ValueBinding _hostPort; @@ -42,7 +46,10 @@ protected override void OnStartRunning() protected override void OnCreate() { base.OnCreate(); - AddBinding(new TriggerBinding(nameof(CS2M), "ShowMultiplayerMenu", ShowJoinGameMenu)); + + + + AddBinding(new TriggerBinding(nameof(CS2M), "ShowMultiplayerMenu", ShowUITraversal)); AddBinding(new TriggerBinding(nameof(CS2M), "HideJoinGameMenu", HideJoinGameMenu)); AddBinding(new TriggerBinding(nameof(CS2M), "HideHostGameMenu", HideHostGameMenu)); @@ -70,14 +77,16 @@ protected override void OnCreate() AddBinding(_hostMenuVisible = new ValueBinding(nameof(CS2M), "HostMenuVisible", false)); AddBinding(_modSupportStatus = new ValueBinding>(nameof(CS2M), "modSupport", new List(),new ListWriter(new ValueWriter()))); - AddBinding(_joinIPAddress = new ValueBinding(nameof(CS2M), "JoinIpAddress", "")); - AddBinding(_joinPort = new ValueBinding(nameof(CS2M), "JoinPort", 0)); - AddBinding(_hostPort = new ValueBinding(nameof(CS2M), "HostPort", 0)); - AddBinding(_username = new ValueBinding(nameof(CS2M), "Username", "")); + AddBinding(_joinIPAddress = new ValueBinding(nameof(CS2M), "JoinIpAddress", "127.0.0.1")); + AddBinding(_joinPort = new ValueBinding(nameof(CS2M), "JoinPort", 4230)); + AddBinding(_hostPort = new ValueBinding(nameof(CS2M), "HostPort", 4230)); + AddBinding(_username = new ValueBinding(nameof(CS2M), "Username", "CS2M_Player")); AddBinding(_joinGameEnabled = new ValueBinding(nameof(CS2M), "JoinGameEnabled", true)); AddBinding(_hostGameEnabled = new ValueBinding(nameof(CS2M), "HostGameEnabled", true)); - AddBinding(_playerStatus = new ValueBinding(nameof(CS2M), "PlayerStatus", "")); + AddBinding(_playerStatus = new ValueBinding(nameof(CS2M), "PlayerStatus", "Playing network session in CSII")); + + AddBinding(_NetworkStates = new ValueBinding(nameof(CS2M), "uiNetworkStates", "= Waiting for commands =")); } private void RefreshModSupport() @@ -85,6 +94,25 @@ private void RefreshModSupport() _modSupportStatus.Update(ModCompat.GetModSupportList()); } + private void ShowUITraversal() + { + if (_gameMode == GameMode.MainMenu) + { + ShowJoinGameMenu(); + Debug.Print("I'm in game MainMenu. Opening Join UI"); + } + else if (_gameMode == GameMode.Game) + { + ShowHostGameMenu(); + Debug.Print("I'm in active game session. Opening Host UI"); + } + } + + public void piblishNetworkStateInUI(string newSate) + { + this._NetworkStates.Update(_NetworkStates.value +"\r\n"+ newSate); + } + private void ShowJoinGameMenu() { RefreshModSupport(); @@ -102,43 +130,59 @@ private void ShowJoinGameMenu() private void ShowHostGameMenu() { - RefreshModSupport(); if (_gameMode == GameMode.MainMenu) { - this._activeMenuScreenBinding.Update(99); + //this._activeMenuScreenBinding.Update(99); this._hostMenuVisible.Update(true); } else if (_gameMode == GameMode.Game) { - this._activeGameScreenBinding.Update(99); + //this._activeGameScreenBinding.Update(99); this._hostMenuVisible.Update(true); } } private void HideJoinGameMenu() { - this._activeMenuScreenBinding.Update(0); - this._activeGameScreenBinding.Update(10); - this._joinMenuVisible.Update(false); + + if (_gameMode == GameMode.MainMenu) + { + this._activeMenuScreenBinding.Update(0); + this._joinMenuVisible.Update(false); + } + else if (_gameMode == GameMode.Game) + { + this._activeGameScreenBinding.Update(10); + this._joinMenuVisible.Update(false); + } } private void HideHostGameMenu() { - this._activeMenuScreenBinding.Update(0); - this._activeGameScreenBinding.Update(10); - this._hostMenuVisible.Update(false); + if (_gameMode == GameMode.MainMenu) + { + //this._activeMenuScreenBinding.Update(0); + this._hostMenuVisible.Update(false); + } + else if (_gameMode == GameMode.Game) + { + //this._activeGameScreenBinding.Update(10); + this._hostMenuVisible.Update(false); + } } private void JoinGame() { - NetworkInterface.Instance.Connect(new ConnectionConfig(_joinIPAddress.value, _joinPort.value, "")); + NetworkInterface.Instance.Connect(new ConnectionConfig(_joinIPAddress.value, _joinPort.value, ""), piblishNetworkStateInUI); + _hostGameEnabled.Update(false); _joinGameEnabled.Update(false); } private void HostGame() { - NetworkInterface.Instance.StartServer(new ConnectionConfig(_joinPort.value)); + NetworkInterface.Instance.StartServer(new ConnectionConfig(_joinPort.value), piblishNetworkStateInUI); _hostGameEnabled.Update(false); + _joinGameEnabled.Update(false); } public void SetGameState(PlayerStatus status) diff --git a/TemplateEngineHost/vs/.vstemplates.global.etag b/TemplateEngineHost/vs/.vstemplates.global.etag new file mode 100644 index 0000000..5feeae3 --- /dev/null +++ b/TemplateEngineHost/vs/.vstemplates.global.etag @@ -0,0 +1 @@ +dd81f2797b3ea32eeb917836bb9a0f61aaed78496c1423ad729b50f5af21819e \ No newline at end of file diff --git a/TemplateEngineHost/vs/.vstemplates.local b/TemplateEngineHost/vs/.vstemplates.local new file mode 100644 index 0000000..9fe59dc --- /dev/null +++ b/TemplateEngineHost/vs/.vstemplates.local @@ -0,0 +1,11 @@ +C:\Program Files\dotnet\templates\9.0.8\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg +C:\Program Files\dotnet\templates\8.0.19\microsoft.dotnet.common.projecttemplates.8.0.8.0.413.nupkg +C:\Program Files\dotnet\templates\8.0.19\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg +C:\Program Files\dotnet\templates\8.0.19\microsoft.dotnet.web.itemtemplates.8.0.8.0.19.nupkg +C:\Program Files\dotnet\templates\8.0.19\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg +C:\Program Files\dotnet\templates\9.0.8\microsoft.dotnet.winforms.projecttemplates.9.0.8-servicing.25368.1.nupkg +C:\Program Files\dotnet\templates\9.0.8\microsoft.dotnet.wpf.projecttemplates.9.0.8-rtm.25368.9.nupkg +C:\Program Files\dotnet\templates\9.0.8\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg +C:\Program Files\dotnet\templates\9.0.8\microsoft.dotnet.web.itemtemplates.9.0.9.0.8.nupkg +C:\Program Files\dotnet\templates\9.0.8\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg +d:\program files\microsoft visual studio\2022\community\common7\ide\extensions\microsoft\templateengine\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg diff --git a/TemplateEngineHost/vs/.vstemplates.local.etag b/TemplateEngineHost/vs/.vstemplates.local.etag new file mode 100644 index 0000000..dc951f0 --- /dev/null +++ b/TemplateEngineHost/vs/.vstemplates.local.etag @@ -0,0 +1 @@ +f98daf0d1d1b269b9807ed48417e69aaef125bf8de681e993f1f08a0d4f37236 \ No newline at end of file diff --git a/TemplateEngineHost/vs/templatecache.json b/TemplateEngineHost/vs/templatecache.json new file mode 100644 index 0000000..6b16b2b --- /dev/null +++ b/TemplateEngineHost/vs/templatecache.json @@ -0,0 +1 @@ +{"Version":"1.0.0.7","Locale":"en-US","TemplateInfo":[{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":null,"Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"If true, adds an Import for the closest Directory.Build.props in the file system directory hierarchy. Directory.Build.props don't inherit by default, so doing this allows you to build up a set of customizations folder-by-folder.","Name":"inherit","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"False","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If true, adds an Import for the closest Directory.Build.props in the file system directory hierarchy. Directory.Build.props don't inherit by default, so doing this allows you to build up a set of customizations folder-by-folder.","DisplayName":"Inherit","AllowMultipleValues":false},{"Documentation":"If true, adds a property to enable the artifacts output layout. This is a common pattern for projects that produce build artifacts, such as NuGet packages, that are placed in a common folder.","Name":"useArtifacts","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"False","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If true, adds a property to enable the artifacts output layout. This is a common pattern for projects that produce build artifacts, such as NuGet packages, that are placed in a common folder.","DisplayName":"Use Artifacts Output Layout","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["MSBuild","props"],"DefaultName":null,"Description":"An empty Directory.Build.props file which can be used to specify MSBuild properties for an entire folder","Identity":"Microsoft.Standard.QuickStarts.DirectoryProps","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"MSBuild.DirectoryPropsFile","Precedence":0,"Name":"MSBuild Directory.Build.props file","ShortNameList":["buildprops"],"PreferDefaultName":false,"ConfigPlace":"/content/BuildProps/.template.config/template.json","LocaleConfigPlace":"/content/BuildProps/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/BuildProps/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"type":"item"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"itemHierarchyPaths\":[\"General\"]}","PostActions":[],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":null,"Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"If true, adds an Import for the closest Directory.Build.targets in the file system directory hierarchy. Directory.Build.targets don't inherit by default, so doing this allows you to build up a set of customizations folder-by-folder.","Name":"inherit","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"False","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If true, adds an Import for the closest Directory.Build.targets in the file system directory hierarchy. Directory.Build.targets don't inherit by default, so doing this allows you to build up a set of customizations folder-by-folder.","DisplayName":"Inherit","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["MSBuild","props"],"DefaultName":null,"Description":"An empty Directory.Build.targets file which can be used to specify MSBuild tasks and targets for an entire folder","Identity":"Microsoft.Standard.QuickStarts.DirectoryTargets","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"MSBuild.DirectoryTargetsFile","Precedence":0,"Name":"MSBuild Directory.Build.targets file","ShortNameList":["buildtargets"],"PreferDefaultName":false,"ConfigPlace":"/content/BuildTargets/.template.config/template.json","LocaleConfigPlace":"/content/BuildTargets/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/BuildTargets/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"type":"item"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"itemHierarchyPaths\":[\"General\"]}","PostActions":[],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Class1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common"],"DefaultName":"Class1","Description":"Creates a new C# class","Identity":"DotNet.Common.Class.CSharp","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"DotNet.Common.Class","Precedence":0,"Name":"Class","ShortNameList":["class"],"PreferDefaultName":true,"ConfigPlace":"/content/Class-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/Class-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":[],"Constraints":[{"Type":"project-capability","Args":"\"CSharp\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Class1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common"],"DefaultName":"Class1","Description":"Creates a new Visual Basic class","Identity":"DotNet.Common.Class.VisualBasic","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"DotNet.Common.Class","Precedence":0,"Name":"Class","ShortNameList":["class"],"PreferDefaultName":true,"ConfigPlace":"/content/Class-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/Class-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"item"},"HostData":null,"PostActions":[],"Constraints":[{"Type":"project-capability","Args":"\"VB\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":null,"Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Creates empty .editorconfig instead of the defaults for .NET.","Name":"Empty","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Creates empty .editorconfig instead of the defaults for .NET.","DisplayName":"Empty","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Config"],"DefaultName":null,"Description":"Creates an .editorconfig file for configuring code style preferences.","Identity":"Microsoft.Standard.QuickStarts.EditorConfigFile","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":null,"Precedence":0,"Name":"EditorConfig file","ShortNameList":["editorconfig",".editorconfig"],"PreferDefaultName":false,"ConfigPlace":"/content/EditorConfig/.template.config/template.json","LocaleConfigPlace":"/content/EditorConfig/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"type":"item"},"HostData":null,"PostActions":[],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Enum1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common"],"DefaultName":"Enum1","Description":"Creates a new C# enum","Identity":"DotNet.Common.Enum.CSharp","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"DotNet.Common.Enum","Precedence":0,"Name":"Enum","ShortNameList":["enum"],"PreferDefaultName":true,"ConfigPlace":"/content/Enum-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/Enum-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":[],"Constraints":[{"Type":"project-capability","Args":"\"CSharp\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Enum1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common"],"DefaultName":"Enum1","Description":"Creates a new Visual Basic enum","Identity":"DotNet.Common.Enum.VisualBasic","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"DotNet.Common.Enum","Precedence":0,"Name":"Enum","ShortNameList":["enum"],"PreferDefaultName":true,"ConfigPlace":"/content/Enum-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/Enum-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"item"},"HostData":null,"PostActions":[],"Constraints":[{"Type":"project-capability","Args":"\"VB\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":null,"Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Config"],"DefaultName":null,"Description":"Creates a gitignore file for a dotnet project.","Identity":"Microsoft.Standard.QuickStarts.GitignoreFile","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"GitignoreFile","Precedence":100,"Name":"dotnet gitignore file","ShortNameList":["gitignore",".gitignore"],"PreferDefaultName":false,"ConfigPlace":"/content/Gitignore/.template.config/template.json","LocaleConfigPlace":"/content/Gitignore/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"type":"item"},"HostData":null,"PostActions":[],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"unused","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The version of the .NET SDK to use.","Name":"SdkVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":null,"DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The version of the .NET SDK to use.","DisplayName":"SDK version","AllowMultipleValues":false},{"Documentation":"","Name":"dotnet-cli-version","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":null,"DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"","DisplayName":"dotnet CLI version","AllowMultipleValues":false},{"Documentation":"The roll-forward policy to use when selecting an SDK version.","Name":"RollForward","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"patch":{"DisplayName":"Patch","Description":"Uses the specified version.\nIf not found, rolls forward to the latest patch level.\nIf not found, fails.\nThis value is the legacy behavior from the earlier versions of the SDK."},"feature":{"DisplayName":"Feature","Description":"Uses the latest patch level for the specified major, minor, and feature band.\nIf not found, rolls forward to the next higher feature band within the same major/minor and uses the latest patch level for that feature band.\nIf not found, fails."},"minor":{"DisplayName":"Minor","Description":"Uses the latest patch level for the specified major, minor, and feature band.\nIf not found, rolls forward to the next higher feature band within the same major/minor version and uses the latest patch level for that feature band.\nIf not found, rolls forward to the next higher minor and feature band within the same major and uses the latest patch level for that feature band.\nIf not found, fails."},"major":{"DisplayName":"Major","Description":"Uses the latest patch level for the specified major, minor, and feature band.\nIf not found, rolls forward to the next higher feature band within the same major/minor version and uses the latest patch level for that feature band.\nIf not found, rolls forward to the next higher minor and feature band within the same major and uses the latest patch level for that feature band.\nIf not found, rolls forward to the next higher major, minor, and feature band and uses the latest patch level for that feature band.\nIf not found, fails."},"latestPatch":{"DisplayName":"Latest patch","Description":"Uses the latest installed patch level that matches the requested major, minor, and feature band with a patch level and that is greater or equal than the specified value.\nIf not found, fails."},"latestFeature":{"DisplayName":"Latest feature","Description":"Uses the highest installed feature band and patch level that matches the requested major and minor with a feature band and patch level that is greater or equal than the specified value.\nIf not found, fails."},"latestMinor":{"DisplayName":"Latest minor","Description":"Uses the highest installed minor, feature band, and patch level that matches the requested major with a minor, feature band, and patch level that is greater or equal than the specified value.\nIf not found, fails."},"latestMajor":{"DisplayName":"Latest major","Description":"Uses the highest installed .NET SDK with a version that is greater or equal than the specified value.\nIf not found, fail."},"disable":{"DisplayName":"Disable roll-forward","Description":"Doesn't roll forward. Exact match required."}},"Description":"The roll-forward policy to use when selecting an SDK version.","DisplayName":"Roll-forward policy","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Config"],"DefaultName":"global.json","Description":"A file for selecting the .NET SDK version.","Identity":"Microsoft.Standard.QuickStarts.GlobalJsonFile","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"GlobalJsonFile","Precedence":100,"Name":"global.json file","ShortNameList":["globaljson","global.json"],"PreferDefaultName":false,"ConfigPlace":"/content/GlobalJson/.template.config/template.json","LocaleConfigPlace":"/content/GlobalJson/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Interface1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common"],"DefaultName":"Interface1","Description":"Creates a new C# interface","Identity":"DotNet.Common.Interface.CSharp","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"DotNet.Common.Interface","Precedence":0,"Name":"Interface","ShortNameList":["interface"],"PreferDefaultName":true,"ConfigPlace":"/content/Interface-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/Interface-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":[],"Constraints":[{"Type":"project-capability","Args":"\"CSharp\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Interface1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common"],"DefaultName":"Interface1","Description":"Creates a new Visual Basic interface","Identity":"DotNet.Common.Interface.VisualBasic","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"DotNet.Common.Interface","Precedence":0,"Name":"Interface","ShortNameList":["interface"],"PreferDefaultName":true,"ConfigPlace":"/content/Interface-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/Interface-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"item"},"HostData":null,"PostActions":[],"Constraints":[{"Type":"project-capability","Args":"\"VB\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Module1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common"],"DefaultName":"Module1","Description":"Creates a new Visual Basic module","Identity":"DotNet.Common.Module.VisualBasic","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"DotNet.Common.Module","Precedence":0,"Name":"Module","ShortNameList":["module"],"PreferDefaultName":true,"ConfigPlace":"/content/Module-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/Module-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"item"},"HostData":null,"PostActions":[],"Constraints":[{"Type":"project-capability","Args":"\"VB\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Test1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Select the fixture kinds to include in the project.","Name":"Fixture","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"None","Description":"No fixture methods"},"AssemblyInitialize":{"DisplayName":"","Description":"AssemblyInitialize fixture method"},"AssemblyCleanup":{"DisplayName":"","Description":"AssemblyCleanup fixture method"},"ClassInitialize":{"DisplayName":"","Description":"ClassInitialize fixture method"},"ClassCleanup":{"DisplayName":"","Description":"ClassCleanup fixture method"},"TestInitialize":{"DisplayName":"","Description":"TestInitialize fixture method"},"TestCleanup":{"DisplayName":"","Description":"TestCleanup fixture method"}},"Description":"Select the fixture kinds to include in the project.","DisplayName":"Fixture","AllowMultipleValues":true}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","MSTest"],"DefaultName":"Test1","Description":"Creates a new MSTest test class","Identity":"Microsoft.Test.MSTest.TestClass.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest.TestClass","Precedence":11000,"Name":"MSTest Test Class","ShortNameList":["mstest-class"],"PreferDefaultName":true,"ConfigPlace":"/content/MSTest-CSharp-TestClass/.template.config/template.json","LocaleConfigPlace":"/content/MSTest-CSharp-TestClass/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/MSTest-CSharp-TestClass/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"itemHierarchyPaths\":[\"Test\"],\"appliesTo\":\"TestContainer|TestingPlatformServer\",\"defaultItemExtension\":\"cs\",\"symbolInfo\":[{\"id\":\"Fixture\",\"isVisible\":true}]}","PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[{"Type":"project-capability","Args":"\"CSharp\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Test1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Select the fixture kinds to include in the project.","Name":"Fixture","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"None","Description":"No fixture methods"},"AssemblyInitialize":{"DisplayName":"","Description":"AssemblyInitialize fixture method"},"AssemblyCleanup":{"DisplayName":"","Description":"AssemblyCleanup fixture method"},"ClassInitialize":{"DisplayName":"","Description":"ClassInitialize fixture method"},"ClassCleanup":{"DisplayName":"","Description":"ClassCleanup fixture method"},"TestInitialize":{"DisplayName":"","Description":"TestInitialize fixture method"},"TestCleanup":{"DisplayName":"","Description":"TestCleanup fixture method"}},"Description":"Select the fixture kinds to include in the project.","DisplayName":"Fixture","AllowMultipleValues":true}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","MSTest"],"DefaultName":"Test1","Description":"Creates a new MSTest test class","Identity":"Microsoft.Test.MSTest.TestClass.FSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest.TestClass","Precedence":10000,"Name":"MSTest Test Class","ShortNameList":["mstest-class"],"PreferDefaultName":true,"ConfigPlace":"/content/MSTest-FSharp-TestClass/.template.config/template.json","LocaleConfigPlace":"/content/MSTest-FSharp-TestClass/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/MSTest-FSharp-TestClass/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"item"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"itemHierarchyPaths\":[\"Test\"],\"appliesTo\":\"TestContainer|TestingPlatformServer\",\"defaultItemExtension\":\"fs\",\"symbolInfo\":[{\"id\":\"Fixture\",\"isVisible\":true}]}","PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Test1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Select the fixture kinds to include in the project.","Name":"Fixture","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"None","Description":"No fixture methods"},"AssemblyInitialize":{"DisplayName":"","Description":"AssemblyInitialize fixture method"},"AssemblyCleanup":{"DisplayName":"","Description":"AssemblyCleanup fixture method"},"ClassInitialize":{"DisplayName":"","Description":"ClassInitialize fixture method"},"ClassCleanup":{"DisplayName":"","Description":"ClassCleanup fixture method"},"TestInitialize":{"DisplayName":"","Description":"TestInitialize fixture method"},"TestCleanup":{"DisplayName":"","Description":"TestCleanup fixture method"}},"Description":"Select the fixture kinds to include in the project.","DisplayName":"Fixture","AllowMultipleValues":true}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","MSTest"],"DefaultName":"Test1","Description":"Creates a new MSTest test class","Identity":"Microsoft.Test.MSTest.TestClass.VisualBasic.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest.TestClass","Precedence":10000,"Name":"MSTest Test Class","ShortNameList":["mstest-class"],"PreferDefaultName":true,"ConfigPlace":"/content/MSTest-VisualBasic-TestClass/.template.config/template.json","LocaleConfigPlace":"/content/MSTest-VisualBasic-TestClass/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/MSTest-VisualBasic-TestClass/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"item"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"itemHierarchyPaths\":[\"Test\"],\"appliesTo\":\"TestContainer|TestingPlatformServer\",\"defaultItemExtension\":\"vb\",\"symbolInfo\":[{\"id\":\"Fixture\",\"isVisible\":true}]}","PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":null,"Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Config"],"DefaultName":"nuget.config","Description":"A file for configuring the locations NuGet will search for packages","Identity":"Microsoft.Standard.QuickStarts.Nuget.Config","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"ItemNugetConfig","Precedence":100,"Name":"NuGet Config","ShortNameList":["nugetconfig","nuget.config"],"PreferDefaultName":false,"ConfigPlace":"/content/Nuget/.template.config/template.json","LocaleConfigPlace":"/content/Nuget/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"type":"item"},"HostData":null,"PostActions":["cb9a6cf3-4f5c-4860-b9d2-03a574959774","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"UnitTest1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit"],"DefaultName":"NUnitTestItem","Description":"Creates a new NUnit test class","Identity":"NUnit3.DotNetNew.ItemTemplate.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.ItemTemplate","Precedence":11000,"Name":"NUnit 3 Test Item","ShortNameList":["nunit-test"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-CSharp-Item/.template.config/template.json","LocaleConfigPlace":"/content/NUnit-CSharp-Item/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/NUnit-CSharp-Item/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"itemHierarchyPaths\":[\"Test\"],\"appliesTo\":\"TestContainer|TestingPlatformServer\",\"defaultItemExtension\":\"cs\"}","PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[{"Type":"project-capability","Args":"\"CSharp\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"UnitTest1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit"],"DefaultName":"NUnitTestItem","Description":"Creates a new NUnit test class","Identity":"NUnit3.DotNetNew.ItemTemplate.FSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.ItemTemplate","Precedence":11000,"Name":"NUnit 3 Test Item","ShortNameList":["nunit-test"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-FSharp-Item/.template.config/template.json","LocaleConfigPlace":"/content/NUnit-FSharp-Item/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/NUnit-FSharp-Item/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"item"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"itemHierarchyPaths\":[\"Test\"],\"appliesTo\":\"TestContainer|TestingPlatformServer\",\"defaultItemExtension\":\"fs\"}","PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"UnitTest1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit"],"DefaultName":"NUnitTestItem","Description":"Creates a new NUnit test class","Identity":"NUnit3.DotNetNew.ItemTemplate.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.ItemTemplate","Precedence":11000,"Name":"NUnit 3 Test Item","ShortNameList":["nunit-test"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-VisualBasic-Item/.template.config/template.json","LocaleConfigPlace":"/content/NUnit-VisualBasic-Item/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/NUnit-VisualBasic-Item/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"item"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"itemHierarchyPaths\":[\"Test\"],\"appliesTo\":\"TestContainer|TestingPlatformServer\",\"defaultItemExtension\":\"vb\"}","PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":null,"Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"If true, adds an Import for the closest Directory.Packages.props in the file system directory hierarchy. Directory.Packages.props don't inherit by default, so doing this allows you to build up a set of customizations folder-by-folder.","Name":"inherit","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"False","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If true, adds an Import for the closest Directory.Packages.props in the file system directory hierarchy. Directory.Packages.props don't inherit by default, so doing this allows you to build up a set of customizations folder-by-folder.","DisplayName":"Inherit","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["MSBuild","packages","props","CPM"],"DefaultName":null,"Description":"An empty Directory.Packages.props file which can be used to specify package versions centrally","Identity":"Microsoft.Standard.QuickStarts.DirectoryPackages","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"MSBuild.DirectoryPackagesFile","Precedence":0,"Name":"MSBuild Directory.Packages.props file","ShortNameList":["packagesprops"],"PreferDefaultName":false,"ConfigPlace":"/content/PackagesProps/.template.config/template.json","LocaleConfigPlace":"/content/PackagesProps/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/PackagesProps/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"type":"item"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"itemHierarchyPaths\":[\"General\"]}","PostActions":[],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Record1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common"],"DefaultName":"Record1","Description":"Creates a new C# record","Identity":"DotNet.Common.Record.CSharp","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"DotNet.Common.Record","Precedence":0,"Name":"Record","ShortNameList":["record"],"PreferDefaultName":true,"ConfigPlace":"/content/Record-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/Record-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":[],"Constraints":[{"Type":"project-capability","Args":"\"CSharp\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Solution1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Choose the format for the solution file: sln or slnx.","Name":"Format","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"sln","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"sln":{"DisplayName":".sln format","Description":"Solution file"},"slnx":{"DisplayName":".slnx format","Description":"XML Solution file"}},"Description":"Choose the format for the solution file: sln or slnx.","DisplayName":"Solution file format","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Solution"],"DefaultName":"Solution1","Description":"Create an empty solution containing no projects","Identity":"Microsoft.Standard.QuickStarts.Solution","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"ItemSolution","Precedence":100,"Name":"Solution File","ShortNameList":["sln","solution"],"PreferDefaultName":false,"ConfigPlace":"/content/Solution/.template.config/template.json","LocaleConfigPlace":"/content/Solution/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{},"HostData":null,"PostActions":[],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Struct1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common"],"DefaultName":"Struct1","Description":"Creates a new C# struct","Identity":"DotNet.Common.Struct.CSharp","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"DotNet.Common.Struct","Precedence":0,"Name":"Struct","ShortNameList":["struct"],"PreferDefaultName":true,"ConfigPlace":"/content/Struct-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/Struct-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":[],"Constraints":[{"Type":"project-capability","Args":"\"CSharp\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Structure1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common"],"DefaultName":"Structure1","Description":"Creates a new Visual Basic structure","Identity":"DotNet.Common.Struct.VisualBasic","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"DotNet.Common.Struct","Precedence":0,"Name":"Structure","ShortNameList":["struct","structure"],"PreferDefaultName":true,"ConfigPlace":"/content/Structure-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/Structure-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"item"},"HostData":null,"PostActions":[],"Constraints":[{"Type":"project-capability","Args":"\"VB\""}]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":null,"Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Config"],"DefaultName":null,"Description":"The file that defines available dotnet tools.","Identity":"Microsoft.Standard.QuickStarts.ToolManifestFile","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"ToolManifestFile","Precedence":100,"Name":"Dotnet local tool manifest file","ShortNameList":["tool-manifest"],"PreferDefaultName":false,"ConfigPlace":"/content/ToolManifest/.template.config/template.json","LocaleConfigPlace":"/content/ToolManifest/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"type":"item"},"HostData":null,"PostActions":[],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"WebConfig","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg","Author":"Microsoft","Classifications":["Config"],"DefaultName":"web.config","Description":"A file used to configure Web Application settings","Identity":"Microsoft.Standard.QuickStarts.Web.Config","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"ItemWebConfig","Precedence":100,"Name":"Web Config","ShortNameList":["webconfig"],"PreferDefaultName":false,"ConfigPlace":"/content/WebConfig/.template.config/template.json","LocaleConfigPlace":"/content/WebConfig/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"netstandard2.1":{"DisplayName":".NET Standard 2.1","Description":"Target netstandard2.1"},"netstandard2.0":{"DisplayName":".NET Standard 2.0","Description":"Target netstandard2.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.common.projecttemplates.8.0.8.0.413.nupkg","Author":"Microsoft","Classifications":["Common","Library"],"DefaultName":"ClassLibrary1","Description":"A project for creating a class library that targets .NET or .NET Standard","Identity":"Microsoft.Common.Library.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Library","Precedence":10000,"Name":"Class Library","ShortNameList":["classlib"],"PreferDefaultName":false,"ConfigPlace":"/content/ClassLibrary-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/ClassLibrary-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ClassLibrary-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{"app":{"Description":"Target .NET","DefaultOverrides":{"Framework":"net8.0"}},"standard":{"Description":"Target netstandard","DefaultOverrides":{"Framework":"netstandard2.0"}}},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"netstandard2.1":{"DisplayName":".NET Standard 2.1","Description":"Target netstandard2.1"},"netstandard2.0":{"DisplayName":".NET Standard 2.0","Description":"Target netstandard2.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.common.projecttemplates.8.0.8.0.413.nupkg","Author":"Microsoft","Classifications":["Common","Library"],"DefaultName":"ClassLibrary1","Description":"A project for creating a class library that targets .NET or .NET Standard","Identity":"Microsoft.Common.Library.FSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Library","Precedence":10000,"Name":"Class Library","ShortNameList":["classlib"],"PreferDefaultName":false,"ConfigPlace":"/content/ClassLibrary-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/ClassLibrary-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ClassLibrary-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{"app":{"Description":"Target .NET","DefaultOverrides":{"Framework":"net8.0"}},"standard":{"Description":"Target netstandard","DefaultOverrides":{"Framework":"netstandard2.0"}}},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"netstandard2.1":{"DisplayName":".NET Standard 2.1","Description":"Target netstandard2.1"},"netstandard2.0":{"DisplayName":".NET Standard 2.0","Description":"Target netstandard2.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.common.projecttemplates.8.0.8.0.413.nupkg","Author":"Microsoft","Classifications":["Common","Library"],"DefaultName":"ClassLibrary1","Description":"A project for creating a class library that targets .NET or .NET Standard","Identity":"Microsoft.Common.Library.VisualBasic.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Library","Precedence":10000,"Name":"Class Library","ShortNameList":["classlib"],"PreferDefaultName":false,"ConfigPlace":"/content/ClassLibrary-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/ClassLibrary-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ClassLibrary-VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{"app":{"Description":"Target .NET","DefaultOverrides":{"Framework":"net8.0"}},"standard":{"Description":"Target netstandard","DefaultOverrides":{"Framework":"netstandard2.0"}}},"TagsCollection":{"language":"VB","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ConsoleApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false},{"Documentation":"Whether to enable the project for publishing as native AOT.","Name":"NativeAot","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable the project for publishing as native AOT.","DisplayName":"Enable _native AOT publish","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.common.projecttemplates.8.0.8.0.413.nupkg","Author":"Microsoft","Classifications":["Common","Console"],"DefaultName":"ConsoleApp1","Description":"A project for creating a command-line application that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Common.Console.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Console","Precedence":10000,"Name":"Console App","ShortNameList":["console"],"PreferDefaultName":false,"ConfigPlace":"/content/ConsoleApplication-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/ConsoleApplication-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ConsoleApplication-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}],\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"PersistenceScope\":\"Shared\",\"PersistenceScopeName\":\"Microsoft\"},{\"id\":\"NativeAot\",\"isVisible\":true}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ConsoleApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.common.projecttemplates.8.0.8.0.413.nupkg","Author":"Microsoft","Classifications":["Common","Console"],"DefaultName":"ConsoleApp1","Description":"A project for creating a command-line application that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Common.Console.FSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Console","Precedence":10000,"Name":"Console App","ShortNameList":["console"],"PreferDefaultName":false,"ConfigPlace":"/content/ConsoleApplication-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/ConsoleApplication-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ConsoleApplication-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ConsoleApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to enable the project for publishing as native AOT.","Name":"NativeAot","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable the project for publishing as native AOT.","DisplayName":"Enable _native AOT publish","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.common.projecttemplates.8.0.8.0.413.nupkg","Author":"Microsoft","Classifications":["Common","Console"],"DefaultName":"ConsoleApp1","Description":"A project for creating a command-line application that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Common.Console.VisualBasic.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Console","Precedence":10000,"Name":"Console App","ShortNameList":["console"],"PreferDefaultName":false,"ConfigPlace":"/content/ConsoleApplication-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/ConsoleApplication-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ConsoleApplication-VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}],\"symbolInfo\":[{\"id\":\"NativeAot\",\"isVisible\":true}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Microsoft","Classifications":["Test","MSTest"],"DefaultName":"TestProject1","Description":"A project that contains MSTest unit tests that can run on .NET on Windows, Linux and MacOS.","Identity":"Microsoft.Test.MSTest.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest","Precedence":10000,"Name":"MSTest Test Project","ShortNameList":["mstest"],"PreferDefaultName":false,"ConfigPlace":"/content/MSTest-CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"F#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"F#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Microsoft","Classifications":["Test","MSTest"],"DefaultName":"TestProject1","Description":"A project that contains MSTest unit tests that can run on .NET on Windows, Linux and MacOS.","Identity":"Microsoft.Test.MSTest.FSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest","Precedence":10000,"Name":"MSTest Test Project","ShortNameList":["mstest"],"PreferDefaultName":false,"ConfigPlace":"/content/MSTest-FSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Microsoft","Classifications":["Test","MSTest"],"DefaultName":"TestProject1","Description":"A project that contains MSTest unit tests that can run on .NET on Windows, Linux and MacOS.","Identity":"Microsoft.Test.MSTest.VisualBasic.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest","Precedence":10000,"Name":"MSTest Test Project","ShortNameList":["mstest"],"PreferDefaultName":false,"ConfigPlace":"/content/MSTest-VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"UnitTest1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"item","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"item":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit"],"DefaultName":"NUnitTestItem","Description":"A item that contains NUnit tests","Identity":"NUnit3.DotNetNew.ItemTemplate.CSharp","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.ItemTemplate","Precedence":0,"Name":"NUnit 3 Test Item","ShortNameList":["nunit-test"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-CSharp-Item/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit"],"DefaultName":"TestProject1","Description":"A project that contains NUnit tests that can run on .NET on Windows, Linux and macOS","Identity":"NUnit3.DotNetNew.Template.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.Template","Precedence":10000,"Name":"NUnit 3 Test Project","ShortNameList":["nunit"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"UnitTest1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"F#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"F#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"item","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"item":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit"],"DefaultName":"NUnitTestItem","Description":"A item that contains NUnit tests","Identity":"NUnit3.DotNetNew.ItemTemplate.FSharp","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.ItemTemplate","Precedence":0,"Name":"NUnit 3 Test Item","ShortNameList":["nunit-test"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-FSharp-Item/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"F#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"F#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit"],"DefaultName":"TestProject1","Description":"A project that contains NUnit tests that can run on .NET on Windows, Linux and macOS","Identity":"NUnit3.DotNetNew.Template.FSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.Template","Precedence":10000,"Name":"NUnit 3 Test Project","ShortNameList":["nunit"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-FSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"UnitTest1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"item","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"item":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit"],"DefaultName":"NUnitTestItem","Description":"A item that contains NUnit tests","Identity":"NUnit3.DotNetNew.ItemTemplate.VisualBasic","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.ItemTemplate","Precedence":0,"Name":"NUnit 3 Test Item","ShortNameList":["nunit-test"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-VisualBasic-Item/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit"],"DefaultName":"TestProject1","Description":"A project that contains NUnit tests that can run on .NET on Windows, Linux and macOS","Identity":"NUnit3.DotNetNew.Template.VisualBasic.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.Template","Precedence":10000,"Name":"NUnit 3 Test Project","ShortNameList":["nunit"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Microsoft","Classifications":["Test","MSTest","Playwright"],"DefaultName":"TestProject1","Description":"A project that contains Playwright tests using MSTest test framwork, that can run on .NET on Windows, Linux and MacOS.","Identity":"Microsoft.Test.Playwright.MSTest.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.Playwright.MSTest","Precedence":10000,"Name":"MSTest Playwright Test Project","ShortNameList":["mstest-playwright"],"PreferDefaultName":false,"ConfigPlace":"/content/Playwright-MSTest-CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Microsoft","Classifications":["Test","NUnit","Playwright"],"DefaultName":"TestProject1","Description":"A project that contains Playwright tests using NUnit test framwork, that can run on .NET on Windows, Linux and MacOS.","Identity":"Microsoft.Test.Playwright.NUnit.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.Playwright.NUnit","Precedence":10000,"Name":"NUnit Playwright Test Project","ShortNameList":["nunit-playwright"],"PreferDefaultName":false,"ConfigPlace":"/content/Playwright-NUnit-CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Microsoft","Classifications":["Test","xUnit"],"DefaultName":"TestProject1","Description":"A project that contains xUnit.net tests that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Test.xUnit.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.xUnit","Precedence":10000,"Name":"xUnit Test Project","ShortNameList":["xunit"],"PreferDefaultName":false,"ConfigPlace":"/content/XUnit-CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"F#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"F#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Microsoft","Classifications":["Test","xUnit"],"DefaultName":"TestProject1","Description":"A project that contains xUnit.net tests that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Test.xUnit.FSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.xUnit","Precedence":10000,"Name":"xUnit Test Project","ShortNameList":["xunit"],"PreferDefaultName":false,"ConfigPlace":"/content/XUnit-FSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Company.TestProject1","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via (\"dotnet pack\") for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg","Author":"Microsoft","Classifications":["Test","xUnit"],"DefaultName":"TestProject1","Description":"A project that contains xUnit.net tests that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Test.xUnit.VisualBasic.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.xUnit","Precedence":10000,"Name":"xUnit Test Project","ShortNameList":["xunit"],"PreferDefaultName":false,"ConfigPlace":"/content/XUnit-VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"ValueController","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Namespace for the generated code","Name":"namespace","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"MyApp.Namespace","DataType":null,"DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Namespace for the generated code","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Create controller with read/write actions","Name":"actions","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Create controller with read/write actions","DisplayName":"Add Read/Write Actions","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.itemtemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"ValueController","Description":"API Controller with or without read/write actions","Identity":"Microsoft.AspNetCore.Mvc.ApiController.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.ApiController","Precedence":9800,"Name":"API Controller","ShortNameList":["apicontroller"],"PreferDefaultName":false,"ConfigPlace":"/content/ApiController/.template.config/template.json","LocaleConfigPlace":"/content/ApiController/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"HomeController","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Namespace for the generated code","Name":"namespace","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"MyApp.Namespace","DataType":null,"DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Namespace for the generated code","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Create controller with read/write actions","Name":"actions","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Create controller with read/write actions","DisplayName":"Add Read/Write Actions","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.itemtemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"HomeController","Description":"MVC Controller with or without read/write actions","Identity":"Microsoft.AspNetCore.Mvc.MvcController.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.MvcController","Precedence":9800,"Name":"MVC Controller","ShortNameList":["mvccontroller"],"PreferDefaultName":false,"ConfigPlace":"/content/MvcController/.template.config/template.json","LocaleConfigPlace":"/content/MvcController/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"protobuf","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"namespace for the generated code","Name":"namespace","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"MyApp.Namespace","DataType":null,"DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"namespace for the generated code","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.itemtemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","gRPC"],"DefaultName":"protobuf","Description":"A protocol buffer file for describing messages and services for gRPC.","Identity":"Microsoft.Web.Grpc.Protobuf.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Grpc.Protobuf","Precedence":9800,"Name":"Protocol Buffer File","ShortNameList":["proto"],"PreferDefaultName":false,"ConfigPlace":"/content/Protobuf/.template.config/template.json","LocaleConfigPlace":"/content/Protobuf/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Component1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.itemtemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"Component1","Description":"A reusable UI component implemented with Razor","Identity":"Microsoft.AspNetCore.Components.RazorComponent.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Components.RazorComponent","Precedence":9800,"Name":"Razor Component","ShortNameList":["razorcomponent"],"PreferDefaultName":false,"ConfigPlace":"/content/RazorComponent/.template.config/template.json","LocaleConfigPlace":"/content/RazorComponent/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Index","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"namespace for the generated code","Name":"namespace","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"MyApp.Namespace","DataType":null,"DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"namespace for the generated code","DisplayName":"","AllowMultipleValues":false},{"Documentation":"create page without a PageModel","Name":"no-pagemodel","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"create page without a PageModel","DisplayName":"Exclude PageModel","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.itemtemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"Index","Description":"A Razor page with or without a page model","Identity":"Microsoft.AspNetCore.Mvc.RazorPage.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.RazorPage","Precedence":9800,"Name":"Razor Page","ShortNameList":["page"],"PreferDefaultName":false,"ConfigPlace":"/content/RazorPage/.template.config/template.json","LocaleConfigPlace":"/content/RazorPage/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Index","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.itemtemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"Index","Description":"An empty Razor View","Identity":"Microsoft.AspNetCore.Mvc.RazorView.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.RazorView","Precedence":9800,"Name":"Razor View","ShortNameList":["view"],"PreferDefaultName":false,"ConfigPlace":"/content/RazorView/.template.config/template.json","LocaleConfigPlace":"/content/RazorView/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"ignoreme","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"namespace for the generated code","Name":"namespace","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"MyApp.Namespace","DataType":null,"DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"namespace for the generated code","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.itemtemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"_ViewImports","Description":"An MVC View Import Page","Identity":"Microsoft.AspNetCore.Mvc.ViewImports.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.ViewImports","Precedence":9800,"Name":"MVC ViewImports","ShortNameList":["viewimports"],"PreferDefaultName":false,"ConfigPlace":"/content/ViewImports/.template.config/template.json","LocaleConfigPlace":"/content/ViewImports/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"ignoreme","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.itemtemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"_ViewStart","Description":"An MVC ViewStart Page","Identity":"Microsoft.AspNetCore.Mvc.ViewStart.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.ViewStart","Precedence":9800,"Name":"MVC ViewStart","ShortNameList":["viewstart"],"PreferDefaultName":false,"ConfigPlace":"/content/ViewStart/.template.config/template.json","LocaleConfigPlace":"/content/ViewStart/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The type of authentication to use","Name":"auth","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"","Description":"No authentication"},"IndividualB2C":{"DisplayName":"","Description":"Individual authentication with Azure AD B2C"},"SingleOrg":{"DisplayName":"","Description":"Organizational authentication for a single tenant"},"Windows":{"DisplayName":"","Description":"Windows authentication"}},"Description":"The type of authentication to use","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","Name":"AAdB2CInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://qualified.domain.name.b2clogin.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","Name":"SignUpSignInPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory instance to connect to (use with SingleOrg auth).","Name":"AADInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory instance to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Client ID for this project (use with SingleOrg or IndividualB2C auth).","Name":"ClientId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"11111111-1111-1111-11111111111111111","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Client ID for this project (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","Name":"Domain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"qualified.domain.name","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The API scope the client needs to request to provision an access token. (use with IndividualB2C, SingleOrg).","Name":"DefaultScope","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"access_as_user","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The API scope the client needs to request to provision an access token. (use with IndividualB2C, SingleOrg).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","Name":"TenantId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"22222222-2222-2222-2222-222222222222","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to allow this application read access to the directory (only applies to SingleOrg auth).","Name":"OrgReadAccess","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to allow this application read access to the directory (only applies to SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","Name":"UserSecretsId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"aspnet-Company.WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json in the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json in the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","Name":"UseLocalDB","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"URL of the API to call from the web app. This option only applies if --auth SingleOrg or --auth IndividualB2C is specified.","Name":"CalledApiUrl","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://graph.microsoft.com/v1.0","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"URL of the API to call from the web app. This option only applies if --auth SingleOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg is specified.","Name":"CallsMicrosoftGraph","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg or --auth IndividualB2C is specified.","Name":"CalledApiScopes","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"user.read","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Disable OpenAPI (Swagger) support","Name":"DisableOpenAPI","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Disable OpenAPI (Swagger) support","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false},{"Documentation":"Whether to use minimal APIs instead of controllers.","Name":"UseMinimalAPIs","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use minimal APIs instead of controllers.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use controllers instead of minimal APIs. This option overides the value specified by --minimal.","Name":"UseControllers","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use controllers instead of minimal APIs. This option overides the value specified by --minimal.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","Web API","API","Service"],"DefaultName":"WebApplication","Description":"A project template for creating a RESTful Web API using ASP.NET Core controllers or minimal APIs, with optional support for OpenAPI and authentication.","Identity":"Microsoft.Web.WebApi.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.WebApi","Precedence":9800,"Name":"ASP.NET Core Web API","ShortNameList":["webapi"],"PreferDefaultName":false,"ConfigPlace":"/content/WebApi-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/WebApi-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/WebApi-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":200,\"icon\":\"ide/WebAPI.png\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"DisableOpenAPI\",\"name\":{\"text\":\"Enable _OpenAPI support\",\"overrideDefaultText\":true},\"description\":{\"text\":\"Enables OpenAPI (Swagger) support\",\"overrideDefaultText\":true},\"invertBoolean\":true,\"isVisible\":true,\"defaultValue\":\"true\",\"persistenceScope\":\"templateGroup\"},{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"},{\"id\":\"UseMinimalAPIs\",\"name\":{\"text\":\"Use controllers\",\"overrideDefaultText\":true},\"description\":{\"text\":\"Use controllers instead of minimal APIs.\",\"overrideDefaultText\":true},\"invertBoolean\":true,\"isVisible\":true,\"persistenceScope\":\"templateGroup\"}],\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json.","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json.","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","Web API"],"DefaultName":"WebApplication","Description":"A project template for creating an ASP.NET Core application with an example Controller for a RESTful HTTP service. This template can also be used for ASP.NET Core MVC Views and Controllers.","Identity":"Microsoft.Web.WebApi.FSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.WebApi","Precedence":9800,"Name":"ASP.NET Core Web API","ShortNameList":["webapi"],"PreferDefaultName":false,"ConfigPlace":"/content/WebApi-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/WebApi-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/WebApi-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":201,\"icon\":\"ide/WebAPI.png\",\"supportsDocker\":true,\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","Web API","API","Service"],"DefaultName":"WebApplication","Description":"A project template for creating a RESTful Web API using ASP.NET Core minimal APIs published as native AOT.","Identity":"Microsoft.Web.WebApiAot.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.WebApiAot","Precedence":9000,"Name":"ASP.NET Core Web API (native AOT)","ShortNameList":["webapiaot"],"PreferDefaultName":false,"ConfigPlace":"/content/WebApiAot-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/WebApiAot-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/WebApiAot-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":100,\"icon\":\"ide/API.png\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.Application1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false},{"Documentation":"Whether to enable the project for publishing as native AOT.","Name":"NativeAot","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable the project for publishing as native AOT.","DisplayName":"Enable _native AOT publish","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Common","Worker","Web"],"DefaultName":"WorkerService","Description":"An empty project template for creating a worker service.","Identity":"Microsoft.Worker.Empty.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Worker.Empty","Precedence":9800,"Name":"Worker Service","ShortNameList":["worker"],"PreferDefaultName":false,"ConfigPlace":"/content/Worker-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/Worker-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/Worker-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":300,\"icon\":\"ide/Worker.png\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"},{\"id\":\"NativeAot\",\"isVisible\":true}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.Application1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Common","Worker","Web"],"DefaultName":"WorkerService","Description":"An empty project template for creating a worker service.","Identity":"Microsoft.Worker.Empty.FSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Worker.Empty","Precedence":9800,"Name":"Worker Service","ShortNameList":["worker"],"PreferDefaultName":false,"ConfigPlace":"/content/Worker-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/Worker-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/Worker-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":300,\"icon\":\"ide/Worker.png\",\"supportsDocker\":true}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"BlazorWeb-CSharp","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The ID to use for secrets (use with Individual auth).","Name":"UserSecretsId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"aspnet-BlazorWeb-CSharp-53bc9b9d-9d6a-45d4-8429-2a2761773502","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The ID to use for secrets (use with Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if Individual auth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if Individual auth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if Individual auth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if Individual auth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Chooses which interactive render mode to use for interactive components","Name":"InteractivityPlatform","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Server","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"None","Description":"No interactivity (static server rendering only)"},"Server":{"DisplayName":"Server","Description":"Runs on the server"},"WebAssembly":{"DisplayName":"WebAssembly","Description":"Runs in the browser using WebAssembly"},"Auto":{"DisplayName":"Auto (Server and WebAssembly)","Description":"Uses Server while downloading WebAssembly assets, then uses WebAssembly"}},"Description":"Chooses which interactive render mode to use for interactive components","DisplayName":"_Interactive render mode","AllowMultipleValues":false},{"Documentation":"Chooses which components will have interactive rendering enabled","Name":"InteractivityLocation","Priority":2,"Precedence":{"PrecedenceDefinition":4,"IsRequiredCondition":null,"IsEnabledCondition":"(InteractivityPlatform != \"None\")","IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"InteractivePerPage","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"InteractivePerPage":{"DisplayName":"Per page/component","Description":"Interactivity is applied on a per-page or per-component basis"},"InteractiveGlobal":{"DisplayName":"Global","Description":"Interactivity is applied at the root level"}},"Description":"Chooses which components will have interactive rendering enabled","DisplayName":"_Interactivity location","AllowMultipleValues":false},{"Documentation":"Configures whether to add sample pages and styling to demonstrate basic usage patterns.","Name":"IncludeSampleContent","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Configures whether to add sample pages and styling to demonstrate basic usage patterns.","DisplayName":"_Include sample pages","AllowMultipleValues":false},{"Documentation":"Configures whether to omit sample pages and styling that demonstrate basic usage patterns.","Name":"Empty","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Configures whether to omit sample pages and styling that demonstrate basic usage patterns.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The type of authentication to use","Name":"auth","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"","Description":"No authentication"},"Individual":{"DisplayName":"","Description":"Individual authentication"}},"Description":"The type of authentication to use","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual is specified.","Name":"UseLocalDB","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Configures whether to make every page interactive by applying an interactive render mode at the top level. If false, pages will use static server rendering by default, and can be marked interactive on a per-page or per-component basis.","Name":"AllInteractive","Priority":2,"Precedence":{"PrecedenceDefinition":4,"IsRequiredCondition":null,"IsEnabledCondition":"(InteractivityPlatform != \"None\")","IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Configures whether to make every page interactive by applying an interactive render mode at the top level. If false, pages will use static server rendering by default, and can be marked interactive on a per-page or per-component basis.","DisplayName":"_Enable interactive rendering globally throughout the site","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if Individual isn't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if Individual isn't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","Blazor","WebAssembly"],"DefaultName":"BlazorApp","Description":"A project template for creating a Blazor web app that supports both server-side rendering and client interactivity. This template can be used for web apps with rich dynamic user interfaces (UIs).","Identity":"Microsoft.Web.Blazor.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Blazor","Precedence":9800,"Name":"Blazor Web App","ShortNameList":["blazor"],"PreferDefaultName":false,"ConfigPlace":"/content/BlazorWeb-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/BlazorWeb-CSharp/.template.config/ide.host.json","ThirdPartyNotices":"https://aka.ms/aspnetcore/8.0-third-party-notices","BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":610,\"icon\":\"icon.png\",\"disableHttpsSymbol\":\"NoHttps\",\"symbolInfo\":[{\"id\":\"InteractivityPlatform\",\"isVisible\":true,\"persistenceScope\":\"templateGroup\"},{\"id\":\"InteractivityLocation\",\"isVisible\":true,\"persistenceScope\":\"templateGroup\"},{\"id\":\"IncludeSampleContent\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"},{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"ComponentsWebAssembly-CSharp","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The type of authentication to use","Name":"auth","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"","Description":"No authentication"},"Individual":{"DisplayName":"","Description":"Individual authentication"},"IndividualB2C":{"DisplayName":"","Description":"Individual authentication with Azure AD B2C"},"SingleOrg":{"DisplayName":"","Description":"Organizational authentication for a single tenant"}},"Description":"The type of authentication to use","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The authority of the OIDC provider (use with standalone Individual auth).","Name":"Authority","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The authority of the OIDC provider (use with standalone Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","Name":"AAdB2CInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https:////aadB2CInstance.b2clogin.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","Name":"SignUpSignInPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory instance to connect to (use with SingleOrg auth).","Name":"AADInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory instance to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Client ID for this project (use with IndividualB2C, SingleOrg or Individual auth in standalone scenarios).","Name":"ClientId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"33333333-3333-3333-33333333333333333","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Client ID for this project (use with IndividualB2C, SingleOrg or Individual auth in standalone scenarios).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","Name":"Domain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"qualified.domain.name","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The App ID Uri for the server API we want to call (use with SingleOrg or IndividualB2C auth).","Name":"AppIDUri","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"api.id.uri","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The App ID Uri for the server API we want to call (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Client ID for the API that the server hosts (use with IndividualB2C, SingleOrg).","Name":"APIClientId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"11111111-1111-1111-11111111111111111","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Client ID for the API that the server hosts (use with IndividualB2C, SingleOrg).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The API scope the client needs to request to provision an access token. (use with IndividualB2C, SingleOrg).","Name":"DefaultScope","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"access_as_user","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The API scope the client needs to request to provision an access token. (use with IndividualB2C, SingleOrg).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","Name":"TenantId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"22222222-2222-2222-2222-222222222222","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to allow this application read access to the directory (only applies to SingleOrg).","Name":"OrgReadAccess","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to allow this application read access to the directory (only applies to SingleOrg).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","Name":"UserSecretsId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"aspnet-BlazorServerWeb-CSharp-53bc9b9d-9d6a-45d4-8429-2a2761773502","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, produces a Progressive Web Application (PWA) supporting installation and offline use.","Name":"PWA","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, produces a Progressive Web Application (PWA) supporting installation and offline use.","DisplayName":"_Progressive Web Application","AllowMultipleValues":false},{"Documentation":"Configures whether to add sample pages and styling to demonstrate basic usage patterns.","Name":"IncludeSampleContent","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Configures whether to add sample pages and styling to demonstrate basic usage patterns.","DisplayName":"_Include sample pages","AllowMultipleValues":false},{"Documentation":"Configures whether to omit sample pages and styling that demonstrate basic usage patterns.","Name":"Empty","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Configures whether to omit sample pages and styling that demonstrate basic usage patterns.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","Name":"UseLocalDB","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C without and ASP.NET Core host is specified.","Name":"CalledApiUrl","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://graph.microsoft.com/v1.0","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C without and ASP.NET Core host is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C without and ASP.NET Core host is specified.","Name":"CalledApiScopes","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"user.read","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C without and ASP.NET Core host is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","Blazor","WebAssembly","PWA"],"DefaultName":"BlazorApp","Description":"A project template for creating a Blazor app that runs on WebAssembly. This template can be used for web apps with rich dynamic user interfaces (UIs).","Identity":"Microsoft.Web.Blazor.Wasm.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Blazor.Wasm","Precedence":9800,"Name":"Blazor WebAssembly Standalone App","ShortNameList":["blazorwasm"],"PreferDefaultName":false,"ConfigPlace":"/content/ComponentsWebAssembly-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ComponentsWebAssembly-CSharp/.template.config/ide.host.json","ThirdPartyNotices":"https://aka.ms/aspnetcore/8.0-third-party-notices","BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":610,\"icon\":\"icon.png\",\"disableHttpsSymbol\":\"NoHttps\",\"symbolInfo\":[{\"id\":\"PWA\",\"isVisible\":true,\"persistenceScope\":\"templateGroup\"},{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"},{\"id\":\"IncludeSampleContent\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","Empty"],"DefaultName":"WebApplication","Description":"An empty project template for creating an ASP.NET Core application. This template does not have any content in it.","Identity":"Microsoft.Web.Empty.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Empty","Precedence":9800,"Name":"ASP.NET Core Empty","ShortNameList":["web"],"PreferDefaultName":false,"ConfigPlace":"/content/EmptyWeb-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/EmptyWeb-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/EmptyWeb-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":100,\"icon\":\"ide/Empty.png\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}],\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","Empty"],"DefaultName":"WebApplication","Description":"An empty project template for creating an ASP.NET Core application. This template does not have any content in it.","Identity":"Microsoft.Web.Empty.FSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Empty","Precedence":9800,"Name":"ASP.NET Core Empty","ShortNameList":["web"],"PreferDefaultName":false,"ConfigPlace":"/content/EmptyWeb-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/EmptyWeb-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/EmptyWeb-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":101,\"icon\":\"ide/Empty.png\",\"supportsDocker\":true,\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"GrpcService-CSharp","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false},{"Documentation":"Whether to enable the project for publishing as native AOT.","Name":"NativeAot","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable the project for publishing as native AOT.","DisplayName":"Enable _native AOT publish","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","gRPC","API","Service"],"DefaultName":"GrpcService","Description":"A project template for creating a gRPC service using ASP.NET Core, with optional support for publishing as native AOT.","Identity":"Microsoft.Grpc.Service.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Grpc","Precedence":9800,"Name":"ASP.NET Core gRPC Service","ShortNameList":["grpc"],"PreferDefaultName":false,"ConfigPlace":"/content/GrpcService-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/GrpcService-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/GrpcService-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":500,\"icon\":\"ide/gRPC.png\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"},{\"id\":\"NativeAot\",\"isVisible\":true}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.RazorClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to support adding traditional Razor pages and Views to this library.","Name":"SupportPagesAndViews","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to support adding traditional Razor pages and Views to this library.","DisplayName":"Support pages and views","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","Razor","Library"],"DefaultName":"RazorClassLibrary","Description":"A project for creating a Razor class library that targets .NET","Identity":"Microsoft.Web.Razor.Library.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Razor","Precedence":9800,"Name":"Razor Class Library","ShortNameList":["razorclasslib"],"PreferDefaultName":false,"ConfigPlace":"/content/RazorClassLibrary-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/RazorClassLibrary-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/RazorClassLibrary-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":700,\"icon\":\"ide/RazorClassLibrary.ico\",\"symbolInfo\":[{\"id\":\"SupportPagesAndViews\",\"isVisible\":true,\"persistenceScope\":\"templateGroup\"}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The type of authentication to use","Name":"auth","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"","Description":"No authentication"},"Individual":{"DisplayName":"","Description":"Individual authentication"},"IndividualB2C":{"DisplayName":"","Description":"Individual authentication with Azure AD B2C"},"SingleOrg":{"DisplayName":"","Description":"Organizational authentication for a single tenant"},"MultiOrg":{"DisplayName":"","Description":"Organizational authentication for multiple tenants"},"Windows":{"DisplayName":"","Description":"Windows authentication"}},"Description":"The type of authentication to use","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","Name":"AAdB2CInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/tfp/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","Name":"SignUpSignInPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The global signout callback (use with IndividualB2C auth).","Name":"SignedOutCallbackPath","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"/signout/B2C_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The global signout callback (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The reset password policy ID for this project (use with IndividualB2C auth).","Name":"ResetPasswordPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_reset","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The reset password policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The edit profile policy ID for this project (use with IndividualB2C auth).","Name":"EditProfilePolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_edit_profile","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The edit profile policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory instance to connect to (use with SingleOrg or MultiOrg auth).","Name":"AADInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory instance to connect to (use with SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Client ID for this project (use with IndividualB2C, SingleOrg or MultiOrg auth).","Name":"ClientId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"11111111-1111-1111-11111111111111111","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Client ID for this project (use with IndividualB2C, SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","Name":"Domain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"qualified.domain.name","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","Name":"TenantId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"22222222-2222-2222-2222-222222222222","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The request path within the application's base path of the redirect URI (use with SingleOrg or IndividualB2C auth).","Name":"CallbackPath","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"/signin-oidc","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The request path within the application's base path of the redirect URI (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to allow this application read access to the directory (only applies to SingleOrg or MultiOrg auth).","Name":"OrgReadAccess","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to allow this application read access to the directory (only applies to SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","Name":"UserSecretsId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"aspnet-Company.WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json in the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json in the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","Name":"UseLocalDB","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","Name":"CalledApiUrl","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://graph.microsoft.com/v1.0","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg or --auth MultiOrg is specified.","Name":"CallsMicrosoftGraph","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg or --auth MultiOrg is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","Name":"CalledApiScopes","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"user.read","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","MVC","Razor Pages"],"DefaultName":"WebApplication","Description":"A project template for creating an ASP.NET Core application with example ASP.NET Core Razor Pages content","Identity":"Microsoft.Web.RazorPages.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.RazorPages","Precedence":9800,"Name":"ASP.NET Core Web App (Razor Pages)","ShortNameList":["webapp","razor"],"PreferDefaultName":false,"ConfigPlace":"/content/RazorPagesWeb-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/RazorPagesWeb-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/RazorPagesWeb-CSharp/.template.config/ide.host.json","ThirdPartyNotices":"https://aka.ms/aspnetcore/8.0-third-party-notices","BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":400,\"icon\":\"ide/WebApplication.png\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}],\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The type of authentication to use","Name":"auth","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"","Description":"No authentication"},"Individual":{"DisplayName":"","Description":"Individual authentication"},"IndividualB2C":{"DisplayName":"","Description":"Individual authentication with Azure AD B2C"},"SingleOrg":{"DisplayName":"","Description":"Organizational authentication for a single tenant"},"MultiOrg":{"DisplayName":"","Description":"Organizational authentication for multiple tenants"},"Windows":{"DisplayName":"","Description":"Windows authentication"}},"Description":"The type of authentication to use","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","Name":"AAdB2CInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/tfp/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","Name":"SignUpSignInPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The global signout callback (use with IndividualB2C auth).","Name":"SignedOutCallbackPath","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"/signout/B2C_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The global signout callback (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The reset password policy ID for this project (use with IndividualB2C auth).","Name":"ResetPasswordPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_reset","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The reset password policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The edit profile policy ID for this project (use with IndividualB2C auth).","Name":"EditProfilePolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_edit_profile","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The edit profile policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory instance to connect to (use with SingleOrg or MultiOrg auth).","Name":"AADInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory instance to connect to (use with SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Client ID for this project (use with IndividualB2C, SingleOrg or MultiOrg auth).","Name":"ClientId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"11111111-1111-1111-11111111111111111","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Client ID for this project (use with IndividualB2C, SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","Name":"Domain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"qualified.domain.name","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","Name":"TenantId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"22222222-2222-2222-2222-222222222222","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The request path within the application's base path of the redirect URI (use with SingleOrg or IndividualB2C auth).","Name":"CallbackPath","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"/signin-oidc","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The request path within the application's base path of the redirect URI (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to allow this application read access to the directory (only applies to SingleOrg or MultiOrg auth).","Name":"OrgReadAccess","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to allow this application read access to the directory (only applies to SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","Name":"UserSecretsId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"aspnet-Company.WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","Name":"UseLocalDB","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","Name":"CalledApiUrl","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://graph.microsoft.com/v1.0","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg or --auth MultiOrg is specified.","Name":"CallsMicrosoftGraph","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg or --auth MultiOrg is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","Name":"CalledApiScopes","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"user.read","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","MVC"],"DefaultName":"WebApplication","Description":"A project template for creating an ASP.NET Core application with example ASP.NET Core MVC Views and Controllers. This template can also be used for RESTful HTTP services.","Identity":"Microsoft.Web.Mvc.CSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Mvc","Precedence":9800,"Name":"ASP.NET Core Web App (Model-View-Controller)","ShortNameList":["mvc"],"PreferDefaultName":false,"ConfigPlace":"/content/StarterWeb-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/StarterWeb-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/StarterWeb-CSharp/.template.config/ide.host.json","ThirdPartyNotices":"https://aka.ms/aspnetcore/8.0-third-party-notices","BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"order\":410,\"icon\":\"ide/WebApplication.png\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}],\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net8.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net8.0":{"DisplayName":"","Description":"Target net8.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg","Author":"Microsoft","Classifications":["Web","MVC"],"DefaultName":"WebApplication","Description":"A project template for creating an ASP.NET Core application with example ASP.NET Core MVC Views and Controllers. This template can also be used for RESTful HTTP services.","Identity":"Microsoft.Web.Mvc.FSharp.8.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Mvc","Precedence":9800,"Name":"ASP.NET Core Web App (Model-View-Controller)","ShortNameList":["mvc"],"PreferDefaultName":false,"ConfigPlace":"/content/StarterWeb-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/StarterWeb-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":"https://aka.ms/aspnetcore/8.0-third-party-notices","BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WinFormsApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to enable nullable reference types for this project.","Name":"Nullable","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable nullable reference types for this project.","DisplayName":"Enable nullable","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.winforms.projecttemplates.9.0.8-servicing.25368.1.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":"WinFormsApp1","Description":"A project template for creating a .NET Windows Forms (WinForms) App.","Identity":"Microsoft.Common.WinForms.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms","Precedence":9000,"Name":"Windows Forms App","ShortNameList":["winforms"],"PreferDefaultName":false,"ConfigPlace":"/WinFormsApplication-CSharp/.template.config/template.json","LocaleConfigPlace":"/WinFormsApplication-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WinFormsApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The application should use the Visual Basic Application Framework","Name":"UseAppFramework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"The application should use the Visual Basic Application Framework","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":".NET 9.0","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.winforms.projecttemplates.9.0.8-servicing.25368.1.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":"WinFormsApp1","Description":"A project template for creating a .NET Windows Forms (WinForms) App.","Identity":"Microsoft.Common.WinForms.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms","Precedence":9000,"Name":"Windows Forms App","ShortNameList":["winforms"],"PreferDefaultName":false,"ConfigPlace":"/WinFormsApplication-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/WinFormsApplication-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ControlLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":".NET 9.0","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to enable nullable reference types for this project.","Name":"Nullable","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable nullable reference types for this project.","DisplayName":"Enable nullable","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.winforms.projecttemplates.9.0.8-servicing.25368.1.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":"WinFormsControlLibrary1","Description":"A project template for creating a control library that targets .NET Windows Forms (WinForms).","Identity":"Microsoft.Common.WinForms.ControlLibrary.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms.ControlLibrary","Precedence":9000,"Name":"Windows Forms Control Library","ShortNameList":["winformscontrollib"],"PreferDefaultName":false,"ConfigPlace":"/WinFormsControlLibrary-CSharp/.template.config/template.json","LocaleConfigPlace":"/WinFormsControlLibrary-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ControlLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":".NET 9.0","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.winforms.projecttemplates.9.0.8-servicing.25368.1.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":"WinFormsControlLibrary1","Description":"A project template for creating a control library that targets .NET Windows Forms (WinForms).","Identity":"Microsoft.Common.WinForms.ControlLibrary.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms.ControlLibrary","Precedence":9000,"Name":"Windows Forms Control Library","ShortNameList":["winformscontrollib"],"PreferDefaultName":false,"ConfigPlace":"/WinFormsControlLibrary-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/WinFormsControlLibrary-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":".NET 9.0","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to enable nullable reference types for this project.","Name":"Nullable","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable nullable reference types for this project.","DisplayName":"Enable nullable","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.winforms.projecttemplates.9.0.8-servicing.25368.1.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":"WinFormsLibrary1","Description":"A project template for creating a class library that targets .NET Windows Forms (WinForms).","Identity":"Microsoft.Common.WinForms.Library.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms.Library","Precedence":9000,"Name":"Windows Forms Class Library","ShortNameList":["winformslib"],"PreferDefaultName":false,"ConfigPlace":"/WinFormsLibrary-CSharp/.template.config/template.json","LocaleConfigPlace":"/WinFormsLibrary-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":".NET 9.0","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.winforms.projecttemplates.9.0.8-servicing.25368.1.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":"WinFormsLibrary1","Description":"A project template for creating a class library that targets .NET Windows Forms (WinForms).","Identity":"Microsoft.Common.WinForms.Library.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms.Library","Precedence":9000,"Name":"Windows Forms Class library","ShortNameList":["winformslib"],"PreferDefaultName":false,"ConfigPlace":"/WinFormsLibrary-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/WinFormsLibrary-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WpfApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target Framework Override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"netcoreapp3.0":{"DisplayName":".NET Core 3.0","Description":"Target netcoreapp3.0"},"netcoreapp3.1":{"DisplayName":".NET Core 3.1","Description":"Target netcoreapp3.1"},"net5.0":{"DisplayName":".NET 5.0","Description":"Target net5.0"},"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to enable nullable reference types for this project.","Name":"Nullable","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable nullable reference types for this project.","DisplayName":"Enable nullable","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.wpf.projecttemplates.9.0.8-rtm.25368.9.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":"WpfApp1","Description":"A project for creating a .NET WPF Application","Identity":"Microsoft.Common.WPF.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF","Precedence":9000,"Name":"WPF Application","ShortNameList":["wpf"],"PreferDefaultName":false,"ConfigPlace":"/WpfApplication-CSharp/.template.config/template.json","LocaleConfigPlace":"/WpfApplication-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WpfApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target Framework Override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"netcoreapp3.0":{"DisplayName":".NET Core 3.0","Description":"Target netcoreapp3.0"},"netcoreapp3.1":{"DisplayName":".NET Core 3.1","Description":"Target netcoreapp3.1"},"net5.0":{"DisplayName":".NET 5.0","Description":"Target net5.0"},"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.wpf.projecttemplates.9.0.8-rtm.25368.9.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":"WpfApp1","Description":"A project for creating a .NET WPF Application","Identity":"Microsoft.Common.WPF.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF","Precedence":9000,"Name":"WPF Application","ShortNameList":["wpf"],"PreferDefaultName":false,"ConfigPlace":"/WpfApplication-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/WpfApplication-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target Framework Override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"netcoreapp3.0":{"DisplayName":".NET Core 3.0","Description":"Target netcoreapp3.0"},"netcoreapp3.1":{"DisplayName":".NET Core 3.1","Description":"Target netcoreapp3.1"},"net5.0":{"DisplayName":".NET 5.0","Description":"Target net5.0"},"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to enable nullable reference types for this project.","Name":"Nullable","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable nullable reference types for this project.","DisplayName":"Enable nullable","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.wpf.projecttemplates.9.0.8-rtm.25368.9.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":"WpfLibrary1","Description":"A project for creating a class library that targets a .NET WPF Application","Identity":"Microsoft.Common.WPF.Library.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.Library","Precedence":9000,"Name":"WPF Class Library","ShortNameList":["wpflib"],"PreferDefaultName":false,"ConfigPlace":"/WpfClassLibrary-CSharp/.template.config/template.json","LocaleConfigPlace":"/WpfClassLibrary-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target Framework Override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"netcoreapp3.0":{"DisplayName":".NET Core 3.0","Description":"Target netcoreapp3.0"},"netcoreapp3.1":{"DisplayName":".NET Core 3.1","Description":"Target netcoreapp3.1"},"net5.0":{"DisplayName":".NET 5.0","Description":"Target net5.0"},"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.wpf.projecttemplates.9.0.8-rtm.25368.9.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":"WpfLibrary1","Description":"A project for creating a class library that targets a .NET WPF Application","Identity":"Microsoft.Common.WPF.Library.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.Library","Precedence":9000,"Name":"WPF Class Library","ShortNameList":["wpflib"],"PreferDefaultName":false,"ConfigPlace":"/WpfClassLibrary-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/WpfClassLibrary-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WpfCustomControlLibrary","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target Framework Override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"netcoreapp3.0":{"DisplayName":".NET Core 3.0","Description":"Target netcoreapp3.0"},"netcoreapp3.1":{"DisplayName":".NET Core 3.1","Description":"Target netcoreapp3.1"},"net5.0":{"DisplayName":".NET 5.0","Description":"Target net5.0"},"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to enable nullable reference types for this project.","Name":"Nullable","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable nullable reference types for this project.","DisplayName":"Enable nullable","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.wpf.projecttemplates.9.0.8-rtm.25368.9.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":"WpfCustomControlLibrary1","Description":"A project for creating a custom control library for .NET WPF Applications","Identity":"Microsoft.Common.WPF.CustomControl.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.CustomControl","Precedence":9000,"Name":"WPF Custom Control Library","ShortNameList":["wpfcustomcontrollib"],"PreferDefaultName":false,"ConfigPlace":"/WpfCustomControlLibrary-CSharp/.template.config/template.json","LocaleConfigPlace":"/WpfCustomControlLibrary-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WpfCustomControlLibrary","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target Framework Override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"netcoreapp3.0":{"DisplayName":".NET Core 3.0","Description":"Target netcoreapp3.0"},"netcoreapp3.1":{"DisplayName":".NET Core 3.1","Description":"Target netcoreapp3.1"},"net5.0":{"DisplayName":".NET 5.0","Description":"Target net5.0"},"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.wpf.projecttemplates.9.0.8-rtm.25368.9.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":"WpfCustomControlLibrary1","Description":"A project for creating a custom control library for .NET WPF Applications","Identity":"Microsoft.Common.WPF.CustomControl.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.CustomControl","Precedence":9000,"Name":"WPF Custom Control Library","ShortNameList":["wpfcustomcontrollib"],"PreferDefaultName":false,"ConfigPlace":"/WpfCustomControlLibrary-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/WpfCustomControlLibrary-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WpfControlLibrary","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target Framework Override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"netcoreapp3.0":{"DisplayName":".NET Core 3.0","Description":"Target netcoreapp3.0"},"netcoreapp3.1":{"DisplayName":".NET Core 3.1","Description":"Target netcoreapp3.1"},"net5.0":{"DisplayName":".NET 5.0","Description":"Target net5.0"},"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to enable nullable reference types for this project.","Name":"Nullable","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable nullable reference types for this project.","DisplayName":"Enable nullable","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.wpf.projecttemplates.9.0.8-rtm.25368.9.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":"WpfControlLibrary1","Description":"A project for creating a user control library for .NET WPF Applications","Identity":"Microsoft.Common.WPF.Control.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.Control","Precedence":9000,"Name":"WPF User Control Library","ShortNameList":["wpfusercontrollib"],"PreferDefaultName":false,"ConfigPlace":"/WpfUserControlLibrary-CSharp/.template.config/template.json","LocaleConfigPlace":"/WpfUserControlLibrary-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WpfControlLibrary","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target Framework Override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"netcoreapp3.0":{"DisplayName":".NET Core 3.0","Description":"Target netcoreapp3.0"},"netcoreapp3.1":{"DisplayName":".NET Core 3.1","Description":"Target netcoreapp3.1"},"net5.0":{"DisplayName":".NET 5.0","Description":"Target net5.0"},"net6.0":{"DisplayName":".NET 6.0","Description":"Target net6.0"},"net7.0":{"DisplayName":".NET 7.0","Description":"Target net7.0"},"net8.0":{"DisplayName":".NET 8.0","Description":"Target net8.0"},"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets langVersion in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets langVersion in the created project file","DisplayName":"Language Version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.wpf.projecttemplates.9.0.8-rtm.25368.9.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":"WpfControlLibrary1","Description":"A project for creating a user control library for .NET WPF Applications","Identity":"Microsoft.Common.WPF.Control.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.Control","Precedence":9000,"Name":"WPF User Control Library","ShortNameList":["wpfusercontrollib"],"PreferDefaultName":false,"ConfigPlace":"/WpfUserControlLibrary-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/WpfUserControlLibrary-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"},"netstandard2.1":{"DisplayName":".NET Standard 2.1","Description":"Target netstandard2.1"},"netstandard2.0":{"DisplayName":".NET Standard 2.0","Description":"Target netstandard2.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common","Library"],"DefaultName":"ClassLibrary1","Description":"A project for creating a class library that targets .NET or .NET Standard","Identity":"Microsoft.Common.Library.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Library","Precedence":11000,"Name":"Class Library","ShortNameList":["classlib"],"PreferDefaultName":false,"ConfigPlace":"/content/ClassLibrary-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/ClassLibrary-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ClassLibrary-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{"app":{"Description":"Target .NET","DefaultOverrides":{"Framework":"net9.0"}},"standard":{"Description":"Target netstandard","DefaultOverrides":{"Framework":"netstandard2.0"}}},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"},"netstandard2.1":{"DisplayName":".NET Standard 2.1","Description":"Target netstandard2.1"},"netstandard2.0":{"DisplayName":".NET Standard 2.0","Description":"Target netstandard2.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common","Library"],"DefaultName":"ClassLibrary1","Description":"A project for creating a class library that targets .NET or .NET Standard","Identity":"Microsoft.Common.Library.FSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Library","Precedence":11000,"Name":"Class Library","ShortNameList":["classlib"],"PreferDefaultName":false,"ConfigPlace":"/content/ClassLibrary-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/ClassLibrary-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ClassLibrary-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{"app":{"Description":"Target .NET","DefaultOverrides":{"Framework":"net9.0"}},"standard":{"Description":"Target netstandard","DefaultOverrides":{"Framework":"netstandard2.0"}}},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"},"netstandard2.1":{"DisplayName":".NET Standard 2.1","Description":"Target netstandard2.1"},"netstandard2.0":{"DisplayName":".NET Standard 2.0","Description":"Target netstandard2.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common","Library"],"DefaultName":"ClassLibrary1","Description":"A project for creating a class library that targets .NET or .NET Standard","Identity":"Microsoft.Common.Library.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Library","Precedence":11000,"Name":"Class Library","ShortNameList":["classlib"],"PreferDefaultName":false,"ConfigPlace":"/content/ClassLibrary-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/ClassLibrary-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ClassLibrary-VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{"app":{"Description":"Target .NET","DefaultOverrides":{"Framework":"net9.0"}},"standard":{"Description":"Target netstandard","DefaultOverrides":{"Framework":"netstandard2.0"}}},"TagsCollection":{"language":"VB","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ConsoleApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false},{"Documentation":"Whether to enable the project for publishing as native AOT.","Name":"NativeAot","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable the project for publishing as native AOT.","DisplayName":"Enable _native AOT publish","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common","Console"],"DefaultName":"ConsoleApp1","Description":"A project for creating a command-line application that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Common.Console.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Console","Precedence":11000,"Name":"Console App","ShortNameList":["console"],"PreferDefaultName":false,"ConfigPlace":"/content/ConsoleApplication-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/ConsoleApplication-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ConsoleApplication-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}],\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"PersistenceScope\":\"Shared\",\"PersistenceScopeName\":\"Microsoft\"},{\"id\":\"NativeAot\",\"isVisible\":true}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ConsoleApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common","Console"],"DefaultName":"ConsoleApp1","Description":"A project for creating a command-line application that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Common.Console.FSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Console","Precedence":11000,"Name":"Console App","ShortNameList":["console"],"PreferDefaultName":false,"ConfigPlace":"/content/ConsoleApplication-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/ConsoleApplication-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ConsoleApplication-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.ConsoleApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":".NET 9.0","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Whether to enable the project for publishing as native AOT.","Name":"NativeAot","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable the project for publishing as native AOT.","DisplayName":"Enable _native AOT publish","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Common","Console"],"DefaultName":"ConsoleApp1","Description":"A project for creating a command-line application that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Common.Console.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Console","Precedence":11000,"Name":"Console App","ShortNameList":["console"],"PreferDefaultName":false,"ConfigPlace":"/content/ConsoleApplication-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/ConsoleApplication-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ConsoleApplication-VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":"{\"$schema\":\"http://json.schemastore.org/ide.host\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}],\"symbolInfo\":[{\"id\":\"NativeAot\",\"isVisible\":true}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":".NET 9"},"net9.0-windows":{"DisplayName":"","Description":".NET 9 (Windows only)"},"net8.0":{"DisplayName":"","Description":".NET 8"},"net8.0-windows":{"DisplayName":"","Description":".NET 8 (Windows only)"},"net7.0":{"DisplayName":"","Description":".NET 7"},"net7.0-windows":{"DisplayName":"","Description":".NET 7 (Windows only)"},"net6.0":{"DisplayName":"","Description":".NET 6"},"net6.0-windows":{"DisplayName":"","Description":".NET 6 (Windows only)"},"netcoreapp3.1":{"DisplayName":"","Description":".NET Core 3.1"},"net481":{"DisplayName":"","Description":".NET Framework 4.8.1"},"net48":{"DisplayName":"","Description":".NET Framework 4.8"},"net472":{"DisplayName":"","Description":".NET Framework 4.7.2"},"net471":{"DisplayName":"","Description":".NET Framework 4.7.1"},"net47":{"DisplayName":"","Description":".NET Framework 4.7"},"net462":{"DisplayName":"","Description":".NET Framework 4.6.2"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"latest","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"Use MSTest.Sdk project style. More information at https://aka.ms/mstest/sdk","Name":"UseMSTestSdk","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"False","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Use MSTest.Sdk project style. More information at https://aka.ms/mstest/sdk","DisplayName":"Use MSTest.Sdk","AllowMultipleValues":false},{"Documentation":"Select the runner/platform. More information at https://aka.ms/mstest/sdk/extensions-profile","Name":"TestRunner","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VSTest","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"MSTest":{"DisplayName":"","Description":"Use MSTest Runner (Microsoft.Testing.Platform)"},"VSTest":{"DisplayName":"","Description":"Use VSTest platform"}},"Description":"Select the runner/platform. More information at https://aka.ms/mstest/sdk/extensions-profile","DisplayName":"Test runner","AllowMultipleValues":false},{"Documentation":"The coverage tool to use for the project.","Name":"CoverageTool","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Microsoft.CodeCoverage","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"Microsoft.CodeCoverage":{"DisplayName":"","Description":"Microsoft Code Coverage"},"coverlet":{"DisplayName":"","Description":"coverlet"}},"Description":"The coverage tool to use for the project.","DisplayName":"Coverage tool","AllowMultipleValues":false},{"Documentation":"Select the SDK extensions profile when using MSTest Runner. More information at https://aka.ms/mstest/sdk/extensions-profile","Name":"ExtensionsProfile","Priority":2,"Precedence":{"PrecedenceDefinition":4,"IsRequiredCondition":null,"IsEnabledCondition":"UseMSTestSdk && (TestRunner == MSTest)","IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Default","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"Default":{"DisplayName":"Default","Description":"Default extensions profile (recommended)"},"None":{"DisplayName":"None","Description":"No extensions are enabled"},"AllMicrosoft":{"DisplayName":"AllMicrosoft","Description":"Enable all extensions shipped by Microsoft (including extensions with a restrictive license)"}},"Description":"Select the SDK extensions profile when using MSTest Runner. More information at https://aka.ms/mstest/sdk/extensions-profile","DisplayName":"Testing extensions profile","AllowMultipleValues":false},{"Documentation":"Select the fixture kinds to include in the project.","Name":"Fixture","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"None","Description":"No fixture methods"},"AssemblyInitialize":{"DisplayName":"","Description":"AssemblyInitialize fixture method"},"AssemblyCleanup":{"DisplayName":"","Description":"AssemblyCleanup fixture method"},"ClassInitialize":{"DisplayName":"","Description":"ClassInitialize fixture method"},"ClassCleanup":{"DisplayName":"","Description":"ClassCleanup fixture method"},"TestInitialize":{"DisplayName":"","Description":"TestInitialize fixture method"},"TestCleanup":{"DisplayName":"","Description":"TestCleanup fixture method"}},"Description":"Select the fixture kinds to include in the project.","DisplayName":"Fixture","AllowMultipleValues":true}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","MSTest","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains MSTest tests that can run on .NET on Windows, Linux and MacOS.","Identity":"Microsoft.Test.MSTest.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest","Precedence":11000,"Name":"MSTest Test Project","ShortNameList":["mstest"],"PreferDefaultName":false,"ConfigPlace":"/content/MSTest-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/MSTest-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/MSTest-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"symbolInfo\":[{\"id\":\"UseMSTestSdk\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"TestRunner\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"ExtensionsProfile\",\"isVisible\":true},{\"id\":\"CoverageTool\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"Fixture\",\"isVisible\":true}],\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":".NET 9"},"net9.0-windows":{"DisplayName":"","Description":".NET 9 (Windows only)"},"net8.0":{"DisplayName":"","Description":".NET 8"},"net8.0-windows":{"DisplayName":"","Description":".NET 8 (Windows only)"},"net7.0":{"DisplayName":"","Description":".NET 7"},"net7.0-windows":{"DisplayName":"","Description":".NET 7 (Windows only)"},"net6.0":{"DisplayName":"","Description":".NET 6"},"net6.0-windows":{"DisplayName":"","Description":".NET 6 (Windows only)"},"netcoreapp3.1":{"DisplayName":"","Description":".NET Core 3.1"},"net481":{"DisplayName":"","Description":".NET Framework 4.8.1"},"net48":{"DisplayName":"","Description":".NET Framework 4.8"},"net472":{"DisplayName":"","Description":".NET Framework 4.7.2"},"net471":{"DisplayName":"","Description":".NET Framework 4.7.1"},"net47":{"DisplayName":"","Description":".NET Framework 4.7"},"net462":{"DisplayName":"","Description":".NET Framework 4.6.2"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"latest","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"Use MSTest.Sdk project style. More information at https://aka.ms/mstest/sdk","Name":"UseMSTestSdk","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"False","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Use MSTest.Sdk project style. More information at https://aka.ms/mstest/sdk","DisplayName":"Use MSTest.Sdk","AllowMultipleValues":false},{"Documentation":"Select the runner/platform. More information at https://aka.ms/mstest/sdk/extensions-profile","Name":"TestRunner","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VSTest","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"MSTest":{"DisplayName":"","Description":"Use MSTest Runner (Microsoft.Testing.Platform)"},"VSTest":{"DisplayName":"","Description":"Use VSTest platform"}},"Description":"Select the runner/platform. More information at https://aka.ms/mstest/sdk/extensions-profile","DisplayName":"Test runner","AllowMultipleValues":false},{"Documentation":"The coverage tool to use for the project.","Name":"CoverageTool","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Microsoft.CodeCoverage","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"Microsoft.CodeCoverage":{"DisplayName":"","Description":"Microsoft Code Coverage"},"coverlet":{"DisplayName":"","Description":"coverlet"}},"Description":"The coverage tool to use for the project.","DisplayName":"Coverage tool","AllowMultipleValues":false},{"Documentation":"Select the SDK extensions profile when using MSTest Runner. More information at https://aka.ms/mstest/sdk/extensions-profile","Name":"ExtensionsProfile","Priority":2,"Precedence":{"PrecedenceDefinition":4,"IsRequiredCondition":null,"IsEnabledCondition":"UseMSTestSdk && (TestRunner == MSTest)","IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Default","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"Default":{"DisplayName":"Default","Description":"Default extensions profile (recommended)"},"None":{"DisplayName":"None","Description":"No extensions are enabled"},"AllMicrosoft":{"DisplayName":"AllMicrosoft","Description":"Enable all extensions shipped by Microsoft (including extensions with a restrictive license)"}},"Description":"Select the SDK extensions profile when using MSTest Runner. More information at https://aka.ms/mstest/sdk/extensions-profile","DisplayName":"Testing extensions profile","AllowMultipleValues":false},{"Documentation":"Select the fixture kinds to include in the project.","Name":"Fixture","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"None","Description":"No fixture methods"},"AssemblyInitialize":{"DisplayName":"","Description":"AssemblyInitialize fixture method"},"AssemblyCleanup":{"DisplayName":"","Description":"AssemblyCleanup fixture method"},"ClassInitialize":{"DisplayName":"","Description":"ClassInitialize fixture method"},"ClassCleanup":{"DisplayName":"","Description":"ClassCleanup fixture method"},"TestInitialize":{"DisplayName":"","Description":"TestInitialize fixture method"},"TestCleanup":{"DisplayName":"","Description":"TestCleanup fixture method"}},"Description":"Select the fixture kinds to include in the project.","DisplayName":"Fixture","AllowMultipleValues":true}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","MSTest","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains MSTest tests that can run on .NET on Windows, Linux and MacOS.","Identity":"Microsoft.Test.MSTest.FSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest","Precedence":11000,"Name":"MSTest Test Project","ShortNameList":["mstest"],"PreferDefaultName":false,"ConfigPlace":"/content/MSTest-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/MSTest-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/MSTest-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"symbolInfo\":[{\"id\":\"UseMSTestSdk\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"TestRunner\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"ExtensionsProfile\",\"isVisible\":true},{\"id\":\"CoverageTool\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"Fixture\",\"isVisible\":true}],\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":".NET 9"},"net9.0-windows":{"DisplayName":"","Description":".NET 9 (Windows only)"},"net8.0":{"DisplayName":"","Description":".NET 8"},"net8.0-windows":{"DisplayName":"","Description":".NET 8 (Windows only)"},"net7.0":{"DisplayName":"","Description":".NET 7"},"net7.0-windows":{"DisplayName":"","Description":".NET 7 (Windows only)"},"net6.0":{"DisplayName":"","Description":".NET 6"},"net6.0-windows":{"DisplayName":"","Description":".NET 6 (Windows only)"},"netcoreapp3.1":{"DisplayName":"","Description":".NET Core 3.1"},"net481":{"DisplayName":"","Description":".NET Framework 4.8.1"},"net48":{"DisplayName":"","Description":".NET Framework 4.8"},"net472":{"DisplayName":"","Description":".NET Framework 4.7.2"},"net471":{"DisplayName":"","Description":".NET Framework 4.7.1"},"net47":{"DisplayName":"","Description":".NET Framework 4.7"},"net462":{"DisplayName":"","Description":".NET Framework 4.6.2"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"latest","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"Use MSTest.Sdk project style. More information at https://aka.ms/mstest/sdk","Name":"UseMSTestSdk","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"False","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Use MSTest.Sdk project style. More information at https://aka.ms/mstest/sdk","DisplayName":"Use MSTest.Sdk","AllowMultipleValues":false},{"Documentation":"Select the runner/platform. More information at https://aka.ms/mstest/sdk/extensions-profile","Name":"TestRunner","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VSTest","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"MSTest":{"DisplayName":"","Description":"Use MSTest Runner (Microsoft.Testing.Platform)"},"VSTest":{"DisplayName":"","Description":"Use VSTest platform"}},"Description":"Select the runner/platform. More information at https://aka.ms/mstest/sdk/extensions-profile","DisplayName":"Test runner","AllowMultipleValues":false},{"Documentation":"The coverage tool to use for the project.","Name":"CoverageTool","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Microsoft.CodeCoverage","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"Microsoft.CodeCoverage":{"DisplayName":"","Description":"Microsoft Code Coverage"},"coverlet":{"DisplayName":"","Description":"coverlet"}},"Description":"The coverage tool to use for the project.","DisplayName":"Coverage tool","AllowMultipleValues":false},{"Documentation":"Select the SDK extensions profile when using MSTest Runner. More information at https://aka.ms/mstest/sdk/extensions-profile","Name":"ExtensionsProfile","Priority":2,"Precedence":{"PrecedenceDefinition":4,"IsRequiredCondition":null,"IsEnabledCondition":"UseMSTestSdk && (TestRunner == MSTest)","IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Default","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"Default":{"DisplayName":"Default","Description":"Default extensions profile (recommended)"},"None":{"DisplayName":"None","Description":"No extensions are enabled"},"AllMicrosoft":{"DisplayName":"AllMicrosoft","Description":"Enable all extensions shipped by Microsoft (including extensions with a restrictive license)"}},"Description":"Select the SDK extensions profile when using MSTest Runner. More information at https://aka.ms/mstest/sdk/extensions-profile","DisplayName":"Testing extensions profile","AllowMultipleValues":false},{"Documentation":"Select the fixture kinds to include in the project.","Name":"Fixture","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"None","Description":"No fixture methods"},"AssemblyInitialize":{"DisplayName":"","Description":"AssemblyInitialize fixture method"},"AssemblyCleanup":{"DisplayName":"","Description":"AssemblyCleanup fixture method"},"ClassInitialize":{"DisplayName":"","Description":"ClassInitialize fixture method"},"ClassCleanup":{"DisplayName":"","Description":"ClassCleanup fixture method"},"TestInitialize":{"DisplayName":"","Description":"TestInitialize fixture method"},"TestCleanup":{"DisplayName":"","Description":"TestCleanup fixture method"}},"Description":"Select the fixture kinds to include in the project.","DisplayName":"Fixture","AllowMultipleValues":true}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","MSTest","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains MSTest tests that can run on .NET on Windows, Linux and MacOS.","Identity":"Microsoft.Test.MSTest.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest","Precedence":11000,"Name":"MSTest Test Project","ShortNameList":["mstest"],"PreferDefaultName":false,"ConfigPlace":"/content/MSTest-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/MSTest-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/MSTest-VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"symbolInfo\":[{\"id\":\"UseMSTestSdk\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"TestRunner\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"ExtensionsProfile\",\"isVisible\":true},{\"id\":\"CoverageTool\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"Fixture\",\"isVisible\":true}],\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","DisplayName":"Enable pack","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"latest","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains NUnit tests that can run on .NET on Windows, Linux and macOS","Identity":"NUnit3.DotNetNew.Template.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.Template","Precedence":11000,"Name":"NUnit 3 Test Project","ShortNameList":["nunit"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/NUnit-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/NUnit-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","DisplayName":"Enable pack","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"latest","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains NUnit tests that can run on .NET on Windows, Linux and macOS","Identity":"NUnit3.DotNetNew.Template.FSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.Template","Precedence":11000,"Name":"NUnit 3 Test Project","ShortNameList":["nunit"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/NUnit-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/NUnit-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","DisplayName":"Enable pack","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"latest","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Aleksei Kharlov aka halex2005 (codeofclimber.ru)","Classifications":["Test","NUnit","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains NUnit tests that can run on .NET on Windows, Linux and macOS","Identity":"NUnit3.DotNetNew.Template.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.Template","Precedence":11000,"Name":"NUnit 3 Test Project","ShortNameList":["nunit"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/NUnit-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/NUnit-VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":".NET 9"},"net9.0-windows":{"DisplayName":"","Description":".NET 9 (Windows only)"},"net8.0":{"DisplayName":"","Description":".NET 8"},"net8.0-windows":{"DisplayName":"","Description":".NET 8 (Windows only)"},"net7.0":{"DisplayName":"","Description":".NET 7"},"net7.0-windows":{"DisplayName":"","Description":".NET 7 (Windows only)"},"net6.0":{"DisplayName":"","Description":".NET 6"},"net6.0-windows":{"DisplayName":"","Description":".NET 6 (Windows only)"},"netcoreapp3.1":{"DisplayName":"","Description":".NET Core 3.1"},"net481":{"DisplayName":"","Description":".NET Framework 4.8.1"},"net48":{"DisplayName":"","Description":".NET Framework 4.8"},"net472":{"DisplayName":"","Description":".NET Framework 4.7.2"},"net471":{"DisplayName":"","Description":".NET Framework 4.7.1"},"net47":{"DisplayName":"","Description":".NET Framework 4.7"},"net462":{"DisplayName":"","Description":".NET Framework 4.6.2"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"latest","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false},{"Documentation":"Use MSTest.Sdk project style. More information at https://aka.ms/mstest/sdk","Name":"UseMSTestSdk","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"False","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Use MSTest.Sdk project style. More information at https://aka.ms/mstest/sdk","DisplayName":"Use MSTest.Sdk","AllowMultipleValues":false},{"Documentation":"Select the runner/platform. More information at https://aka.ms/mstest/sdk/extensions-profile","Name":"TestRunner","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VSTest","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"MSTest":{"DisplayName":"","Description":"Use MSTest Runner (Microsoft.Testing.Platform)"},"VSTest":{"DisplayName":"","Description":"Use VSTest platform"}},"Description":"Select the runner/platform. More information at https://aka.ms/mstest/sdk/extensions-profile","DisplayName":"Test runner","AllowMultipleValues":false},{"Documentation":"The coverage tool to use for the project.","Name":"CoverageTool","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Microsoft.CodeCoverage","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"Microsoft.CodeCoverage":{"DisplayName":"","Description":"Microsoft Code Coverage"},"coverlet":{"DisplayName":"","Description":"coverlet"}},"Description":"The coverage tool to use for the project.","DisplayName":"Coverage tool","AllowMultipleValues":false},{"Documentation":"Select the SDK extensions profile when using MSTest Runner. More information at https://aka.ms/mstest/sdk/extensions-profile","Name":"ExtensionsProfile","Priority":2,"Precedence":{"PrecedenceDefinition":4,"IsRequiredCondition":null,"IsEnabledCondition":"UseMSTestSdk && (TestRunner == MSTest)","IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Default","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"Default":{"DisplayName":"Default","Description":"Default extensions profile (recommended)"},"None":{"DisplayName":"None","Description":"No extensions are enabled"},"AllMicrosoft":{"DisplayName":"AllMicrosoft","Description":"Enable all extensions shipped by Microsoft (including extensions with a restrictive license)"}},"Description":"Select the SDK extensions profile when using MSTest Runner. More information at https://aka.ms/mstest/sdk/extensions-profile","DisplayName":"Testing extensions profile","AllowMultipleValues":false},{"Documentation":"Select the fixture kinds to include in the project.","Name":"Fixture","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"None","Description":"No fixture methods"},"AssemblyInitialize":{"DisplayName":"","Description":"AssemblyInitialize fixture method"},"AssemblyCleanup":{"DisplayName":"","Description":"AssemblyCleanup fixture method"},"ClassInitialize":{"DisplayName":"","Description":"ClassInitialize fixture method"},"ClassCleanup":{"DisplayName":"","Description":"ClassCleanup fixture method"},"TestInitialize":{"DisplayName":"","Description":"TestInitialize fixture method"},"TestCleanup":{"DisplayName":"","Description":"TestCleanup fixture method"}},"Description":"Select the fixture kinds to include in the project.","DisplayName":"Fixture","AllowMultipleValues":true}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","MSTest","Playwright","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains Playwright tests using MSTest test framework, that can run on .NET on Windows, Linux and MacOS.","Identity":"Microsoft.Test.Playwright.MSTest.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.Playwright.MSTest","Precedence":11000,"Name":"MSTest Playwright Test Project","ShortNameList":["mstest-playwright"],"PreferDefaultName":false,"ConfigPlace":"/content/Playwright-MSTest-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/Playwright-MSTest-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/Playwright-MSTest-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"symbolInfo\":[{\"id\":\"UseMSTestSdk\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"TestRunner\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"ExtensionsProfile\",\"isVisible\":true},{\"id\":\"CoverageTool\",\"isVisible\":true,\"persistenceScope\":\"shared\"},{\"id\":\"Fixture\",\"isVisible\":true}],\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","DisplayName":"Enable pack","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false},{"Documentation":"Sets the LangVersion property in the created project file","Name":"langVersion","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"latest","DataType":"text","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Sets the LangVersion property in the created project file","DisplayName":"Language version","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","NUnit","Playwright","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains Playwright tests using NUnit test framework, that can run on .NET on Windows, Linux and MacOS.","Identity":"Microsoft.Test.Playwright.NUnit.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.Playwright.NUnit","Precedence":11000,"Name":"NUnit Playwright Test Project","ShortNameList":["nunit-playwright"],"PreferDefaultName":false,"ConfigPlace":"/content/Playwright-NUnit-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/Playwright-NUnit-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/Playwright-NUnit-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","DisplayName":"Enable pack","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","xUnit","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains xUnit.net tests that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Test.xUnit.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.xUnit","Precedence":11000,"Name":"xUnit Test Project","ShortNameList":["xunit"],"PreferDefaultName":false,"ConfigPlace":"/content/XUnit-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/XUnit-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/XUnit-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","DisplayName":"Enable pack","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","xUnit","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains xUnit.net tests that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Test.xUnit.FSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.xUnit","Precedence":11000,"Name":"xUnit Test Project","ShortNameList":["xunit"],"PreferDefaultName":false,"ConfigPlace":"/content/XUnit-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/XUnit-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/XUnit-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.TestProject1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"VB":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"VB","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Overrides the target framework","Name":"TargetFrameworkOverride","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Overrides the target framework","DisplayName":"Target framework override","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"Framework","AllowMultipleValues":false},{"Documentation":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","Name":"EnablePack","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to enable packaging (via \"dotnet pack\") for the project.","DisplayName":"Enable pack","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"Skip restore","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg","Author":"Microsoft","Classifications":["Test","xUnit","Desktop","Web"],"DefaultName":"TestProject1","Description":"A project that contains xUnit.net tests that can run on .NET on Windows, Linux and macOS","Identity":"Microsoft.Test.xUnit.VisualBasic.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.xUnit","Precedence":11000,"Name":"xUnit Test Project","ShortNameList":["xunit"],"PreferDefaultName":false,"ConfigPlace":"/content/XUnit-VisualBasic/.template.config/template.json","LocaleConfigPlace":"/content/XUnit-VisualBasic/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/XUnit-VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"tags\":[{\"type\":\"platform\",\"add\":[\"Linux\",\"macOS\",\"Windows\"]}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"ValueController","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Namespace for the generated code","Name":"namespace","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"MyApp.Namespace","DataType":null,"DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Namespace for the generated code","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Create controller with read/write actions","Name":"actions","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Create controller with read/write actions","DisplayName":"Add Read/Write Actions","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.itemtemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"ValueController","Description":"API Controller with or without read/write actions","Identity":"Microsoft.AspNetCore.Mvc.ApiController.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.ApiController","Precedence":9900,"Name":"API Controller","ShortNameList":["apicontroller"],"PreferDefaultName":false,"ConfigPlace":"/content/ApiController/.template.config/template.json","LocaleConfigPlace":"/content/ApiController/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"HomeController","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Namespace for the generated code","Name":"namespace","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"MyApp.Namespace","DataType":null,"DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Namespace for the generated code","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Create controller with read/write actions","Name":"actions","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Create controller with read/write actions","DisplayName":"Add Read/Write Actions","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.itemtemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"HomeController","Description":"MVC Controller with or without read/write actions","Identity":"Microsoft.AspNetCore.Mvc.MvcController.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.MvcController","Precedence":9900,"Name":"MVC Controller","ShortNameList":["mvccontroller"],"PreferDefaultName":false,"ConfigPlace":"/content/MvcController/.template.config/template.json","LocaleConfigPlace":"/content/MvcController/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"protobuf","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"namespace for the generated code","Name":"namespace","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"MyApp.Namespace","DataType":null,"DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"namespace for the generated code","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.itemtemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","gRPC"],"DefaultName":"protobuf","Description":"A protocol buffer file for describing messages and services for gRPC.","Identity":"Microsoft.Web.Grpc.Protobuf.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Grpc.Protobuf","Precedence":9900,"Name":"Protocol Buffer File","ShortNameList":["proto"],"PreferDefaultName":false,"ConfigPlace":"/content/Protobuf/.template.config/template.json","LocaleConfigPlace":"/content/Protobuf/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Component1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.itemtemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"Component1","Description":"A reusable UI component implemented with Razor","Identity":"Microsoft.AspNetCore.Components.RazorComponent.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Components.RazorComponent","Precedence":9900,"Name":"Razor Component","ShortNameList":["razorcomponent"],"PreferDefaultName":false,"ConfigPlace":"/content/RazorComponent/.template.config/template.json","LocaleConfigPlace":"/content/RazorComponent/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Index","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"namespace for the generated code","Name":"namespace","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"MyApp.Namespace","DataType":null,"DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"namespace for the generated code","DisplayName":"","AllowMultipleValues":false},{"Documentation":"create page without a PageModel","Name":"no-pagemodel","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"create page without a PageModel","DisplayName":"Exclude PageModel","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.itemtemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"Index","Description":"A Razor page with or without a page model","Identity":"Microsoft.AspNetCore.Mvc.RazorPage.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.RazorPage","Precedence":9900,"Name":"Razor Page","ShortNameList":["page"],"PreferDefaultName":false,"ConfigPlace":"/content/RazorPage/.template.config/template.json","LocaleConfigPlace":"/content/RazorPage/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Index","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.itemtemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"Index","Description":"An empty Razor View","Identity":"Microsoft.AspNetCore.Mvc.RazorView.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.RazorView","Precedence":9900,"Name":"Razor View","ShortNameList":["view"],"PreferDefaultName":false,"ConfigPlace":"/content/RazorView/.template.config/template.json","LocaleConfigPlace":"/content/RazorView/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"ignoreme","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"namespace for the generated code","Name":"namespace","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"MyApp.Namespace","DataType":null,"DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"namespace for the generated code","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.itemtemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"_ViewImports","Description":"An MVC View Import Page","Identity":"Microsoft.AspNetCore.Mvc.ViewImports.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.ViewImports","Precedence":9900,"Name":"MVC ViewImports","ShortNameList":["viewimports"],"PreferDefaultName":false,"ConfigPlace":"/content/ViewImports/.template.config/template.json","LocaleConfigPlace":"/content/ViewImports/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"ignoreme","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"item":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"item","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.itemtemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","ASP.NET"],"DefaultName":"_ViewStart","Description":"An MVC ViewStart Page","Identity":"Microsoft.AspNetCore.Mvc.ViewStart.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.AspNetCore.Mvc.ViewStart","Precedence":9900,"Name":"MVC ViewStart","ShortNameList":["viewstart"],"PreferDefaultName":false,"ConfigPlace":"/content/ViewStart/.template.config/template.json","LocaleConfigPlace":"/content/ViewStart/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"item"},"HostData":null,"PostActions":["84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.Application1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Common","Worker","Web"],"DefaultName":"WorkerService","Description":"An empty project template for creating a worker service.","Identity":"Microsoft.Worker.Empty.FSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Worker.Empty","Precedence":9900,"Name":"Worker Service","ShortNameList":["worker"],"PreferDefaultName":false,"ConfigPlace":"/content/Worker-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/Worker-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/Worker-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":300,\"icon\":\"ide/icon.ico\",\"supportsDocker\":true}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"BlazorWeb-CSharp","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The ID to use for secrets (use with Individual auth).","Name":"UserSecretsId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"aspnet-BlazorWeb-CSharp-53bc9b9d-9d6a-45d4-8429-2a2761773502","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The ID to use for secrets (use with Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if Individual auth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if Individual auth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if Individual auth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if Individual auth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Chooses which interactive render mode to use for interactive components","Name":"InteractivityPlatform","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"Server","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"None","Description":"No interactivity (static server rendering only)"},"Server":{"DisplayName":"Server","Description":"Runs on the server"},"WebAssembly":{"DisplayName":"WebAssembly","Description":"Runs in the browser using WebAssembly"},"Auto":{"DisplayName":"Auto (Server and WebAssembly)","Description":"Uses Server while downloading WebAssembly assets, then uses WebAssembly"}},"Description":"Chooses which interactive render mode to use for interactive components","DisplayName":"_Interactive render mode","AllowMultipleValues":false},{"Documentation":"Chooses which components will have interactive rendering enabled","Name":"InteractivityLocation","Priority":2,"Precedence":{"PrecedenceDefinition":4,"IsRequiredCondition":null,"IsEnabledCondition":"(InteractivityPlatform != \"None\")","IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"InteractivePerPage","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"InteractivePerPage":{"DisplayName":"Per page/component","Description":"Interactivity is applied on a per-page or per-component basis"},"InteractiveGlobal":{"DisplayName":"Global","Description":"Interactivity is applied at the root level"}},"Description":"Chooses which components will have interactive rendering enabled","DisplayName":"_Interactivity location","AllowMultipleValues":false},{"Documentation":"Configures whether to add sample pages and styling to demonstrate basic usage patterns.","Name":"IncludeSampleContent","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Configures whether to add sample pages and styling to demonstrate basic usage patterns.","DisplayName":"_Include sample pages","AllowMultipleValues":false},{"Documentation":"Configures whether to omit sample pages and styling that demonstrate basic usage patterns.","Name":"Empty","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Configures whether to omit sample pages and styling that demonstrate basic usage patterns.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The type of authentication to use","Name":"auth","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"","Description":"No authentication"},"Individual":{"DisplayName":"","Description":"Individual authentication"}},"Description":"The type of authentication to use","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual is specified.","Name":"UseLocalDB","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Configures whether to make every page interactive by applying an interactive render mode at the top level. If false, pages will use static server rendering by default, and can be marked interactive on a per-page or per-component basis.","Name":"AllInteractive","Priority":2,"Precedence":{"PrecedenceDefinition":4,"IsRequiredCondition":null,"IsEnabledCondition":"(InteractivityPlatform != \"None\")","IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Configures whether to make every page interactive by applying an interactive render mode at the top level. If false, pages will use static server rendering by default, and can be marked interactive on a per-page or per-component basis.","DisplayName":"_Enable interactive rendering globally throughout the site","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if Individual isn't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if Individual isn't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","Blazor","WebAssembly"],"DefaultName":"BlazorApp","Description":"A project template for creating a Blazor web app that supports both server-side rendering and client interactivity. This template can be used for web apps with rich dynamic user interfaces (UIs).","Identity":"Microsoft.Web.Blazor.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Blazor","Precedence":9900,"Name":"Blazor Web App","ShortNameList":["blazor"],"PreferDefaultName":false,"ConfigPlace":"/content/BlazorWeb-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/BlazorWeb-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/BlazorWeb-CSharp/.template.config/ide.host.json","ThirdPartyNotices":"https://aka.ms/aspnetcore/9.0-third-party-notices","BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":610,\"icon\":\"ide/icon.ico\",\"disableHttpsSymbol\":\"NoHttps\",\"symbolInfo\":[{\"id\":\"InteractivityPlatform\",\"isVisible\":true,\"persistenceScope\":\"templateGroup\"},{\"id\":\"InteractivityLocation\",\"isVisible\":true,\"persistenceScope\":\"templateGroup\"},{\"id\":\"IncludeSampleContent\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"},{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"ComponentsWebAssembly-CSharp","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The type of authentication to use","Name":"auth","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"","Description":"No authentication"},"Individual":{"DisplayName":"","Description":"Individual authentication"},"IndividualB2C":{"DisplayName":"","Description":"Individual authentication with Azure AD B2C"},"SingleOrg":{"DisplayName":"","Description":"Organizational authentication for a single tenant"}},"Description":"The type of authentication to use","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The authority of the OIDC provider (use with standalone Individual auth).","Name":"Authority","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The authority of the OIDC provider (use with standalone Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","Name":"AAdB2CInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https:////aadB2CInstance.b2clogin.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","Name":"SignUpSignInPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory instance to connect to (use with SingleOrg auth).","Name":"AADInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory instance to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Client ID for this project (use with IndividualB2C, SingleOrg or Individual auth in standalone scenarios).","Name":"ClientId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"33333333-3333-3333-33333333333333333","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Client ID for this project (use with IndividualB2C, SingleOrg or Individual auth in standalone scenarios).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","Name":"Domain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"qualified.domain.name","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The App ID Uri for the server API we want to call (use with SingleOrg or IndividualB2C auth).","Name":"AppIDUri","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"api.id.uri","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The App ID Uri for the server API we want to call (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Client ID for the API that the server hosts (use with IndividualB2C, SingleOrg).","Name":"APIClientId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"11111111-1111-1111-11111111111111111","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Client ID for the API that the server hosts (use with IndividualB2C, SingleOrg).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The API scope the client needs to request to provision an access token. (use with IndividualB2C, SingleOrg).","Name":"DefaultScope","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"access_as_user","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The API scope the client needs to request to provision an access token. (use with IndividualB2C, SingleOrg).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","Name":"TenantId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"22222222-2222-2222-2222-222222222222","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to allow this application read access to the directory (only applies to SingleOrg).","Name":"OrgReadAccess","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to allow this application read access to the directory (only applies to SingleOrg).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","Name":"UserSecretsId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"aspnet-BlazorServerWeb-CSharp-53bc9b9d-9d6a-45d4-8429-2a2761773502","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, produces a Progressive Web Application (PWA) supporting installation and offline use.","Name":"PWA","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, produces a Progressive Web Application (PWA) supporting installation and offline use.","DisplayName":"_Progressive Web Application","AllowMultipleValues":false},{"Documentation":"Configures whether to add sample pages and styling to demonstrate basic usage patterns.","Name":"IncludeSampleContent","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Configures whether to add sample pages and styling to demonstrate basic usage patterns.","DisplayName":"_Include sample pages","AllowMultipleValues":false},{"Documentation":"Configures whether to omit sample pages and styling that demonstrate basic usage patterns.","Name":"Empty","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Configures whether to omit sample pages and styling that demonstrate basic usage patterns.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","Name":"UseLocalDB","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C without and ASP.NET Core host is specified.","Name":"CalledApiUrl","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://graph.microsoft.com/v1.0","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C without and ASP.NET Core host is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C without and ASP.NET Core host is specified.","Name":"CalledApiScopes","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"user.read","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C without and ASP.NET Core host is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","Blazor","WebAssembly","PWA"],"DefaultName":"BlazorApp","Description":"A project template for creating a Blazor app that runs on WebAssembly. This template can be used for web apps with rich dynamic user interfaces (UIs).","Identity":"Microsoft.Web.Blazor.Wasm.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Blazor.Wasm","Precedence":9900,"Name":"Blazor WebAssembly Standalone App","ShortNameList":["blazorwasm"],"PreferDefaultName":false,"ConfigPlace":"/content/ComponentsWebAssembly-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/ComponentsWebAssembly-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/ComponentsWebAssembly-CSharp/.template.config/ide.host.json","ThirdPartyNotices":"https://aka.ms/aspnetcore/9.0-third-party-notices","BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":610,\"icon\":\"ide/icon.ico\",\"disableHttpsSymbol\":\"NoHttps\",\"symbolInfo\":[{\"id\":\"PWA\",\"isVisible\":true,\"persistenceScope\":\"templateGroup\"},{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"},{\"id\":\"IncludeSampleContent\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","Empty"],"DefaultName":"WebApplication","Description":"An empty project template for creating an ASP.NET Core application. This template does not have any content in it.","Identity":"Microsoft.Web.Empty.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Empty","Precedence":9900,"Name":"ASP.NET Core Empty","ShortNameList":["web"],"PreferDefaultName":false,"ConfigPlace":"/content/EmptyWeb-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/EmptyWeb-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/EmptyWeb-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":100,\"icon\":\"ide/icon.ico\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}],\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","Empty"],"DefaultName":"WebApplication","Description":"An empty project template for creating an ASP.NET Core application. This template does not have any content in it.","Identity":"Microsoft.Web.Empty.FSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Empty","Precedence":9900,"Name":"ASP.NET Core Empty","ShortNameList":["web"],"PreferDefaultName":false,"ConfigPlace":"/content/EmptyWeb-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/EmptyWeb-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/EmptyWeb-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":101,\"icon\":\"ide/icon.ico\",\"supportsDocker\":true,\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"GrpcService-CSharp","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false},{"Documentation":"Whether to enable the project for publishing as native AOT.","Name":"NativeAot","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable the project for publishing as native AOT.","DisplayName":"Enable _native AOT publish","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","gRPC","API","Service"],"DefaultName":"GrpcService","Description":"A project template for creating a gRPC service using ASP.NET Core, with optional support for publishing as native AOT.","Identity":"Microsoft.Grpc.Service.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Grpc","Precedence":9900,"Name":"ASP.NET Core gRPC Service","ShortNameList":["grpc"],"PreferDefaultName":false,"ConfigPlace":"/content/GrpcService-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/GrpcService-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/GrpcService-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":500,\"icon\":\"ide/icon.ico\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"},{\"id\":\"NativeAot\",\"isVisible\":true}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.RazorClassLibrary1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to support adding traditional Razor pages and Views to this library.","Name":"SupportPagesAndViews","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to support adding traditional Razor pages and Views to this library.","DisplayName":"Support pages and views","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","Razor","Library"],"DefaultName":"RazorClassLibrary","Description":"A project for creating a Razor class library that targets .NET","Identity":"Microsoft.Web.Razor.Library.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Razor","Precedence":9900,"Name":"Razor Class Library","ShortNameList":["razorclasslib"],"PreferDefaultName":false,"ConfigPlace":"/content/RazorClassLibrary-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/RazorClassLibrary-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/RazorClassLibrary-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":700,\"icon\":\"ide/RazorClassLibrary.ico\",\"symbolInfo\":[{\"id\":\"SupportPagesAndViews\",\"isVisible\":true,\"persistenceScope\":\"templateGroup\"}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025","84c0da21-51c8-4541-9940-6ca19af04ee6"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The type of authentication to use","Name":"auth","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"","Description":"No authentication"},"Individual":{"DisplayName":"","Description":"Individual authentication"},"IndividualB2C":{"DisplayName":"","Description":"Individual authentication with Azure AD B2C"},"SingleOrg":{"DisplayName":"","Description":"Organizational authentication for a single tenant"},"MultiOrg":{"DisplayName":"","Description":"Organizational authentication for multiple tenants"},"Windows":{"DisplayName":"","Description":"Windows authentication"}},"Description":"The type of authentication to use","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","Name":"AAdB2CInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/tfp/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","Name":"SignUpSignInPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The global signout callback (use with IndividualB2C auth).","Name":"SignedOutCallbackPath","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"/signout/B2C_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The global signout callback (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The reset password policy ID for this project (use with IndividualB2C auth).","Name":"ResetPasswordPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_reset","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The reset password policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The edit profile policy ID for this project (use with IndividualB2C auth).","Name":"EditProfilePolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_edit_profile","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The edit profile policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory instance to connect to (use with SingleOrg or MultiOrg auth).","Name":"AADInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory instance to connect to (use with SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Client ID for this project (use with IndividualB2C, SingleOrg or MultiOrg auth).","Name":"ClientId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"11111111-1111-1111-11111111111111111","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Client ID for this project (use with IndividualB2C, SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","Name":"Domain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"qualified.domain.name","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","Name":"TenantId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"22222222-2222-2222-2222-222222222222","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The request path within the application's base path of the redirect URI (use with SingleOrg or IndividualB2C auth).","Name":"CallbackPath","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"/signin-oidc","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The request path within the application's base path of the redirect URI (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to allow this application read access to the directory (only applies to SingleOrg or MultiOrg auth).","Name":"OrgReadAccess","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to allow this application read access to the directory (only applies to SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","Name":"UserSecretsId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"aspnet-Company.WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json in the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json in the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","Name":"UseLocalDB","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","Name":"CalledApiUrl","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://graph.microsoft.com/v1.0","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg or --auth MultiOrg is specified.","Name":"CallsMicrosoftGraph","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg or --auth MultiOrg is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","Name":"CalledApiScopes","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"user.read","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","MVC","Razor Pages"],"DefaultName":"WebApplication","Description":"A project template for creating an ASP.NET Core application with example ASP.NET Core Razor Pages content","Identity":"Microsoft.Web.RazorPages.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.RazorPages","Precedence":9900,"Name":"ASP.NET Core Web App (Razor Pages)","ShortNameList":["webapp","razor"],"PreferDefaultName":false,"ConfigPlace":"/content/RazorPagesWeb-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/RazorPagesWeb-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/RazorPagesWeb-CSharp/.template.config/ide.host.json","ThirdPartyNotices":"https://aka.ms/aspnetcore/9.0-third-party-notices","BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":400,\"icon\":\"ide/icon.ico\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}],\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The type of authentication to use","Name":"auth","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"","Description":"No authentication"},"Individual":{"DisplayName":"","Description":"Individual authentication"},"IndividualB2C":{"DisplayName":"","Description":"Individual authentication with Azure AD B2C"},"SingleOrg":{"DisplayName":"","Description":"Organizational authentication for a single tenant"},"MultiOrg":{"DisplayName":"","Description":"Organizational authentication for multiple tenants"},"Windows":{"DisplayName":"","Description":"Windows authentication"}},"Description":"The type of authentication to use","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","Name":"AAdB2CInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/tfp/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","Name":"SignUpSignInPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The global signout callback (use with IndividualB2C auth).","Name":"SignedOutCallbackPath","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"/signout/B2C_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The global signout callback (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The reset password policy ID for this project (use with IndividualB2C auth).","Name":"ResetPasswordPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_reset","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The reset password policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The edit profile policy ID for this project (use with IndividualB2C auth).","Name":"EditProfilePolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_edit_profile","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The edit profile policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory instance to connect to (use with SingleOrg or MultiOrg auth).","Name":"AADInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory instance to connect to (use with SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Client ID for this project (use with IndividualB2C, SingleOrg or MultiOrg auth).","Name":"ClientId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"11111111-1111-1111-11111111111111111","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Client ID for this project (use with IndividualB2C, SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","Name":"Domain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"qualified.domain.name","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","Name":"TenantId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"22222222-2222-2222-2222-222222222222","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The request path within the application's base path of the redirect URI (use with SingleOrg or IndividualB2C auth).","Name":"CallbackPath","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"/signin-oidc","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The request path within the application's base path of the redirect URI (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to allow this application read access to the directory (only applies to SingleOrg or MultiOrg auth).","Name":"OrgReadAccess","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to allow this application read access to the directory (only applies to SingleOrg or MultiOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","Name":"UserSecretsId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"aspnet-Company.WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","Name":"UseLocalDB","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","Name":"CalledApiUrl","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://graph.microsoft.com/v1.0","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"URL of the API to call from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg or --auth MultiOrg is specified.","Name":"CallsMicrosoftGraph","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg or --auth MultiOrg is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","Name":"CalledApiScopes","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"user.read","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg, --auth MultiOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","MVC"],"DefaultName":"WebApplication","Description":"A project template for creating an ASP.NET Core application with example ASP.NET Core MVC Views and Controllers. This template can also be used for RESTful HTTP services.","Identity":"Microsoft.Web.Mvc.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Mvc","Precedence":9900,"Name":"ASP.NET Core Web App (Model-View-Controller)","ShortNameList":["mvc"],"PreferDefaultName":false,"ConfigPlace":"/content/StarterWeb-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/StarterWeb-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/StarterWeb-CSharp/.template.config/ide.host.json","ThirdPartyNotices":"https://aka.ms/aspnetcore/9.0-third-party-notices","BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":410,\"icon\":\"ide/icon.ico\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}],\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualAuth or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if Individual, IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","MVC"],"DefaultName":"WebApplication","Description":"A project template for creating an ASP.NET Core application with example ASP.NET Core MVC Views and Controllers. This template can also be used for RESTful HTTP services.","Identity":"Microsoft.Web.Mvc.FSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Mvc","Precedence":9900,"Name":"ASP.NET Core Web App (Model-View-Controller)","ShortNameList":["mvc"],"PreferDefaultName":false,"ConfigPlace":"/content/StarterWeb-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/StarterWeb-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":null,"ThirdPartyNotices":"https://aka.ms/aspnetcore/9.0-third-party-notices","BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":null,"PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"The type of authentication to use","Name":"auth","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"None","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"None":{"DisplayName":"","Description":"No authentication"},"IndividualB2C":{"DisplayName":"","Description":"Individual authentication with Azure AD B2C"},"SingleOrg":{"DisplayName":"","Description":"Organizational authentication for a single tenant"},"Windows":{"DisplayName":"","Description":"Windows authentication"}},"Description":"The type of authentication to use","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","Name":"AAdB2CInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://qualified.domain.name.b2clogin.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory B2C instance to connect to (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","Name":"SignUpSignInPolicyId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"b2c_1_susi","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The sign-in and sign-up policy ID for this project (use with IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Azure Active Directory instance to connect to (use with SingleOrg auth).","Name":"AADInstance","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://login.microsoftonline.com/","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Azure Active Directory instance to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The Client ID for this project (use with SingleOrg or IndividualB2C auth).","Name":"ClientId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"11111111-1111-1111-11111111111111111","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The Client ID for this project (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","Name":"Domain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"qualified.domain.name","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The domain for the directory tenant (use with SingleOrg or IndividualB2C auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The API scope the client needs to request to provision an access token. (use with IndividualB2C, SingleOrg).","Name":"DefaultScope","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"access_as_user","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The API scope the client needs to request to provision an access token. (use with IndividualB2C, SingleOrg).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","Name":"TenantId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"22222222-2222-2222-2222-222222222222","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The TenantId ID of the directory to connect to (use with SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether or not to allow this application read access to the directory (only applies to SingleOrg auth).","Name":"OrgReadAccess","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether or not to allow this application read access to the directory (only applies to SingleOrg auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","Name":"UserSecretsId","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"aspnet-Company.WebApplication1-53bc9b9d-9d6a-45d4-8429-2a2761773502","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The ID to use for secrets (use with OrgReadAccess or Individual auth).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to exclude launchSettings.json in the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json in the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json. This option is only applicable when the parameter no-https is not used (no-https will be ignored if either IndividualB2C or OrganizationalAuth is used).","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS. This option only applies if IndividualB2C, SingleOrg, or MultiOrg aren't used for --auth.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","Name":"UseLocalDB","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use LocalDB instead of SQLite. This option only applies if --auth Individual or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"URL of the API to call from the web app. This option only applies if --auth SingleOrg or --auth IndividualB2C is specified.","Name":"CalledApiUrl","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"https://graph.microsoft.com/v1.0","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"URL of the API to call from the web app. This option only applies if --auth SingleOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg is specified.","Name":"CallsMicrosoftGraph","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Specifies if the web app calls Microsoft Graph. This option only applies if --auth SingleOrg is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg or --auth IndividualB2C is specified.","Name":"CalledApiScopes","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"user.read","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Scopes to request to call the API from the web app. This option only applies if --auth SingleOrg or --auth IndividualB2C is specified.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Disable OpenAPI (Swagger) support","Name":"DisableOpenAPI","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Disable OpenAPI (Swagger) support","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false},{"Documentation":"Whether to use minimal APIs instead of controllers.","Name":"UseMinimalAPIs","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use minimal APIs instead of controllers.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to use controllers instead of minimal APIs. This option overides the value specified by --minimal.","Name":"UseControllers","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to use controllers instead of minimal APIs. This option overides the value specified by --minimal.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","Web API","API","Service"],"DefaultName":"WebApplication","Description":"A project template for creating a RESTful Web API using ASP.NET Core controllers or minimal APIs, with optional support for OpenAPI and authentication.","Identity":"Microsoft.Web.WebApi.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.WebApi","Precedence":9900,"Name":"ASP.NET Core Web API","ShortNameList":["webapi"],"PreferDefaultName":false,"ConfigPlace":"/content/WebApi-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/WebApi-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/WebApi-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":200,\"icon\":\"ide/icon.ico\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"DisableOpenAPI\",\"name\":{\"text\":\"Enable _OpenAPI support\",\"overrideDefaultText\":true},\"description\":{\"text\":\"Enables OpenAPI (Swagger) support\",\"overrideDefaultText\":true},\"invertBoolean\":true,\"isVisible\":true,\"defaultValue\":\"true\",\"persistenceScope\":\"templateGroup\"},{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"},{\"id\":\"UseMinimalAPIs\",\"name\":{\"text\":\"Use controllers\",\"overrideDefaultText\":true},\"description\":{\"text\":\"Use controllers instead of minimal APIs.\",\"overrideDefaultText\":true},\"invertBoolean\":true,\"isVisible\":true,\"persistenceScope\":\"templateGroup\"}],\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"F#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"F#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTPS endpoint in launchSettings.json.","Name":"kestrelHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTPS endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json.","Name":"iisHttpsPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTPS endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to turn off HTTPS.","Name":"NoHttps","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to turn off HTTPS.","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","Web API"],"DefaultName":"WebApplication","Description":"A project template for creating an ASP.NET Core application with an example Controller for a RESTful HTTP service. This template can also be used for ASP.NET Core MVC Views and Controllers.","Identity":"Microsoft.Web.WebApi.FSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.WebApi","Precedence":9900,"Name":"ASP.NET Core Web API","ShortNameList":["webapi"],"PreferDefaultName":false,"ConfigPlace":"/content/WebApi-FSharp/.template.config/template.json","LocaleConfigPlace":"/content/WebApi-FSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/WebApi-FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":201,\"icon\":\"ide/icon.ico\",\"supportsDocker\":true,\"disableHttpsSymbol\":\"NoHttps\"}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.WebApplication1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the HTTP endpoint in launchSettings.json.","Name":"kestrelHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","Name":"iisHttpPort","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"0","DataType":"integer","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Port number to use for the IIS Express HTTP endpoint in launchSettings.json.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Web","Web API","API","Service"],"DefaultName":"WebApplication","Description":"A project template for creating a RESTful Web API using ASP.NET Core minimal APIs published as native AOT.","Identity":"Microsoft.Web.WebApiAot.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.WebApiAot","Precedence":9900,"Name":"ASP.NET Core Web API (native AOT)","ShortNameList":["webapiaot"],"PreferDefaultName":false,"ConfigPlace":"/content/WebApiAot-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/WebApiAot-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/WebApiAot-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":100,\"icon\":\"ide/icon.ico\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Choices":null,"Documentation":"The default name symbol","Description":"The default name symbol","DefaultValue":"Company.Application1","Name":"name","DisplayName":null,"IsName":true,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"string","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"C#":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"C#","Name":"language","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Choices":{"project":{"DisplayName":"","Description":""}},"Documentation":null,"Description":null,"DefaultValue":"project","Name":"type","DisplayName":null,"IsName":false,"Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","DataType":"choice","DefaultIfOptionWithoutValue":null,"AllowMultipleValues":false,"EnableQuotelessLiterals":false},{"Documentation":"Whether to exclude launchSettings.json from the generated template.","Name":"ExcludeLaunchSettings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to exclude launchSettings.json from the generated template.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"The target framework for the project.","Name":"Framework","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"net9.0","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"net9.0":{"DisplayName":"","Description":"Target net9.0"}},"Description":"The target framework for the project.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"If specified, skips the automatic restore of the project on create.","Name":"skipRestore","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"If specified, skips the automatic restore of the project on create.","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Whether to generate an explicit Program class and Main method instead of top-level statements.","Name":"UseProgramMain","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to generate an explicit Program class and Main method instead of top-level statements.","DisplayName":"Do not use _top-level statements","AllowMultipleValues":false},{"Documentation":"Whether to enable the project for publishing as native AOT.","Name":"NativeAot","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Whether to enable the project for publishing as native AOT.","DisplayName":"Enable _native AOT publish","AllowMultipleValues":false}],"MountPointUri":"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg","Author":"Microsoft","Classifications":["Common","Worker","Web"],"DefaultName":"WorkerService","Description":"An empty project template for creating a worker service.","Identity":"Microsoft.Worker.Empty.CSharp.9.0","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Worker.Empty","Precedence":9900,"Name":"Worker Service","ShortNameList":["worker"],"PreferDefaultName":false,"ConfigPlace":"/content/Worker-CSharp/.template.config/template.json","LocaleConfigPlace":"/content/Worker-CSharp/.template.config/localize/templatestrings.en.json","HostConfigPlace":"/content/Worker-CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"order\":300,\"icon\":\"ide/icon.ico\",\"supportsDocker\":true,\"symbolInfo\":[{\"id\":\"UseProgramMain\",\"isVisible\":true,\"persistenceScope\":\"shared\",\"persistenceScopeName\":\"Microsoft\"},{\"id\":\"NativeAot\",\"isVisible\":true}]}","PostActions":["210d431b-a78b-4d2f-b762-4ed3e3ea9025"],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","Console"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.Console.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Console","Precedence":6500,"Name":"Console Application","ShortNameList":["console"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.Console.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.Console.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/ConsoleApplicationCS.ico\",\"order\":10,\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"F#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"F#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","Console"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.Console.FSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Console","Precedence":6500,"Name":"Console Application","ShortNameList":["console"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.Console.FSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.Console.FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/FSharpApplication_32.ico\",\"order\":10,\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","Console"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.Console.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Console","Precedence":6500,"Name":"Console Application","ShortNameList":["console"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.Console.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.Console.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/ConsoleApplicationVB.ico\",\"order\":10,\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","Library"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.Library.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Library","Precedence":6500,"Name":"Class library","ShortNameList":["library"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.Library.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.Library.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/ClassLibraryCS.ico\",\"order\":20,\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"F#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"F#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","Library"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.Library.FSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Library","Precedence":6500,"Name":"Class library","ShortNameList":["library"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.Library.FSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.Library.FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/FSharpLibrary.ico\",\"order\":20,\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","Library"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.Library.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.Library","Precedence":6500,"Name":"Class library","ShortNameList":["library"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.Library.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.Library.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/ClassLibraryVB.ico\",\"order\":20,\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"Common\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WinForms.ControlLibrary.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms.ControlLibrary","Precedence":6500,"Name":"Windows Forms (WinForms) Control library","ShortNameList":["winformscontrollib"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WinForms.ControlLibrary.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WinForms.ControlLibrary.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WinControlCS.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Library\"],\"remove\":[\"Common\",\"WinForms\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WinForms.ControlLibrary.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms.ControlLibrary","Precedence":6500,"Name":"Windows Forms (WinForms) Control library","ShortNameList":["winformscontrollib"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WinForms.ControlLibrary.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WinForms.ControlLibrary.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WinControlVB.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Library\"],\"remove\":[\"Common\",\"WinForms\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WinForms.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms","Precedence":6500,"Name":"Windows Forms (WinForms) Application","ShortNameList":["winforms"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WinForms.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WinForms.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WinApplicationCS.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\"],\"remove\":[\"Common\",\"WinForms\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WinForms.Library.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms.Library","Precedence":6500,"Name":"Windows Forms (WinForms) Class library","ShortNameList":["winformslib"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WinForms.Library.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WinForms.Library.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WinControlCS.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Library\"],\"remove\":[\"Common\",\"WinForms\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WinForms.Library.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms.Library","Precedence":6500,"Name":"Windows Forms (WinForms) Class library","ShortNameList":["winformslib"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WinForms.Library.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WinForms.Library.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WinControlVB.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Library\"],\"remove\":[\"Common\",\"WinForms\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WinForms"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WinForms.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WinForms","Precedence":6500,"Name":"Windows Forms (WinForms) Application","ShortNameList":["winforms"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WinForms.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WinForms.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WinApplicationVB.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\"],\"remove\":[\"Common\",\"WinForms\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WPF.Control.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.Control","Precedence":6500,"Name":"WPF User Control Library","ShortNameList":["wpfusercontrollib"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WPF.Control.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WPF.Control.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WPFUserControlCSharp.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Library\"],\"remove\":[\"Common\",\"WPF\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WPF.Control.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.Control","Precedence":6500,"Name":"WPF User Control Library","ShortNameList":["wpfusercontrollib"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WPF.Control.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WPF.Control.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WPFUserControlVB.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Library\"],\"remove\":[\"Common\",\"WPF\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WPF.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF","Precedence":6500,"Name":"WPF Application","ShortNameList":["wpf"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WPF.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WPF.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WPFAppCSharp.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\"],\"remove\":[\"Common\",\"WPF\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WPF.CustomControl.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.CustomControl","Precedence":6500,"Name":"WPF Custom Control Library","ShortNameList":["wpfcustomcontrollib"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WPF.CustomControl.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WPF.CustomControl.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WPFCustomControlCSharp.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Library\"],\"remove\":[\"Common\",\"WPF\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WPF.CustomControl.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.CustomControl","Precedence":6500,"Name":"WPF Custom Control Library","ShortNameList":["wpfcustomcontrollib"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WPF.CustomControl.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WPF.CustomControl.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WPFCustomControlVB.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Library\"],\"remove\":[\"Common\",\"WPF\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WPF.Library.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.Library","Precedence":6500,"Name":"WPF Class library","ShortNameList":["wpflib"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WPF.Library.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WPF.Library.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WPFAppCSharp.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Library\"],\"remove\":[\"Common\",\"WPF\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WPF.Library.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF.Library","Precedence":6500,"Name":"WPF Class library","ShortNameList":["wpflib"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WPF.Library.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WPF.Library.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WPFAppVB.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Library\"],\"remove\":[\"Common\",\"WPF\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Common","WPF"],"DefaultName":null,"Description":"","Identity":"Microsoft.Common.WPF.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Common.WPF","Precedence":6500,"Name":"WPF Application","ShortNameList":["wpf"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Common.WPF.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Common.WPF.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WPFAppVB.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\"],\"remove\":[\"Common\",\"WPF\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Test","MSTest"],"DefaultName":null,"Description":"","Identity":"Microsoft.Test.MSTest.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest","Precedence":6500,"Name":"Unit Test Project","ShortNameList":["mstest"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Test.MSTest.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Test.MSTest.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/CS_NonEmpty_16X16_32X32.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"MSTest\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"F#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"F#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Test","MSTest"],"DefaultName":null,"Description":"","Identity":"Microsoft.Test.MSTest.FSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest","Precedence":6500,"Name":"Unit Test Project","ShortNameList":["mstest"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Test.MSTest.FSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Test.MSTest.FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/FSharpTestLibrary.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"MSTest\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Test","MSTest"],"DefaultName":null,"Description":"","Identity":"Microsoft.Test.MSTest.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.MSTest","Precedence":6500,"Name":"Unit Test Project","ShortNameList":["mstest"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Test.MSTest.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Test.MSTest.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/VB_NonEmpty_16X16_32X32.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"MSTest\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Test","xUnit"],"DefaultName":null,"Description":"","Identity":"Microsoft.Test.xUnit.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.xUnit","Precedence":6500,"Name":"xUnit Test Project","ShortNameList":["xunit"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Test.xUnit.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Test.xUnit.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/CS_NonEmpty_16X16_32X32.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"xUnit\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"F#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"F#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Test","xUnit"],"DefaultName":null,"Description":"","Identity":"Microsoft.Test.xUnit.FSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.xUnit","Precedence":6500,"Name":"xUnit Test Project","ShortNameList":["xunit"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Test.xUnit.FSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Test.xUnit.FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/FSharpTestLibrary.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"xUnit\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Test","xUnit"],"DefaultName":null,"Description":"","Identity":"Microsoft.Test.xUnit.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Test.xUnit","Precedence":6500,"Name":"xUnit Test Project","ShortNameList":["xunit"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Test.xUnit.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Test.xUnit.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/VB_NonEmpty_16X16_32X32.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[],\"remove\":[\"xUnit\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"F#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"F#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Web","MVC"],"DefaultName":null,"Description":"","Identity":"Microsoft.Web.Mvc.FSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"Microsoft.Web.Mvc","Precedence":6500,"Name":"ASP.NET Core Web App (Model-View-Controller)","ShortNameList":["mvc"],"PreferDefaultName":false,"ConfigPlace":"/content/Microsoft.Web.Mvc.FSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/Microsoft.Web.Mvc.FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/WebApplication.png\",\"supportsDocker\":true,\"disableHttpsSymbol\":\"NoHttps\",\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Test","NUnit"],"DefaultName":null,"Description":"","Identity":"NUnit3.DotNetNew.Template.CSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.Template","Precedence":6500,"Name":"NUnit 3 Test Project","ShortNameList":["nunit"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit3.DotNetNew.Template.CSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/NUnit3.DotNetNew.Template.CSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/CS_NonEmpty_16X16_32X32.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Web\"],\"remove\":[\"NUnit\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"F#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"F#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Test","NUnit"],"DefaultName":null,"Description":"","Identity":"NUnit3.DotNetNew.Template.FSharp.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.Template","Precedence":6500,"Name":"NUnit 3 Test Project","ShortNameList":["nunit"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit3.DotNetNew.Template.FSharp/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/NUnit3.DotNetNew.Template.FSharp/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"F#","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/FSharpTestLibrary.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Web\"],\"remove\":[\"NUnit\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"unused","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"VB","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"VB":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"isFallback","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"true","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"true":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false}],"MountPointUri":"d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg","Author":"Microsoft","Classifications":["Test","NUnit"],"DefaultName":null,"Description":"","Identity":"NUnit3.DotNetNew.Template.VisualBasic.Fallback","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":"NUnit3.DotNetNew.Template","Precedence":6500,"Name":"NUnit 3 Test Project","ShortNameList":["nunit"],"PreferDefaultName":false,"ConfigPlace":"/content/NUnit3.DotNetNew.Template.VisualBasic/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/NUnit3.DotNetNew.Template.VisualBasic/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"VB","type":"project","isFallback":"true"},"HostData":"{\"$schema\":\"http://json.schemastore.org/vs-2017.3.host\",\"icon\":\"ide/VB_NonEmpty_16X16_32X32.ico\",\"tags\":[{\"type\":\"projectType\",\"add\":[\"Desktop\",\"Web\"],\"remove\":[\"NUnit\"]}],\"isFallback\":\"true\"}","PostActions":[],"Constraints":[]},{"Parameters":[{"Documentation":"The default name symbol","Name":"name","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"ModTemplate","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"The default name symbol","DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"language","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"C#","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"C#":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":null,"Name":"type","Priority":3,"Precedence":{"PrecedenceDefinition":3,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"project","DataType":"choice","DefaultIfOptionWithoutValue":null,"Choices":{"project":{"DisplayName":"","Description":""}},"Description":null,"DisplayName":null,"AllowMultipleValues":false},{"Documentation":"Include mod settings to creating project","Name":"IncludeSetting","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Include mod settings to creating project","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Include key bindings to mod settings","Name":"IncludeKeyBindings","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"false","DataType":"bool","DefaultIfOptionWithoutValue":"true","Choices":null,"Description":"Include key bindings to mod settings","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Can be edited further inside PublishConfiguration.xml","Name":"ShortDescription","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"This is a short description","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Can be edited further inside PublishConfiguration.xml","DisplayName":"","AllowMultipleValues":false},{"Documentation":"Can be edited further inside PublishConfiguration.xml","Name":"LongDescription","Priority":2,"Precedence":{"PrecedenceDefinition":2,"IsRequiredCondition":null,"IsEnabledCondition":null,"IsRequired":false,"CanBeRequired":false},"Type":"parameter","IsName":false,"DefaultValue":"This is a long description","DataType":"string","DefaultIfOptionWithoutValue":null,"Choices":null,"Description":"Can be edited further inside PublishConfiguration.xml","DisplayName":"","AllowMultipleValues":false}],"MountPointUri":"C:\\Users\\SCAD\\.templateengine\\packages\\ColossalOrder.ModTemplate.1.0.0.nupkg","Author":"Colossal Order Ltd","Classifications":["Colossal Order","Cities: Skylines","Mod","Library"],"DefaultName":null,"Description":"","Identity":"ColossalOrder.ModTemplate","GeneratorId":"0c434df7-e2cb-4dee-b216-d7c58c8eb4b3","GroupIdentity":null,"Precedence":0,"Name":"Cities Skylines II mod","ShortNameList":["csiimod"],"PreferDefaultName":false,"ConfigPlace":"/content/.template.config/template.json","LocaleConfigPlace":null,"HostConfigPlace":"/content/.template.config/ide.host.json","ThirdPartyNotices":null,"BaselineInfo":{},"TagsCollection":{"language":"C#","type":"project"},"HostData":"{\"$schema\":\"https://json.schemastore.org/ide.host\",\"icon\":\"ide/icon.ico\",\"order\":0,\"symbolInfo\":[{\"id\":\"IncludeSetting\",\"name\":{\"text\":\"Include mod settings\"},\"isVisible\":true,\"persistenceScope\":\"templateGroup\"},{\"id\":\"IncludeKeyBindings\",\"name\":{\"text\":\"Include key bindings\"},\"isVisible\":true,\"persistenceScope\":\"templateGroup\"},{\"id\":\"ShortDescription\",\"name\":{\"text\":\"Short description\"},\"isVisible\":true},{\"id\":\"LongDescription\",\"name\":{\"text\":\"Long description\"},\"isVisible\":true}]}","PostActions":[],"Constraints":[]}],"MountPointsInfo":{"C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.itemtemplates.9.0.304.nupkg":"2025-07-19T00:09:32+03:00","C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.common.projecttemplates.8.0.8.0.413.nupkg":"2025-07-23T01:04:14+03:00","C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.test.projecttemplates.8.0.1.1.0-rc.24059.1.nupkg":"2025-07-23T01:04:14+03:00","C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.itemtemplates.8.0.8.0.19.nupkg":"2025-07-23T01:04:14+03:00","C:\\Program Files\\dotnet\\templates\\8.0.19\\microsoft.dotnet.web.projecttemplates.8.0.8.0.19.nupkg":"2025-07-23T01:04:14+03:00","C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.winforms.projecttemplates.9.0.8-servicing.25368.1.nupkg":"2025-07-18T23:56:18+03:00","C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.wpf.projecttemplates.9.0.8-rtm.25368.9.nupkg":"2025-07-18T23:56:18+03:00","C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.common.projecttemplates.9.0.9.0.304.nupkg":"2025-07-19T00:09:12+03:00","C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.itemtemplates.9.0.9.0.8.nupkg":"2025-07-18T23:56:18+03:00","C:\\Program Files\\dotnet\\templates\\9.0.8\\microsoft.dotnet.web.projecttemplates.9.0.9.0.8.nupkg":"2025-07-18T23:56:14+03:00","d:\\program files\\microsoft visual studio\\2022\\community\\common7\\ide\\extensions\\microsoft\\templateengine\\Microsoft.VisualStudio.TemplateEngine.FallbackHostData.17.14.122.nupkg":"2025-08-15T00:10:22.956975+03:00","C:\\Users\\SCAD\\.templateengine\\packages\\ColossalOrder.ModTemplate.1.0.0.nupkg":"2025-08-30T20:37:38.7338285Z"}} \ No newline at end of file diff --git a/lang/en-US.json b/lang/en-US.json index b4f8bdd..4942ba8 100644 --- a/lang/en-US.json +++ b/lang/en-US.json @@ -23,5 +23,6 @@ "CS2M.UI.StartingServer": "Starting server...", "CS2M.UI.JoinGame": "Join game", "CS2M.UI.StartServer": "Start server", - "CS2M.UI.HostGame": "Host game" + "CS2M.UI.HostGame": "Host game", + "CS2M.UI.HostChat": "Host Chat Server" } diff --git a/lang/ru-RU.json b/lang/ru-RU.json new file mode 100644 index 0000000..148ccb1 --- /dev/null +++ b/lang/ru-RU.json @@ -0,0 +1,28 @@ +{ + "Options.SECTION[CS2M.CS2M.Mod]": "CS2M", + "Options.TAB[CS2M.CS2M.Mod.CS2M]": "CS2M", + "Options.GROUP[CS2M.CS2M.Mod.GeneralSettings]": "Основные нстройки", + "Options.GROUP[CS2M.CS2M.Mod.AdvancedSettings]": "Продвинутые Настройки", + "Options.OPTION[CS2M.CS2M.Mod.Settings.LoggingLevel]": "Уровень Логирования", + "Options.OPTION[CS2M.CS2M.Mod.Settings.ApiServer]": "API-Сервер", + "Options.OPTION[CS2M.CS2M.Mod.Settings.ApiServerPort]": "Порт API-сервера", + "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.LoggingLevel]": "Установите уровень логирования мода CS2M. Учтите, что уровни Trace и Debug могут серьезно уменьшить производительность игры.", + "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.ApiServer]": "API-сервер позволяет проверить, доступен ли ваш IP-адрес извне", + "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.ApiServerPort]": "", + "CS2M.UI.Multiplayer": "Мультиплеер (Мод)", + "CS2M.UI.IPAddress": "IP-адрес", + "CS2M.UI.Port": "Порт", + "CS2M.UI.Username": "Имя Пользователя", + "CS2M.UI.Compatibility": "Информация о своместимости модов", + "CS2M.UI.ClientSide": "Сторона Клиента", + "CS2M.UI.Compatibility[Unknown]": "Не известно", + "CS2M.UI.Compatibility[Unsupported]": "Не Поддерживается", + "CS2M.UI.Compatibility[Supported]": "Поддерживается", + "CS2M.UI.Compatibility[KnownWorking]": "Рпботает частично", + "CS2M.UI.JoiningGame": "Присоеденине к игре...", + "CS2M.UI.StartingServer": "Запуск Сервера...", + "CS2M.UI.JoinGame": "Присоединится к игре", + "CS2M.UI.StartServer": "Запустить сервер", + "CS2M.UI.HostGame": "Захостить сервер", + "CS2M.UI.HostChat": "Запустить Чат-сервер" +} diff --git a/server_err_on_Join.txt b/server_err_on_Join.txt new file mode 100644 index 0000000..559f15c --- /dev/null +++ b/server_err_on_Join.txt @@ -0,0 +1,47 @@ +[CRITICAL] System update error during PreSimulation->NetworkingSystem: + +NullReferenceException: Object reference not set to an instance of an object + at CS2M.Networking.NetworkManager.ListenerOnPeerConnectedEvent (LiteNetLib.NetPeer peer) [0x00018] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at LiteNetLib.EventBasedNetListener.LiteNetLib.INetEventListener.OnPeerConnected (LiteNetLib.NetPeer peer) [0x00008] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at LiteNetLib.NetManager.ProcessEvent (LiteNetLib.NetEvent evt) [0x00046] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at LiteNetLib.NetManager.PollEvents () [0x00086] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at CS2M.Networking.NetworkManager.ProcessEvents () [0x0001e] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at CS2M.Networking.LocalPlayer.OnUpdate () [0x0000f] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at CS2M.Networking.NetworkInterface.OnUpdate () [0x00001] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at CS2M.Networking.NetworkingSystem.OnUpdate () [0x00006] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at Unity.Entities.SystemBase.Update () [0x0004e] in :0 + at Game.UpdateSystem.Update (Game.SystemUpdatePhase phase) [0x0004e] in :0 +Colossal.Logging.CustomLogHandler:LogFormat(LogType, Object, String, Object[]) +UnityEngine.Logger:LogFormat(LogType, String, Object[]) +Colossal.Logging.UnityLogger:Log(Level, String, Exception) +Colossal.Logging.UnityLogger:CriticalFormat(Exception, String, Object, Object) +Game.UpdateSystem:Update(SystemUpdatePhase) +Game.Simulation.SimulationSystem:OnUpdate() +Unity.Entities.SystemBase:Update() +Game.UpdateSystem:Update(SystemUpdatePhase) +Game.SceneFlow.GameManager:LateUpdateWorld() +Game.SceneFlow.GameManager:LateUpdate() + +[CRITICAL] System update error during PreSimulation->NetworkingSystem: + +NullReferenceException: Object reference not set to an instance of an object + at CS2M.Networking.NetworkManager.ListenerOnPeerConnectedEvent (LiteNetLib.NetPeer peer) [0x00018] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at LiteNetLib.EventBasedNetListener.LiteNetLib.INetEventListener.OnPeerConnected (LiteNetLib.NetPeer peer) [0x00008] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at LiteNetLib.NetManager.ProcessEvent (LiteNetLib.NetEvent evt) [0x00046] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at LiteNetLib.NetManager.PollEvents () [0x00086] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at CS2M.Networking.NetworkManager.ProcessEvents () [0x0001e] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at CS2M.Networking.LocalPlayer.OnUpdate () [0x0000f] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at CS2M.Networking.NetworkInterface.OnUpdate () [0x00001] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at CS2M.Networking.NetworkingSystem.OnUpdate () [0x00006] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 + at Unity.Entities.SystemBase.Update () [0x0004e] in :0 + at Game.UpdateSystem.Update (Game.SystemUpdatePhase phase) [0x0004e] in :0 +Colossal.Logging.CustomLogHandler:LogFormat(LogType, Object, String, Object[]) +UnityEngine.Logger:LogFormat(LogType, String, Object[]) +Colossal.Logging.UnityLogger:Log(Level, String, Exception) +Colossal.Logging.UnityLogger:CriticalFormat(Exception, String, Object, Object) +Game.UpdateSystem:Update(SystemUpdatePhase) +Game.Simulation.SimulationSystem:OnUpdate() +Unity.Entities.SystemBase:Update() +Game.UpdateSystem:Update(SystemUpdatePhase) +Game.SceneFlow.GameManager:LateUpdateWorld() +Game.SceneFlow.GameManager:LateUpdate() From a950026a8826026ab5634e541682f28aae4d28cc Mon Sep 17 00:00:00 2001 From: Alexandr Date: Sun, 7 Sep 2025 14:52:08 +0300 Subject: [PATCH 2/5] Create README.md --- README.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..67ba7ea --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +# CS2M - Cities: Skylines 2 Multiplayer [^1] + +> [!WARNING] +> At this moment this mod is still in heavy development. Becuse of huge complexity of adding multiplayer level over single player core, +the curent version of the mod, are mostly demonstarates User Interface, while not have any multiplayer in-game sync implementation. + +## Quick Links + +- [Discord Server](https://discord.gg/RjACPhd) [![Discord](https://img.shields.io/discord/508902220943851522.svg)](https://discord.gg/RjACPhd) +- [Developer Resources](https://cs2.paradoxwikis.com/Modding) +- [Patreon](https://www.patreon.com/CSM_MultiplayerMod) + +## Introduction + +CS2M is an in-development multiplayer / co-op mod for Cities: Skylines 2. This mod aims to provide a simple client-server experience where users can play and build together in a single game. + +Feel free to join the development Discord server [here](https://discord.gg/RjACPhd). + +## Developer Resources + +### Mod Dependencies + +Other Cities Skylines 2 mods that are required for CS2M to function properly: + +- [I18n EveryWhere](https://mods.paradoxplaza.com/mods/75426/Windows) + +## Contributors +A full list of contributors can be found [here](https://github.com/CitiesSkylinesMultiplayer/CS2M/graphs/contributors). [^2] + +## License + +This mod and its source code is licensed under the MIT license. + +[^1]: Big thanks to [@artehe](https://github.com/artehe) for this readme template for this mod. +[^2]: This fork also thanks [@Ren0X1](https://github.com/Ren0X1) for his Spanish language pack. From 160cf5400ddd79a3a0abb5f1840121866215ba41 Mon Sep 17 00:00:00 2001 From: Alexandr Date: Sun, 7 Sep 2025 14:54:36 +0300 Subject: [PATCH 3/5] basic chat UI, no messaging logic --- CS2M.UI/src/screens/join-game-menu.tsx | 47 +++++++++++++++++--------- CS2M.UI/src/util/input-field.tsx | 22 ++++++++++++ CS2M/UI/UISystem.cs | 22 ++++++++++-- lang/en-US.json | 3 +- lang/ru-RU.json | 3 +- 5 files changed, 77 insertions(+), 20 deletions(-) diff --git a/CS2M.UI/src/screens/join-game-menu.tsx b/CS2M.UI/src/screens/join-game-menu.tsx index d4697bc..46185c6 100644 --- a/CS2M.UI/src/screens/join-game-menu.tsx +++ b/CS2M.UI/src/screens/join-game-menu.tsx @@ -1,9 +1,9 @@ -import {getModule} from "cs2/modding"; -import {bindValue, trigger, useValue} from "cs2/api"; +import { getModule } from "cs2/modding"; +import { bindValue, trigger, useValue } from "cs2/api"; import mod from "../../mod.json"; -import {FocusBoundary, NavigationScope} from "cs2/input"; -import {useLocalization} from "cs2/l10n"; -import {InputField} from "../util/input-field"; +import { FocusBoundary, NavigationScope } from "cs2/input"; +import { useLocalization } from "cs2/l10n"; +import { InputField,InputFieldWide } from "../util/input-field"; export const joinMenuVisible = bindValue(mod.id, 'JoinMenuVisible'); export const modSupport = bindValue>(mod.id, 'modSupport'); @@ -15,6 +15,7 @@ export const joinGameEnabled = bindValue(mod.id, 'JoinGameEnabled'); export const hostGameEnabled = bindValue(mod.id, 'HostGameEnabled'); export const listNetworkStates = bindValue(mod.id, 'uiNetworkStates'); +export const playerMessage = bindValue(mod.id, 'playerMessage'); export function hideJoinGame() { trigger(mod.id, "HideJoinGameMenu"); @@ -36,34 +37,48 @@ export function hostGame() { trigger(mod.id, "HostGame"); } +export function sendMessage() { + trigger(mod.id, "SendMessage"); +} + export const JoinGameSettings = () => { const GameOptionsCSS = getModule('game-ui/menu/components/shared/game-options/game-options.module.scss', 'classes'); + const FooterButton = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'FooterButton'); let ipAddressValue = useValue(ipAddress); let portValue = useValue(port); let usernameValue = useValue(username); let enabled = useValue(joinGameEnabled); + let playerMessageVal = useValue(playerMessage); let outNetworkStates = useValue(listNetworkStates); const { translate } = useLocalization(); - const focusChange = () => {}; + const focusChange = () => { }; return (

- {}}> + { }}> {setVal("SetJoinIpAddress", val)}}> + onChange={(val: any) => { setVal("SetJoinIpAddress", val) }}> {setIntVal("SetJoinPort", val)}}> + onChange={(val: any) => { setIntVal("SetJoinPort", val) }}> {setVal("SetUsername", val)}}> + onChange={(val: any) => { setVal("SetUsername", val) }}> +
-
- {outNetworkStates} +
+
+ {outNetworkStates} +
+
+ { setVal("SetMsgFromUsr", val) }}> + {translate("CS2M.UI.sendMessage", "Send")}
@@ -81,8 +96,8 @@ export const JoinGameMenu = () => { const SaveListCSS = getModule('game-ui/menu/components/load-game-screen/save-list/save-list.module.scss', 'classes'); const FooterButton = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'FooterButton'); - const visible : boolean = useValue(joinMenuVisible); - const modSupports = useValue(modSupport); + const visible: boolean = useValue(joinMenuVisible); + const modSupports = useValue(modSupport); const enabled = useValue(joinGameEnabled); const enabled2 = useValue(hostGameEnabled); @@ -114,7 +129,7 @@ export const JoinGameMenu = () => { color = "orange"; break; } - details.push(
{support_str}
); + details.push(
{support_str}
); } } else { detailsTitle = translate("CS2M.UI.JoiningGame", "Joining Game"); @@ -123,7 +138,7 @@ export const JoinGameMenu = () => { let footer = <> {translate("CS2M.UI.HostChat", "Host Chat")} {translate("CS2M.UI.JoinGame", "Join Game")} - ; + ; let content; if (visible) { diff --git a/CS2M.UI/src/util/input-field.tsx b/CS2M.UI/src/util/input-field.tsx index ca59d09..e2ca354 100644 --- a/CS2M.UI/src/util/input-field.tsx +++ b/CS2M.UI/src/util/input-field.tsx @@ -26,3 +26,25 @@ export const InputField = (props : any) => { ) } + +export const InputFieldWide = (props : any) => { + const FocusableEditorItem = getModule('game-ui/editor/widgets/item/editor-item.tsx', 'FocusableEditorItem'); + const ErrorLabel = getModule('game-ui/editor/widgets/label/error-label.tsx', 'ErrorLabel'); + const EditorCSS = getModule('game-ui/editor/widgets/item/editor-item.module.scss', 'classes'); + const StringInputField = getModule('game-ui/editor/widgets/fields/string-input-field.tsx', 'StringInputField'); + + const { translate } = useLocalization(); + + return ( + +
+
+ + +
+
+ + +
+ ) +} \ No newline at end of file diff --git a/CS2M/UI/UISystem.cs b/CS2M/UI/UISystem.cs index 494ceec..fb59a06 100644 --- a/CS2M/UI/UISystem.cs +++ b/CS2M/UI/UISystem.cs @@ -21,6 +21,7 @@ public partial class UISystem : UISystemBase private ValueBinding _hostMenuVisible; public ValueBinding _NetworkStates; + private ValueBinding _usrMsg; private ValueBinding _joinIPAddress; private ValueBinding _joinPort; @@ -47,12 +48,13 @@ protected override void OnCreate() { base.OnCreate(); - - AddBinding(new TriggerBinding(nameof(CS2M), "ShowMultiplayerMenu", ShowUITraversal)); + AddBinding(new TriggerBinding(nameof(CS2M), "HideJoinGameMenu", HideJoinGameMenu)); AddBinding(new TriggerBinding(nameof(CS2M), "HideHostGameMenu", HideHostGameMenu)); + + AddBinding(new TriggerBinding(nameof(CS2M), "SetJoinIpAddress", ip => { _joinIPAddress.Update(ip); @@ -70,6 +72,15 @@ protected override void OnCreate() _username.Update(username); })); + AddBinding(new TriggerBinding(nameof(CS2M), "SetMsgFromUsr", usrMsg => + { + _usrMsg.Update(usrMsg); + })); + + AddBinding(_usrMsg = new ValueBinding(nameof(CS2M), "playerMessage", "")); + + + AddBinding(new TriggerBinding(nameof(CS2M), "JoinGame", JoinGame)); AddBinding(new TriggerBinding(nameof(CS2M), "HostGame", HostGame)); @@ -87,6 +98,7 @@ protected override void OnCreate() AddBinding(_playerStatus = new ValueBinding(nameof(CS2M), "PlayerStatus", "Playing network session in CSII")); AddBinding(_NetworkStates = new ValueBinding(nameof(CS2M), "uiNetworkStates", "= Waiting for commands =")); + AddBinding(new TriggerBinding(nameof(CS2M), "SendMessage", sendMessage)); } private void RefreshModSupport() @@ -94,6 +106,12 @@ private void RefreshModSupport() _modSupportStatus.Update(ModCompat.GetModSupportList()); } + private void sendMessage() + { + Debug.Print(_username.value + ": " + _usrMsg.value); + piblishNetworkStateInUI(_username.value + ": " + _usrMsg.value); + } + private void ShowUITraversal() { if (_gameMode == GameMode.MainMenu) diff --git a/lang/en-US.json b/lang/en-US.json index 4942ba8..1c76ea3 100644 --- a/lang/en-US.json +++ b/lang/en-US.json @@ -24,5 +24,6 @@ "CS2M.UI.JoinGame": "Join game", "CS2M.UI.StartServer": "Start server", "CS2M.UI.HostGame": "Host game", - "CS2M.UI.HostChat": "Host Chat Server" + "CS2M.UI.HostChat": "Host Chat Server", + "CS2M.UI.SendMessage": "Send message" } diff --git a/lang/ru-RU.json b/lang/ru-RU.json index 148ccb1..2300fb6 100644 --- a/lang/ru-RU.json +++ b/lang/ru-RU.json @@ -24,5 +24,6 @@ "CS2M.UI.JoinGame": "Присоединится к игре", "CS2M.UI.StartServer": "Запустить сервер", "CS2M.UI.HostGame": "Захостить сервер", - "CS2M.UI.HostChat": "Запустить Чат-сервер" + "CS2M.UI.HostChat": "Запустить Чат-сервер", + "CS2M.UI.SendMessage": "Отправить сообщение" } From 71d4122573c8e1c6dbcf7bf9a8316c94c5dc1967 Mon Sep 17 00:00:00 2001 From: Alexandr Date: Wed, 10 Sep 2025 22:47:21 +0300 Subject: [PATCH 4/5] Fully functional Multiplayer Lobby Chat (w Player Names) Implemented Fully functional Multiplayer Lobby Chat, with Player Names support, complete replication on all currently connected nodes. The chat system uses Universal Serialized Commands, able to traverse via network any data, including any player actions in game. --- .gitignore | 1 + CS2M.API/Commands/CommandBase.cs | 1 + CS2M.UI/src/screens/join-game-menu.tsx | 4 +- CS2M/Commands/CommandInternal.cs | 5 ++ CS2M/Networking/LocalPlayer.cs | 56 ++++++++++-- CS2M/Networking/NetworkInterface.cs | 8 +- CS2M/Networking/NetworkManager.cs | 102 ++++++++++++++++++--- CS2M/UI/UISystem.cs | 117 ++++++++++++++++++++++--- 8 files changed, 259 insertions(+), 35 deletions(-) diff --git a/.gitignore b/.gitignore index d37eec4..3fd6393 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ CS2M/Library *.drawio.bkp *.url /.vs +assemblies.zip diff --git a/CS2M.API/Commands/CommandBase.cs b/CS2M.API/Commands/CommandBase.cs index f7b4661..fe65e11 100644 --- a/CS2M.API/Commands/CommandBase.cs +++ b/CS2M.API/Commands/CommandBase.cs @@ -14,5 +14,6 @@ public abstract class CommandBase /// The id of the sending player. -1 for the server. /// public int SenderId { get; set; } + public string MesasgeBody { get; set; } } } diff --git a/CS2M.UI/src/screens/join-game-menu.tsx b/CS2M.UI/src/screens/join-game-menu.tsx index 46185c6..a3198cf 100644 --- a/CS2M.UI/src/screens/join-game-menu.tsx +++ b/CS2M.UI/src/screens/join-game-menu.tsx @@ -13,6 +13,7 @@ export const port = bindValue(mod.id, 'JoinPort'); export const username = bindValue(mod.id, 'Username'); export const joinGameEnabled = bindValue(mod.id, 'JoinGameEnabled'); export const hostGameEnabled = bindValue(mod.id, 'HostGameEnabled'); +export const chatSendEnabled = bindValue(mod.id, 'ChatSendEnabled'); export const listNetworkStates = bindValue(mod.id, 'uiNetworkStates'); export const playerMessage = bindValue(mod.id, 'playerMessage'); @@ -52,6 +53,7 @@ export const JoinGameSettings = () => { let playerMessageVal = useValue(playerMessage); let outNetworkStates = useValue(listNetworkStates); + let chatSendEnabledVal = useValue(chatSendEnabled); const { translate } = useLocalization(); @@ -77,7 +79,7 @@ export const JoinGameSettings = () => {
{ setVal("SetMsgFromUsr", val) }}> - {translate("CS2M.UI.sendMessage", "Send")}
diff --git a/CS2M/Commands/CommandInternal.cs b/CS2M/Commands/CommandInternal.cs index 345b541..cbe80be 100644 --- a/CS2M/Commands/CommandInternal.cs +++ b/CS2M/Commands/CommandInternal.cs @@ -115,6 +115,11 @@ public byte[] Serialize(CommandBase command) return MessagePackSerializer.Serialize(command, _model); } + public CommandBase Deserialize(byte[] data) + { + return (CommandBase)MessagePackSerializer.Deserialize(typeof(CommandBase), data, _model); + } + public void RefreshModel() { _cmdMapping.Clear(); diff --git a/CS2M/Networking/LocalPlayer.cs b/CS2M/Networking/LocalPlayer.cs index 01f0253..2c900ca 100644 --- a/CS2M/Networking/LocalPlayer.cs +++ b/CS2M/Networking/LocalPlayer.cs @@ -1,20 +1,28 @@ -using CS2M.API.Commands; +using Colossal.Win32; +using CS2M.API.Commands; using CS2M.API.Networking; using CS2M.Commands.ApiServer; +using CS2M.UI; using LiteNetLib; using System; +using static Game.Rendering.Debug.RenderPrefabRenderer; namespace CS2M.Networking { public class LocalPlayer : Player { + + public static LocalPlayer Instance { get; private set; } + private NetworkManager _networkManager; + private string _message; public LocalPlayer() : base() { + Instance = this; } - public bool GetServerInfo(ConnectionConfig connectionConfig, Action onStart) + public bool GetServerInfo(ConnectionConfig connectionConfig) { if (PlayerStatus != PlayerStatus.INACTIVE) { @@ -32,22 +40,33 @@ public bool GetServerInfo(ConnectionConfig connectionConfig, Action onSt if (!_networkManager.InitConnect(connectionConfig)) { - onStart?.Invoke("= Can't init connect to server ="); + _message = "= Can't init connect to server ="; + printStatus(_message); return false; } if (!_networkManager.SetupNatConnect()) { - onStart?.Invoke("= Can't perform NAT connection to server "); + _message = "= Can't perform NAT connection to server "; + printStatus(_message); return false; } PlayerType = PlayerType.CLIENT; PlayerStatus = PlayerStatus.GET_SERVER_INFO; - onStart?.Invoke("= Connection to server is succsesful! ="); + + _message = "= Connection to server is succsesful! ="; + printStatus(_message); + return true; } + private void printStatus(string message) + { + Log.Info(message); + UISystem.Instance.piblishNetworkStateInUI(message); + } + public bool NatConnect() { if (PlayerStatus != PlayerStatus.GET_SERVER_INFO) @@ -86,9 +105,23 @@ public bool DirectConnect() public bool DownloadingMap() { // TODO: Change, when implemented Map transfer + + if (PlayerType == PlayerType.SERVER) + { + Command.CurrentRole = MultiplayerRole.Server; + } + else if (PlayerType == PlayerType.CLIENT) + { + Command.CurrentRole= MultiplayerRole.Client; + } + + Command.SendToAll(new textMessageCommand($"= {Username} joined game =")); + _networkManager.CancelConnectTimeout(); return Playing(); } + + public void LoadingMap() { } @@ -99,7 +132,7 @@ public bool Playing() } // INACTIVE -> PLAYING (Server) - public bool Playing(ConnectionConfig connectionConfig, Action onStart) + public bool Playing(ConnectionConfig connectionConfig) { if (PlayerStatus != PlayerStatus.INACTIVE) { @@ -111,7 +144,8 @@ public bool Playing(ConnectionConfig connectionConfig, Action onStart) bool serverStarted = _networkManager.StartServer(connectionConfig); if (!serverStarted) { - onStart?.Invoke("= Error! The server failed to start. ="); + _message = "= Error! The server failed to start. ="; + printStatus(_message); return false; } @@ -119,8 +153,9 @@ public bool Playing(ConnectionConfig connectionConfig, Action onStart) PlayerType = PlayerType.SERVER; PlayerStatus = PlayerStatus.PLAYING; - onStart?.Invoke("= The server has started succesfully. ="); - + _message = "= The server has started succesfully. ="; + printStatus(_message); + return true; } @@ -164,11 +199,14 @@ public void SendToAll(CommandBase message) if (PlayerType == PlayerType.SERVER) { _networkManager.SendToAllClients(message); + Command.GetCommandHandler(message.GetType())?.Parse(message); } else { _networkManager.SendToServer(message); } + + } public void SendToClient(NetPeer peer, CommandBase message) diff --git a/CS2M/Networking/NetworkInterface.cs b/CS2M/Networking/NetworkInterface.cs index fc319b0..bd02bfb 100644 --- a/CS2M/Networking/NetworkInterface.cs +++ b/CS2M/Networking/NetworkInterface.cs @@ -18,14 +18,14 @@ public void OnUpdate() LocalPlayer.OnUpdate(); } - public void Connect(ConnectionConfig connectionConfig, Action onStart) + public void Connect(ConnectionConfig connectionConfig) { - LocalPlayer.GetServerInfo(connectionConfig, onStart); + LocalPlayer.GetServerInfo(connectionConfig); } - public void StartServer(ConnectionConfig connectionConfig, Action onStart) + public void StartServer(ConnectionConfig connectionConfig) { - LocalPlayer.Playing(connectionConfig, onStart); + LocalPlayer.Playing(connectionConfig); } public void SendToAll(CommandBase message) diff --git a/CS2M/Networking/NetworkManager.cs b/CS2M/Networking/NetworkManager.cs index ed1b4e5..436a086 100644 --- a/CS2M/Networking/NetworkManager.cs +++ b/CS2M/Networking/NetworkManager.cs @@ -1,14 +1,17 @@ using Colossal.UI.Binding; +using Colossal.Win32; using CS2M.API.Commands; using CS2M.API.Networking; using CS2M.Commands; using CS2M.Commands.ApiServer; using CS2M.UI; using CS2M.Util; +using Game.Objects; using LiteNetLib; using System; using System.Net; using System.Net.Sockets; +using Unity.Entities.UniversalDelegates; using Timer = System.Timers.Timer; namespace CS2M.Networking @@ -16,6 +19,9 @@ namespace CS2M.Networking public class NetworkManager { private const string ConnectionKey = "CSM"; + private const int timerDelayNatScan = 1000; + private const int timerDelayClientAutoDisconnect = 10000; + private bool _connectTimeoutCanceled = false; private readonly NetManager _netManager; private readonly ApiServer _apiServer; @@ -76,7 +82,7 @@ public bool InitConnect(ConnectionConfig connectionConfig) } else { - Log.Info("The client conected to server succesfuly!"); + Log.Info("The client started succesfuly! Trying to connect..."); } return true; @@ -104,12 +110,16 @@ public bool SetupNatConnect() EventBasedNatPunchListener natPunchListener = new EventBasedNatPunchListener(); _timeout = new Timer(); - _timeout.Interval = 5000; + _timeout.Interval = timerDelayNatScan; _timeout.AutoReset = false; _timeout.Elapsed += (sender, args) => { _pollNatEvent = false; _connectEndpoint = directEndpoint; + Log.Info("Using DirectEndpoint"); + + Connect(); + NatHolePunchFailedEvent?.Invoke(); }; @@ -119,6 +129,8 @@ public bool SetupNatConnect() { _pollNatEvent = false; _connectEndpoint = point; + Log.Info("Using Endpoint behind NAT"); + bool? eventResult = NatHolePunchSuccessfulEvent?.Invoke(); if (eventResult != null && eventResult.Value) { @@ -150,9 +162,25 @@ public bool SetupNatConnect() $"Could not send NAT introduction request to API server at {Mod.ModSettings.ApiServer}:{Mod.ModSettings.ApiServerPort}: {e}"); } + return true; } + public void CancelConnectTimeout() + { + + _connectTimeoutCanceled = true; + + if (_timeout != null) + { + + _timeout.Stop(); + _timeout.Dispose(); + _timeout = null; + Log.Info("Auto-Disconnect canceled!"); + } + } + public bool Connect() { if (_connectEndpoint == null) @@ -164,11 +192,19 @@ public bool Connect() try { _timeout = new Timer(); - _timeout.Interval = 5000; + _timeout.Interval = timerDelayClientAutoDisconnect; _timeout.AutoReset = false; _timeout.Elapsed += (sender, args) => { + if (_connectTimeoutCanceled) + { + Log.Info("Qued Auto-Disconnect canceled!"); + return; + } + ClientConnectFailedEvent?.Invoke(); + UISystem.Instance? + .piblishNetworkStateInUI($"= You have been disconnected, due timout in {timerDelayClientAutoDisconnect / 1000} sec. ="); }; _netManager.Connect(_connectEndpoint, ConnectionKey); @@ -187,6 +223,32 @@ private void ListenerOnNetworkReceiveEvent(NetPeer peer, NetPacketReader reader, DeliveryMethod deliveryMethod) { // TODO: Process received data + try + { + // Получаем байты команды + byte[] rawBytes = reader.GetRemainingBytes(); + + // Десериализуем в CommandBase + CommandBase command = CommandInternal.Instance.Deserialize(rawBytes); + + // Передаём в обработчик + Command.GetCommandHandler(command.GetType())?.Parse(command); + + Log.Info($"Recieved from {peer.Address}: {command.GetType().Name}"); + + Log.Info($"This coammand role: {LocalPlayer.Instance.PlayerType}"); + + if (LocalPlayer.Instance.PlayerType == PlayerType.SERVER) { + LocalPlayer.Instance.SendToClients(command); + } + + } + catch (Exception ex) + { + Log.Error("Error in processing Command", ex); + } + + } private void ListenerOnPeerConnectedEvent(NetPeer peer) @@ -199,6 +261,7 @@ private void ListenerOnPeerConnectedEvent(NetPeer peer) else if (NetworkInterface.Instance.LocalPlayer.PlayerType == PlayerType.SERVER) { // TODO: Handle peer connect on server + UISystem.Instance?.piblishNetworkStateInUI($"= Client connected ="); } } @@ -213,6 +276,11 @@ private void ListenerOnPeerDisconnectedEvent(NetPeer peer, DisconnectInfo discon { // TODO: Handle peer disconnect on server } + + Log.Info($"Disconnected: {disconnectInfo.Reason}"); + Log.Debug(Environment.StackTrace); + UISystem.Instance?.piblishNetworkStateInUI($"= Disconnectet from server\r\n {disconnectInfo.Reason}="); + } private void ListenerOnNetworkErrorEvent(IPEndPoint endpoint, SocketError socketError) @@ -250,13 +318,15 @@ public void ProcessEvents() _netManager.PollEvents(); // Trigger keepalive to api server - // _apiServer.KeepAlive(_connectionConfig); + //_apiServer.KeepAlive(_connectionConfig); } public void SendToAllClients(CommandBase message) { _netManager.SendToAll(CommandInternal.Instance.Serialize(message), DeliveryMethod.ReliableOrdered); - + + Log.Debug("Connected peers: " + _netManager.ConnectedPeersCount); + Log.Debug($"Sending {message.GetType().Name} to all clients"); } @@ -269,10 +339,18 @@ public void SendToClient(NetPeer peer, CommandBase message) public void SendToServer(CommandBase message) { - NetPeer server = _netManager.ConnectedPeerList[0]; - server.Send(CommandInternal.Instance.Serialize(message), DeliveryMethod.ReliableOrdered); - - Log.Debug($"Sending {message.GetType().Name} to server"); + + if (_netManager.FirstPeer != null) + { + NetPeer server = _netManager.FirstPeer; + server.Send(CommandInternal.Instance.Serialize(message), DeliveryMethod.ReliableOrdered); + Log.Debug($"Sending {message.GetType().Name} to server"); + } else + { + Log.Debug("Can't get server object, no message sent"); + } + + } public void SendToApiServer(ApiCommandBase message) @@ -309,8 +387,12 @@ public bool StartServer(ConnectionConfig connectionConfig) public void Stop() { + string msg = "NetworkManager stopped."; + Log.Debug("StackTrace:\n" + Environment.StackTrace); _netManager.Stop(); - Log.Info("NetworkManager stopped."); + + Log.Info(msg); + UISystem.Instance?.piblishNetworkStateInUI(msg); } } } diff --git a/CS2M/UI/UISystem.cs b/CS2M/UI/UISystem.cs index fb59a06..2d13833 100644 --- a/CS2M/UI/UISystem.cs +++ b/CS2M/UI/UISystem.cs @@ -1,20 +1,32 @@ using Colossal.Logging; using Colossal.Serialization.Entities; using Colossal.UI.Binding; +using CS2M; +using CS2M.API; +using CS2M.API.Commands; using CS2M.API.Networking; using CS2M.Mods; using CS2M.Networking; +using CS2M.UI; using Game; using Game.UI; using Game.UI.InGame; +using System; using System.Collections.Generic; using System.Diagnostics; +using Unity.Mathematics; +using UnityEngine; +using Random = System.Random; namespace CS2M.UI { public partial class UISystem : UISystemBase { + + public static UISystem Instance { get; private set; } + + private ValueBinding _activeMenuScreenBinding; private ValueBinding _activeGameScreenBinding; private ValueBinding _joinMenuVisible; @@ -29,6 +41,7 @@ public partial class UISystem : UISystemBase private ValueBinding _username; private ValueBinding _joinGameEnabled; private ValueBinding _hostGameEnabled; + private ValueBinding _chatSendEnabled; private ValueBinding _playerStatus; private ValueBinding> _modSupportStatus; @@ -47,13 +60,14 @@ protected override void OnStartRunning() protected override void OnCreate() { base.OnCreate(); + Instance = this; AddBinding(new TriggerBinding(nameof(CS2M), "ShowMultiplayerMenu", ShowUITraversal)); AddBinding(new TriggerBinding(nameof(CS2M), "HideJoinGameMenu", HideJoinGameMenu)); AddBinding(new TriggerBinding(nameof(CS2M), "HideHostGameMenu", HideHostGameMenu)); - + AddBinding(new TriggerBinding(nameof(CS2M), "SetJoinIpAddress", ip => { @@ -76,7 +90,7 @@ protected override void OnCreate() { _usrMsg.Update(usrMsg); })); - + AddBinding(_usrMsg = new ValueBinding(nameof(CS2M), "playerMessage", "")); @@ -86,19 +100,43 @@ protected override void OnCreate() AddBinding(_joinMenuVisible = new ValueBinding(nameof(CS2M), "JoinMenuVisible", false)); AddBinding(_hostMenuVisible = new ValueBinding(nameof(CS2M), "HostMenuVisible", false)); - AddBinding(_modSupportStatus = new ValueBinding>(nameof(CS2M), "modSupport", new List(),new ListWriter(new ValueWriter()))); + AddBinding(_modSupportStatus = new ValueBinding>(nameof(CS2M), "modSupport", new List(), new ListWriter(new ValueWriter()))); AddBinding(_joinIPAddress = new ValueBinding(nameof(CS2M), "JoinIpAddress", "127.0.0.1")); AddBinding(_joinPort = new ValueBinding(nameof(CS2M), "JoinPort", 4230)); AddBinding(_hostPort = new ValueBinding(nameof(CS2M), "HostPort", 4230)); - AddBinding(_username = new ValueBinding(nameof(CS2M), "Username", "CS2M_Player")); + Random rnd = new Random(); + AddBinding(_username = new ValueBinding(nameof(CS2M), "Username", "CS2M_u" + rnd.Next(100, 1000))); + AddBinding(_joinGameEnabled = new ValueBinding(nameof(CS2M), "JoinGameEnabled", true)); AddBinding(_hostGameEnabled = new ValueBinding(nameof(CS2M), "HostGameEnabled", true)); + AddBinding(_chatSendEnabled = new ValueBinding(nameof(CS2M), "ChatSendEnabled", false)); AddBinding(_playerStatus = new ValueBinding(nameof(CS2M), "PlayerStatus", "Playing network session in CSII")); AddBinding(_NetworkStates = new ValueBinding(nameof(CS2M), "uiNetworkStates", "= Waiting for commands =")); AddBinding(new TriggerBinding(nameof(CS2M), "SendMessage", sendMessage)); + + Command.ConnectToCSM( + sendToAll: NetworkInterface.Instance.SendToAll, + sendToServer: NetworkInterface.Instance.SendToServer, + sendToClients: NetworkInterface.Instance.SendToClients, + getCommandHandler: type => + { + if (type == typeof(PlayerJoinedCommand)) + { + return new PlayerJoinedHandler(); + } + if (type == typeof(textMessageCommand)) + { + return new textMessageHandler(); + } + return null; + + } + ); + + } private void RefreshModSupport() @@ -108,21 +146,25 @@ private void RefreshModSupport() private void sendMessage() { - Debug.Print(_username.value + ": " + _usrMsg.value); - piblishNetworkStateInUI(_username.value + ": " + _usrMsg.value); + string fullMessage = _username.value + ": " + _usrMsg.value; + Log.Info(fullMessage); + Command.SendToAll(new textMessageCommand(fullMessage)); + //piblishNetworkStateInUI(fullMessage); + //NetworkInterface.Instance.SendToAll() } + private void ShowUITraversal() { if (_gameMode == GameMode.MainMenu) { ShowJoinGameMenu(); - Debug.Print("I'm in game MainMenu. Opening Join UI"); + Log.Info("I'm in game MainMenu. Opening Join UI"); } else if (_gameMode == GameMode.Game) { ShowHostGameMenu(); - Debug.Print("I'm in active game session. Opening Host UI"); + Log.Info("I'm in active game session. Opening Host UI"); } } @@ -191,16 +233,20 @@ private void HideHostGameMenu() private void JoinGame() { - NetworkInterface.Instance.Connect(new ConnectionConfig(_joinIPAddress.value, _joinPort.value, ""), piblishNetworkStateInUI); + NetworkInterface.Instance.LocalPlayer.Username = _username.value; + NetworkInterface.Instance.Connect(new ConnectionConfig(_joinIPAddress.value, _joinPort.value, "")); _hostGameEnabled.Update(false); _joinGameEnabled.Update(false); + _chatSendEnabled.Update(true); } private void HostGame() { - NetworkInterface.Instance.StartServer(new ConnectionConfig(_joinPort.value), piblishNetworkStateInUI); + NetworkInterface.Instance.LocalPlayer.Username = _username.value; + NetworkInterface.Instance.StartServer(new ConnectionConfig(_joinPort.value)); _hostGameEnabled.Update(false); - _joinGameEnabled.Update(false); + _joinGameEnabled.Update(false); + _chatSendEnabled.Update(true); } public void SetGameState(PlayerStatus status) @@ -214,4 +260,53 @@ protected override void OnGameLoadingComplete(Purpose purpose, GameMode mode) _gameMode = mode; } } + } + + + +public class PlayerJoinedCommand : CommandBase +{ + public string PlayerName { get; set; } + + public PlayerJoinedCommand() { } + + public PlayerJoinedCommand(int senderId, string playerName) + { + SenderId = senderId; + PlayerName = playerName; + MesasgeBody = $"{playerName} has joined the server"; + } + +} + +public class PlayerJoinedHandler : CommandHandler +{ + protected override void Handle(PlayerJoinedCommand command) + { + + Log.Info(command.MesasgeBody); + UISystem.Instance?.piblishNetworkStateInUI(command.MesasgeBody); + + } +} + +public class textMessageCommand : CommandBase +{ + public string Text { get; set; } + public textMessageCommand() { } + + public textMessageCommand(string text) + { + Text = text; + } +} + +public class textMessageHandler : CommandHandler +{ + protected override void Handle(textMessageCommand command) + { + Log.Info($"User message: {command.Text}"); + UISystem.Instance?.piblishNetworkStateInUI(command.Text); + } +} \ No newline at end of file From 9725c98f3e86bc59e41a18bf4edc9570ee650a80 Mon Sep 17 00:00:00 2001 From: Alexandr Date: Wed, 1 Oct 2025 13:53:39 +0300 Subject: [PATCH 5/5] last attempt to implement save game mechanic --- .gitignore | 3 + .idea/.idea.CS2M/.idea/.gitignore | 13 - .idea/.idea.CS2M/.idea/encodings.xml | 4 - .idea/.idea.CS2M/.idea/indexLayout.xml | 11 - .idea/.idea.CS2M/.idea/vcs.xml | 6 - CS2M.UI/src/screens/host-game-menu.tsx | 15 +- CS2M.UI/src/screens/join-game-menu.tsx | 10 +- CS2M.sln | 9 + CS2M/CS2M.UI/mod.json | 6 + CS2M/CS2M.UI/package-lock.json | 2338 +++++++++++++ CS2M/CS2M.UI/package.json | 38 + CS2M/CS2M.UI/src/extends/main-menu.tsx | 58 + CS2M/CS2M.UI/src/index.tsx | 18 + CS2M/CS2M.UI/src/screens/chat.tsx | 46 + CS2M/CS2M.UI/src/screens/host-game-menu.tsx | 150 + CS2M/CS2M.UI/src/screens/join-game-menu.tsx | 180 + CS2M/CS2M.UI/src/util/input-field.tsx | 50 + CS2M/CS2M.UI/tools/css-presence.js | 48 + CS2M/CS2M.UI/tsconfig.json | 19 + CS2M/CS2M.UI/types/api.d.ts | 88 + CS2M/CS2M.UI/types/assets.d.ts | 6 + CS2M/CS2M.UI/types/bindings.d.ts | 3357 +++++++++++++++++++ CS2M/CS2M.UI/types/cohtml.d.ts | 195 ++ CS2M/CS2M.UI/types/input.d.ts | 786 +++++ CS2M/CS2M.UI/types/l10n.d.ts | 211 ++ CS2M/CS2M.UI/types/modding.d.ts | 46 + CS2M/CS2M.UI/types/react.d.ts | 8 + CS2M/CS2M.UI/types/ui.d.ts | 592 ++++ CS2M/CS2M.UI/types/utils.d.ts | 26 + CS2M/CS2M.UI/types/validateTypes.ts | 7 + CS2M/CS2M.UI/webpack.config.js | 121 + CS2M/CS2M.csproj | 71 + CS2M/Log.cs | 44 +- CS2M/Mod.cs | 2 + CS2M/Networking/LocalPlayer.cs | 178 +- CS2M/Settings/Settings.cs | 6 + CS2M/UI/UISystem.cs | 88 +- lang/en-US.json | 2 + lang/ru-RU.json | 2 + server_err_on_Join.txt | 47 - 40 files changed, 8786 insertions(+), 119 deletions(-) delete mode 100644 .idea/.idea.CS2M/.idea/.gitignore delete mode 100644 .idea/.idea.CS2M/.idea/encodings.xml delete mode 100644 .idea/.idea.CS2M/.idea/indexLayout.xml delete mode 100644 .idea/.idea.CS2M/.idea/vcs.xml create mode 100644 CS2M/CS2M.UI/mod.json create mode 100644 CS2M/CS2M.UI/package-lock.json create mode 100644 CS2M/CS2M.UI/package.json create mode 100644 CS2M/CS2M.UI/src/extends/main-menu.tsx create mode 100644 CS2M/CS2M.UI/src/index.tsx create mode 100644 CS2M/CS2M.UI/src/screens/chat.tsx create mode 100644 CS2M/CS2M.UI/src/screens/host-game-menu.tsx create mode 100644 CS2M/CS2M.UI/src/screens/join-game-menu.tsx create mode 100644 CS2M/CS2M.UI/src/util/input-field.tsx create mode 100644 CS2M/CS2M.UI/tools/css-presence.js create mode 100644 CS2M/CS2M.UI/tsconfig.json create mode 100644 CS2M/CS2M.UI/types/api.d.ts create mode 100644 CS2M/CS2M.UI/types/assets.d.ts create mode 100644 CS2M/CS2M.UI/types/bindings.d.ts create mode 100644 CS2M/CS2M.UI/types/cohtml.d.ts create mode 100644 CS2M/CS2M.UI/types/input.d.ts create mode 100644 CS2M/CS2M.UI/types/l10n.d.ts create mode 100644 CS2M/CS2M.UI/types/modding.d.ts create mode 100644 CS2M/CS2M.UI/types/react.d.ts create mode 100644 CS2M/CS2M.UI/types/ui.d.ts create mode 100644 CS2M/CS2M.UI/types/utils.d.ts create mode 100644 CS2M/CS2M.UI/types/validateTypes.ts create mode 100644 CS2M/CS2M.UI/webpack.config.js delete mode 100644 server_err_on_Join.txt diff --git a/.gitignore b/.gitignore index 3fd6393..4d2098f 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,6 @@ CS2M/Library *.url /.vs assemblies.zip +/TemplateEngineHost +/.idea +76561197960271872 - Shortcut.lnk diff --git a/.idea/.idea.CS2M/.idea/.gitignore b/.idea/.idea.CS2M/.idea/.gitignore deleted file mode 100644 index 30b9f80..0000000 --- a/.idea/.idea.CS2M/.idea/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Rider ignored files -/.idea.CS2M.iml -/modules.xml -/projectSettingsUpdater.xml -/contentModel.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/.idea.CS2M/.idea/encodings.xml b/.idea/.idea.CS2M/.idea/encodings.xml deleted file mode 100644 index df87cf9..0000000 --- a/.idea/.idea.CS2M/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/.idea.CS2M/.idea/indexLayout.xml b/.idea/.idea.CS2M/.idea/indexLayout.xml deleted file mode 100644 index 1ca2f9a..0000000 --- a/.idea/.idea.CS2M/.idea/indexLayout.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - CS2M.UI - lang - - - - - \ No newline at end of file diff --git a/.idea/.idea.CS2M/.idea/vcs.xml b/.idea/.idea.CS2M/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/.idea.CS2M/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/CS2M.UI/src/screens/host-game-menu.tsx b/CS2M.UI/src/screens/host-game-menu.tsx index d5699ba..ea49ace 100644 --- a/CS2M.UI/src/screens/host-game-menu.tsx +++ b/CS2M.UI/src/screens/host-game-menu.tsx @@ -12,6 +12,8 @@ export const username = bindValue(mod.id, 'Username'); export const hostGameEnabled = bindValue(mod.id, 'HostGameEnabled'); export const playerStatus = bindValue(mod.id, 'PlayerStatus'); +export const stopSrvVisible = bindValue(mod.id, 'stopSrvVisible'); + export function hideHostGame() { trigger(mod.id, "HideHostGameMenu"); } @@ -28,6 +30,10 @@ export function hostGame() { trigger(mod.id, "HostGame"); } +export function stopServer() { + trigger(mod.id, "StopServer"); +} + export const HostGameSettings = () => { const GameOptionsCSS = getModule('game-ui/menu/components/shared/game-options/game-options.module.scss', 'classes'); @@ -35,6 +41,8 @@ export const HostGameSettings = () => { let usernameValue = useValue(username); let enabled = useValue(hostGameEnabled); + + const focusChange = () => {}; return ( @@ -71,6 +79,8 @@ export const HostGameMenu = () => { const enabled = useValue(hostGameEnabled); const status = useValue(playerStatus); + const stopSrvVis = useValue(stopSrvVisible); + const { translate } = useLocalization(); const actions = {}; @@ -105,7 +115,10 @@ export const HostGameMenu = () => { detailsTitle = status ?? translate("CS2M.UI.StartingServer", "StartingServer"); } - let footer = {translate("CS2M.UI.StartServer", "Start Server")}; + let footer = <> + {!stopSrvVis && ({translate("CS2M.UI.StartServer", "Start Server")})} + {stopSrvVis && ({translate("CS2M.UI.StopServer", "Stop Server")})} + ; let content; if (visible) { diff --git a/CS2M.UI/src/screens/join-game-menu.tsx b/CS2M.UI/src/screens/join-game-menu.tsx index a3198cf..ad9f639 100644 --- a/CS2M.UI/src/screens/join-game-menu.tsx +++ b/CS2M.UI/src/screens/join-game-menu.tsx @@ -17,6 +17,7 @@ export const chatSendEnabled = bindValue(mod.id, 'ChatSendEnabled'); export const listNetworkStates = bindValue(mod.id, 'uiNetworkStates'); export const playerMessage = bindValue(mod.id, 'playerMessage'); +export const stopSrvVisible = bindValue(mod.id, 'stopSrvVisible'); export function hideJoinGame() { trigger(mod.id, "HideJoinGameMenu"); @@ -42,6 +43,10 @@ export function sendMessage() { trigger(mod.id, "SendMessage"); } +export function stopServer() { + trigger(mod.id, "StopServer"); +} + export const JoinGameSettings = () => { const GameOptionsCSS = getModule('game-ui/menu/components/shared/game-options/game-options.module.scss', 'classes'); const FooterButton = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'FooterButton'); @@ -103,6 +108,8 @@ export const JoinGameMenu = () => { const enabled = useValue(joinGameEnabled); const enabled2 = useValue(hostGameEnabled); + const stopSrvVis = useValue(stopSrvVisible); + const { translate } = useLocalization(); const actions = {}; @@ -138,8 +145,9 @@ export const JoinGameMenu = () => { } let footer = <> - {translate("CS2M.UI.HostChat", "Host Chat")} + {!stopSrvVis && {translate("CS2M.UI.HostChat", "Host Chat")}} {translate("CS2M.UI.JoinGame", "Join Game")} + {stopSrvVis && ({translate("CS2M.UI.StopServer", "Stop Server")})} ; let content; diff --git a/CS2M.sln b/CS2M.sln index c4c0ee4..f8668f2 100644 --- a/CS2M.sln +++ b/CS2M.sln @@ -1,5 +1,8 @@  Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36511.14 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS2M", "CS2M\CS2M.csproj", "{EDB4C83E-C951-40B3-A0F9-555821957AA4}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CS2M.API", "CS2M.API\CS2M.API.csproj", "{F335F74A-E2A1-4B9A-90E7-68E1ECA6B396}" @@ -31,4 +34,10 @@ Global {F7AF1B61-B1A1-42C6-889F-90CF7CF79FB7}.Release|Any CPU.ActiveCfg = Release|Any CPU {F7AF1B61-B1A1-42C6-889F-90CF7CF79FB7}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {2A779DA5-DC4D-4E71-9A97-23F6A5D34669} + EndGlobalSection EndGlobal diff --git a/CS2M/CS2M.UI/mod.json b/CS2M/CS2M.UI/mod.json new file mode 100644 index 0000000..e965e77 --- /dev/null +++ b/CS2M/CS2M.UI/mod.json @@ -0,0 +1,6 @@ +{ + "id": "CS2M", + "author": "kaenganxt", + "version": "1.0.0", + "dependencies": [] +} diff --git a/CS2M/CS2M.UI/package-lock.json b/CS2M/CS2M.UI/package-lock.json new file mode 100644 index 0000000..1ab7e8f --- /dev/null +++ b/CS2M/CS2M.UI/package-lock.json @@ -0,0 +1,2338 @@ +{ + "name": "CS2M.UI", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "classnames": "^2.3.2", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.26", + "@types/react-dom": "^18.0.6", + "css-loader": "^6.7.1", + "mini-css-extract-plugin": "^2.6.1", + "sass": "^1.69.5", + "sass-loader": "^13.0.2", + "style-loader": "^3.3.3", + "swc-loader": "^0.2.3", + "terser-webpack-plugin": "^5.3.10", + "ts-loader": "^9.5.1", + "tsconfig-paths-webpack-plugin": "^4.1.0", + "typescript": "^4.8.4", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@swc/core": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.6.tgz", + "integrity": "sha512-A7iK9+1qzTCIuc3IYcS8gPHCm9bZVKUJrfNnwveZYyo6OFp3jLno4WOM2yBy5uqedgYATEiWgBYHKq37KrU6IA==", + "dev": true, + "hasInstallScript": true, + "peer": true, + "dependencies": { + "@swc/counter": "^0.1.2", + "@swc/types": "^0.1.5" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.4.6", + "@swc/core-darwin-x64": "1.4.6", + "@swc/core-linux-arm-gnueabihf": "1.4.6", + "@swc/core-linux-arm64-gnu": "1.4.6", + "@swc/core-linux-arm64-musl": "1.4.6", + "@swc/core-linux-x64-gnu": "1.4.6", + "@swc/core-linux-x64-musl": "1.4.6", + "@swc/core-win32-arm64-msvc": "1.4.6", + "@swc/core-win32-ia32-msvc": "1.4.6", + "@swc/core-win32-x64-msvc": "1.4.6" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true, + "peer": true + }, + "node_modules/@types/eslint": { + "version": "8.56.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", + "integrity": "sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.25.tgz", + "integrity": "sha512-TBHyJxk2b7HceLVGFcpAUjsa5zIdsPWlR6XHfyGzd0SFu+/NFgQgMAl96MSDZgQDvJAvV6BKsFOrt6zIL09JDw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "dev": true + }, + "node_modules/@types/react": { + "version": "18.2.64", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.64.tgz", + "integrity": "sha512-MlmPvHgjj2p3vZaxbQgFUQFvD8QiZwACfGqEdDSWou5yISWxDQ4/74nCAwsUiX7UFLKZz3BbVSPj+YxeoGGCfg==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.21", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.21.tgz", + "integrity": "sha512-gnvBA/21SA4xxqNXEwNiVcP0xSGHh/gi1VhWv9Bl46a0ItbTT5nFY+G9VSQpaG/8N/qdJpJ+vftQ4zflTtnjLw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001596", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001596.tgz", + "integrity": "sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.699", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.699.tgz", + "integrity": "sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz", + "integrity": "sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", + "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/sass": { + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", + "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swc-loader": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.6.tgz", + "integrity": "sha512-9Zi9UP2YmDpgmQVbyOPJClY0dwf58JDyDMQ7uRc4krmc72twNI2fvlBWHLqVekBpPc7h5NJkGVT1zNDxFrqhvg==", + "dev": true, + "dependencies": { + "@swc/counter": "^0.1.3" + }, + "peerDependencies": { + "@swc/core": "^1.2.147", + "webpack": ">=2" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.29.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", + "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-loader": { + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/CS2M/CS2M.UI/package.json b/CS2M/CS2M.UI/package.json new file mode 100644 index 0000000..c122c01 --- /dev/null +++ b/CS2M/CS2M.UI/package.json @@ -0,0 +1,38 @@ +{ + "main": "build/index.js", + "types": "build/index.d.ts", + "engines": { + "node": ">=18" + }, + "scripts": { + "build": "webpack", + "dev": "webpack --watch", + "update": "npx create-csii-ui-mod update", + "clean": "npx create-csii-ui-mod clean" + }, + "exclude": [ + "node_modules", + "build" + ], + "dependencies": { + "classnames": "^2.3.2", + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@types/react": "^18.0.26", + "@types/react-dom": "^18.0.6", + "css-loader": "^6.7.1", + "mini-css-extract-plugin": "^2.6.1", + "sass": "^1.69.5", + "sass-loader": "^13.0.2", + "style-loader": "^3.3.3", + "swc-loader": "^0.2.3", + "terser-webpack-plugin": "^5.3.10", + "ts-loader": "^9.5.1", + "tsconfig-paths-webpack-plugin": "^4.1.0", + "typescript": "^4.8.4", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0" + } +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/src/extends/main-menu.tsx b/CS2M/CS2M.UI/src/extends/main-menu.tsx new file mode 100644 index 0000000..f9dee8e --- /dev/null +++ b/CS2M/CS2M.UI/src/extends/main-menu.tsx @@ -0,0 +1,58 @@ +import {ModuleRegistryExtend} from "cs2/modding"; +import {MenuButton} from "cs2/ui"; +import {trigger} from "cs2/api"; +import mod from "../../mod.json"; +import {JoinGameMenu} from "../screens/join-game-menu"; +import {HostGameMenu} from "../screens/host-game-menu"; + +export function showMultiplayerMenu() { + trigger(mod.id, "ShowMultiplayerMenu"); +} + +// Extend TransitionGroupCoordinator as it is the only place we can put the JoinGameMenu +// Only extend it if it has 5 children => Main Menu or Pause Menu +export const MenuUIExtensions : ModuleRegistryExtend = (Component) => { + return (props) => { + const {children, ...otherProps} = props || {}; + let menus; + if (children && children.length == 5) { + menus = + <> + + + ; + } + return ( + + {children} + {menus} + + ) + }; +} + +// Extend LabeledIconButton to place another button before every "ArrowRight" +// This covers both the main menu (where we could also just extend the menu), but also the in-game pause menu +// where it is not so easy to add another button. +export const PauseMenuCSMExtend : ModuleRegistryExtend = (Component) => { + return (props) => { + const { children, ...otherProps } = props || {}; + if (props.src == 'Media/Glyphs/ArrowRight.svg') { + return ( + <> + Multiplayer [CS2M] + + {children} + + + + ); + } else { + return ( + + {children} + + ); + } + }; +} diff --git a/CS2M/CS2M.UI/src/index.tsx b/CS2M/CS2M.UI/src/index.tsx new file mode 100644 index 0000000..f0dc124 --- /dev/null +++ b/CS2M/CS2M.UI/src/index.tsx @@ -0,0 +1,18 @@ +import {getModule, ModRegistrar} from "cs2/modding"; +import {MenuUIExtensions, PauseMenuCSMExtend} from "extends/main-menu"; +import {JoinGameMenu} from "./screens/join-game-menu"; +import {HostGameMenu} from "./screens/host-game-menu"; +import {ChatIcon, ChatPanel} from "./screens/chat"; + +const register: ModRegistrar = (moduleRegistry) => { + moduleRegistry.extend('game-ui/common/input/button/labeled-icon-button.tsx', 'LabeledIconButton', PauseMenuCSMExtend); + moduleRegistry.add('cs2m/screens/join-game-menu.tsx', JoinGameMenu); + moduleRegistry.add('cs2m/screens/host-game-menu.tsx', HostGameMenu); + + moduleRegistry.extend('game-ui/common/animations/transition-group-coordinator.tsx', 'TransitionGroupCoordinator', MenuUIExtensions); + + moduleRegistry.append('GameBottomRight', ChatIcon); + getModule('game-ui/game/components/game-panel-renderer.tsx', 'gamePanelComponents')['CS2M.UI.ChatPanel'] = ChatPanel; +} + +export default register; diff --git a/CS2M/CS2M.UI/src/screens/chat.tsx b/CS2M/CS2M.UI/src/screens/chat.tsx new file mode 100644 index 0000000..709af81 --- /dev/null +++ b/CS2M/CS2M.UI/src/screens/chat.tsx @@ -0,0 +1,46 @@ +import {getModule} from "cs2/modding"; +import { Panel } from "cs2/ui"; + +import { bindValue, trigger, useValue } from "cs2/api"; +import mod from "../../mod.json"; + +export const listNetworkStates = bindValue(mod.id, 'uiNetworkStates'); + +export const ChatPanel = (e: any) => { + const LightOpaqueTheme = getModule('game-ui/common/panel/themes/light-opaque.module.scss', 'classes'); + const LifePathPanelStyle = getModule('game-ui/game/components/life-path/life-path-panel/life-path-panel.module.scss', 'classes'); + const TransitionSounds = getModule('game-ui/common/animations/transition-sounds.tsx', 'panelTransitionSounds'); + const SocialPanelLayout = getModule('game-ui/game/components/game-panel-renderer.tsx', 'SocialPanelLayout'); + + let outNetworkStates = useValue(listNetworkStates); + + + return ( + + + {outNetworkStates} + + + ); +}; + +export const ChatIcon = () => { + const IconButton = getModule('game-ui/common/input/button/icon-button.tsx', 'IconButton'); + const useGamePanelState = getModule('game-ui/common/hooks/use-game-panel-state.tsx', 'useGamePanelState'); + const RightMenuButtonStyle = getModule('game-ui/game/components/right-menu/right-menu-button.module.scss', 'classes'); + const RightMenuStyle = getModule('game-ui/game/components/right-menu/right-menu.module.scss', 'classes'); + + const ChatPanelState = useGamePanelState('CS2M.UI.ChatPanel'); + + return ( +
+ + + +
+ ); +}; diff --git a/CS2M/CS2M.UI/src/screens/host-game-menu.tsx b/CS2M/CS2M.UI/src/screens/host-game-menu.tsx new file mode 100644 index 0000000..ea49ace --- /dev/null +++ b/CS2M/CS2M.UI/src/screens/host-game-menu.tsx @@ -0,0 +1,150 @@ +import {getModule} from "cs2/modding"; +import {bindValue, trigger, useValue} from "cs2/api"; +import mod from "../../mod.json"; +import {FocusBoundary, NavigationScope} from "cs2/input"; +import {useLocalization} from "cs2/l10n"; +import {InputField} from "../util/input-field"; + +export const hostMenuVisible = bindValue(mod.id, 'HostMenuVisible'); +export const modSupport = bindValue>(mod.id, 'modSupport'); +export const port = bindValue(mod.id, 'HostPort'); +export const username = bindValue(mod.id, 'Username'); +export const hostGameEnabled = bindValue(mod.id, 'HostGameEnabled'); +export const playerStatus = bindValue(mod.id, 'PlayerStatus'); + +export const stopSrvVisible = bindValue(mod.id, 'stopSrvVisible'); + +export function hideHostGame() { + trigger(mod.id, "HideHostGameMenu"); +} + +export function setVal(name: string, value: any) { + trigger(mod.id, name, value); +} + +export function setIntVal(name: string, value: any) { + trigger(mod.id, name, parseInt(value)); +} + +export function hostGame() { + trigger(mod.id, "HostGame"); +} + +export function stopServer() { + trigger(mod.id, "StopServer"); +} + +export const HostGameSettings = () => { + const GameOptionsCSS = getModule('game-ui/menu/components/shared/game-options/game-options.module.scss', 'classes'); + + let portValue = useValue(port); + let usernameValue = useValue(username); + let enabled = useValue(hostGameEnabled); + + + + const focusChange = () => {}; + return ( + +
+
+ {}}> + {setIntVal("SetHostPort", val)}}> + {setVal("SetUsername", val)}}> + +
+
+ Some info from server +
+
+
+ ); +} + +export const HostGameMenu = () => { + const SubScreen = getModule('game-ui/menu/components/shared/sub-screen/sub-screen.tsx', 'SubScreen'); + const LoadGameScreenCSS = getModule('game-ui/menu/components/load-game-screen/load-game-screen.module.scss', 'classes'); + const DetailSection = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'DetailSection'); + const DetailSectionCSS = getModule('game-ui/menu/components/shared/detail-section/detail-section.module.scss', 'classes'); + const Field = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'Field'); + const InputActionConsumer = getModule('game-ui/common/input-events/input-action-consumer.tsx', 'InputActionConsumer'); + const AutoNavigationScope = getModule('game-ui/common/focus/auto-navigation-scope.tsx', 'AutoNavigationScope'); + const SaveListCSS = getModule('game-ui/menu/components/load-game-screen/save-list/save-list.module.scss', 'classes'); + const FooterButton = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'FooterButton'); + + const visible : boolean = useValue(hostMenuVisible); + const modSupports = useValue(modSupport); + const enabled = useValue(hostGameEnabled); + const status = useValue(playerStatus); + + const stopSrvVis = useValue(stopSrvVisible); + + const { translate } = useLocalization(); + + const actions = {}; + + let details = []; + let detailsTitle; + if (enabled) { + detailsTitle = translate("CS2M.UI.Compatibility", "Compatibility"); + for (let support of modSupports) { + let support_str = translate("CS2M.UI.Compatibility[" + support.support + "]", support.support); + if (support.client_side) { + support_str = translate("CS2M.UI.ClientSide", "Client Side"); + } + let color; + switch (support.support) { + case "Unsupported": + color = "red"; + break; + case "Supported": + color = "green"; + break; + case "KnownWorking": + color = "yellow"; + break; + default: + color = "orange"; + break; + } + details.push(
{support_str}
); + } + } else { + detailsTitle = status ?? translate("CS2M.UI.StartingServer", "StartingServer"); + } + + let footer = <> + {!stopSrvVis && ({translate("CS2M.UI.StartServer", "Start Server")})} + {stopSrvVis && ({translate("CS2M.UI.StopServer", "Stop Server")})} + ; + + let content; + if (visible) { + content = ( + + +
+ +
+
+
{translate("CS2M.UI.HostGame", "Host Game")}
+ +
+
+ + +
+
+
+
+ ); + } + + return ( + <> + {content} + + ); +} diff --git a/CS2M/CS2M.UI/src/screens/join-game-menu.tsx b/CS2M/CS2M.UI/src/screens/join-game-menu.tsx new file mode 100644 index 0000000..ad9f639 --- /dev/null +++ b/CS2M/CS2M.UI/src/screens/join-game-menu.tsx @@ -0,0 +1,180 @@ +import { getModule } from "cs2/modding"; +import { bindValue, trigger, useValue } from "cs2/api"; +import mod from "../../mod.json"; +import { FocusBoundary, NavigationScope } from "cs2/input"; +import { useLocalization } from "cs2/l10n"; +import { InputField,InputFieldWide } from "../util/input-field"; + +export const joinMenuVisible = bindValue(mod.id, 'JoinMenuVisible'); +export const modSupport = bindValue>(mod.id, 'modSupport'); + +export const ipAddress = bindValue(mod.id, 'JoinIpAddress'); +export const port = bindValue(mod.id, 'JoinPort'); +export const username = bindValue(mod.id, 'Username'); +export const joinGameEnabled = bindValue(mod.id, 'JoinGameEnabled'); +export const hostGameEnabled = bindValue(mod.id, 'HostGameEnabled'); +export const chatSendEnabled = bindValue(mod.id, 'ChatSendEnabled'); + +export const listNetworkStates = bindValue(mod.id, 'uiNetworkStates'); +export const playerMessage = bindValue(mod.id, 'playerMessage'); +export const stopSrvVisible = bindValue(mod.id, 'stopSrvVisible'); + +export function hideJoinGame() { + trigger(mod.id, "HideJoinGameMenu"); +} + +export function setVal(name: string, value: any) { + trigger(mod.id, name, value); +} + +export function setIntVal(name: string, value: any) { + trigger(mod.id, name, parseInt(value)); +} + +export function joinGame() { + trigger(mod.id, "JoinGame"); +} + +export function hostGame() { + trigger(mod.id, "HostGame"); +} + +export function sendMessage() { + trigger(mod.id, "SendMessage"); +} + +export function stopServer() { + trigger(mod.id, "StopServer"); +} + +export const JoinGameSettings = () => { + const GameOptionsCSS = getModule('game-ui/menu/components/shared/game-options/game-options.module.scss', 'classes'); + const FooterButton = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'FooterButton'); + + let ipAddressValue = useValue(ipAddress); + let portValue = useValue(port); + let usernameValue = useValue(username); + let enabled = useValue(joinGameEnabled); + let playerMessageVal = useValue(playerMessage); + + let outNetworkStates = useValue(listNetworkStates); + let chatSendEnabledVal = useValue(chatSendEnabled); + + const { translate } = useLocalization(); + + const focusChange = () => { }; + return ( + +
+
+ { }}> + { setVal("SetJoinIpAddress", val) }}> + { setIntVal("SetJoinPort", val) }}> + { setVal("SetUsername", val) }}> + + +
+
+
+ {outNetworkStates} +
+
+ { setVal("SetMsgFromUsr", val) }}> + {translate("CS2M.UI.sendMessage", "Send")} +
+
+
+ ); +} + +export const JoinGameMenu = () => { + const SubScreen = getModule('game-ui/menu/components/shared/sub-screen/sub-screen.tsx', 'SubScreen'); + const LoadGameScreenCSS = getModule('game-ui/menu/components/load-game-screen/load-game-screen.module.scss', 'classes'); + const DetailSection = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'DetailSection'); + const DetailSectionCSS = getModule('game-ui/menu/components/shared/detail-section/detail-section.module.scss', 'classes'); + const Field = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'Field'); + const InputActionConsumer = getModule('game-ui/common/input-events/input-action-consumer.tsx', 'InputActionConsumer'); + const AutoNavigationScope = getModule('game-ui/common/focus/auto-navigation-scope.tsx', 'AutoNavigationScope'); + const SaveListCSS = getModule('game-ui/menu/components/load-game-screen/save-list/save-list.module.scss', 'classes'); + const FooterButton = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'FooterButton'); + + const visible: boolean = useValue(joinMenuVisible); + const modSupports = useValue(modSupport); + const enabled = useValue(joinGameEnabled); + const enabled2 = useValue(hostGameEnabled); + + const stopSrvVis = useValue(stopSrvVisible); + + const { translate } = useLocalization(); + + const actions = {}; + + let details = []; + let detailsTitle; + if (enabled) { + detailsTitle = translate("CS2M.UI.Compatibility", "Compatibility"); + for (let support of modSupports) { + let support_str = translate("CS2M.UI.Compatibility[" + support.support + "]", support.support); + if (support.client_side) { + support_str = translate("CS2M.UI.ClientSide", "Client Side"); + } + let color; + switch (support.support) { + case "Unsupported": + color = "red"; + break; + case "Supported": + color = "green"; + break; + case "KnownWorking": + color = "yellow"; + break; + default: + color = "orange"; + break; + } + details.push(
{support_str}
); + } + } else { + detailsTitle = translate("CS2M.UI.JoiningGame", "Joining Game"); + } + + let footer = <> + {!stopSrvVis && {translate("CS2M.UI.HostChat", "Host Chat")}} + {translate("CS2M.UI.JoinGame", "Join Game")} + {stopSrvVis && ({translate("CS2M.UI.StopServer", "Stop Server")})} + ; + + let content; + if (visible) { + content = ( + + +
+ +
+
+
{translate("CS2M.UI.JoinGame", "Join_Game")}
+ +
+
+ + +
+
+
+
+ ); + } + + return ( + <> + {content} + + ); +} diff --git a/CS2M/CS2M.UI/src/util/input-field.tsx b/CS2M/CS2M.UI/src/util/input-field.tsx new file mode 100644 index 0000000..e2ca354 --- /dev/null +++ b/CS2M/CS2M.UI/src/util/input-field.tsx @@ -0,0 +1,50 @@ +import {getModule} from "cs2/modding"; +import {useLocalization} from "cs2/l10n"; + +// Props: label, disabled, error, value, onChange, maxLength +export const InputField = (props : any) => { + const FocusableEditorItem = getModule('game-ui/editor/widgets/item/editor-item.tsx', 'FocusableEditorItem'); + const ErrorLabel = getModule('game-ui/editor/widgets/label/error-label.tsx', 'ErrorLabel'); + const EditorCSS = getModule('game-ui/editor/widgets/item/editor-item.module.scss', 'classes'); + const StringInputField = getModule('game-ui/editor/widgets/fields/string-input-field.tsx', 'StringInputField'); + + const { translate } = useLocalization(); + + return ( + +
+
+ {translate(props.label, props.label)} +
+
+ + +
+
+ + +
+ ) +} + +export const InputFieldWide = (props : any) => { + const FocusableEditorItem = getModule('game-ui/editor/widgets/item/editor-item.tsx', 'FocusableEditorItem'); + const ErrorLabel = getModule('game-ui/editor/widgets/label/error-label.tsx', 'ErrorLabel'); + const EditorCSS = getModule('game-ui/editor/widgets/item/editor-item.module.scss', 'classes'); + const StringInputField = getModule('game-ui/editor/widgets/fields/string-input-field.tsx', 'StringInputField'); + + const { translate } = useLocalization(); + + return ( + +
+
+ + +
+
+ + +
+ ) +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/tools/css-presence.js b/CS2M/CS2M.UI/tools/css-presence.js new file mode 100644 index 0000000..8515420 --- /dev/null +++ b/CS2M/CS2M.UI/tools/css-presence.js @@ -0,0 +1,48 @@ +const { RawSource } = require("webpack").sources; + +exports.CSSPresencePlugin = class CSSPresencePlugin { + apply(compiler) { + compiler.hooks.compilation.tap("CSSPresencePlugin", (compilation) => { + compilation.hooks.processAssets.tap( + { + name: "CSSPresencePlugin", + stage: compilation.PROCESS_ASSETS_STAGE_ADDITIONS, + }, + () => { + const cssFiles = Object.keys(compilation.assets).filter((asset) => + asset.endsWith(".css") + ); + const hasCSS = cssFiles.length > 0; + + // Inject the `hasCSS` export into the main module source + for (const chunk of compilation.chunks) { + for (const file of chunk.files) { + if (file.endsWith(".mjs")) { + const asset = compilation.getAsset(file); + const source = asset.source.source(); + const updatedSource = source.replace( + "export {", + `const hasCSS = ${hasCSS}; export { hasCSS, ` + ); + + // Generate a new source map for the modified source + const newSourceAndMap = { + sources: [file], + mappings: "", + file, + sourceRoot: "", + sourcesContent: [updatedSource], + }; + + compilation.updateAsset( + file, + new RawSource(updatedSource, newSourceAndMap) + ); + } + } + } + } + ); + }); + } +}; diff --git a/CS2M/CS2M.UI/tsconfig.json b/CS2M/CS2M.UI/tsconfig.json new file mode 100644 index 0000000..d98960d --- /dev/null +++ b/CS2M/CS2M.UI/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "jsx":"react-jsx", + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Node", + "isolatedModules": true, + "strict": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": "src", + "skipLibCheck": true, + "typeRoots": ["./types"], + "resolveJsonModule": true, + "paths": { + "mod.json": ["../mod.json"] + } + }, +} diff --git a/CS2M/CS2M.UI/types/api.d.ts b/CS2M/CS2M.UI/types/api.d.ts new file mode 100644 index 0000000..b6ace1a --- /dev/null +++ b/CS2M/CS2M.UI/types/api.d.ts @@ -0,0 +1,88 @@ +declare module "cs2/api" { + import { MutableRefObject } from 'react'; + + export interface ValueBinding { + readonly value: T; + subscribe(listener?: BindingListener): ValueSubscription; + dispose(): void; + } + export interface MapBinding { + getValue(key: K): V; + subscribe(key: K, listener?: BindingListener): ValueSubscription; + dispose(): void; + } + export interface EventBinding { + subscribe(listener: BindingListener): Subscription; + dispose(): void; + } + export interface BindingListener { + (value: T): void; + } + export interface Subscription { + dispose(): void; + } + export interface ValueSubscription extends Subscription { + readonly value: T; + setChangeListener(listener: BindingListener): void; + } + export export function bindValue(group: string, name: string, fallbackValue?: T): ValueBinding; + export export function bindLocalValue(initialValue: T): LocalValueBinding; + export export function bindMap(group: string, name: string, keyStringifier?: (key: K) => string): MapBinding; + export export function bindEvent(group: string, name: string): EventBinding; + export export function bindTrigger(group: string, name: string): () => void; + export export function bindTriggerWithArgs(group: string, name: string): T extends [ + ] ? unknown : (...args: T) => void; + export export function trigger(group: string, name: string, ...args: any[]): void; + export export function call(group: string, name: string, ...args: any[]): Promise; + /** Subscribe to a ValueBinding. Return fallback value or throw an error if the binding is not registered on the C# side */ + export export function useValue(binding: ValueBinding): V; + export export function useReducedValue(binding: ValueBinding, reducer: (current: T, next: V) => T, initial: T): T; + export export function useValueRef(binding: ValueBinding): MutableRefObject; + export export function useValueOnChange(binding: ValueBinding, onChange: (value: V, prevValue: V) => void, depth?: number): V; + export export function useMapValueOnChange(binding: MapBinding, key: K, onChange: (newValue: V) => void): V; + /** Subscribe to a MapBinding value. throw an error if the binding is not registered on the C# side */ + export export function useMapValue(binding: MapBinding, key: undefined): undefined; + export export function useMapValue(binding: MapBinding, key: K): V; + export export function useMapValues(binding: MapBinding, keys: K[]): V[]; + export class LocalValueBinding implements ValueBinding { + readonly listeners: ListenerRef[]; + disposed: boolean; + _value: T; + constructor(initialValue: T); + get registered(): boolean; + get value(): T; + subscribe: (listener?: BindingListener) => { + readonly value: T; + setChangeListener: (listener: BindingListener) => void; + dispose(): void; + }; + dispose: () => void; + update: (newValue: T) => void; + } + export class ListenerRef { + listener: BindingListener | undefined; + constructor(listener: BindingListener | undefined); + set: (listener: BindingListener) => void; + call: (newValue: T) => void; + } + // https://coherent-labs.com/Documentation/cpp-gameface/d1/dea/shape_morphing.html + // https://coherent-labs.com/Documentation/cpp-gameface/d4/d08/interface_morph_animation.html + export export interface HTMLImageElement { + getSrcSVGAnimation(): MorphAnimation | null; + } + export export interface Element { + getMaskSVGAnimation(): MorphAnimation | null; + } + export export interface MorphAnimation { + currentTime: number; + playbackRate: number; + play(): void; + pause(): void; + reverse(): void; + playFromTo(playTime: number, pauseTime: number, callback?: () => void): void; + } + + export {}; + +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/types/assets.d.ts b/CS2M/CS2M.UI/types/assets.d.ts new file mode 100644 index 0000000..f101719 --- /dev/null +++ b/CS2M/CS2M.UI/types/assets.d.ts @@ -0,0 +1,6 @@ +declare module '*.scss'; +declare module '*.css'; +declare module '*.svg'; // we recommed using SVGs for all the icons and UI elements +declare module '*.png'; +declare module '*.jpg'; +declare module '*.gif'; \ No newline at end of file diff --git a/CS2M/CS2M.UI/types/bindings.d.ts b/CS2M/CS2M.UI/types/bindings.d.ts new file mode 100644 index 0000000..72e10b3 --- /dev/null +++ b/CS2M/CS2M.UI/types/bindings.d.ts @@ -0,0 +1,3357 @@ +declare module "cs2/bindings" { + import { ChartDataset } from 'chart.js'; + + export interface ServiceBudget { + id: string; + value: number; + } + export interface ServiceFee { + incomeInternal: number; + incomeExports: number; + expenseImport: number; + } + export interface ServiceBuildingBudgetInfo { + id: string; + serviceBuildings: string[]; + } + export interface ServiceBuildingBudgetData { + id: string; + count: number; + employees: number; + maxEmployees: number; + } + export interface Entity { + index: number; + version: number; + } + export interface ValueBinding { + readonly value: T; + subscribe(listener?: BindingListener): ValueSubscription; + dispose(): void; + } + export interface MapBinding { + getValue(key: K): V; + subscribe(key: K, listener?: BindingListener): ValueSubscription; + dispose(): void; + } + export interface EventBinding { + subscribe(listener: BindingListener): Subscription; + dispose(): void; + } + export interface BindingListener { + (value: T): void; + } + export interface Subscription { + dispose(): void; + } + export interface ValueSubscription extends Subscription { + readonly value: T; + setChangeListener(listener: BindingListener): void; + } + const focusedEntity$: ValueBinding; + function focusEntity(entity: Entity): void; + export interface Typed { + __Type: T; + } + export type TypeFromMap> = { + [K in keyof T]: K extends string ? T[K] & Typed : never; + }[keyof T]; + export enum NameType { + Custom = "names.CustomName", + Localized = "names.LocalizedName", + Formatted = "names.FormattedName" + } + export type Name = CustomName | LocalizedName | FormattedName; + export interface CustomName extends Typed { + name: string; + } + export interface LocalizedName extends Typed { + nameId: string; + } + export interface FormattedName extends Typed { + nameId: string; + nameArgs: { + [key: string]: string; + }; + } + export interface Chirp { + entity: Entity; + sender: ChirpSender; + date: number; + messageId: string; + links: ChirpLink[]; + likes: number; + liked: boolean; + } + export interface ChirpSender { + entity: Entity; + link: ChirpLink; + } + export interface ChirpLink { + name: Name; + target: string; + } + const chirps$: ValueBinding; + const chirpAdded$: EventBinding; + function addLike(entity: Entity): void; + function removeLike(entity: Entity): void; + function selectLink(target: string): void; + export interface Number2 { + readonly x: number; + readonly y: number; + } + export interface Bounds1 { + readonly min: number; + readonly max: number; + } + export type LongNumber = [ + number, + number + ]; + export enum WeightedMode { + None = 0, + In = 1, + Out = 2, + Both = 3 + } + export enum WrapMode { + Default = 0, + Clamp = 1, + Once = 1, + Loop = 2, + PingPong = 4, + ClampForever = 8 + } + export interface IKeyframe { + time: number; + value: number; + inTangent: number; + outTangent: number; + inWeight: number; + outWeight: number; + weightedMode: WeightedMode; + readonly?: boolean; + } + export interface AnimationCurve { + keys: IKeyframe[]; + preWrapMode: WrapMode; + postWrapMode: WrapMode; + label?: string; + color?: string; + hidePath?: boolean; + deviationFrom?: number; + readonly?: boolean; + } + const group = "cinematicCamera"; + export interface CinematicCameraCurveModifier { + id: string; + index: number; + curve: AnimationCurve; + min: number; + max: number; + groupIndex?: number; + curveIndex?: number; + children?: Omit[]; + } + const playbackDuration$: ValueBinding; + const timelinePosition$: ValueBinding; + const timelineLength$: ValueBinding; + const loop$: ValueBinding; + const toggleLoop: (loop: boolean) => void; + const playing$: ValueBinding; + const setPlaybackDuration: (t: number) => void; + const onAfterPlaybackDurationChange: () => void; + const setTimelinePosition: (t: number) => void; + const stopPlayback: () => void; + const togglePlayback: () => void; + const captureKey: (id: string, property: string) => void; + const removeCameraTransformKey: (curveIndex: number, index: number) => void; + const moveKeyFrame: (id: string, curveIndex: number, index: number, keyFrame: IKeyframe) => Promise; + const removeKeyFrame: (id: string, index: number, curveIndex?: number) => void; + const addKeyFrame: (id: string, time: number, value: number, curveIndex?: number) => Promise; + const resetCinematicCameraSequence: () => void; + const getControllerDelta: () => Promise; + const getControllerZoomDelta: () => Promise; + const getControllerPanDelta: () => Promise; + const toggleCurveEditorFocus: (focus: boolean) => void; + export interface CinematicCameraAsset { + name: string; + guid: string; + identifier: string; + cloudTarget: string; + isReadOnly: boolean; + } + const saveCinematicCameraSequence: (name: string, hash: string | null) => void; + const loadCinematicCameraSequence: (hash: string, storage: string) => void; + const deleteCinematicCameraSequence: (hash: string, storage: string) => void; + const lastLoadedCinematicCameraSequence$: ValueBinding; + const cinematicCameraSequenceAssets$: ValueBinding; + const availableCloudTargets$: ValueBinding; + const selectedCloudTarget$: ValueBinding; + const selectCloudTarget: (cloudTarget: string) => void; + const transformAnimationCurveData$: ValueBinding; + const modifierAnimationCurveData$: ValueBinding; + const useCinematicCameraBindings: (label: string, activeIndex: number) => { + onAddKeyframe: (time: number, value: number, curveIndex?: number | undefined) => Promise; + onMoveKeyframe: (index: number, keyframe: IKeyframe, smooth?: boolean, curveIndex?: number | undefined) => Promise; + onRemoveKeyframe: (_index: number, _curveIndex?: number | undefined) => void; + onSetKeyframes: (_keyframes: IKeyframe[], _curveIndex?: number | undefined) => never; + }; + const residentialLowDemand$: ValueBinding; + const residentialMediumDemand$: ValueBinding; + const residentialHighDemand$: ValueBinding; + const commercialDemand$: ValueBinding; + const industrialDemand$: ValueBinding; + const officeDemand$: ValueBinding; + const residentialLowFactors$: ValueBinding; + const residentialMediumFactors$: ValueBinding; + const residentialHighFactors$: ValueBinding; + const commercialFactors$: ValueBinding; + const industrialFactors$: ValueBinding; + const officeFactors$: ValueBinding; + const happiness$: ValueBinding; + const happinessFactors$: ValueBinding; + export interface Factor { + factor: string; + weight: number; + } + const seasonNameId$: ValueBinding; + const weather$: ValueBinding; + const temperature$: ValueBinding; + export interface Season { + name: Name; + baseTemperature: number; + } + export enum WeatherType { + Clear = 0, + Few = 1, + Scattered = 2, + Broken = 3, + Overcast = 4, + Rain = 5, + Snow = 6, + Hail = 7, + Storm = 8 + } + /** RGBA color, all values between 0 and 1 */ + export interface Color { + readonly r: number; + readonly g: number; + readonly b: number; + readonly a: number; + } + export interface Gradient { + stops: GradientStop[]; + } + export interface GradientStop { + offset: number; + color: string | Color; + } + const totalIncome$: ValueBinding; + const totalExpenses$: ValueBinding; + const incomeItems$: ValueBinding; + const incomeValues$: ValueBinding; + const expenseItems$: ValueBinding; + const expenseValues$: ValueBinding; + export interface BudgetItem { + id: string; + icon: string; + color: Color; + sources: BudgetSource[]; + active: boolean; + } + export interface BudgetSource { + id: string; + index: number; + } + function getItemValue(item: BudgetItem, values: number[]): number; + const loanLimit$: ValueBinding; + const currentLoan$: ValueBinding; + const loanOffer$: ValueBinding; + function requestLoanOffer(amount: number): void; + function acceptLoanOffer(): void; + function resetLoanOffer(): void; + export interface Loan { + amount: number; + dailyInterestRate: number; + dailyPayment: number; + } + const maxProgress$: ValueBinding; + const resourceCategories$: ValueBinding; + const resourceDetails$: MapBinding; + const resources$: MapBinding; + const services$: MapBinding; + const resourceData$: MapBinding; + export interface ResourceCategory { + entity: Entity; + name: string; + resources: Resource[]; + } + export interface Resource { + entity: Entity; + name: string; + icon: string; + tradable: boolean; + producer: ProductionLink; + consumers: ProductionLink[]; + } + export interface ProductionLink { + name: string; + icon: string; + } + export interface ResourceDetails { + inputs: Entity[][]; + outputs: Entity[]; + serviceOutputs: Entity[]; + } + export interface ResourceData { + production: number; + surplus: number; + deficit: number; + } + export interface Service { + entity: Entity; + name: string; + icon: string; + } + interface Service$1 { + entity: Entity; + name: string; + icon: string; + locked: boolean; + budget: number; + } + export interface ServiceDetails { + entity: Entity; + name: string; + icon: string; + locked: boolean; + budgetAdjustable: boolean; + budgetPercentage: number; + efficiency: number; + upkeep: number; + fees: ServiceFee$1[]; + } + interface ServiceFee$1 { + resource: number; + name: string; + fee: number; + min: number; + max: number; + adjustable: boolean; + importable: boolean; + exportable: boolean; + incomeInternal: number; + incomeExports: number; + expenseImports: number; + consumptionMultiplier: number; + efficiencyMultiplier: number; + happinessEffect: number; + } + const services$$1: ValueBinding; + const serviceDetails$: MapBinding; + function setServiceBudget(service: Entity, percentage: number): void; + function setServiceFee(resource: number, amount: number): void; + function resetService(service: Entity): void; + export interface EventInfo { + id: string; + icon: string; + date: number; + data: EventData[] | null; + effects: EventData[] | null; + } + export interface EventData { + type: string; + value: number; + } + const eventMap$: MapBinding; + const events$: ValueBinding; + function onOpenJournal(): void; + function onCloseJournal(): void; + export enum GameScreen { + main = 0, + freeCamera = 1, + pauseMenu = 10, + saveGame = 11, + newGame = 12, + loadGame = 13, + options = 14 + } + const activeGameScreen$: ValueBinding; + const setActiveGameScreen: (screen: GameScreen) => void; + const canUseSaveSystem$: ValueBinding; + function showMainScreen(): void; + function showPauseScreen(): void; + function showFreeCameraScreen(): void; + export enum LayoutPosition { + Undefined = 0, + Left = 1, + Center = 2, + Right = 3 + } + const activeGamePanel$: ValueBinding; + const blockingPanelActive$: ValueBinding; + const activePanelPosition$: ValueBinding; + const toggleGamePanel: (panelType: string) => void; + const showGamePanel: (panelType: string) => void; + const closeGamePanel: (panelType: string) => void; + const closeActiveGamePanel: () => void; + export enum GamePanelType { + InfoviewMenu = "Game.UI.InGame.InfoviewMenu", + Progression = "Game.UI.InGame.ProgressionPanel", + Economy = "Game.UI.InGame.EconomyPanel", + CityInfo = "Game.UI.InGame.CityInfoPanel", + Statistics = "Game.UI.InGame.StatisticsPanel", + TransportationOverview = "Game.UI.InGame.TransportationOverviewPanel", + Chirper = "Game.UI.InGame.ChirperPanel", + LifePath = "Game.UI.InGame.LifePathPanel", + Journal = "Game.UI.InGame.JournalPanel", + Radio = "Game.UI.InGame.RadioPanel", + PhotoMode = "Game.UI.InGame.PhotoModePanel", + CinematicCamera = "Game.UI.InGame.CinematicCameraPanel", + Notifications = "Game.UI.InGame.NotificationsPanel" + } + export interface GamePanels { + [GamePanelType.InfoviewMenu]: InfoviewMenu; + [GamePanelType.Progression]: ProgressionPanel; + [GamePanelType.Economy]: EconomyPanel; + [GamePanelType.CityInfo]: CityInfoPanel; + [GamePanelType.Statistics]: StatisticsPanel; + [GamePanelType.TransportationOverview]: TransportationOverviewPanel; + [GamePanelType.Chirper]: ChirperPanel; + [GamePanelType.LifePath]: LifePathPanel; + [GamePanelType.Journal]: JournalPanel; + [GamePanelType.Radio]: RadioPanel; + [GamePanelType.PhotoMode]: PhotoModePanel; + [GamePanelType.Notifications]: NotificationsPanel; + } + export type GamePanel = TypeFromMap; + function toggleInfoviewMenu(): void; + export interface InfoviewMenu { + } + export interface TabbedGamePanel { + selectedTab: number; + } + export interface ProgressionPanel extends TabbedGamePanel { + } + export enum ProgressionPanelTab { + Development = 0, + Milestones = 1, + Achievements = 2 + } + const showProgressionPanel: (tab: number) => void; + export interface EconomyPanel extends TabbedGamePanel { + } + export enum EconomyPanelTab { + Budget = 0, + Loan = 1, + Taxation = 2, + Services = 3, + Production = 4 + } + const showEconomyPanel: (tab: number) => void; + export interface CityInfoPanel extends TabbedGamePanel { + } + export enum CityInfoPanelTab { + Demand = 0, + Policies = 1 + } + const showCityInfoPanel: (tab: number) => void; + export interface StatisticsPanel { + } + export interface TransportationOverviewPanel extends TabbedGamePanel { + } + const showTransportationOverviewPanel: (tab: number) => void; + export enum TransportationOverviewPanelTab { + PublicTransport = 0, + Cargo = 1 + } + export interface ChirperPanel { + } + export interface LifePathPanel { + selectedEntity: Entity; + } + function toggleLifePathPanel(): void; + function showLifePathList(): void; + const showLifePathDetail: (entity: Entity) => void; + export interface JournalPanel { + } + export interface RadioPanel { + } + function toggleRadioPanel(): void; + function toggleTransportationOverviewPanel(): void; + export interface PhotoModePanel { + } + export interface CinematicCameraPanel { + } + export interface NotificationsPanel { + } + export enum Unit { + Integer = "integer", + IntegerRounded = "integerRounded", + IntegerPerMonth = "integerPerMonth", + IntegerPerHour = "integerPerHour", + FloatSingleFraction = "floatSingleFraction", + FloatTwoFractions = "floatTwoFractions", + FloatThreeFractions = "floatThreeFractions", + Percentage = "percentage", + PercentageSingleFraction = "percentageSingleFraction", + Angle = "angle", + Length = "length", + Area = "area", + Volume = "volume", + VolumePerMonth = "volumePerMonth", + Weight = "weight", + WeightPerCell = "weightPerCell", + WeightPerMonth = "weightPerMonth", + Power = "power", + Energy = "energy", + DataRate = "dataRate", + DataBytes = "dataBytes", + DataMegabytes = "dataMegabytes", + Money = "money", + MoneyPerCell = "moneyPerCell", + MoneyPerMonth = "moneyPerMonth", + MoneyPerHour = "moneyPerHour", + MoneyPerDistance = "moneyPerDistance", + MoneyPerDistancePerMonth = "moneyPerDistancePerMonth", + BodiesPerMonth = "bodiesPerMonth", + XP = "xp", + Temperature = "temperature", + NetElevation = "netElevation", + ScreenFrequency = "screenFrequency", + Height = "height", + Custom = "custom" + } + export enum LocElementType { + Bounds = "Game.UI.Localization.LocalizedBounds", + Fraction = "Game.UI.Localization.LocalizedFraction", + Number = "Game.UI.Localization.LocalizedNumber", + String = "Game.UI.Localization.LocalizedString" + } + export interface LocElements { + [LocElementType.Bounds]: LocalizedBounds; + [LocElementType.Fraction]: LocalizedFraction; + [LocElementType.Number]: LocalizedNumber; + [LocElementType.String]: LocalizedString; + } + export type LocElement = TypeFromMap; + export interface LocalizedBounds { + min: number; + max: number; + unit?: Unit; + } + export interface LocalizedFraction { + value: number; + total: number; + unit?: Unit; + } + export interface LocalizedNumber { + value: number; + unit?: Unit; + signed: boolean; + } + export interface LocalizedString { + id: string | null; + value: string | null; + args: Record | null; + } + export type NumericProperty = NumberProperty | Number2Property | NumberRangeProperty; + const NUMBER_PROPERTY = "Game.UI.Common.NumberProperty"; + export interface NumberProperty { + labelId: string; + unit: Unit; + value: number; + signed: boolean; + icon?: string; + valueIcon?: string; + } + const NUMBER2_PROPERTY = "Game.UI.Common.Number2Property"; + export interface Number2Property { + labelId: string; + unit: Unit; + value: Number2; + signed: boolean; + icon?: string; + valueIcon?: string; + } + export interface NumberRangeProperty { + labelId: string; + unit: Unit; + minValue: number; + maxValue: number; + signed: boolean; + icon?: string; + valueIcon?: string; + } + const STRING_PROPERTY = "Game.UI.Common.StringProperty"; + export interface StringProperty { + labelId: string; + valueId: string; + icon?: string; + valueIcon?: string; + } + export type Properties = { + [NUMBER_PROPERTY]: NumberProperty; + [NUMBER2_PROPERTY]: Number2Property; + [STRING_PROPERTY]: StringProperty; + }; + export enum PrefabEffectType { + CityModifier = "prefabs.CityModifierEffect", + LocalModifier = "prefabs.LocalModifierEffect", + LeisureProvider = "prefabs.LeisureProviderEffect", + AdjustHappinessEffect = "prefabs.AdjustHappinessEffect" + } + export interface PrefabEffects { + [PrefabEffectType.CityModifier]: CityModifierEffect; + [PrefabEffectType.LocalModifier]: LocalModifierEffect; + [PrefabEffectType.LeisureProvider]: LeisureProviderEffect; + [PrefabEffectType.AdjustHappinessEffect]: AdjustHappinessEffect; + } + export type PrefabEffect = TypeFromMap; + export interface CityModifierEffect { + modifiers: CityModifier[]; + } + export interface CityModifier { + type: CityModifierType; + delta: number; + unit: Unit; + } + export enum CityModifierType { + Attractiveness = "Attractiveness", + CrimeAccumulation = "CrimeAccumulation", + PoliceStationUpkeep = "PoliceStationUpkeep", + DisasterWarningTime = "DisasterWarningTime", + DisasterDamageRate = "DisasterDamageRate", + DiseaseProbability = "DiseaseProbability", + ParkEntertainment = "ParkEntertainment", + CriminalMonitorProbability = "CriminalMonitorProbability", + IndustrialAirPollution = "IndustrialAirPollution", + IndustrialGroundPollution = "IndustrialGroundPollution", + IndustrialGarbage = "IndustrialGarbage", + RecoveryFailChange = "RecoveryFailChange", + OreResourceAmount = "OreResourceAmount", + OilResourceAmount = "OilResourceAmount", + UniversityInterest = "UniversityInterest", + OfficeSoftwareDemand = "OfficeSoftwareDemand", + IndustrialElectronicsDemand = "IndustrialElectronicsDemand", + OfficeSoftwareEfficiency = "OfficeSoftwareEfficiency", + IndustrialElectronicsEfficiency = "IndustrialElectronicsEfficiency", + TelecomCapacity = "TelecomCapacity", + Entertainment = "Entertainment", + HighwayTrafficSafety = "HighwayTrafficSafety", + PrisonTime = "PrisonTime", + CrimeProbability = "CrimeProbability", + CollegeGraduation = "CollegeGraduation", + UniversityGraduation = "UniversityGraduation", + ImportCost = "ImportCost", + LoanInterest = "LoanInterest", + BuildingLevelingCost = "BuildingLevelingCost", + ExportCost = "ExportCost", + TaxiStartingFee = "TaxiStartingFee", + IndustrialEfficiency = "IndustrialEfficiency", + OfficeEfficiency = "OfficeEfficiency", + PollutionHealthAffect = "PollutionHealthAffect", + HospitalEfficiency = "HospitalEfficiency", + IndustrialFishInputEfficiency = "IndustrialFishInputEfficiency", + IndustrialFishHubEfficiency = "IndustrialFishHubEfficiency" + } + export interface LocalModifierEffect { + modifiers: LocalModifier[]; + } + export interface LocalModifier { + type: LocalModifierType; + delta: number; + unit: Unit; + radius: number; + } + export enum LocalModifierType { + CrimeAccumulation = "CrimeAccumulation", + ForestFireResponseTime = "ForestFireResponseTime", + ForestFireHazard = "ForestFireHazard", + Wellbeing = "Wellbeing", + Health = "Health" + } + export interface LeisureProviderEffect { + providers: LeisureProvider[]; + } + export interface LeisureProvider { + type: LeisureType; + efficiency: number; + } + export enum LeisureType { + Meals = "Meals", + Entertainment = "Entertainment", + Commercial = "Commercial", + CityIndoors = "CityIndoors", + Travel = "Travel", + CityPark = "CityPark", + CityBeach = "CityBeach", + Attractions = "Attractions", + Relaxation = "Relaxation", + Sightseeing = "Sightseeing" + } + export interface AdjustHappinessEffect { + targets: string[]; + wellbeingEffect: number; + healthEffect: number; + } + export enum UISound { + selectItem = "select-item", + dragSlider = "drag-slider", + hoverItem = "hover-item", + expandPanel = "expand-panel", + grabSlider = "grabSlider", + selectDropdown = "select-dropdown", + selectToggle = "select-toggle", + focusInputField = "focus-input-field", + signatureBuildingEvent = "signature-building-event", + bulldoze = "bulldoze", + bulldozeEnd = "bulldoze-end", + relocateBuilding = "relocate-building", + mapTilePurchaseMode = "map-tile-purchase-mode", + mapTilePurchaseModeEnd = "map-tile-purchase-mode-end", + xpEvent = "xp-event", + milestoneEvent = "milestone-event", + economy = "economy", + chirpEvent = "chirp-event", + likeChirp = "like-chirp", + chirper = "chirper", + purchase = "purchase", + enableBuilding = "enable-building", + disableBuilding = "disable-building", + pauseSimulation = "pause-simulation", + resumeSimulation = "resume-simulation", + simulationSpeed1 = "simulation-speed-1", + simulationSpeed2 = "simulation-speed-2", + simulationSpeed3 = "simulation-speed-3", + togglePolicy = "toggle-policy", + takeLoan = "take-loan", + removeItem = "remove-item", + toggleInfoMode = "toggle-info-mode", + takePhoto = "take-photo", + tutorialTriggerCompleteEvent = "tutorial-trigger-complete-event", + selectRadioNetwork = "select-radio-network", + selectRadioStation = "select-radio-station", + generateRandomName = "generate-random-name", + decreaseElevation = "decrease-elevation", + increaseElevation = "increase-elevation", + selectPreviousItem = "select-previous-item", + selectNextItem = "select-next-item", + openPanel = "open-panel", + closePanel = "close-panel", + openMenu = "open-menu", + closeMenu = "close-menu", + clickDisableButton = "click-disable-button" + } + export class FocusSymbol { + readonly debugName: string; + readonly r: number; + constructor(debugName: string); + toString(): string; + } + const FOCUS_DISABLED: FocusSymbol; + const FOCUS_AUTO: FocusSymbol; + export type FocusKey = typeof FOCUS_DISABLED | typeof FOCUS_AUTO | UniqueFocusKey; + export type UniqueFocusKey = FocusSymbol | string | number; + export type Action = () => void | boolean; + export type Action1D = (value: number) => void | boolean; + export interface InputActionsDefinition { + "Move Horizontal": Action1D; + "Change Slider Value": Action1D; + "Change Tool Option": Action1D; + "Change Value": Action1D; + "Change Line Schedule": Action1D; + "Select Popup Button": Action1D; + "Move Vertical": Action1D; + "Switch Radio Station": Action1D; + "Scroll Vertical": Action1D; + "Scroll Assets": Action1D; + "Select": Action; + "Purchase Dev Tree Node": Action; + "Select Chirp Sender": Action; + "Save Game": Action; + "Overwrite Save": Action; + "Confirm": Action; + "Expand Group": Action; + "Collapse Group": Action; + "Select Route": Action; + "Remove Operating District": Action; + "Upgrades Menu": Action; + "Purchase Map Tile": Action; + "Unfollow Citizen": Action; + "Like Chirp": Action; + "Unlike Chirp": Action; + "Enable Info Mode": Action; + "Disable Info Mode": Action; + "Toggle Tool Color Picker": Action; + "Cinematic Mode": Action; + "Photo Mode": Action; + "Focus Citizen": Action; + "Unfocus Citizen": Action; + "Focus Line Panel": Action; + "Focus Occupants Panel": Action; + "Focus Info Panel": Action; + "Close": Action; + "Back": Action; + "Leave Underground Mode": Action; + "Leave Info View": Action; + "Leave Map Tile View": Action; + "Jump Section": Action1D; + "Switch Tab": Action1D; + "Switch Option Section": Action1D; + "Switch DLC": Action1D; + "Switch Ordering": Action1D; + "Switch Radio Network": Action1D; + "Change Time Scale": Action1D; + "Switch Page": Action1D; + "Default Tool": Action; + "Default Tool UI": Action; + "Tool Options": Action; + "Switch Toolmode": Action; + "Toggle Snapping": Action; + "Toggle Contour Lines": Action; + "Capture Keyframe": Action; + "Reset Property": Action; + "Toggle Property": Action; + "Previous Tutorial Phase": Action; + "Continue Tutorial": Action; + "Finish Tutorial": Action; + "Close Tutorial": Action; + "Focus Tutorial List": Action; + "Start Next Tutorial": Action; + "Pause Simulation": Action; + "Resume Simulation": Action; + "Switch Speed": Action; + "Speed 1": Action; + "Speed 2": Action; + "Speed 3": Action; + "Bulldozer": Action; + "Exit Underground Mode": Action; + "Enter Underground Mode": Action; + "Increase Elevation": Action; + "Decrease Elevation": Action; + "Change Elevation": Action1D; + "Advisor": Action; + "Quicksave": Action; + "Quickload": Action; + "Focus Selected Object": Action; + "Hide UI": Action; + "Map Tile Purchase Panel": Action; + "Info View": Action; + "Progression Panel": Action; + "Economy Panel": Action; + "City Information Panel": Action; + "Statistic Panel": Action; + "Transportation Overview Panel": Action; + "Notification Panel": Action; + "Chirper Panel": Action; + "Lifepath Panel": Action; + "Event Journal Panel": Action; + "Radio Panel": Action; + "Photo Mode Panel": Action; + "Take Photo": Action; + "Relocate Selected Object": Action; + "Toggle Selected Object Active": Action; + "Delete Selected Object": Action; + "Toggle Selected Object Emptying": Action; + "Toggle Selected Lot Edit": Action; + "Toggle Follow Selected Citizen": Action; + "Toggle Traffic Routes": Action; + "Pause Menu": Action; + "Load Game": Action; + "Start Game": Action; + "Save Options": Action; + "Switch User": Action; + "Unset Binding": Action; + "Reset Binding": Action; + "Switch Savegame Location": Action1D; + "Show Advanced": Action; + "Hide Advanced": Action; + "Select Directory": Action; + "Search Options": Action; + "Clear Search": Action; + "Credit Speed": Action1D; + "Debug UI": Action; + "Debug Prefab Tool": Action; + "Debug Change Field": Action1D; + "Debug Multiplier": Action1D; + } + export type InputAction = keyof InputActionsDefinition; + export type InputActionName = InputAction | string; + export enum WidgetType { + Column = "Game.UI.Widgets.Column", + Row = "Game.UI.Widgets.Row", + Scrollable = "Game.UI.Widgets.Scrollable", + PageView = "Game.UI.Widgets.PageView", + PageLayout = "Game.UI.Widgets.PageLayout", + Divider = "Game.UI.Widgets.Divider", + Label = "Game.UI.Widgets.Label", + MultilineText = "Game.UI.Widgets.MultilineText", + Breadcrumbs = "Game.UI.Widgets.Breadcrumbs", + Button = "Game.UI.Widgets.Button", + ButtonRow = "Game.UI.Widgets.ButtonRow", + IconButton = "Game.UI.Widgets.IconButton", + IconButtonGroup = "Game.UI.Widgets.IconButtonGroup", + Group = "Game.UI.Widgets.Group", + ExpandableGroup = "Game.UI.Widgets.ExpandableGroup", + PagedList = "Game.UI.Widgets.PagedList", + ValueField = "Game.UI.Widgets.ValueField", + LocalizedValueField = "Game.UI.Widgets.LocalizedValueField", + ToggleField = "Game.UI.Widgets.ToggleField", + IntInputField = "Game.UI.Widgets.IntInputField", + IntSliderField = "Game.UI.Widgets.IntSliderField", + Int2InputField = "Game.UI.Widgets.Int2InputField", + Int3InputField = "Game.UI.Widgets.Int3InputField", + Int4InputField = "Game.UI.Widgets.Int4InputField", + UIntInputField = "Game.UI.Widgets.UIntInputField", + UIntSliderField = "Game.UI.Widgets.UIntSliderField", + TimeSliderField = "Game.UI.Widgets.TimeSliderField", + TimeBoundsSliderField = "Game.UI.Widgets.TimeBoundsSliderField", + FloatInputField = "Game.UI.Widgets.FloatInputField", + FloatSliderField = "Game.UI.Widgets.FloatSliderField", + Float2InputField = "Game.UI.Widgets.Float2InputField", + Float2SliderField = "Game.UI.Widgets.Float2SliderField", + Float3InputField = "Game.UI.Widgets.Float3InputField", + Float3SliderField = "Game.UI.Widgets.Float3SliderField", + EulerAnglesField = "Game.UI.Widgets.EulerAnglesField", + Float4InputField = "Game.UI.Widgets.Float4InputField", + Float4SliderField = "Game.UI.Widgets.Float4SliderField", + Bounds1SliderField = "Game.UI.Widgets.Bounds1SliderField", + Bounds1InputField = "Game.UI.Widgets.Bounds1InputField", + Bounds2InputField = "Game.UI.Widgets.Bounds2InputField", + Bounds3InputField = "Game.UI.Widgets.Bounds3InputField", + Bezier4x3Field = "Game.UI.Widgets.Bezier4x3Field", + RangedSliderField = "Game.UI.Widgets.RangedSliderField", + StringInputField = "Game.UI.Widgets.StringInputField", + ColorField = "Game.UI.Widgets.ColorField", + GradientSliderField = "Game.UI.Widgets.GradientSliderField", + AnimationCurveField = "Game.UI.Widgets.AnimationCurveField", + EnumField = "Game.UI.Widgets.EnumField", + FlagsField = "Game.UI.Widgets.FlagsField", + PopupValueField = "Game.UI.Widgets.PopupValueField", + DropdownField = "Game.UI.Widgets.DropdownField", + DirectoryPickerButton = "Game.UI.Widgets.DirectoryPickerButton", + SeasonsField = "Game.UI.Widgets.SeasonsField", + ImageField = "Game.UI.Widgets.ImageField" + } + export type PathSegment = string | number; + export type Path = PathSegment[]; + export interface BaseWidget { + disabled?: boolean; + hidden?: boolean; + } + export interface WidgetIdentifier { + group: string; + path: Path; + } + export interface Named { + displayName: LocElement; + description?: LocElement; + } + export interface TooltipTarget { + tooltip?: LocElement | null; + } + export interface WidgetTutorialTarget { + tutorialTag: string | null; + } + export interface IconButton extends TooltipTarget, WidgetTutorialTarget { + icon: string; + selected: boolean; + disabled: boolean; + } + export interface WarningSign { + warning?: boolean; + } + export enum TooltipPos { + Title = 0, + Container = 1 + } + export interface Group extends Named, TooltipTarget { + tooltipPos?: TooltipPos; + } + export interface Field extends BaseWidget, Named, TooltipTarget, WidgetTutorialTarget { + value: T; + } + export interface MinMaxField extends Field { + min?: T; + max?: T; + } + export interface ToggleField extends Field, WarningSign { + } + export interface IntInputFieldBase extends Field { + min?: number; + max?: number; + step?: number; + stepMultiplier?: number; + } + export interface IntSliderFieldBase extends Field { + min: number; + max: number; + step?: number; + stepMultiplier?: number; + unit?: string | null; + scaleDragVolume?: boolean; + updateOnDragEnd: boolean; + } + export type IntInputField = IntInputFieldBase; + export interface IntSliderField extends IntSliderFieldBase, WarningSign { + separateThousands?: boolean; + signed?: boolean; + } + export interface FloatInputFieldBase extends MinMaxField { + fractionDigits?: number; + step?: number; + stepMultiplier?: number; + } + export interface FloatInputField extends FloatInputFieldBase { + } + export interface FloatSliderFieldBase extends Field { + min: number; + max: number; + fractionDigits?: number; + step?: number; + unit?: string | null; + scaleDragVolume?: boolean; + updateOnDragEnd: boolean; + } + export interface FloatSliderField extends FloatSliderFieldBase, WarningSign { + separateThousands?: boolean; + maxValueWithFraction?: number; + signed?: boolean; + } + export interface ColorField extends Field { + hdr?: boolean; + showAlpha: boolean; + } + export interface EnumField extends Field, WarningSign { + enumMembers: EnumMember[]; + } + export interface EnumMember { + value: T; + displayName: LocElement; + disabled?: boolean; + } + export interface DropdownField extends Field, WarningSign { + items: DropdownItem[]; + } + export interface DropdownItem { + value: T; + displayName: LocElement; + disabled?: boolean; + } + export interface Widget

{ + path: string | number; + props: P; + children: Widget[]; + } + export type WidgetFromMap> = Widget>; + export interface TimeSettings { + ticksPerDay: number; + daysPerYear: number; + epochTicks: number; + epochYear: number; + } + const timeSettings$: ValueBinding; + const ticks$: ValueBinding; + const day$: ValueBinding; + const lightingState$: ValueBinding; + const simulationPaused$: ValueBinding; + const simulationSpeed$: ValueBinding; + const simulationPausedBarrier$: EventBinding; + function setSimulationPaused(paused: boolean): void; + function setSimulationSpeed(speedIndex: number): void; + export enum LightingState { + Dawn = 0, + Sunrise = 1, + Day = 2, + Sunset = 3, + Dusk = 4, + Night = 5 + } + export interface SimulationDate { + year: number; + month: number; + } + export interface SimulationTime { + hour: number; + minute: number; + } + export interface SimulationDateTime { + year: number; + month: number; + hour: number; + minute: number; + } + function dateEquals(a: SimulationDate, b: SimulationDate): boolean; + function calculateTimeFromMinutesSinceMidnight(minutes: number): SimulationTime; + function calculateDateFromDays(settings: TimeSettings, days: number): SimulationDate; + function calculateDateFromTicks(settings: TimeSettings, ticks: number): SimulationDate; + function calculateDateTimeFromTicks(settings: TimeSettings, ticks: number): SimulationDateTime; + function calculateMinutesSinceMidnightFromTicks(settings: TimeSettings, ticks: number): number; + const CONSUMPTION_PROPERTY = "prefabs.ConsumptionProperty"; + export interface ConsumptionProperty { + electricityConsumption: number; + waterConsumption: number; + garbageAccumulation: number; + } + const POLLUTION_PROPERTY = "prefabs.PollutionProperty"; + export interface PollutionProperty { + groundPollution: Pollution; + airPollution: Pollution; + noisePollution: Pollution; + } + export enum Pollution { + none = 0, + low = 1, + medium = 2, + high = 3 + } + const ELECTRICITY_PROPERTY = "prefabs.ElectricityProperty"; + export interface ElectricityProperty { + labelId: string; + minCapacity: number; + maxCapacity: number; + voltage: Voltage; + } + export enum Voltage { + low = 0, + high = 1, + both = 2 + } + const TRANSPORT_STOP_PROPERTY = "prefabs.TransportStopProperty"; + export interface TransportStopProperty { + stops: { + [key: string]: number; + }; + } + const UPKEEPNUMBER_PROPERTY = "prefabs.UpkeepIntProperty"; + export interface UpkeepNumberProperty { + labelId: string; + unit: Unit; + value: number; + signed: boolean; + } + const UPKEEPNUMBER2_PROPERTY = "prefabs.UpkeepInt2Property"; + export interface UpkeepNumber2Property { + labelId: string; + unit: Unit; + value: Number2; + signed: boolean; + } + export interface PrefabProperties extends Properties { + [UPKEEPNUMBER_PROPERTY]: UpkeepNumberProperty; + [UPKEEPNUMBER2_PROPERTY]: UpkeepNumber2Property; + [CONSUMPTION_PROPERTY]: ConsumptionProperty; + [POLLUTION_PROPERTY]: PollutionProperty; + [ELECTRICITY_PROPERTY]: ElectricityProperty; + [TRANSPORT_STOP_PROPERTY]: TransportStopProperty; + } + export type PrefabProperty = TypeFromMap; + export interface PrefabRequirementBase { + entity: Entity; + locked: boolean; + } + export interface MilestoneRequirement extends PrefabRequirementBase { + index: number; + } + export interface DevTreeNodeRequirement extends PrefabRequirementBase { + name: string; + } + export interface StrictObjectBuiltRequirement extends PrefabRequirementBase { + labelId: string | null; + progress: number; + icon: string; + requirement: string; + minimumCount: number; + isUpgrade: boolean; + } + export interface ZoneBuiltRequirement extends PrefabRequirementBase { + labelId: string | null; + progress: number; + icon: string; + requiredTheme: string | null; + requiredZone: string | null; + requiredType: AreaType; + minimumSquares: number; + minimumCount: number; + minimumLevel: number; + } + export enum AreaType { + none = 0, + residential = 1, + commercial = 2, + industrial = 3 + } + export interface CitizenRequirement extends PrefabRequirementBase { + labelId: string | null; + progress: number; + minimumPopulation: number; + minimumHappiness: number; + } + export interface ProcessingRequirement extends PrefabRequirementBase { + labelId: string | null; + progress: number; + icon: string; + resourceType: string; + minimumProducedAmount: number; + } + export interface ObjectBuiltRequirement extends UnlockRequirement { + name: string; + minimumCount: number; + } + export interface UnlockRequirement extends PrefabRequirementBase { + labelId: string | null; + progress: number; + } + export interface TutorialRequirement extends PrefabRequirementBase { + } + export enum PrefabRequirementType { + Milestone = "prefabs.MilestoneRequirement", + DevTreeNode = "prefabs.DevTreeNodeRequirement", + StrictObjectBuilt = "prefabs.StrictObjectBuiltRequirement", + ZoneBuilt = "prefabs.ZoneBuiltRequirement", + Citizen = "prefabs.CitizenRequirement", + Processing = "prefabs.ProcessingRequirement", + ObjectBuilt = "prefabs.ObjectBuiltRequirement", + Unlock = "prefabs.UnlockRequirement", + Tutorial = "prefabs.TutorialRequirement", + PrefabUnlocked = "prefabs.PrefabUnlockedRequirement" + } + export interface PrefabRequirements { + [PrefabRequirementType.Milestone]: MilestoneRequirement; + [PrefabRequirementType.DevTreeNode]: DevTreeNodeRequirement; + [PrefabRequirementType.StrictObjectBuilt]: StrictObjectBuiltRequirement; + [PrefabRequirementType.ZoneBuilt]: ZoneBuiltRequirement; + [PrefabRequirementType.Citizen]: CitizenRequirement; + [PrefabRequirementType.Processing]: ProcessingRequirement; + [PrefabRequirementType.ObjectBuilt]: ObjectBuiltRequirement; + [PrefabRequirementType.Unlock]: UnlockRequirement; + [PrefabRequirementType.Tutorial]: TutorialRequirement; + [PrefabRequirementType.PrefabUnlocked]: UnlockRequirement; + } + export type PrefabRequirement = TypeFromMap; + export interface Theme { + entity: Entity; + name: string; + icon: string; + } + export interface UnlockingRequirements { + requireAny: PrefabRequirement[]; + requireAll: PrefabRequirement[]; + } + export interface PrefabDetails { + entity: Entity; + name: string; + uiTag: string; + icon: string; + dlc: string | null; + preview: string | null; + titleId: string; + descriptionId: string | null; + locked: boolean; + unique: boolean; + placed: boolean; + constructionCost: NumericProperty | null; + effects: PrefabEffect[]; + properties: PrefabProperty[]; + requirements: UnlockingRequirements; + } + const themes$: ValueBinding; + const prefabDetails$: MapBinding; + const manualUITags$: ValueBinding; + const emptyPrefabDetails: PrefabDetails; + export interface ManualUITagsConfiguration { + chirperPanel: string; + chirperPanelButton: string; + chirperPanelChirps: string; + cityInfoPanel: string; + cityInfoPanelButton: string; + cityInfoPanelDemandPage: string; + cityInfoPanelDemandTab: string; + cityInfoPanelPoliciesPage: string; + cityInfoPanelPoliciesTab: string; + economyPanelBudgetBalance: string; + economyPanelBudgetExpenses: string; + economyPanelBudgetPage: string; + economyPanelBudgetRevenue: string; + economyPanelBudgetTab: string; + economyPanelButton: string; + economyPanelLoansAccept: string; + economyPanelLoansPage: string; + economyPanelLoansSlider: string; + economyPanelLoansTab: string; + economyPanelProductionPage: string; + economyPanelProductionResources: string; + economyPanelProductionTab: string; + economyPanelServicesBudget: string; + economyPanelServicesList: string; + economyPanelServicesPage: string; + economyPanelServicesTab: string; + economyPanelTaxationEstimate: string; + economyPanelTaxationPage: string; + economyPanelTaxationRate: string; + economyPanelTaxationTab: string; + economyPanelTaxationType: string; + eventJournalPanel: string; + eventJournalPanelButton: string; + infoviewsButton: string; + infoviewsMenu: string; + infoviewsPanel: string; + infoviewsFireHazard: string; + lifePathPanel: string; + lifePathPanelBackButton: string; + lifePathPanelButton: string; + lifePathPanelChirps: string; + lifePathPanelDetail: string; + mapTilePanel: string; + mapTilePanelButton: string; + mapTilePanelResources: string; + mapTilePanelPurchase: string; + photoModePanel: string; + photoModePanelButton: string; + photoModePanelHideUI: string; + photoModePanelTakePicture: string; + photoModeTab: string; + photoModePanelTitle: string; + photoModeCinematicCameraToggle: string; + cinematicCameraPanel: string; + cinematicCameraPanelCaptureKey: string; + cinematicCameraPanelPlay: string; + cinematicCameraPanelStop: string; + cinematicCameraPanelHideUI: string; + cinematicCameraPanelSaveLoad: string; + cinematicCameraPanelReset: string; + cinematicCameraPanelTimelineSlider: string; + cinematicCameraPanelTransformCurves: string; + cinematicCameraPanelPropertyCurves: string; + cinematicCameraPanelPlaybackDurationSlider: string; + progressionPanel: string; + progressionPanelButton: string; + progressionPanelDevelopmentNode: string; + progressionPanelDevelopmentPage: string; + progressionPanelDevelopmentService: string; + progressionPanelDevelopmentTab: string; + progressionPanelDevelopmentUnlockableNode: string; + progressionPanelDevelopmentUnlockNode: string; + progressionPanelMilestoneRewards: string; + progressionPanelMilestoneRewardsMoney: string; + progressionPanelMilestoneRewardsDevPoints: string; + progressionPanelMilestoneRewardsMapTiles: string; + progressionPanelMilestonesList: string; + progressionPanelMilestonesPage: string; + progressionPanelMilestonesTab: string; + progressionPanelMilestoneXP: string; + radioPanel: string; + radioPanelAdsToggle: string; + radioPanelButton: string; + radioPanelNetworks: string; + radioPanelStations: string; + radioPanelVolumeSlider: string; + statisticsPanel: string; + statisticsPanelButton: string; + statisticsPanelMenu: string; + statisticsPanelTimeScale: string; + toolbarBulldozerBar: string; + toolbarDemand: string; + toolbarSimulationDateTime: string; + toolbarSimulationSpeed: string; + toolbarSimulationToggle: string; + toolbarUnderground: string; + toolOptions: string; + toolOptionsBrushSize: string; + toolOptionsBrushStrength: string; + toolOptionsElevation: string; + toolOptionsElevationDecrease: string; + toolOptionsElevationIncrease: string; + toolOptionsElevationStep: string; + toolOptionsModes: string; + toolOptionsVegatationAge: string; + toolOptionsModesComplexCurve: string; + toolOptionsModesContinuous: string; + toolOptionsModesGrid: string; + toolOptionsModesReplace: string; + toolOptionsModesSimpleCurve: string; + toolOptionsModesStraight: string; + toolOptionsParallelMode: string; + toolOptionsParallelModeOffset: string; + toolOptionsParallelModeOffsetDecrease: string; + toolOptionsParallelModeOffsetIncrease: string; + toolOptionsSnapping: string; + toolOptionsThemes: string; + toolOptionsAssetPacks: string; + toolOptionsUnderground: string; + transportationOverviewPanel: string; + transportationOverviewPanelButton: string; + transportationOverviewPanelLegend: string; + transportationOverviewPanelLines: string; + transportationOverviewPanelTabCargo: string; + transportationOverviewPanelTabPublicTransport: string; + transportationOverviewPanelTransportTypes: string; + selectedInfoPanel: string; + selectedInfoPanelTitle: string; + selectedInfoPanelPolicies: string; + selectedInfoPanelDelete: string; + pauseMenuButton: string; + upgradeGrid: string; + assetGrid: string; + actionHints: string; + assetImportButton: string; + editorInfoViewsPanel: string; + resetTODButton: string; + simulationPlayButton: string; + tutorialsToggle: string; + workspaceTitleBar: string; + selectProjectRoot: string; + selectAssets: string; + selectTemplate: string; + importButton: string; + } + export interface Infoview { + entity: Entity; + id: string; + icon: string | null; + locked: boolean; + uiTag: string; + group: number; + editor: boolean; + requirements: UnlockingRequirements; + } + export interface ActiveInfoview { + entity: Entity; + id: string; + icon: string; + uiTag: string; + infomodes: Infomode[]; + editor: boolean; + } + export interface Infomode { + entity: Entity; + id: string; + uiTag: string; + active: boolean; + priority: number; + color: Color | null; + gradientLegend: InfomodeGradientLegend | null; + colorLegends: InfomodeColorLegend[]; + type: string; + } + export interface InfomodeGradientLegend { + lowLabel: LocElement | null; + highLabel: LocElement | null; + gradient: Gradient; + } + export interface InfomodeColorLegend { + color: Color; + label: LocElement; + } + const infoviews$: ValueBinding; + const activeInfoview$: ValueBinding; + function closeInfoviewMenu(): void; + function setActiveInfoview(entity: Entity): void; + function clearActiveInfoview(): void; + function setInfomodeActive(entity: Entity, active: boolean, priority: number): void; + const electricityConsumption$: ValueBinding; + const electricityProduction$: ValueBinding; + const electricityTransmitted$: ValueBinding; + const electricityExport$: ValueBinding; + const electricityImport$: ValueBinding; + const electricityAvailability$: ValueBinding; + const electricityTransmission$: ValueBinding; + const electricityTrade$: ValueBinding; + const batteryCharge$: ValueBinding; + const waterCapacity$: ValueBinding; + const waterConsumption$: ValueBinding; + const sewageCapacity$: ValueBinding; + const sewageConsumption$: ValueBinding; + const waterExport$: ValueBinding; + const waterImport$: ValueBinding; + const sewageExport$: ValueBinding; + const sewageAvailability$: ValueBinding; + const waterAvailability$: ValueBinding; + const waterTrade$: ValueBinding; + const elementaryEligible$: ValueBinding; + const highSchoolEligible$: ValueBinding; + const collegeEligible$: ValueBinding; + const universityEligible$: ValueBinding; + const elementaryCapacity$: ValueBinding; + const highSchoolCapacity$: ValueBinding; + const collegeCapacity$: ValueBinding; + const universityCapacity$: ValueBinding; + const educationData$: ValueBinding; + const elementaryStudents$: ValueBinding; + const highSchoolStudents$: ValueBinding; + const collegeStudents$: ValueBinding; + const universityStudents$: ValueBinding; + const elementaryAvailability$: ValueBinding; + const highSchoolAvailability$: ValueBinding; + const collegeAvailability$: ValueBinding; + const universityAvailability$: ValueBinding; + const transportSummaries$: ValueBinding; + const averageHealth$: ValueBinding; + const cemeteryUse$: ValueBinding; + const cemeteryCapacity$: ValueBinding; + const deathRate$: ValueBinding; + const processingRate$: ValueBinding; + const sickCount$: ValueBinding; + const patientCount$: ValueBinding; + const patientCapacity$: ValueBinding; + const healthcareAvailability$: ValueBinding; + const deathcareAvailability$: ValueBinding; + const cemeteryAvailability$: ValueBinding; + const garbageProcessingRate$: ValueBinding; + const landfillCapacity$: ValueBinding; + const processingAvailability$: ValueBinding; + const landfillAvailability$: ValueBinding; + const garbageProductionRate$: ValueBinding; + const storedGarbage$: ValueBinding; + const parkingCapacity$: ValueBinding; + const parkingIncome$: ValueBinding; + const parkedCars$: ValueBinding; + const parkingAvailability$: ValueBinding; + const trafficFlow$: ValueBinding; + const averageGroundPollution$: ValueBinding; + const averageAirPollution$: ValueBinding; + const averageWaterPollution$: ValueBinding; + const averageNoisePollution$: ValueBinding; + const averageFireHazard$: ValueBinding; + const averageCrimeProbability$: ValueBinding; + const jailAvailability$: ValueBinding; + const prisonAvailability$: ValueBinding; + const crimeProducers$: ValueBinding; + const crimeProbability$: ValueBinding; + const jailCapacity$: ValueBinding; + const arrestedCriminals$: ValueBinding; + const inJail$: ValueBinding; + const prisonCapacity$: ValueBinding; + const prisoners$: ValueBinding; + const inPrison$: ValueBinding; + const criminals$: ValueBinding; + const crimePerMonth$: ValueBinding; + const escapedRate$: ValueBinding; + const averageLandValue$: ValueBinding; + const residentialLevels$: ValueBinding; + const commercialLevels$: ValueBinding; + const industrialLevels$: ValueBinding; + const officeLevels$: ValueBinding; + const shelteredCount$: ValueBinding; + const shelterCapacity$: ValueBinding; + const shelterAvailability$: ValueBinding; + const attractiveness$: ValueBinding; + const averageHotelPrice$: ValueBinding; + const tourismRate$: ValueBinding; + const weatherEffect$: ValueBinding; + const mailProductionRate$: ValueBinding; + const collectedMail$: ValueBinding; + const deliveredMail$: ValueBinding; + const postServiceAvailability$: ValueBinding; + const population$: ValueBinding; + const employed$: ValueBinding; + const jobs$: ValueBinding; + const unemployment$: ValueBinding; + const birthRate$: ValueBinding; + const homeless$: ValueBinding; + const homelessness$: ValueBinding; + const movedIn$: ValueBinding; + const movedAway$: ValueBinding; + const ageData$: ValueBinding; + const commercialProfitability$: ValueBinding; + const industrialProfitability$: ValueBinding; + const officeProfitability$: ValueBinding; + const topImportNames$: ValueBinding; + const topImportColors$: ValueBinding; + const topImportData$: ValueBinding; + const topExportNames$: ValueBinding; + const topExportColors$: ValueBinding; + const topExportData$: ValueBinding; + const availableOil$: ValueBinding; + const availableOre$: ValueBinding; + const availableForest$: ValueBinding; + const availableFertility$: ValueBinding; + const oilExtractionRate$: ValueBinding; + const oreExtractionRate$: ValueBinding; + const forestExtractionRate$: ValueBinding; + const fertilityExtractionRate$: ValueBinding; + const forestRenewalRate$: ValueBinding; + const fertilityRenewalRate$: ValueBinding; + const availableFish$: ValueBinding; + const fishExtractionRate$: ValueBinding; + const fishRenewalRate$: ValueBinding; + const workplacesData$: ValueBinding; + const employeesData$: ValueBinding; + const worksplaces$: ValueBinding; + const workers$: ValueBinding; + export interface IndicatorValue { + min: number; + max: number; + current: number; + } + export interface ChartData { + values: number[]; + total: number; + } + export interface TransportSummaries { + passengerSummaries: PassengerSummary[]; + cargoSummaries: CargoSummary[]; + } + export interface PassengerSummary { + id: string; + icon: string; + locked: boolean; + lineCount: number; + touristCount: number; + citizenCount: number; + requirements: UnlockingRequirements; + } + export interface CargoSummary { + id: string; + icon: string; + locked: boolean; + lineCount: number; + cargoCount: number; + requirements: UnlockingRequirements; + } + function useInfoviewToggle(infoviewId: string): (() => void) | undefined; + export interface NotificationData { + key: string; + count: number; + iconPath: string; + } + export interface FollowedCitizen { + entity: Entity; + name: Name; + age: string; + } + export interface LifePathDetails { + entity: Entity; + name: Name; + birthDay: number; + age: string; + education: string; + wealth: string; + occupation: string; + jobLevel: string; + residenceName: Name | null; + residenceEntity: Entity | null; + residenceKey: string; + workplaceName: Name | null; + workplaceEntity: Entity | null; + workplaceKey: string; + schoolName: Name | null; + schoolEntity: Entity | null; + conditions: NotificationData[]; + happiness: NotificationData | null; + state: string; + } + export interface LifePathEvent { + entity: Entity; + date: number; + messageId: string; + } + export enum LifePathItemType { + Chirp = "chirper.Chirp", + LogEntry = "lifePath.LifePathEvent" + } + export interface LifePathItems { + [LifePathItemType.Chirp]: Chirp; + [LifePathItemType.LogEntry]: LifePathEvent; + } + export type LifePathItem = TypeFromMap; + const followedCitizens$: ValueBinding; + const lifePathDetails$: MapBinding; + const lifePathItems$: MapBinding; + const maxFollowedCitizens$: ValueBinding; + function followCitizen(citizen: Entity): void; + function unfollowCitizen(citizen: Entity): void; + const mapTilePanelVisible$: ValueBinding; + const mapTileViewActive$: ValueBinding; + const buildableLand$: ValueBinding; + const availableWater$: ValueBinding; + const resources$$1: ValueBinding; + const purchasePrice$: ValueBinding; + const purchaseUpkeep$: ValueBinding; + const purchaseFlags$: ValueBinding; + const permits$: ValueBinding; + const permitCost$: ValueBinding; + function setMapTileViewActive(enabled: boolean): void; + function disableMapTileView(): void; + function purchaseMapTiles(): void; + export interface MapTileResource { + id: string; + icon: string; + value: number; + unit: Unit; + } + export enum MapTileStatus { + None = 0, + NoCurrentlyAvailable = 1, + NoAvailable = 2, + NoSelection = 4, + InsufficientFunds = 8, + InsufficientPermits = 16 + } + const group$1 = "photoMode"; + function resetCamera(): void; + const overlayHidden$: ValueBinding; + function setOverlayHidden(overlayHidden: boolean): void; + const orbitCameraActive$: ValueBinding; + function toggleOrbitCameraActive(): void; + function takeScreenshot(): void; + export interface Tab { + id: string; + icon: string; + } + function selectTab(tab: string): void; + function toggleCinematicCamera(visible: boolean): void; + const cinematicCameraVisible$: ValueBinding; + const tabs$: ValueBinding; + const selectedTab$: ValueBinding; + export enum PhotoWidgetType { + DropdownField = "Game.UI.Widgets.DropdownField" + } + export interface PhotoModeWidgets { + [WidgetType.FloatSliderField]: FloatSliderField; + [WidgetType.IntSliderField]: IntSliderField; + [WidgetType.Group]: Group; + [WidgetType.ToggleField]: ToggleField; + [WidgetType.FloatInputField]: FloatInputField; + [WidgetType.IntInputField]: IntInputField; + [WidgetType.IconButton]: IconButton; + [WidgetType.EnumField]: EnumField; + [PhotoWidgetType.DropdownField]: DropdownField; + [WidgetType.ColorField]: ColorField; + } + export type PhotoModeWidget = WidgetFromMap; + const root: WidgetIdentifier; + const adjustments$: ValueBinding; + const cityPolicies$: ValueBinding; + function setCityPolicy(entity: Entity, active: boolean, value?: number): void; + function setPolicy(entity: Entity, active: boolean, value?: number): void; + export interface PolicyData { + id: string; + icon: string; + entity: Entity; + active: boolean; + locked: boolean; + uiTag: string; + requirements: UnlockingRequirements; + data: PolicySliderData | null; + } + export interface PolicySliderData { + value: number; + range: Bounds1; + default: number; + step: number; + unit: Unit; + } + export interface PolicySliderProp { + sliderData: PolicySliderData; + } + export interface DevTreeService { + entity: Entity; + name: string; + icon: string; + locked: boolean; + uiTag: string; + requirements: UnlockingRequirements; + } + export interface DevTreeServiceDetails { + entity: Entity; + name: string; + icon: string; + locked: boolean; + milestoneRequirement: number; + } + export interface DevTreeNode { + entity: Entity; + name: string; + icon: string; + cost: number; + locked: boolean; + position: Number2; + requirements: Entity[]; + unlockable: boolean; + } + export interface DevTreeNodeDetails { + entity: Entity; + name: string; + icon: string; + cost: number; + locked: boolean; + unlockable: boolean; + requirementCount: number; + milestoneRequirement: number; + } + const devPoints$: ValueBinding; + const services$$2: ValueBinding; + const serviceDetails$$1: MapBinding; + const nodes$: MapBinding; + const nodeDetails$: MapBinding; + const selectedDevTree$: { + readonly listeners: { + listener: BindingListener | undefined; + set: (listener: BindingListener) => void; + call: (newValue: Entity) => void; + }[]; + disposed: boolean; + _value: Entity; + readonly registered: boolean; + readonly value: Entity; + subscribe: (listener?: BindingListener | undefined) => { + readonly value: Entity; + setChangeListener: (listener: BindingListener) => void; + dispose(): void; + }; + dispose: () => void; + update: (newValue: Entity) => void; + }; + const selectedNode$: { + readonly listeners: { + listener: BindingListener | undefined; + set: (listener: BindingListener) => void; + call: (newValue: Entity) => void; + }[]; + disposed: boolean; + _value: Entity; + readonly registered: boolean; + readonly value: Entity; + subscribe: (listener?: BindingListener | undefined) => { + readonly value: Entity; + setChangeListener: (listener: BindingListener) => void; + dispose(): void; + }; + dispose: () => void; + update: (newValue: Entity) => void; + }; + function purchaseNode(node: Entity): void; + const lockedFeatures$: ValueBinding; + export interface LockedFeature { + name: string; + requirements: UnlockingRequirements; + } + export interface UnlockingProps { + locked: boolean; + requirements: UnlockingRequirements; + } + function useFeatureUnlocking(feature: string): UnlockingProps; + function useFeatureLocked(feature: string): boolean; + function isFeatureLocked(feature: string): boolean; + export interface XpMessage { + amount: number; + reason: string; + } + export interface Milestone { + entity: Entity; + index: number; + major: boolean; + locked: boolean; + } + export interface MilestoneDetails { + entity: Entity; + index: number; + xpRequirement: number; + reward: number; + devTreePoints: number; + mapTiles: number; + loanLimit: number; + image: string; + backgroundColor: Color; + accentColor: Color; + textColor: Color; + locked: boolean; + } + const defaultMilestoneDetails: MilestoneDetails; + export interface Feature { + entity: Entity; + icon: string; + name: string; + } + interface Service$2 { + entity: Entity; + icon: string; + name: string; + devTreeUnlocked: boolean; + assets: Asset[]; + } + export enum MilestoneUnlockType { + Feature = "milestone.Feature", + Service = "milestone.Service", + Zone = "milestone.Asset", + Policy = "milestone.Policy" + } + export interface MilestoneUnlocks { + [MilestoneUnlockType.Feature]: Feature; + [MilestoneUnlockType.Service]: Service$2; + [MilestoneUnlockType.Zone]: Asset; + [MilestoneUnlockType.Policy]: Policy; + } + export type MilestoneUnlock = TypeFromMap; + export interface Asset { + entity: Entity; + name: string; + icon: string; + themes: Entity[]; + } + export interface Policy { + entity: Entity; + name: string; + icon: string; + } + export interface UnlockDetails { + entity: Entity; + icon: string; + titleId: string; + descriptionId: string; + locked: boolean; + hasDevTree: boolean; + } + const achievedMilestone$: ValueBinding; + const achievedMilestoneXP$: ValueBinding; + const nextMilestoneXP$: ValueBinding; + const totalXP$: ValueBinding; + const xpMessageAdded$: EventBinding; + const maxMilestoneReached$: ValueBinding; + const milestones$: ValueBinding; + const unlockedMilestone$: ValueBinding; + function clearUnlockedMilestone(): void; + const milestoneDetails$: MapBinding; + const milestoneUnlocks$: MapBinding; + const unlockDetails$: MapBinding; + const unlockedSignatures$: ValueBinding; + function removeUnlockedSignature(): void; + const radioEnabled$: ValueBinding; + const volume$: ValueBinding; + const paused$: ValueBinding; + const muted$: ValueBinding; + const skipAds$: ValueBinding; + const emergencyMode$: ValueBinding; + const emergencyFocusable$: ValueBinding; + const emergencyMessage$: ValueBinding; + const selectedNetwork$: ValueBinding; + const selectedStation$: ValueBinding; + const networks$: ValueBinding; + const stations$: ValueBinding; + const currentSegment$: ValueBinding; + const segmentChanged$: EventBinding; + function setVolume(volume: number): void; + function setPaused(paused: boolean): void; + function togglePaused(): void; + function setMuted(muted: boolean): void; + function toggleMuted(): void; + function setSkipAds(skipAds: boolean): void; + function toggleSkipAds(): void; + function playPrevious(): void; + function playNext(): void; + function focusEmergency(): void; + function selectNetwork(name: string): void; + function selectStation(name: string): void; + export interface RadioNetwork { + name: string; + nameId: string; + description: string; + descriptionId: string; + icon: string; + } + export interface RadioStation { + name: string; + nameId: string; + description: string; + icon: string; + network: string; + currentProgram: RadioProgram | null; + schedule: RadioProgram[]; + } + export interface RadioProgram { + name: string; + description: string; + startTime: number; + endTime: number; + duration: number; + active: boolean; + } + export interface RadioClip { + title: string; + info: string | null; + } + const selectedEntity$: ValueBinding; + const selectedTrailerController$: ValueBinding; + const selectedUITag$: ValueBinding; + const activeSelection$: ValueBinding; + const selectedInfoPosition$: ValueBinding; + const topSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (ContentPrerequisiteSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed) | (RoadSection & Typed) | (CompanySection & Typed) | (StorageSection & Typed) | (TradedResourcesSection & Typed) | (PrivateVehicleSection & Typed) | (PublicTransportVehicleSection & Typed) | (CargoTransportVehicleSection & Typed) | (DeliveryVehicleSection & Typed) | (HealthcareVehicleSection & Typed) | (FireVehicleSection & Typed) | (PoliceVehicleSection & Typed) | (MaintenanceVehicleSection & Typed) | (DeathcareVehicleSection & Typed) | (PostVehicleSection & Typed) | (GarbageVehicleSection & Typed) | (ExtractorVehicleSection & Typed) | (PassengersSection & Typed) | (CargoSection & Typed) | (StatusSection & Typed) | (CitizenSection & Typed) | (SelectVehiclesSection & Typed) | (DestroyedBuildingSection & Typed) | (DestroyedTreeSection & Typed) | (ComfortSection & Typed) | (UpgradesSection & Typed) | (UpgradePropertiesSection & Typed) | null)[]>; + const middleSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (ContentPrerequisiteSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed) | (RoadSection & Typed) | (CompanySection & Typed) | (StorageSection & Typed) | (TradedResourcesSection & Typed) | (PrivateVehicleSection & Typed) | (PublicTransportVehicleSection & Typed) | (CargoTransportVehicleSection & Typed) | (DeliveryVehicleSection & Typed) | (HealthcareVehicleSection & Typed) | (FireVehicleSection & Typed) | (PoliceVehicleSection & Typed) | (MaintenanceVehicleSection & Typed) | (DeathcareVehicleSection & Typed) | (PostVehicleSection & Typed) | (GarbageVehicleSection & Typed) | (ExtractorVehicleSection & Typed) | (PassengersSection & Typed) | (CargoSection & Typed) | (StatusSection & Typed) | (CitizenSection & Typed) | (SelectVehiclesSection & Typed) | (DestroyedBuildingSection & Typed) | (DestroyedTreeSection & Typed) | (ComfortSection & Typed) | (UpgradesSection & Typed) | (UpgradePropertiesSection & Typed) | null)[]>; + const bottomSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (ContentPrerequisiteSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed) | (RoadSection & Typed) | (CompanySection & Typed) | (StorageSection & Typed) | (TradedResourcesSection & Typed) | (PrivateVehicleSection & Typed) | (PublicTransportVehicleSection & Typed) | (CargoTransportVehicleSection & Typed) | (DeliveryVehicleSection & Typed) | (HealthcareVehicleSection & Typed) | (FireVehicleSection & Typed) | (PoliceVehicleSection & Typed) | (MaintenanceVehicleSection & Typed) | (DeathcareVehicleSection & Typed) | (PostVehicleSection & Typed) | (GarbageVehicleSection & Typed) | (ExtractorVehicleSection & Typed) | (PassengersSection & Typed) | (CargoSection & Typed) | (StatusSection & Typed) | (CitizenSection & Typed) | (SelectVehiclesSection & Typed) | (DestroyedBuildingSection & Typed) | (DestroyedTreeSection & Typed) | (ComfortSection & Typed) | (UpgradesSection & Typed) | (UpgradePropertiesSection & Typed) | null)[]>; + const titleSection$: ValueBinding; + const developerSection$: ValueBinding; + const lineVisualizerSection$: ValueBinding; + const householdSidebarSection$: ValueBinding; + const tooltipTags$: ValueBinding; + const selectedRoute$: ValueBinding; + const selectEntity: (entity: Entity) => void; + const setSelectedRoute: (entity: Entity) => void; + const clearSelection: () => void; + export enum SectionType { + Resource = "Game.UI.InGame.ResourceSection", + LocalServices = "Game.UI.InGame.LocalServicesSection", + Actions = "Game.UI.InGame.ActionsSection", + Description = "Game.UI.InGame.DescriptionSection", + ContentPrerequisite = "Game.UI.InGame.ContentPrerequisiteSection", + Developer = "Game.UI.InGame.DeveloperSection", + Residents = "Game.UI.InGame.ResidentsSection", + HouseholdSidebar = "Game.UI.InGame.HouseholdSidebarSection", + Districts = "Game.UI.InGame.DistrictsSection", + Title = "Game.UI.InGame.TitleSection", + Notifications = "Game.UI.InGame.NotificationsSection", + Policies = "Game.UI.InGame.PoliciesSection", + Profitability = "Game.UI.InGame.ProfitabilitySection", + AverageHappiness = "Game.UI.InGame.AverageHappinessSection", + Schedule = "Game.UI.InGame.ScheduleSection", + Line = "Game.UI.InGame.LineSection", + Lines = "Game.UI.InGame.LinesSection", + Color = "Game.UI.InGame.ColorSection", + LineVisualizer = "Game.UI.InGame.LineVisualizerSection", + TicketPrice = "Game.UI.InGame.TicketPriceSection", + VehicleCount = "Game.UI.InGame.VehicleCountSection", + Attractiveness = "Game.UI.InGame.AttractivenessSection", + Efficiency = "Game.UI.InGame.EfficiencySection", + Employees = "Game.UI.InGame.EmployeesSection", + Upkeep = "Game.UI.InGame.UpkeepSection", + Level = "Game.UI.InGame.LevelSection", + Education = "Game.UI.InGame.EducationSection", + Pollution = "Game.UI.InGame.PollutionSection", + Healthcare = "Game.UI.InGame.HealthcareSection", + Deathcare = "Game.UI.InGame.DeathcareSection", + Garbage = "Game.UI.InGame.GarbageSection", + Police = "Game.UI.InGame.PoliceSection", + Vehicles = "Game.UI.InGame.VehiclesSection", + DispatchedVehicles = "Game.UI.InGame.DispatchedVehiclesSection", + Electricity = "Game.UI.InGame.ElectricitySection", + Transformer = "Game.UI.InGame.TransformerSection", + Battery = "Game.UI.InGame.BatterySection", + Water = "Game.UI.InGame.WaterSection", + Sewage = "Game.UI.InGame.SewageSection", + Fire = "Game.UI.InGame.FireSection", + Prison = "Game.UI.InGame.PrisonSection", + Shelter = "Game.UI.InGame.ShelterSection", + Parking = "Game.UI.InGame.ParkingSection", + Park = "Game.UI.InGame.ParkSection", + Mail = "Game.UI.InGame.MailSection", + Road = "Game.UI.InGame.RoadSection", + Company = "Game.UI.InGame.CompanySection", + Storage = "Game.UI.InGame.StorageSection", + TradedResourcesSection = "Game.UI.InGame.TradedResourcesSection", + PrivateVehicle = "Game.UI.InGame.PrivateVehicleSection", + PublicTransportVehicle = "Game.UI.InGame.PublicTransportVehicleSection", + CargoTransportVehicle = "Game.UI.InGame.CargoTransportVehicleSection", + DeliveryVehicle = "Game.UI.InGame.DeliveryVehicleSection", + HealthcareVehicle = "Game.UI.InGame.HealthcareVehicleSection", + FireVehicle = "Game.UI.InGame.FireVehicleSection", + PoliceVehicle = "Game.UI.InGame.PoliceVehicleSection", + MaintenanceVehicle = "Game.UI.InGame.MaintenanceVehicleSection", + DeathcareVehicle = "Game.UI.InGame.DeathcareVehicleSection", + PostVehicle = "Game.UI.InGame.PostVehicleSection", + GarbageVehicle = "Game.UI.InGame.GarbageVehicleSection", + ExtractorVehicle = "Game.UI.InGame.ExtractorVehicleSection", + Passengers = "Game.UI.InGame.PassengersSection", + Cargo = "Game.UI.InGame.CargoSection", + Load = "Game.UI.InGame.LoadSection", + Status = "Game.UI.InGame.StatusSection", + Citizen = "Game.UI.InGame.CitizenSection", + DummyHuman = "Game.UI.InGame.DummyHumanSection", + Animal = "Game.UI.InGame.AnimalSection", + SelectVehicles = "Game.UI.InGame.SelectVehiclesSection", + DestroyedBuilding = "Game.UI.InGame.DestroyedBuildingSection", + DestroyedTree = "Game.UI.InGame.DestroyedTreeSection", + Comfort = "Game.UI.InGame.ComfortSection", + Upgrades = "Game.UI.InGame.UpgradesSection", + UpgradeProperties = "Game.UI.InGame.UpgradePropertiesSection" + } + export interface SelectedInfoSections { + [SectionType.Resource]: ResourceSection; + [SectionType.LocalServices]: LocalServicesSection; + [SectionType.Actions]: ActionsSection; + [SectionType.Description]: DescriptionSection; + [SectionType.ContentPrerequisite]: ContentPrerequisiteSection; + [SectionType.Developer]: DeveloperSection; + [SectionType.Residents]: ResidentsSection; + [SectionType.HouseholdSidebar]: HouseholdSidebarSection; + [SectionType.Districts]: DistrictsSection; + [SectionType.Title]: TitleSection; + [SectionType.Notifications]: NotificationsSection; + [SectionType.Policies]: PoliciesSection; + [SectionType.Profitability]: ProfitabilitySection; + [SectionType.AverageHappiness]: AverageHappinessSection; + [SectionType.Schedule]: ScheduleSection; + [SectionType.Line]: LineSection; + [SectionType.Lines]: LinesSection; + [SectionType.Color]: ColorSection; + [SectionType.LineVisualizer]: LineVisualizerSection; + [SectionType.TicketPrice]: TicketPriceSection; + [SectionType.VehicleCount]: VehicleCountSection; + [SectionType.Attractiveness]: AttractivenessSection; + [SectionType.Efficiency]: EfficiencySection; + [SectionType.Employees]: EmployeesSection; + [SectionType.Upkeep]: UpkeepSection; + [SectionType.Level]: LevelSection; + [SectionType.Education]: EducationSection; + [SectionType.Pollution]: PollutionSection; + [SectionType.Healthcare]: HealthcareSection; + [SectionType.Deathcare]: DeathcareSection; + [SectionType.Garbage]: GarbageSection; + [SectionType.Police]: PoliceSection; + [SectionType.Vehicles]: VehiclesSection; + [SectionType.DispatchedVehicles]: DispatchedVehiclesSection; + [SectionType.Electricity]: ElectricitySection; + [SectionType.Transformer]: TransformerSection; + [SectionType.Battery]: BatterySection; + [SectionType.Water]: WaterSection; + [SectionType.Sewage]: SewageSection; + [SectionType.Fire]: FireSection; + [SectionType.Prison]: PrisonSection; + [SectionType.Shelter]: ShelterSection; + [SectionType.Parking]: ParkingSection; + [SectionType.Park]: ParkSection; + [SectionType.Mail]: MailSection; + [SectionType.Road]: RoadSection; + [SectionType.Company]: CompanySection; + [SectionType.Storage]: StorageSection; + [SectionType.TradedResourcesSection]: TradedResourcesSection; + [SectionType.PrivateVehicle]: PrivateVehicleSection; + [SectionType.PublicTransportVehicle]: PublicTransportVehicleSection; + [SectionType.CargoTransportVehicle]: CargoTransportVehicleSection; + [SectionType.DeliveryVehicle]: DeliveryVehicleSection; + [SectionType.HealthcareVehicle]: HealthcareVehicleSection; + [SectionType.FireVehicle]: FireVehicleSection; + [SectionType.PoliceVehicle]: PoliceVehicleSection; + [SectionType.MaintenanceVehicle]: MaintenanceVehicleSection; + [SectionType.DeathcareVehicle]: DeathcareVehicleSection; + [SectionType.PostVehicle]: PostVehicleSection; + [SectionType.GarbageVehicle]: GarbageVehicleSection; + [SectionType.ExtractorVehicle]: ExtractorVehicleSection; + [SectionType.Passengers]: PassengersSection; + [SectionType.Cargo]: CargoSection; + [SectionType.Load]: LoadSection; + [SectionType.Status]: StatusSection; + [SectionType.Citizen]: CitizenSection; + [SectionType.DummyHuman]: DummyHumanSection; + [SectionType.Animal]: AnimalSection; + [SectionType.SelectVehicles]: SelectVehiclesSection; + [SectionType.DestroyedBuilding]: DestroyedBuildingSection; + [SectionType.DestroyedTree]: DestroyedTreeSection; + [SectionType.Comfort]: ComfortSection; + [SectionType.Upgrades]: UpgradesSection; + [SectionType.UpgradeProperties]: UpgradePropertiesSection; + } + export type SelectedInfoSection = TypeFromMap; + export interface SelectedInfoSectionBase { + group: string; + tooltipKeys: string[]; + tooltipTags: string[]; + } + export interface ResourceSection extends SelectedInfoSectionBase { + resourceAmount: number; + resourceKey: string; + } + export interface LocalServicesSection extends SelectedInfoSectionBase { + localServiceBuildings: LocalServiceBuilding[]; + } + export interface ActionsSection extends SelectedInfoSectionBase { + focusable: boolean; + focusing: boolean; + following: boolean; + followable: boolean; + moveable: boolean; + deletable: boolean; + disabled: boolean; + disableable: boolean; + emptying: boolean; + emptiable: boolean; + hasLotTool: boolean; + hasTrafficRoutes: boolean; + } + export interface DescriptionSection extends SelectedInfoSectionBase { + localeId: string; + effects: PrefabEffect[]; + } + export interface ContentPrerequisiteSection extends SelectedInfoSectionBase { + contentPrefab: string; + } + export interface DeveloperSection extends SelectedInfoSectionBase { + subsections: DeveloperSubsection[]; + } + export interface ResidentsSection extends SelectedInfoSectionBase { + isHousehold: boolean; + householdCount: number; + maxHouseholds: number; + residentCount: number; + petCount: number; + wealthKey: string; + residence: Name; + residenceEntity: Entity; + residenceKey: string; + educationData: ChartData; + ageData: ChartData; + } + export interface HouseholdSidebarSection extends SelectedInfoSectionBase { + variant: HouseholdSidebarVariant; + residence: HouseholdSidebarItem; + household: HouseholdSidebarItem; + households: number; + residents: number; + pets: number; + } + export interface DistrictsSection extends SelectedInfoSectionBase { + districtMissing: boolean; + districts: District[]; + } + export interface TitleSection extends SelectedInfoSectionBase { + name: Name | null; + vkName: Name | null; + vkLocaleKey: string; + icon: string | null; + } + export interface NotificationsSection extends SelectedInfoSectionBase { + notifications: NotificationData[]; + } + export interface PoliciesSection extends SelectedInfoSectionBase { + policies: PolicyData[]; + } + export interface ProfitabilitySection extends SelectedInfoSectionBase { + profitability: NotificationData; + profitabilityFactors: Factor[]; + } + export interface AverageHappinessSection extends SelectedInfoSectionBase { + averageHappiness: NotificationData; + happinessFactors: Factor[]; + } + export interface ScheduleSection extends SelectedInfoSectionBase { + schedule: number; + } + export interface LineSection extends SelectedInfoSectionBase { + length: number; + stops: number; + usage: number; + cargo: number; + } + export interface LinesSection extends SelectedInfoSectionBase { + hasLines: boolean; + lines: Line[]; + hasPassengers: boolean; + passengers: number; + } + export interface ColorSection extends SelectedInfoSectionBase { + color: Color; + } + export interface LineVisualizerSection extends SelectedInfoSectionBase { + color: Color; + stops: LineStop[]; + vehicles: LineVehicle[]; + segments: LineSegment[]; + stopCapacity: number; + } + export interface TicketPriceSection extends SelectedInfoSectionBase { + sliderData: PolicySliderData; + } + export interface VehicleCountSection extends SelectedInfoSectionBase { + vehicleCount: number; + activeVehicles: number; + vehicleCountMin: number; + vehicleCountMax: number; + } + export interface SelectVehiclesSection extends SelectedInfoSectionBase { + primaryVehicle: VehiclePrefab | null; + secondaryVehicle: VehiclePrefab | null; + primaryVehicles: VehiclePrefab[]; + secondaryVehicles: VehiclePrefab[] | null; + } + export interface AttractivenessSection extends SelectedInfoSectionBase { + attractiveness: number; + baseAttractiveness: number; + factors: AttractivenessFactor[]; + } + export interface EfficiencySection extends SelectedInfoSectionBase { + efficiency: number; + factors: EfficiencyFactor[]; + } + export interface EmployeesSection extends SelectedInfoSectionBase { + employeeCount: number; + maxEmployees: number; + educationDataEmployees: ChartData; + educationDataWorkplaces: ChartData; + } + export interface UpkeepSection extends SelectedInfoSectionBase { + upkeeps: UpkeepItem[]; + wages: number; + total: number; + inactive: boolean; + } + export interface LevelSection extends SelectedInfoSectionBase { + level: number; + maxLevel: number; + isUnderConstruction: boolean; + progress: number; + zone: string; + } + export interface EducationSection extends SelectedInfoSectionBase { + studentCount: number; + studentCapacity: number; + graduationTime: number; + failProbability: number; + } + export interface PollutionSection extends SelectedInfoSectionBase { + groundPollutionKey: Pollution$1; + airPollutionKey: Pollution$1; + noisePollutionKey: Pollution$1; + } + export enum Pollution$1 { + none = 0, + low = 1, + medium = 2, + high = 3 + } + export interface HealthcareSection extends SelectedInfoSectionBase { + patientCount: number; + patientCapacity: number; + } + export interface DeathcareSection extends SelectedInfoSectionBase { + bodyCount: number; + bodyCapacity: number; + processingSpeed: number; + processingCapacity: number; + } + export interface GarbageSection extends SelectedInfoSectionBase { + garbage: number; + garbageCapacity: number; + processingSpeed: number; + processingCapacity: number; + loadKey: string; + } + export interface PoliceSection extends SelectedInfoSectionBase { + prisonerCount: number; + prisonerCapacity: number; + } + export interface VehiclesSection extends SelectedInfoSectionBase { + vehicleKey: string; + vehicleCount: number; + availableVehicleCount: number; + vehicleCapacity: number; + vehicleList: Vehicle[]; + } + export interface DispatchedVehiclesSection extends SelectedInfoSectionBase { + vehicleList: Vehicle[]; + } + export interface ElectricitySection extends SelectedInfoSectionBase { + capacity: number; + production: number; + } + export interface TransformerSection extends SelectedInfoSectionBase { + capacity: number; + flow: number; + } + export interface BatterySection extends SelectedInfoSectionBase { + batteryCharge: number; + batteryCapacity: number; + flow: number; + remainingTime: number; + } + export interface WaterSection extends SelectedInfoSectionBase { + pollution: number; + capacity: number; + lastProduction: number; + } + export interface SewageSection extends SelectedInfoSectionBase { + capacity: number; + lastProcessed: number; + lastPurified: number; + purification: number; + } + export interface FireSection extends SelectedInfoSectionBase { + vehicleEfficiency: number; + disasterResponder: boolean; + } + export interface PrisonSection extends SelectedInfoSectionBase { + prisonerCount: number; + prisonerCapacity: number; + } + export interface ShelterSection extends SelectedInfoSectionBase { + sheltered: number; + shelterCapacity: number; + } + export interface ParkingSection extends SelectedInfoSectionBase { + parkedCars: number; + parkingCapacity: number; + } + export interface ParkSection extends SelectedInfoSectionBase { + maintenance: number; + } + export interface MailSection extends SelectedInfoSectionBase { + sortingRate: number; + sortingCapacity: number; + localAmount: number; + unsortedAmount: number; + outgoingAmount: number; + storedAmount: number; + storageCapacity: number; + localKey: string; + unsortedKey: string; + type: MailSectionType; + } + export enum MailSectionType { + PostFacility = 0, + MailBox = 1 + } + export interface RoadSection extends SelectedInfoSectionBase { + volumeData: number[]; + flowData: number[]; + length: number; + bestCondition: number; + worstCondition: number; + condition: number; + upkeep: number; + } + export interface CompanySection extends SelectedInfoSectionBase { + companyName: Name | null; + isRentable: boolean; + input1: string | null; + input2: string | null; + output: string | null; + sells: string | null; + stores: string | null; + customers: Number2 | null; + } + export interface StorageSection extends SelectedInfoSectionBase { + stored: number; + capacity: number; + status: string; + storageType: string; + rawMaterials: Resource$1[]; + processedGoods: Resource$1[]; + mail: Resource$1[]; + } + export interface TradedResourcesSection extends SelectedInfoSectionBase { + rawMaterials: Resource$1[]; + processedGoods: Resource$1[]; + mail: Resource$1[]; + } + export interface DestroyedBuildingSection extends SelectedInfoSectionBase { + destroyer: string | null; + cleared: boolean; + progress: number; + status: string; + } + export interface DestroyedTreeSection extends SelectedInfoSectionBase { + destroyer: string | null; + } + export interface ComfortSection extends SelectedInfoSectionBase { + comfort: number; + } + export interface UpgradesSection extends SelectedInfoSectionBase { + extensions: Upgrade[]; + subBuildings: Upgrade[]; + } + export interface UpgradePropertiesSection extends SelectedInfoSectionBase { + mainBuilding: Entity; + mainBuildingName: Name; + upgrade: Entity; + type: UpgradeType; + } + export interface VehicleSection extends SelectedInfoSectionBase { + stateKey: string; + owner: Location$1; + fromOutside: boolean; + nextStop: Location$1; + } + export interface VehicleSectionProps extends SelectedInfoSectionProps { + stateKey: string; + owner: Location$1; + fromOutside: boolean; + nextStop: Location$1; + } + export interface VehicleWithLineSection extends VehicleSection { + line: Name | null; + lineEntity: Entity; + } + export interface VehicleWithLineSectionProps extends VehicleSectionProps { + line: Name | null; + lineEntity: Entity; + } + export interface PrivateVehicleSection extends VehicleSection { + keeper: Name | null; + keeperEntity: Entity | null; + vehicleKey: string; + } + export interface PublicTransportVehicleSection extends VehicleWithLineSection { + vehicleKey: string; + } + export interface CargoTransportVehicleSection extends VehicleWithLineSection { + } + export interface DeliveryVehicleSection extends VehicleSection { + resourceKey: string; + vehicleKey: string; + } + export interface HealthcareVehicleSection extends VehicleSection { + patient: Name | null; + patientEntity: Entity | null; + vehicleKey: string; + } + export interface FireVehicleSection extends VehicleSection { + vehicleKey: string; + } + export interface PoliceVehicleSection extends VehicleSection { + criminal: Name | null; + criminalEntity: Entity | null; + vehicleKey: string; + } + export interface MaintenanceVehicleSection extends VehicleSection { + workShift: number; + } + export interface DeathcareVehicleSection extends VehicleSection { + dead: Name | null; + deadEntity: Entity | null; + } + export interface PostVehicleSection extends VehicleSection { + } + export interface GarbageVehicleSection extends VehicleSection { + vehicleKey: string; + } + export interface ExtractorVehicleSection extends VehicleSection { + vehicleKey: string; + } + export interface PassengersSection extends SelectedInfoSectionBase { + expanded: boolean; + passengers: number; + maxPassengers: number; + pets: number; + vehiclePassengerKey: string; + } + export interface CargoSection extends SelectedInfoSectionBase { + expanded: boolean; + cargo: number; + capacity: number; + rawMaterials: Resource$1[]; + processedGoods: Resource$1[]; + mail: Resource$1[]; + cargoKey: string; + } + export interface LoadSection extends SelectedInfoSectionBase { + __Type: "Game.UI.InGame.LoadSection"; + expanded: boolean; + load: number; + capacity: number; + loadKey: string; + } + export interface StatusSection extends SelectedInfoSectionBase { + conditions: NotificationData[]; + notifications: NotificationData[]; + happiness: NotificationData | null; + } + export interface CitizenSection extends SelectedInfoSectionBase { + citizenKey: string; + stateKey: string; + household: Name | null; + householdEntity: Entity | null; + residence: Name | null; + residenceEntity: Entity | null; + residenceKey: string; + workplace: Name | null; + workplaceEntity: Entity | null; + workplaceKey: string; + occupationKey: string; + jobLevelKey: string; + school: Name | null; + schoolEntity: Entity | null; + schoolLevel: number; + educationKey: string; + ageKey: string; + wealthKey: string; + destination: Name | null; + destinationEntity: Entity | null; + destinationKey: string; + } + export interface DummyHumanSection extends SelectedInfoSectionBase { + __Type: "Game.UI.InGame.DummyHumanSection"; + origin: Name | null; + originEntity: Entity | null; + destination: Name | null; + destinationEntity: Entity | null; + } + export interface AnimalSection extends SelectedInfoSectionBase { + __Type: "Game.UI.InGame.AnimalSection"; + typeKey: string; + owner: Name | null; + ownerEntity: Entity | null; + destination: Name | null; + destinationEntity: Entity | null; + } + export enum DeveloperSubsectionType { + GenericInfo = "Game.UI.InGame.GenericInfo", + CapacityInfo = "Game.UI.InGame.CapacityInfo", + InfoList = "Game.UI.InGame.InfoList" + } + export interface DeveloperSubsections { + [DeveloperSubsectionType.GenericInfo]: GenericInfo; + [DeveloperSubsectionType.CapacityInfo]: CapacityInfo; + [DeveloperSubsectionType.InfoList]: InfoList; + } + export type DeveloperSubsection = TypeFromMap; + export interface GenericInfo { + label: string; + value: string; + target: Entity | null; + } + export interface CapacityInfo { + label: string; + value: number; + max: number; + } + export interface InfoList { + label: string; + list: Item[]; + } + export interface District { + name: Name; + entity: Entity; + } + export interface UpgradeInfo { + id: string; + typeIdKey: string; + icon: string; + cost: number; + locked: boolean; + forbidden: boolean; + entity: Entity; + } + export interface Upgrade { + name: Name; + entity: Entity; + disabled: boolean; + focused: boolean; + } + export enum UpgradeType { + Extension = "Extension", + SubBuilding = "SubBuilding" + } + export interface Item { + text: string; + entity: Entity | null; + } + interface Resource$1 { + key: string; + amount: number; + status: string; + } + export interface SelectedInfoSectionProps { + group: string; + tooltipKeys: string[]; + tooltipTags: string[]; + focusKey?: FocusKey; + } + export interface Line { + name: Name; + color: Color; + entity: Entity; + active: boolean; + } + export type LineItem = LineStop | LineVehicle; + const LINE_STOP = "Game.UI.InGame.LineVisualizerSection+LineStop"; + export interface LineStop extends Typed { + entity: Entity; + name: Name; + position: number; + cargo: number; + capacity: number; + isCargo: boolean; + isOutsideConnection: boolean; + } + const LINE_VEHICLE = "Game.UI.InGame.LineVisualizerSection+LineVehicle"; + export interface LineVehicle extends Typed { + entity: Entity; + name: Name; + position: number; + cargo: number; + capacity: number; + isCargo: boolean; + } + export interface LineSegment { + start: number; + end: number; + broken: boolean; + } + export interface Vehicle { + entity: Entity; + name: Name; + stateKey: string; + vehicleKey: string; + } + export interface VehiclePrefab { + entity: Entity; + id: string; + locked: boolean; + requirements: PrefabRequirement[]; + thumbnail: string; + } + export interface LocalServiceBuilding { + name: Name; + serviceIcon: string | null; + entity: Entity; + } + export interface EfficiencyFactor { + factor: string; + value: number; + result: number; + } + export interface AttractivenessFactor { + localeKey: string; + delta: number; + } + export interface UpkeepItem { + count: number; + amount: number; + price: number; + titleId: string; + localeKey: string; + } + interface Location$1 { + entity: Entity; + name: Name; + } + export interface HouseholdSidebarItem { + entity: Entity; + name: Name; + familyName: Name; + icon: string | null; + selected: boolean; + count: number | null; + } + export enum HouseholdSidebarVariant { + Citizen = "Citizen", + Household = "Household", + Building = "Building" + } + function useTooltipParagraph(tooltipIdHashKey: string): string | null; + function useTooltipParagraphs(tooltipIdHashKeys: (string | null)[]): string[] | null; + function useGeneratedTooltipParagraphs(group: string, tooltipKeys: string[], tooltipTags: string[], hideGroupParagraph?: boolean): string[] | null; + export interface StatCategory { + entity: Entity; + key: string; + locked: boolean; + } + export interface StatItem { + category: Entity; + group: Entity; + entity: Entity; + statisticType: number; + unitType: number; + parameterIndex: number; + key: string; + color: Color; + locked: boolean; + isGroup: boolean; + isSubgroup: boolean; + stacked: boolean; + } + const sampleRange$: ValueBinding; + const sampleCount$: ValueBinding; + const activeGroup$: ValueBinding; + const activeCategory$: ValueBinding; + const stacked$: ValueBinding; + const statisticsCategories$: ValueBinding; + const statLabels$: ValueBinding; + const statGroupsMap$: MapBinding; + const statsData$: ValueBinding[]>; + const selectedStatistics$: ValueBinding; + const statUnlockingRequirements$: MapBinding; + const updatesPerDay$: ValueBinding; + function addStat(stat: StatItem): void; + function addStatChildren(stat: StatItem): void; + function removeStat(stat: StatItem): void; + function clearStats(): void; + function setSampleRange(range: number): void; + const taxRate: ValueBinding; + const taxEffect: ValueBinding; + const taxIncome: ValueBinding; + const minTaxRate: ValueBinding; + const maxTaxRate: ValueBinding; + const areaTypes$: ValueBinding; + const areaTaxRates$: MapBinding; + const areaTaxIncomes$: MapBinding; + const areaTaxEffects$: MapBinding; + const areaResourceTaxRanges$: MapBinding; + const areaResources$: MapBinding; + const resourceTaxRates: MapBinding; + const resourceTaxIncomes: MapBinding; + const taxResourceInfos: MapBinding; + export interface TaxAreaType { + index: number; + id: string; + icon: string; + taxRateMin: number; + taxRateMax: number; + resourceTaxRateMin: number; + resourceTaxRateMax: number; + locked: boolean; + } + export interface TaxResource { + resource: number; + area: number; + } + export interface TaxResourceInfo { + id: string; + icon: string; + } + const setTaxRate: (rate: number) => void; + const setAreaTaxRate: (area: number, rate: number) => void; + const setResourceTaxRate: (resource: number, area: number, rate: number) => void; + const activeTool$: ValueBinding; + const bulldozeConfirmationRequested$: EventBinding; + const availableSnapMask$: ValueBinding; + const selectedSnapMask$: ValueBinding; + const allSnapMask$: ValueBinding; + const snapOptionNames$: ValueBinding; + const elevationRange$: ValueBinding; + const elevation$: ValueBinding; + const elevationStep$: ValueBinding; + const parallelModeSupported$: ValueBinding; + const parallelMode$: ValueBinding; + const parallelOffset$: ValueBinding; + const undergroundModeSupported$: ValueBinding; + const undergroundMode$: ValueBinding; + const elevationDownDisabled$: ValueBinding; + const elevationUpDisabled$: ValueBinding; + const colorSupported$: ValueBinding; + const color$: ValueBinding; + const isEditor$: ValueBinding; + const replacingTrees$: ValueBinding; + const distance$: ValueBinding; + const distanceScale$: ValueBinding; + function setColor(color: Color): void; + function selectTool(toolID: string): void; + function selectToolMode(modeIndex: number): void; + function confirmBulldoze(confirm: boolean): void; + function changeElevation(dir: number): void; + function elevationUp(): void; + function elevationDown(): void; + function elevationScroll(): void; + function setElevationStep(step: number): void; + function setSelectedSnapMask(mask: number): void; + function toggleParallelMode(): void; + function setParallelOffset(offset: number): void; + function setUndergroundMode(enabled: boolean): void; + function setDistance(distance: number): void; + const BULLDOZE_TOOL = "Bulldoze Tool"; + const DEFAULT_TOOL = "Default Tool"; + const ZONE_TOOL = "Zone Tool"; + const AREA_TOOL = "Area Tool"; + const NET_TOOL = "Net Tool"; + const OBJECT_TOOL = "Object Tool"; + const UPGRADE_TOOL = "Upgrade Tool"; + const TERRAIN_TOOL = "Terrain Tool"; + const SELECTION_TOOL = "Selection Tool"; + const ROUTE_TOOL = "Route Tool"; + export interface Tool { + id: string; + modeIndex: number; + modes: ToolMode[]; + } + export interface ToolMode { + id: string; + index: number; + icon: string; + } + const allowBrush$: ValueBinding; + const selectedBrush$: ValueBinding; + const brushes$: ValueBinding; + const brushSize$: ValueBinding; + const brushStrength$: ValueBinding; + const brushHeight$: ValueBinding; + const brushHeightMin$: ValueBinding; + const brushHeightMax$: ValueBinding; + const brushAngle$: ValueBinding; + const brushSizeMin$: ValueBinding; + const brushSizeMax$: ValueBinding; + export interface Brush { + entity: Entity; + name: string; + icon: string; + priority: number; + } + function selectBrush(brush: Entity): void; + function setBrushSize(size: number): void; + function setBrushStrength(strength: number): void; + function setBrushAngle(angle: number): void; + function setBrushHeight(angle: number): void; + export interface ToolbarGroup { + entity: Entity; + children: ToolbarItem[]; + } + export interface ToolbarItem { + entity: Entity; + name: string; + type: ToolbarItemType; + icon: string; + locked: boolean; + uiTag: string; + requirements: UnlockingRequirements; + highlight: boolean; + selectSound: UISound | string | null; + deselectSound: UISound | string | null; + shortcut: InputActionName; + } + export enum ToolbarItemType { + asset = 0, + menu = 1 + } + export interface AssetCategory { + entity: Entity; + name: string; + icon: string; + locked: boolean; + uiTag: string; + highlight: boolean; + } + interface Asset$1 { + entity: Entity; + name: string; + priority: number; + icon: string; + dlc: string | null; + theme: string | null; + locked: boolean; + uiTag: string; + unique: boolean; + placed: boolean; + highlight: boolean; + constructionCost: NumericProperty | null; + } + interface Theme$1 { + entity: Entity; + name: string; + icon: string; + highlight: boolean; + } + export interface AssetPack { + entity: Entity; + name: string; + icon: string; + highlight: boolean; + } + export enum AgeMask { + Disabled = 0, + Child = 1, + Teen = 2, + Adult = 4, + Elderly = 8 + } + const toolbarGroups$: ValueBinding; + const assetCategories$: MapBinding; + const assets$: MapBinding; + const themes$$1: ValueBinding; + const selectedThemes$: ValueBinding; + const vegetationAges$: ValueBinding; + const assetPacks$: ValueBinding; + const selectedAssetPacks$: ValueBinding; + const selectedAssetMenu$: ValueBinding; + const selectedAssetCategory$: ValueBinding; + const selectedAsset$: ValueBinding; + const ageMask$: ValueBinding; + const setAgeMask: (ageMask: number) => void; + const setSelectedThemes: (themes: Entity[]) => void; + const setSelectedAssetPacks: (packs: Entity[]) => void; + const selectAssetMenu: (assetMenu: Entity) => void; + const selectAssetCategory: (assetCategory: Entity) => void; + const selectAsset: (asset: Entity, updateTool: boolean) => void; + const clearAssetSelection: () => void; + const toggleToolOptions: (isActive: boolean) => void; + const CompareAssetsByPriority: (a: Asset$1, b: Asset$1) => number; + const population$$1: ValueBinding; + const populationDelta$: ValueBinding; + const money$: ValueBinding; + const moneyDelta$: ValueBinding; + const cityName$: ValueBinding; + const unlimitedMoney$: ValueBinding; + const populationTrendThresholds$: ValueBinding; + const moneyTrendThresholds$: ValueBinding; + function setCityName(name: string): void; + const passengerTypes$: ValueBinding; + const cargoTypes$: ValueBinding; + const transportLines$: ValueBinding; + const selectedPassengerType$: ValueBinding; + const selectedCargoType$: ValueBinding; + const selectLine: (entity: Entity) => void; + const deleteLine: (entity: Entity) => void; + const renameLine: (entity: Entity, name: string) => void; + const setLineColor: (entity: Entity, color: Color) => void; + const setLineActive: (entity: Entity, active: boolean) => void; + const showLine: (entity: Entity, hideOthers: boolean) => void; + const hideLine: (entity: Entity, showOthers: boolean) => void; + const setLineSchedule: (entity: Entity, schedule: number) => void; + const resetVisibility: () => void; + const toggleHighlight: (entity: Entity) => void; + const setSelectedPassengerType: (type: string) => void; + const setSelectedCargoType: (type: string) => void; + export interface TransportType { + id: string; + icon: string; + locked: boolean; + requirements: UnlockingRequirements; + } + export interface TransportLine { + name: Name | null; + vkName: Name | null; + lineData: TransportLineData; + } + export interface TransportLineData { + entity: Entity; + active: boolean; + visible: boolean; + isCargo: boolean; + color: Color; + schedule: number; + type: string; + length: number; + stops: number; + vehicles: number; + cargo: number; + usage: number; + } + export interface TransportStop { + name: Name; + entity: Entity; + position: number; + passengers: Entity[]; + } + export type BalloonDirection = "up" | "down" | "left" | "right"; + export type BalloonAlignment = "start" | "center" | "end"; + const tutorialsEnabled$: ValueBinding; + const tutorialIntroActive$: ValueBinding; + const activeTutorialList$: ValueBinding; + const nextTutorial$: ValueBinding; + const tutorialPending$: ValueBinding; + const tutorialCategories$: ValueBinding; + const tutorialGroups$: MapBinding; + const tutorialListFocused$: { + readonly listeners: { + listener: BindingListener | undefined; + set: (listener: BindingListener) => void; + call: (newValue: boolean) => void; + }[]; + disposed: boolean; + _value: boolean; + readonly registered: boolean; + readonly value: boolean; + subscribe: (listener?: BindingListener | undefined) => { + readonly value: boolean; + setChangeListener: (listener: BindingListener) => void; + dispose(): void; + }; + dispose: () => void; + update: (newValue: boolean) => void; + }; + const setTutorialListFocused: (focused: boolean) => void; + const tutorials$: MapBinding; + const activeTutorial$: ValueBinding; + const activeTutorialPhase$: ValueBinding; + const listIntroActive$: ValueBinding; + const listOutroActive$: ValueBinding; + const activateTutorial: (tutorial: Entity) => void; + const activateTutorialPhase: (tutorial: Entity, phase: Entity) => void; + const forceTutorial: (tutorial: Entity, phase: Entity, advisorActivation: boolean) => void; + const toggleTutorialListFocus: (state?: boolean) => void; + const completeActiveTutorialPhase: () => void; + const completeActiveTutorial: () => void; + const completeIntro: (tutorialsEnabled: boolean) => void; + const completeListIntro: () => void; + const completeListOutro: () => void; + const activateTutorialTag: (tag: string, active: boolean) => void; + const triggerTutorialTag: (trigger: string) => void; + const untriggerTutorialTag: (trigger: string) => void; + const useTutorialTagActivation: (uiTag: string | undefined, active?: boolean) => void; + const useTutorialTagTrigger: (uiTag: string | undefined, active?: boolean) => void; + function useTutorialTag(uiTag: string | undefined, active?: boolean): void; + const advisorPanelVisible$: { + readonly listeners: { + listener: BindingListener | undefined; + set: (listener: BindingListener) => void; + call: (newValue: boolean) => void; + }[]; + disposed: boolean; + _value: boolean; + readonly registered: boolean; + readonly value: boolean; + subscribe: (listener?: BindingListener | undefined) => { + readonly value: boolean; + setChangeListener: (listener: BindingListener) => void; + dispose(): void; + }; + dispose: () => void; + update: (newValue: boolean) => void; + }; + function toggleAdvisorPanel(state?: boolean): void; + export interface AdvisorCategory { + entity: Entity; + name: string; + shown: boolean; + force: boolean; + locked: boolean; + children: AdvisorItem[]; + } + export enum AdvisorItemType { + Tutorial = 0, + Group = 1 + } + export interface AdvisorItem { + entity: Entity; + name: string; + icon: string | null; + type: AdvisorItemType; + shown: boolean; + force: boolean; + locked: boolean; + children: AdvisorItem[]; + } + export interface TutorialList { + entity: Entity; + name: string; + tutorials: Tutorial[]; + hints: Tutorial[]; + intro: boolean; + } + export interface Tutorial { + entity: Entity; + name: string; + icon: string; + locked: boolean; + priority: number; + active: boolean; + completed: boolean; + shown: boolean; + force: boolean; + mandatory: boolean; + advisorActivation: boolean; + phases: TutorialPhase[]; + filters: string[] | null; + alternatives: Entity[] | null; + } + export enum TutorialControlScheme { + KeyboardAndMouse = 1, + Gamepad = 2, + All = 3 + } + export interface TutorialPhase { + entity: Entity; + name: string; + type: TutorialPhaseType; + active: boolean; + shown: boolean; + force: boolean; + completed: boolean; + forcesCompletion: boolean; + isBranch: boolean; + image: string | null; + overrideImagePS: string | null; + overrideImageXbox: string | null; + icon: string | null; + titleVisible: boolean; + descriptionVisible: boolean; + balloonTargets: BalloonUITarget[]; + controlScheme: TutorialControlScheme; + trigger: TutorialTrigger | null; + } + export interface BalloonUITarget { + uiTag: string; + direction: BalloonDirection; + alignment: BalloonAlignment; + } + export interface TutorialTrigger { + entity: Entity; + name: string; + blinkTags: string[][]; + displayUI: boolean; + active: boolean; + completed: boolean; + preCompleted: boolean; + phaseBranching: boolean; + } + export enum TutorialPhaseType { + Balloon = 0, + Card = 1, + CenterCard = 2 + } + const upgrades$: MapBinding; + const upgradeDetails$: MapBinding; + const selectedUpgrade$: ValueBinding; + const upgrading$: ValueBinding; + function selectUpgrade(entity: Entity, upgradeEntity: Entity): void; + function clearUpgradeSelection(): void; + // https://coherent-labs.com/Documentation/cpp-gameface/d1/dea/shape_morphing.html + // https://coherent-labs.com/Documentation/cpp-gameface/d4/d08/interface_morph_animation.html + export export interface HTMLImageElement { + getSrcSVGAnimation(): MorphAnimation | null; + } + export export interface Element { + getMaskSVGAnimation(): MorphAnimation | null; + } + export export interface MorphAnimation { + currentTime: number; + playbackRate: number; + play(): void; + pause(): void; + reverse(): void; + playFromTo(playTime: number, pauseTime: number, callback?: () => void): void; + } + + export namespace upgrade { + export { clearUpgradeSelection, selectUpgrade, selectedUpgrade$, upgradeDetails$, upgrades$, upgrading$ }; + } + export namespace budget { + export { ServiceBudget, ServiceBuildingBudgetData, ServiceBuildingBudgetInfo, ServiceFee }; + } + export namespace camera { + export { focusEntity, focusedEntity$ }; + } + export namespace chirper { + export { Chirp, ChirpLink, ChirpSender, addLike, chirpAdded$, chirps$, removeLike, selectLink }; + } + export namespace cinematic { + export { CinematicCameraAsset, CinematicCameraCurveModifier, addKeyFrame, availableCloudTargets$, captureKey, cinematicCameraSequenceAssets$, deleteCinematicCameraSequence, getControllerDelta, getControllerPanDelta, getControllerZoomDelta, group, lastLoadedCinematicCameraSequence$, loadCinematicCameraSequence, loop$, modifierAnimationCurveData$, moveKeyFrame, onAfterPlaybackDurationChange, playbackDuration$, playing$, removeCameraTransformKey, removeKeyFrame, resetCinematicCameraSequence, saveCinematicCameraSequence, selectCloudTarget, selectedCloudTarget$, setPlaybackDuration, setTimelinePosition, stopPlayback, timelineLength$, timelinePosition$, toggleCurveEditorFocus, toggleLoop, togglePlayback, transformAnimationCurveData$, useCinematicCameraBindings }; + } + export namespace cityInfo { + export { Factor, commercialDemand$, commercialFactors$, happiness$, happinessFactors$, industrialDemand$, industrialFactors$, officeDemand$, officeFactors$, residentialHighDemand$, residentialHighFactors$, residentialLowDemand$, residentialLowFactors$, residentialMediumDemand$, residentialMediumFactors$ }; + } + export namespace climate { + export { Season, WeatherType, seasonNameId$, temperature$, weather$ }; + } + export namespace economyBudget { + export { BudgetItem, BudgetSource, expenseItems$, expenseValues$, getItemValue, incomeItems$, incomeValues$, totalExpenses$, totalIncome$ }; + } + export namespace loan { + export { Loan, acceptLoanOffer, currentLoan$, loanLimit$, loanOffer$, requestLoanOffer, resetLoanOffer }; + } + export namespace production { + export { ProductionLink, Resource, ResourceCategory, ResourceData, ResourceDetails, Service, maxProgress$, resourceCategories$, resourceData$, resourceDetails$, resources$, services$ }; + } + export namespace service { + export { Service$1 as Service, ServiceDetails, ServiceFee$1 as ServiceFee, resetService, serviceDetails$, services$$1 as services$, setServiceBudget, setServiceFee }; + } + export namespace event$1 { + export { EventData, EventInfo, eventMap$, events$, onCloseJournal, onOpenJournal }; + } + export namespace game { + export { ChirperPanel, CinematicCameraPanel, CityInfoPanel, CityInfoPanelTab, EconomyPanel, EconomyPanelTab, GamePanel, GamePanelType, GamePanels, GameScreen, InfoviewMenu, JournalPanel, LayoutPosition, LifePathPanel, NotificationsPanel, PhotoModePanel, ProgressionPanel, ProgressionPanelTab, RadioPanel, StatisticsPanel, TabbedGamePanel, TransportationOverviewPanel, TransportationOverviewPanelTab, activeGamePanel$, activeGameScreen$, activePanelPosition$, blockingPanelActive$, canUseSaveSystem$, closeActiveGamePanel, closeGamePanel, setActiveGameScreen, showCityInfoPanel, showEconomyPanel, showFreeCameraScreen, showGamePanel, showLifePathDetail, showLifePathList, showMainScreen, showPauseScreen, showProgressionPanel, showTransportationOverviewPanel, toggleGamePanel, toggleInfoviewMenu, toggleLifePathPanel, toggleRadioPanel, toggleTransportationOverviewPanel }; + } + export namespace infoview { + export { CargoSummary, ChartData, IndicatorValue, PassengerSummary, TransportSummaries, activeInfoview$, ageData$, arrestedCriminals$, attractiveness$, availableFertility$, availableFish$, availableForest$, availableOil$, availableOre$, averageAirPollution$, averageCrimeProbability$, averageFireHazard$, averageGroundPollution$, averageHealth$, averageHotelPrice$, averageLandValue$, averageNoisePollution$, averageWaterPollution$, batteryCharge$, birthRate$, cemeteryAvailability$, cemeteryCapacity$, cemeteryUse$, clearActiveInfoview, closeInfoviewMenu, collectedMail$, collegeAvailability$, collegeCapacity$, collegeEligible$, collegeStudents$, commercialLevels$, commercialProfitability$, crimePerMonth$, crimeProbability$, crimeProducers$, criminals$, deathRate$, deathcareAvailability$, deliveredMail$, educationData$, electricityAvailability$, electricityConsumption$, electricityExport$, electricityImport$, electricityProduction$, electricityTrade$, electricityTransmission$, electricityTransmitted$, elementaryAvailability$, elementaryCapacity$, elementaryEligible$, elementaryStudents$, employed$, employeesData$, escapedRate$, fertilityExtractionRate$, fertilityRenewalRate$, fishExtractionRate$, fishRenewalRate$, forestExtractionRate$, forestRenewalRate$, garbageProcessingRate$, garbageProductionRate$, healthcareAvailability$, highSchoolAvailability$, highSchoolCapacity$, highSchoolEligible$, highSchoolStudents$, homeless$, homelessness$, inJail$, inPrison$, industrialLevels$, industrialProfitability$, infoviews$, jailAvailability$, jailCapacity$, jobs$, landfillAvailability$, landfillCapacity$, mailProductionRate$, movedAway$, movedIn$, officeLevels$, officeProfitability$, oilExtractionRate$, oreExtractionRate$, parkedCars$, parkingAvailability$, parkingCapacity$, parkingIncome$, patientCapacity$, patientCount$, population$, postServiceAvailability$, prisonAvailability$, prisonCapacity$, prisoners$, processingAvailability$, processingRate$, residentialLevels$, setActiveInfoview, setInfomodeActive, sewageAvailability$, sewageCapacity$, sewageConsumption$, sewageExport$, shelterAvailability$, shelterCapacity$, shelteredCount$, sickCount$, storedGarbage$, topExportColors$, topExportData$, topExportNames$, topImportColors$, topImportData$, topImportNames$, tourismRate$, trafficFlow$, transportSummaries$, unemployment$, universityAvailability$, universityCapacity$, universityEligible$, universityStudents$, useInfoviewToggle, waterAvailability$, waterCapacity$, waterConsumption$, waterExport$, waterImport$, waterTrade$, weatherEffect$, workers$, workplacesData$, worksplaces$ }; + } + export namespace infoviewTypes { + export { ActiveInfoview, Infomode, InfomodeColorLegend, InfomodeGradientLegend, Infoview }; + } + export namespace life { + export { FollowedCitizen, LifePathDetails, LifePathEvent, LifePathItem, LifePathItemType, LifePathItems, followCitizen, followedCitizens$, lifePathDetails$, lifePathItems$, maxFollowedCitizens$, unfollowCitizen }; + } + export namespace map { + export { MapTileResource, MapTileStatus, availableWater$, buildableLand$, disableMapTileView, mapTilePanelVisible$, mapTileViewActive$, permitCost$, permits$, purchaseFlags$, purchaseMapTiles, purchasePrice$, purchaseUpkeep$, resources$$1 as resources$, setMapTileViewActive }; + } + export namespace photo { + export { PhotoModeWidget, PhotoModeWidgets, PhotoWidgetType, Tab, adjustments$, cinematicCameraVisible$, group$1 as group, orbitCameraActive$, overlayHidden$, resetCamera, root, selectTab, selectedTab$, setOverlayHidden, tabs$, takeScreenshot, toggleCinematicCamera, toggleOrbitCameraActive }; + } + export namespace policy { + export { PolicyData, PolicySliderData, PolicySliderProp, cityPolicies$, setCityPolicy, setPolicy }; + } + export namespace prefab { + export { ManualUITagsConfiguration, PrefabDetails, Theme, UnlockingRequirements, emptyPrefabDetails, manualUITags$, prefabDetails$, themes$ }; + } + export namespace prefabEffects { + export { AdjustHappinessEffect, CityModifier, CityModifierEffect, CityModifierType, LeisureProvider, LeisureProviderEffect, LeisureType, LocalModifier, LocalModifierEffect, LocalModifierType, PrefabEffect, PrefabEffectType, PrefabEffects }; + } + export namespace prefabProperties { + export { CONSUMPTION_PROPERTY, ConsumptionProperty, ELECTRICITY_PROPERTY, ElectricityProperty, POLLUTION_PROPERTY, Pollution, PollutionProperty, PrefabProperties, PrefabProperty, TRANSPORT_STOP_PROPERTY, TransportStopProperty, UPKEEPNUMBER2_PROPERTY, UPKEEPNUMBER_PROPERTY, UpkeepNumber2Property, UpkeepNumberProperty, Voltage }; + } + export namespace prefabRequirements { + export { AreaType, CitizenRequirement, DevTreeNodeRequirement, MilestoneRequirement, ObjectBuiltRequirement, PrefabRequirement, PrefabRequirementType, PrefabRequirements, ProcessingRequirement, StrictObjectBuiltRequirement, TutorialRequirement, UnlockRequirement, ZoneBuiltRequirement }; + } + export namespace devTree { + export { DevTreeNode, DevTreeNodeDetails, DevTreeService, DevTreeServiceDetails, devPoints$, nodeDetails$, nodes$, purchaseNode, selectedDevTree$, selectedNode$, serviceDetails$$1 as serviceDetails$, services$$2 as services$ }; + } + export namespace feature { + export { UnlockingProps, isFeatureLocked, lockedFeatures$, useFeatureLocked, useFeatureUnlocking }; + } + export namespace milestone { + export { Asset, Feature, Milestone, MilestoneDetails, MilestoneUnlock, MilestoneUnlockType, MilestoneUnlocks, Policy, Service$2 as Service, UnlockDetails, XpMessage, achievedMilestone$, achievedMilestoneXP$, clearUnlockedMilestone, defaultMilestoneDetails, maxMilestoneReached$, milestoneDetails$, milestoneUnlocks$, milestones$, nextMilestoneXP$, totalXP$, unlockDetails$, unlockedMilestone$, xpMessageAdded$ }; + } + export namespace signatureBuilding { + export { removeUnlockedSignature, unlockedSignatures$ }; + } + export namespace radio { + export { RadioClip, RadioNetwork, RadioProgram, RadioStation, currentSegment$, emergencyFocusable$, emergencyMessage$, emergencyMode$, focusEmergency, muted$, networks$, paused$, playNext, playPrevious, radioEnabled$, segmentChanged$, selectNetwork, selectStation, selectedNetwork$, selectedStation$, setMuted, setPaused, setSkipAds, setVolume, skipAds$, stations$, toggleMuted, togglePaused, toggleSkipAds, volume$ }; + } + export namespace selectedInfo { + export { ActionsSection, AnimalSection, AttractivenessFactor, AttractivenessSection, AverageHappinessSection, BatterySection, CapacityInfo, CargoSection, CargoTransportVehicleSection, CitizenSection, ColorSection, ComfortSection, CompanySection, ContentPrerequisiteSection, DeathcareSection, DeathcareVehicleSection, DeliveryVehicleSection, DescriptionSection, DestroyedBuildingSection, DestroyedTreeSection, DeveloperSection, DeveloperSubsection, DeveloperSubsectionType, DeveloperSubsections, DispatchedVehiclesSection, District, DistrictsSection, DummyHumanSection, EducationSection, EfficiencyFactor, EfficiencySection, ElectricitySection, EmployeesSection, ExtractorVehicleSection, FireSection, FireVehicleSection, GarbageSection, GarbageVehicleSection, GenericInfo, HealthcareSection, HealthcareVehicleSection, HouseholdSidebarItem, HouseholdSidebarSection, HouseholdSidebarVariant, InfoList, Item, LINE_STOP, LINE_VEHICLE, LevelSection, Line, LineItem, LineSection, LineSegment, LineStop, LineVehicle, LineVisualizerSection, LinesSection, LoadSection, LocalServiceBuilding, LocalServicesSection, Location$1 as Location, MailSection, MailSectionType, MaintenanceVehicleSection, NotificationsSection, ParkSection, ParkingSection, PassengersSection, PoliceSection, PoliceVehicleSection, PoliciesSection, Pollution$1 as Pollution, PollutionSection, PostVehicleSection, PrisonSection, PrivateVehicleSection, ProfitabilitySection, PublicTransportVehicleSection, ResidentsSection, Resource$1 as Resource, ResourceSection, RoadSection, ScheduleSection, SectionType, SelectVehiclesSection, SelectedInfoSection, SelectedInfoSectionBase, SelectedInfoSectionProps, SelectedInfoSections, SewageSection, ShelterSection, StatusSection, StorageSection, TicketPriceSection, TitleSection, TradedResourcesSection, TransformerSection, Upgrade, UpgradeInfo, UpgradePropertiesSection, UpgradeType, UpgradesSection, UpkeepItem, UpkeepSection, Vehicle, VehicleCountSection, VehiclePrefab, VehicleSectionProps, VehicleWithLineSectionProps, VehiclesSection, WaterSection, activeSelection$, bottomSections$, clearSelection, developerSection$, householdSidebarSection$, lineVisualizerSection$, middleSections$, selectEntity, selectedEntity$, selectedInfoPosition$, selectedRoute$, selectedTrailerController$, selectedUITag$, setSelectedRoute, titleSection$, tooltipTags$, topSections$, useGeneratedTooltipParagraphs, useTooltipParagraph, useTooltipParagraphs }; + } + export namespace statistics { + export { StatCategory, StatItem, activeCategory$, activeGroup$, addStat, addStatChildren, clearStats, removeStat, sampleCount$, sampleRange$, selectedStatistics$, setSampleRange, stacked$, statGroupsMap$, statLabels$, statUnlockingRequirements$, statisticsCategories$, statsData$, updatesPerDay$ }; + } + export namespace taxation { + export { TaxAreaType, TaxResource, TaxResourceInfo, areaResourceTaxRanges$, areaResources$, areaTaxEffects$, areaTaxIncomes$, areaTaxRates$, areaTypes$, maxTaxRate, minTaxRate, resourceTaxIncomes, resourceTaxRates, setAreaTaxRate, setResourceTaxRate, setTaxRate, taxEffect, taxIncome, taxRate, taxResourceInfos }; + } + export namespace time { + export { LightingState, SimulationDate, SimulationDateTime, SimulationTime, TimeSettings, calculateDateFromDays, calculateDateFromTicks, calculateDateTimeFromTicks, calculateMinutesSinceMidnightFromTicks, calculateTimeFromMinutesSinceMidnight, dateEquals, day$, lightingState$, setSimulationPaused, setSimulationSpeed, simulationPaused$, simulationPausedBarrier$, simulationSpeed$, ticks$, timeSettings$ }; + } + export namespace tool { + export { AREA_TOOL, BULLDOZE_TOOL, Brush, DEFAULT_TOOL, NET_TOOL, OBJECT_TOOL, ROUTE_TOOL, SELECTION_TOOL, TERRAIN_TOOL, Tool, ToolMode, UPGRADE_TOOL, ZONE_TOOL, activeTool$, allSnapMask$, allowBrush$, availableSnapMask$, brushAngle$, brushHeight$, brushHeightMax$, brushHeightMin$, brushSize$, brushSizeMax$, brushSizeMin$, brushStrength$, brushes$, bulldozeConfirmationRequested$, changeElevation, color$, colorSupported$, confirmBulldoze, distance$, distanceScale$, elevation$, elevationDown, elevationDownDisabled$, elevationRange$, elevationScroll, elevationStep$, elevationUp, elevationUpDisabled$, isEditor$, parallelMode$, parallelModeSupported$, parallelOffset$, replacingTrees$, selectBrush, selectTool, selectToolMode, selectedBrush$, selectedSnapMask$, setBrushAngle, setBrushHeight, setBrushSize, setBrushStrength, setColor, setDistance, setElevationStep, setParallelOffset, setSelectedSnapMask, setUndergroundMode, snapOptionNames$, toggleParallelMode, undergroundMode$, undergroundModeSupported$ }; + } + export namespace toolbar$1 { + export { AgeMask, Asset$1 as Asset, AssetCategory, AssetPack, CompareAssetsByPriority, Theme$1 as Theme, ToolbarGroup, ToolbarItem, ToolbarItemType, ageMask$, assetCategories$, assetPacks$, assets$, clearAssetSelection, selectAsset, selectAssetCategory, selectAssetMenu, selectedAsset$, selectedAssetCategory$, selectedAssetMenu$, selectedAssetPacks$, selectedThemes$, setAgeMask, setSelectedAssetPacks, setSelectedThemes, themes$$1 as themes$, toggleToolOptions, toolbarGroups$, vegetationAges$ }; + } + export namespace toolbarBottom { + export { cityName$, money$, moneyDelta$, moneyTrendThresholds$, population$$1 as population$, populationDelta$, populationTrendThresholds$, setCityName, unlimitedMoney$ }; + } + export namespace transport { + export { TransportLine, TransportLineData, TransportStop, TransportType, cargoTypes$, deleteLine, hideLine, passengerTypes$, renameLine, resetVisibility, selectLine, selectedCargoType$, selectedPassengerType$, setLineActive, setLineColor, setLineSchedule, setSelectedCargoType, setSelectedPassengerType, showLine, toggleHighlight, transportLines$ }; + } + export namespace tutorial { + export { AdvisorCategory, AdvisorItem, AdvisorItemType, BalloonUITarget, Tutorial, TutorialControlScheme, TutorialList, TutorialPhase, TutorialPhaseType, TutorialTrigger, activateTutorial, activateTutorialPhase, activateTutorialTag, activeTutorial$, activeTutorialList$, activeTutorialPhase$, advisorPanelVisible$, completeActiveTutorial, completeActiveTutorialPhase, completeIntro, completeListIntro, completeListOutro, forceTutorial, listIntroActive$, listOutroActive$, nextTutorial$, setTutorialListFocused, toggleAdvisorPanel, toggleTutorialListFocus, triggerTutorialTag, tutorialCategories$, tutorialGroups$, tutorialIntroActive$, tutorialListFocused$, tutorialPending$, tutorials$, tutorialsEnabled$, untriggerTutorialTag, useTutorialTag, useTutorialTagActivation, useTutorialTagTrigger }; + } + + export { + budget, + camera, + chirper, + cinematic, + cityInfo, + climate, + devTree, + economyBudget, + event$1 as event, + feature, + game, + infoview, + infoviewTypes, + life, + loan, + map, + milestone, + photo, + policy, + prefab, + prefabEffects, + prefabProperties, + prefabRequirements, + production, + radio, + selectedInfo, + service, + signatureBuilding, + statistics, + taxation, + time, + tool, + toolbar$1 as toolbar, + toolbarBottom, + transport, + tutorial, + upgrade, + }; + + export {}; + +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/types/cohtml.d.ts b/CS2M/CS2M.UI/types/cohtml.d.ts new file mode 100644 index 0000000..c590347 --- /dev/null +++ b/CS2M/CS2M.UI/types/cohtml.d.ts @@ -0,0 +1,195 @@ +declare module "cohtml/cohtml" { + interface SingleArgumentCallback { + (result: T): any; + } + + interface ArbitraryCallback { + (...args: any[]): any; // modified by Colossal + } + + export interface EventHandle { // modified by Colossal + /** + * Detach this handler from the event + **/ + clear(): void; + } + + interface VirtualList { + /** + * Index from which the data-bind-for will start generating DOM elements. The default value is 0. + **/ + startIndex: number; + + /** + * The maximum number of elements that will be generated from the data-bind-for. + **/ + pageSize: number; + } + + interface AttributeHandler { + /** + * This will be executed only once per element when the attribute attached to it is bound with a model. + * Set up any initial state, event handlers, etc. here. + * @param element The DOM element to which the handler is attached + * @param value The result from the evaluation of the attribute's expression in the HTML + **/ + init(element: Element, value: any): void; + + /** + * This will be executed only once per element when the element is detached from the DOM. + * Cleanup state, event handlers, etc. here. + * @param element The DOM element to which the handler is attached + **/ + deinit(element: Element): void; + + /** + * This will be executed every time when the model on which the attribute is attached is synchronized. + * @param element The DOM element to which the handler is attached + * @param value The result from the evaluation of the attribute's expression in the HTML + **/ + update(element: Element, value: any): void; + } + + interface AttributeHandlerConstructor { + new(): AttributeHandler; + } + + interface Deferred extends Promise { + /** + * Resolve the promise with the specified value. All success handlers will be called with value + * @param value The success value of the promise + **/ + resolve(value: T): void; + + /** + * Reject the promise with the specified value. All failure handlers will be called with value + * @param value The failure value of the promise + **/ + reject(value: T): void; + } + + export interface Engine { // modified by Colossal + /** + * A promise that is resolved after the page has loaded and the bindings are ready + **/ + whenReady: Promise; + + /** + * Register handler for an event + * @param name The name of the event + * @param callback A function to be executed when the event has been triggered + * @param context *this* context for the function, by default the engine object + * @return handle for unsubscribing this callback to the event + **/ + on(name: string, callback: ArbitraryCallback, context?: any): EventHandle; + + /** + * Remove handler for an event + * @param name The name of the event, by default removes all callbacks + * @param callback The callback to be removed, by default removes a callback regardless of the context + * @param context *this* context for the function, when specified only the callback with the specified context will be removed + **/ + off(name: string, callback?: ArbitraryCallback, context?: any): void; + + /** + * Trigger an event + * This function will trigger any C++ handler registered for this event with `Coherent::UI::View::RegisterForEvent` + * @param name The name of the event + * @param args Any extra arguments to be passed to the event handlers + **/ + trigger(name: string, ...args: any[]): void; + + /** + * Call asynchronously a C++ handler and retrieve the result + * The C++ handler must have been registered with `Coherent::UI::View::BindCall` + * @param name The name of the C++ handler to be called + * @param args Any extra parameters to be passed to the C++ handler + * @return A promise for the result of the C++ function + **/ + call(name: string, ...args: any[]): Promise; + + /** + * Registers a JavaScript data binding model + * @param name The name of the model + * @param model The model's definition + **/ + createJSModel(name: string, model: object): void; + + /** + * Applies the changes accumulated by updateWholeModel to the corresponding JavaScript objects. + **/ + synchronizeModels(): void; + + /** + * Marks a model as dirty. Properties will be synchronized using the synchronizeModels call. + * @param model The model to be marked as dirty + **/ + updateWholeModel(model: object): void; + + /** + * Unregisters a model and removes the global variable that is associated with it. + * @param model The model to be removed + **/ + unregisterModel(model: object): void; + + /** + * Creates a virtual list object to be used for pagination in data-bind-for + * @return VirtualList object for configuring the pagination options + **/ + createVirtualList(): VirtualList; + + /** + * Registers a custom handler for a given data-bind attribute name + * @param attributeName The name for the custom data-bind attribute, excluding the "data-bind-" prefix + * @param attributeHandler The AttributeHandler for the data-bind attribute + **/ + registerBindingAttribute(attributeName: string, attributeHandler: AttributeHandlerConstructor): void; + + /** + * Enable or disable safe data binding by reference of properties of exposed models. Enabled by default. + * @param enable + * @warning Changing this setting doesn't affect already exposed properties + **/ + enableSafeDataBinding(enable: boolean): void; + + /** + * Returns an unsafe reference to a property of an exposed model in JavaScript + * @param property Property of an exposed model, e.g. model.property1.property2 + * @return An unsafe reference to the specified property. The C++ is responsible to call View::DestroyExposedObject() when the pointer to that C++ object is no longer valid + **/ + pinUnsafeReference(property: object): object; + + /** + * Registers a JavaScript data binding model + * @param id The id that will be requested in the localization manager + * @return The translated text from the localization manager + **/ + translate(id: string): string; + + /** + * Updates all localized elements having `data-l10n-id`. Useful after changing the locale. + **/ + reloadLocalization(): void; + + /** + * Enables or disables immediate layout. Disabled by default. + * @param isEnabled Whether to enable immediate layout + **/ + enableImmediateLayout(isEnabled: boolean): void; + + /** + * Returns whether or not immediate layout is enabled. + * @return boolean + **/ + isImmediateLayoutEnabled(): boolean; + + /** + * Performs Immediate Layout sync + **/ + executeImmediateLayoutSync(): void; + } + + export const engine: Engine; // modified by Colossal + export default engine; + +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/types/input.d.ts b/CS2M/CS2M.UI/types/input.d.ts new file mode 100644 index 0000000..bd71136 --- /dev/null +++ b/CS2M/CS2M.UI/types/input.d.ts @@ -0,0 +1,786 @@ +declare module "cs2/input" { + import React$1 from 'react'; + import { CSSProperties, PropsWithChildren, ReactNode } from 'react'; + + export export class FocusSymbol { + readonly debugName: string; + readonly r: number; + constructor(debugName: string); + toString(): string; + } + /** + * Special focus key that disables the focus of the component. + */ + export export const FOCUS_DISABLED: FocusSymbol; + /** + * Special focus key that assigns an internally generated, unique focus key to the component. + * + * This is useful if the component is inside of a `NavigationScope` and there is no need to manually control focus, + * or the focus key is defined by a higher level `FocusKeyOverride` component. + */ + export export const FOCUS_AUTO: FocusSymbol; + export type FocusKey = typeof FOCUS_DISABLED | typeof FOCUS_AUTO | UniqueFocusKey; + export type UniqueFocusKey = FocusSymbol | string | number; + export export function useUniqueFocusKey(focusKey: FocusKey, debugName: string): UniqueFocusKey | null; + export interface FocusController { + isChildFocused(focusKey: UniqueFocusKey): boolean; + registerChild(focusKey: UniqueFocusKey, element: FocusController): void; + unregisterChild(focusKey: UniqueFocusKey): void; + attachCallback(callback: FocusCallback): void; + detachCallback(callback: FocusCallback): void; + attachTo(controller: FocusController): void; + detach(): void; + getBounds(): FocusDOMRect | null; + getFocusedBounds(): FocusDOMRect | null; + debugTrace(): string; + deepDebugTrace(): string; + } + export interface FocusDOMRect { + left: number; + top: number; + right: number; + bottom: number; + width: number; + height: number; + } + export interface FocusCallback { + (selfFocused: boolean, currentFocus: FocusController | null): void; + } + export export enum FocusActivation { + Always = "always", + AnyChildren = "anyChildren", + FocusedChild = "focusedChild" + } + export enum FocusLimits { + Center = "center", + Bounds = "bounds" + } + export export const FocusContext: import("react").Context; + export export const disabledFocusController: FocusController; + export export abstract class FocusControllerBase implements FocusController { + private readonly propagateCurrent; + private _parentController; + private _enabled; + private _focusKey; + private _lastFocused; + private readonly callbacks; + constructor(propagateCurrent?: boolean); + isChildFocused: (focusKey: UniqueFocusKey) => boolean; + get focused(): boolean; + protected abstract isChildFocusedImpl(focusKey: UniqueFocusKey): boolean; + abstract registerChild(focusKey: UniqueFocusKey, element: FocusController): void; + abstract unregisterChild(focusKey: UniqueFocusKey): void; + attachCallback: (callback: FocusCallback) => void; + detachCallback: (callback: FocusCallback) => void; + abstract getBounds(): FocusDOMRect | null; + abstract getFocusedBounds(): FocusDOMRect | null; + attachTo(controller: FocusController): void; + detach(): void; + protected get enabled(): boolean; + protected set enabled(value: boolean); + protected get focusKey(): UniqueFocusKey | null; + protected set focusKey(focusKey: UniqueFocusKey | null); + protected updateChildren: (currentFocus: FocusController | null) => void; + protected onFocusUpdate: FocusCallback; + protected onFocusEnterImpl(_: FocusController | null): void; + private _tryAttach; + private _tryDetach; + debugTrace(): string; + deepDebugTrace(): string; + protected get debugName(): string; + protected abstract get debugFocusedChild(): FocusController | null; + } + export export function useElementFocusController(focusKey: UniqueFocusKey | null, elementRef: React$1.RefObject, activation?: FocusActivation, allowChildren?: boolean): ElementFocusController; + export interface BoundsCallback { + (): DOMRect | null; + } + export class ElementFocusController extends FocusControllerBase { + readonly getBounds: BoundsCallback; + private readonly activation; + private readonly allowChildren; + private childFocusKey; + private childElement; + constructor(focusKey: UniqueFocusKey | null, getBounds: BoundsCallback, activation: FocusActivation, allowChildren: boolean); + isChildFocusedImpl: (childFocusKey: UniqueFocusKey) => boolean; + registerChild: (childFocusKey: UniqueFocusKey, element: FocusController) => void; + unregisterChild: (childFocusKey: UniqueFocusKey) => void; + getFocusedBounds(): FocusDOMRect | DOMRect | null; + protected get debugFocusedChild(): FocusController | null; + } + export export function useKeyFocusController(focusKey: UniqueFocusKey | null): KeyFocusController; + export class KeyFocusController extends FocusControllerBase { + private childFocusKey; + private childElement; + constructor(focusKey: UniqueFocusKey | null); + isChildFocusedImpl: (childFocusKey: UniqueFocusKey) => boolean; + registerChild: (focusKey: UniqueFocusKey, element: FocusController) => void; + unregisterChild: (focusKey: UniqueFocusKey) => void; + getBounds: () => FocusDOMRect | null; + getFocusedBounds(): FocusDOMRect | null; + protected get debugFocusedChild(): FocusController | null; + } + export export function useMultiChildFocusController(focusKey: UniqueFocusKey | null, activation: FocusActivation, limits: FocusLimits): MultiChildFocusController; + export interface RefocusCallback { + (previousElement: FocusController | null): void; + } + export export class MultiChildFocusController extends FocusControllerBase { + readonly activation: FocusActivation; + readonly limits: FocusLimits; + readonly children: Map; + private _focusedChildKey; + onRefocus: RefocusCallback | null; + constructor(focusKey: UniqueFocusKey | null, activation: FocusActivation, limits: FocusLimits); + get focusedChildKey(): UniqueFocusKey | null; + set focusedChildKey(nextFocusedChildKey: UniqueFocusKey | null); + has(focusKey: UniqueFocusKey): boolean; + get(focusKey: UniqueFocusKey): FocusController | undefined; + entries(): Iterable<[ + UniqueFocusKey, + FocusController + ]>; + isChildFocusedImpl: (focusKey: UniqueFocusKey) => boolean; + registerChild: (focusKey: UniqueFocusKey, element: FocusController) => void; + unregisterChild: (focusKey: UniqueFocusKey) => void; + getBounds(): { + left: number; + top: number; + right: number; + bottom: number; + width: number; + height: number; + } | null; + getFocusedBounds(): FocusDOMRect | null; + onFocusEnterImpl(previousElement: FocusController | null): void; + protected get debugFocusedChild(): FocusController | null; + } + export export function usePassThroughFocusController(debugName: string, enabled?: boolean, childFocused?: boolean): PassThroughFocusController; + export class PassThroughFocusController extends FocusControllerBase { + private childElement; + private _childFocused; + get enabled(): boolean; + set enabled(value: boolean); + get childFocused(): boolean; + set childFocused(value: boolean); + private _debugName; + get debugName(): string; + set debugName(value: string); + isChildFocusedImpl: (focusKey: UniqueFocusKey) => boolean; + registerChild: (focusKey: UniqueFocusKey, element: FocusController) => void; + unregisterChild: (focusKey: UniqueFocusKey) => void; + getBounds: () => FocusDOMRect | null; + getFocusedBounds(): FocusDOMRect | null; + protected get debugFocusedChild(): FocusController | null; + } + export export function useRootFocusController(): RootFocusController; + export class RootFocusController extends FocusControllerBase { + private childElement; + constructor(); + get debugName(): string; + isChildFocusedImpl: (focusKey: UniqueFocusKey) => boolean; + registerChild: (focusKey: UniqueFocusKey, element: FocusController) => void; + unregisterChild: (focusKey: UniqueFocusKey) => void; + getBounds: () => null; + getFocusedBounds(): null; + protected get debugFocusedChild(): FocusController | null; + } + export interface Number2 { + readonly x: number; + readonly y: number; + } + export export enum NavigationDirection { + Horizontal = "horizontal", + Vertical = "vertical", + Both = "both", + None = "none" + } + export export function transformNavigationInput(value: Number2, dir: NavigationDirection): Number2; + export export function getClosestKey(controller: MultiChildFocusController, pos: Number2, anchor: Number2): UniqueFocusKey | null; + export export function getClosestKeyInDirection(controller: MultiChildFocusController, focusedElement: FocusController, dir: Number2, anchor: Number2, ignoreKey?: UniqueFocusKey): UniqueFocusKey | null; + export export const focusAnchorCenter: Number2; + export export const focusAnchorTop: Number2; + export export const focusAnchorLeft: Number2; + export export const focusAnchorBottom: Number2; + export export const focusAnchorRight: Number2; + export export function getElementFocusPosition(rect: FocusDOMRect | null, anchor: Number2): Number2 | null; + export interface AutoNavigationScopeProps { + focusKey?: FocusKey; + initialFocused?: UniqueFocusKey | null; + direction?: NavigationDirection; + activation?: FocusActivation; + limits?: FocusLimits; + onRefocus?: (controller: MultiChildFocusController, lastElement: FocusController | null) => UniqueFocusKey | null; + onChange?: (key: UniqueFocusKey | null) => void; + onFocused?: (focused: boolean) => void; + allowFocusExit?: boolean; + forceFocus?: UniqueFocusKey | null; + debugName?: string; + allowLooping?: boolean | "x" | "y"; + jumpSections?: boolean; + } + /** + * Automatic navigation in lists, grids and forms. + */ + export export const AutoNavigationScope: ({ onRefocus, onChange, allowFocusExit, allowLooping, debugName, focusKey, forceFocus, initialFocused, ...props }: React$1.PropsWithChildren) => JSX.Element; + export interface FocusBoundaryProps { + disabled?: boolean; + onFocusChange?: FocusCallback; + } + /** + * A passive component that allows you to add or remove the focusable child from the focus tree. + * + * It can contain zero or one focusable children. + * + * The component itself cannot be focused, it purely acts as a wrapper around a focusable child. + */ + export export const FocusBoundary: ({ disabled, children, onFocusChange }: React$1.PropsWithChildren) => JSX.Element; + export interface Entity { + index: number; + version: number; + } + export type FocusChangeListener = (key: UniqueFocusKey | null) => void; + export type ChangeCallback = (id: T) => void; + export type KeyParser = (key: UniqueFocusKey) => T | null | undefined; + export export function useFocusChangeListener(parser: KeyParser, onChange: ChangeCallback): FocusChangeListener; + export export function useEntityFocusChangeListener(onChange: ChangeCallback): FocusChangeListener; + export export function useStringFocusChangeListener(onChange: ChangeCallback): FocusChangeListener; + export interface FocusDisabledProps { + disabled?: boolean; + } + export export const FocusDisabled: ({ disabled, children }: React$1.PropsWithChildren) => JSX.Element; + export enum UISound { + selectItem = "select-item", + dragSlider = "drag-slider", + hoverItem = "hover-item", + expandPanel = "expand-panel", + grabSlider = "grabSlider", + selectDropdown = "select-dropdown", + selectToggle = "select-toggle", + focusInputField = "focus-input-field", + signatureBuildingEvent = "signature-building-event", + bulldoze = "bulldoze", + bulldozeEnd = "bulldoze-end", + relocateBuilding = "relocate-building", + mapTilePurchaseMode = "map-tile-purchase-mode", + mapTilePurchaseModeEnd = "map-tile-purchase-mode-end", + xpEvent = "xp-event", + milestoneEvent = "milestone-event", + economy = "economy", + chirpEvent = "chirp-event", + likeChirp = "like-chirp", + chirper = "chirper", + purchase = "purchase", + enableBuilding = "enable-building", + disableBuilding = "disable-building", + pauseSimulation = "pause-simulation", + resumeSimulation = "resume-simulation", + simulationSpeed1 = "simulation-speed-1", + simulationSpeed2 = "simulation-speed-2", + simulationSpeed3 = "simulation-speed-3", + togglePolicy = "toggle-policy", + takeLoan = "take-loan", + removeItem = "remove-item", + toggleInfoMode = "toggle-info-mode", + takePhoto = "take-photo", + tutorialTriggerCompleteEvent = "tutorial-trigger-complete-event", + selectRadioNetwork = "select-radio-network", + selectRadioStation = "select-radio-station", + generateRandomName = "generate-random-name", + decreaseElevation = "decrease-elevation", + increaseElevation = "increase-elevation", + selectPreviousItem = "select-previous-item", + selectNextItem = "select-next-item", + openPanel = "open-panel", + closePanel = "close-panel", + openMenu = "open-menu", + closeMenu = "close-menu", + clickDisableButton = "click-disable-button" + } + export interface PassiveFocusDivProps extends React$1.HTMLAttributes { + onFocusChange?: (focused: boolean) => void; + focusSound?: UISound | string | null; + } + /** + * A passive div element that has a `focused` class name when the focusable child inside of it is focused. + * + * It can contain zero or one focusable children. + * + * The component itself cannot be focused, it purely acts as a wrapper around a focusable child. + * That means if there is no focusable child inside of it, it can never receive the `focused` class name. + */ + export export const PassiveFocusDiv: (props: PassiveFocusDivProps & React$1.RefAttributes) => React$1.ReactElement> | null; + export interface ActiveFocusDivProps extends PassiveFocusDivProps { + focusKey?: FocusKey; + debugName?: string; + activation?: FocusActivation; + } + /** + * A focusable div element. It has a `focused` class name while it is focused. + * + * It can contain zero or one focusable children. + * + * Unlike the `PassiveFocusDiv`, the element itself can be focused, even if there are no elements inside of it. + */ + export export const ActiveFocusDiv: (props: ActiveFocusDivProps & React$1.RefAttributes) => React$1.ReactElement> | null; + export export function useFocused(focusController: FocusController): boolean; + export export function useFocusedRef(focusController: FocusController): React$1.RefObject; + export export function useFocusCallback(focusController: FocusController, callback: FocusCallback | null | undefined): void; + export interface FocusKeyOverrideProps { + focusKey: FocusKey | undefined; + } + /** + * A passive component that overrides the focusKey of the child (so it will be registered to the parent using the `focusKey` prop) + * + * It can contain zero or one focusable children. + * + * The component itself cannot be focused, it purely acts as a wrapper around a focusable child. + */ + export export const FocusKeyOverride: ({ focusKey, children }: React$1.PropsWithChildren) => JSX.Element; + export interface FocusNodeProps { + controller: FocusController; + } + export export const FocusNode: ({ controller, children }: React$1.PropsWithChildren) => JSX.Element; + export export const FocusRoot: ({ children }: React$1.PropsWithChildren) => JSX.Element; + export interface FocusScopeProps { + focusKey?: FocusKey; + debugName?: string; + focused: UniqueFocusKey | null; + activation?: FocusActivation; + limits?: FocusLimits; + } + /** + * A stateless component that allows you to control which child inside of it is focused. + * + * It can contain multiple focusable children. + * + * The component will only be focused while a child inside of it is focused + * (if the `focusedChildKey` is null or there is no child with that key, it will unregister itself from the parent). + * + * Optionally, a `focusKey` for the component itself can be set. + */ + export export const FocusScope: ({ focusKey, debugName, focused, activation, limits, children }: React$1.PropsWithChildren) => JSX.Element; + export interface NavigationScopeProps { + focusKey?: FocusKey; + debugName?: string; + focused: UniqueFocusKey | null; + direction?: NavigationDirection; + activation?: FocusActivation; + limits?: FocusLimits; + onFocused?: (focused: boolean) => void; + onChange: (key: UniqueFocusKey | null) => void; + onRefocus?: (controller: MultiChildFocusController, lastElement: FocusController | null) => UniqueFocusKey | null; + allowFocusExit?: boolean; + allowLooping?: boolean | "x" | "y"; + jumpSections?: boolean; + } + /** + * A stateless component that allows the user to navigate between multiple focusable children with a gamepad. + * + * The `onRefocus` callback controls what happens when the focus is lost within the scope. + * + * The focus behavior of the scope can be controlled by the `activation` prop. + * + * Optionally, a `focusKey` for the component itself can be set. + */ + export export const NavigationScope: ({ focusKey, debugName, focused, direction, activation, limits, children, onFocused, onChange, onRefocus, allowFocusExit, allowLooping, jumpSections, }: React$1.PropsWithChildren) => JSX.Element; + export type RefocusHandler = (focusController: MultiChildFocusController, lastElement: FocusController | null) => UniqueFocusKey | null; + export export const refocusClosestKeyIfNoFocus: RefocusHandler; + export export const refocusClosestKey: RefocusHandler; + export interface SelectableFocusBoundaryProps { + onSelectedStateChanged?: (selected: boolean) => void; + } + export export const SelectableFocusBoundary: ({ onSelectedStateChanged, children }: React$1.PropsWithChildren) => JSX.Element; + export type Action = () => void | boolean; + export type Action1D = (value: number) => void | boolean; + export type Action2D = (value: Number2) => void | boolean; + export interface InputActionsDefinition { + "Move Horizontal": Action1D; + "Change Slider Value": Action1D; + "Change Tool Option": Action1D; + "Change Value": Action1D; + "Change Line Schedule": Action1D; + "Select Popup Button": Action1D; + "Move Vertical": Action1D; + "Switch Radio Station": Action1D; + "Scroll Vertical": Action1D; + "Scroll Assets": Action1D; + "Select": Action; + "Purchase Dev Tree Node": Action; + "Select Chirp Sender": Action; + "Save Game": Action; + "Overwrite Save": Action; + "Confirm": Action; + "Expand Group": Action; + "Collapse Group": Action; + "Select Route": Action; + "Remove Operating District": Action; + "Upgrades Menu": Action; + "Purchase Map Tile": Action; + "Unfollow Citizen": Action; + "Like Chirp": Action; + "Unlike Chirp": Action; + "Enable Info Mode": Action; + "Disable Info Mode": Action; + "Toggle Tool Color Picker": Action; + "Cinematic Mode": Action; + "Photo Mode": Action; + "Focus Citizen": Action; + "Unfocus Citizen": Action; + "Focus Line Panel": Action; + "Focus Occupants Panel": Action; + "Focus Info Panel": Action; + "Close": Action; + "Back": Action; + "Leave Underground Mode": Action; + "Leave Info View": Action; + "Leave Map Tile View": Action; + "Jump Section": Action1D; + "Switch Tab": Action1D; + "Switch Option Section": Action1D; + "Switch DLC": Action1D; + "Switch Ordering": Action1D; + "Switch Radio Network": Action1D; + "Change Time Scale": Action1D; + "Switch Page": Action1D; + "Default Tool": Action; + "Default Tool UI": Action; + "Tool Options": Action; + "Switch Toolmode": Action; + "Toggle Snapping": Action; + "Toggle Contour Lines": Action; + "Capture Keyframe": Action; + "Reset Property": Action; + "Toggle Property": Action; + "Previous Tutorial Phase": Action; + "Continue Tutorial": Action; + "Finish Tutorial": Action; + "Close Tutorial": Action; + "Focus Tutorial List": Action; + "Start Next Tutorial": Action; + "Pause Simulation": Action; + "Resume Simulation": Action; + "Switch Speed": Action; + "Speed 1": Action; + "Speed 2": Action; + "Speed 3": Action; + "Bulldozer": Action; + "Exit Underground Mode": Action; + "Enter Underground Mode": Action; + "Increase Elevation": Action; + "Decrease Elevation": Action; + "Change Elevation": Action1D; + "Advisor": Action; + "Quicksave": Action; + "Quickload": Action; + "Focus Selected Object": Action; + "Hide UI": Action; + "Map Tile Purchase Panel": Action; + "Info View": Action; + "Progression Panel": Action; + "Economy Panel": Action; + "City Information Panel": Action; + "Statistic Panel": Action; + "Transportation Overview Panel": Action; + "Notification Panel": Action; + "Chirper Panel": Action; + "Lifepath Panel": Action; + "Event Journal Panel": Action; + "Radio Panel": Action; + "Photo Mode Panel": Action; + "Take Photo": Action; + "Relocate Selected Object": Action; + "Toggle Selected Object Active": Action; + "Delete Selected Object": Action; + "Toggle Selected Object Emptying": Action; + "Toggle Selected Lot Edit": Action; + "Toggle Follow Selected Citizen": Action; + "Toggle Traffic Routes": Action; + "Pause Menu": Action; + "Load Game": Action; + "Start Game": Action; + "Save Options": Action; + "Switch User": Action; + "Unset Binding": Action; + "Reset Binding": Action; + "Switch Savegame Location": Action1D; + "Show Advanced": Action; + "Hide Advanced": Action; + "Select Directory": Action; + "Search Options": Action; + "Clear Search": Action; + "Credit Speed": Action1D; + "Debug UI": Action; + "Debug Prefab Tool": Action; + "Debug Change Field": Action1D; + "Debug Multiplier": Action1D; + } + export type InputAction = keyof InputActionsDefinition; + export type InputActions = { + [K in InputAction]?: InputActionsDefinition[K] | null; + }; + export interface ButtonTheme { + button: string; + hint: string; + } + export interface ButtonSounds { + select?: UISound | string | null; + hover?: UISound | string | null; + focus?: UISound | string | null; + } + export interface ButtonProps extends React$1.ButtonHTMLAttributes { + focusKey?: FocusKey; + debugName?: string; + selected?: boolean; + theme?: Partial; + sounds?: ButtonSounds | null; + selectAction?: InputAction; + selectSound?: UISound | string | null; + tooltipLabel?: React$1.ReactNode; + disableHint?: boolean; + /** When the button is clicked or the SELECT button on a gamepad is pressed */ + onSelect?: () => void; + as?: "button" | "div"; + hintAction?: InputAction; + forceHint?: boolean; + shortcut?: InputAction; + allowFocusableChildren?: boolean; + } + export interface ClassProps { + className?: string; + } + export interface StyleProps extends ClassProps { + style?: React$1.CSSProperties; + } + export interface ValueBinding { + readonly value: T; + subscribe(listener?: BindingListener): ValueSubscription; + dispose(): void; + } + export interface EventBinding { + subscribe(listener: BindingListener): Subscription; + dispose(): void; + } + export interface BindingListener { + (value: T): void; + } + export interface Subscription { + dispose(): void; + } + export interface ValueSubscription extends Subscription { + readonly value: T; + setChangeListener(listener: BindingListener): void; + } + export interface ControlPath { + name: string; + device: string; + displayName?: string; + } + export enum KeyboardLayout { + AutoDetect = 0, + International = 1 + } + export enum ControlScheme { + keyboardAndMouse = 0, + gamepad = 1 + } + export enum GamepadType { + Xbox = 0, + PS = 1 + } + export interface InputActionHintsProps extends ClassProps { + disabled?: boolean; + specifiedActions?: string[]; + excludedActions?: string[]; + labels?: boolean; + buttonAs?: ButtonProps["as"]; + delay?: number; + delayIgnoreCounter?: number; + } + export export const InputActionHints: (props: InputActionHintsProps & React$1.RefAttributes) => React$1.ReactElement> | null; + export export const ActionHintLayout: ({ children, className, ...props }: ButtonProps) => JSX.Element; + export export function useGamepadType(): GamepadType; + export export function useKeyboardLayout(): KeyboardLayout; + export export function useLayoutMap(): Record; + export enum ShortInputPathOption { + FallbackToLong = 1, + FallbackToControl = 2 + } + export interface InputHintTheme { + hint: string; + button: string; + icon: string; + label: string; + } + export interface InputHintProps extends ClassProps, StyleProps { + action?: InputAction; + bindingIndex?: number; + active?: boolean; + controlScheme?: ControlScheme; + theme?: Partial; + shortName?: ShortInputPathOption; + showLabel?: boolean; + } + export export const InputHint: ({ action, active, controlScheme, ...props }: InputHintProps) => JSX.Element | null; + export export const ActiveControlSchemeInputHint: (props: InputHintProps) => JSX.Element; + export export const FocusedInputHint: (props: InputHintProps) => JSX.Element | null; + export interface ControlIconsProps extends ClassProps, StyleProps { + modifiers: ControlPath[]; + bindings: ControlPath[]; + showName?: boolean; + shortName?: ShortInputPathOption; + theme?: Partial; + } + export export const ControlIcons: ({ modifiers, bindings, showName, shortName, theme, className, style, children }: React$1.PropsWithChildren) => JSX.Element; + export interface ControlIconProps extends ClassProps { + binding: ControlPath; + modifier: boolean; + shortName?: ShortInputPathOption; + theme?: InputHintTheme; + } + export export const ControlIcon: React$1.FC; + export export function useInputControlIcon(binding: ControlPath): string | null; + export enum GamepadButton$1 { + buttonSouth = 0, + buttonEast = 1, + buttonWest = 2, + buttonNorth = 3, + leftShoulder = 4, + rightShoulder = 5, + leftTrigger = 6, + rightTrigger = 7, + select = 8, + start = 9, + leftStickPress = 10, + rightStickPress = 11, + up = 12, + down = 13, + left = 14, + right = 15 + } + export export function gamepadButtonFromString(name: string): GamepadButton$1 | undefined; + export export enum GamepadAxis { + leftStickX = 0, + leftStickY = 1, + RightStickX = 2, + RightStickY = 3 + } + export interface PointerBarrierProps { + onClick: () => void; + } + export export const PointerBarrier: React$1.FC; + export export const EventInputProvider: ({ children }: React$1.PropsWithChildren) => JSX.Element; + export export const GamepadPointerEventProvider: ({ children }: React$1.PropsWithChildren) => JSX.Element; + export export const NativeInputProvider: ({ children }: React$1.PropsWithChildren) => JSX.Element; + export export const navActions: InputAction[]; + export interface InputActionBarrierProps { + includes?: InputAction[]; + excludes?: InputAction[]; + disabled?: boolean; + } + export export const InputActionBarrier: React$1.NamedExoticComponent>; + export interface InputActionConsumerProps { + actions: InputActions | null; + disabled?: boolean; + ignoreFocusState?: boolean; + } + export export const InputActionConsumer: React$1.NamedExoticComponent>; + export interface SingleActionConsumerProps { + action: string; + disabled?: boolean; + onAction?: () => void; + } + /** When the Gamepad "A" button is pressed */ + export export const SelectConsumer: ({ action, ...props }: React$1.PropsWithChildren>) => JSX.Element; + /** When the Keyboard "ESC" or Gamepad "B" button is pressed */ + export export const BackConsumer: ({ action, ...props }: React$1.PropsWithChildren>) => JSX.Element; + export interface ExpandConsumerProps extends Omit { + expanded: boolean; + expandable: boolean; + } + /** When the Gamepad "X" button is pressed */ + export export const ExpandConsumer: ({ expanded, expandable, disabled, children, onAction }: React$1.PropsWithChildren) => JSX.Element; + export interface InputActionEvent { + action: InputAction; + value: null | number | Number2; + } + export export const inputActionNames$: ValueBinding<(keyof InputActionsDefinition)[]>; + export export const onInputActionPerformed$: EventBinding; + export export const onInputActionReleased$: EventBinding; + export export function setInputActionPriority(action: InputAction, priority: number, force: boolean): void; + export export class InputStack { + _items: InputStackItem[]; + contains(action: InputAction): boolean; + indexOf(action: InputAction): number; + push(action: InputAction, callback: Function): void; + removeWhere(predicate: (action: InputAction) => boolean): void; + clear(): void; + dispatchInputEvent(action: InputAction, value: any): boolean; + debugPrint(): void; + } + export class InputStackItem { + readonly action: InputAction; + readonly callback: Function; + constructor(action: InputAction, callback: Function); + } + export interface InputController { + attachChild(controller: InputController): void; + detachChild(controller: InputController): void; + transformStack(stack: InputStack): void; + setDirty(): void; + } + export export const defaultInputController: InputController; + export export const InputContext: React$1.Context; + export type InputStackTransformer = (stack: InputStack) => void; + export enum InputControllerState { + Disabled = 0, + ActiveOnFocus = 1, + AlwaysActive = 2 + } + export export function useInputController(state: InputControllerState, transformer: InputStackTransformer | null): InputController; + export export class InputControllerImpl implements InputController { + private _parent; + private _child; + private _transformer; + get transformer(): InputStackTransformer | null; + set transformer(transformer: InputStackTransformer | null); + attachTo(controller: InputController): void; + detach(): void; + attachChild(controller: InputController): void; + detachChild(controller: InputController): void; + transformStack(stack: InputStack): void; + setDirty(): void; + } + export export class RootInputControllerImpl implements InputController { + private stack; + private onStackChanged; + private _child; + private _udpateHandle; + constructor(stack: InputStack, onStackChanged: () => void); + attachChild(controller: InputController): void; + detachChild(controller: InputController): void; + transformStack(): void; + setDirty(): void; + } + // https://coherent-labs.com/Documentation/cpp-gameface/d1/dea/shape_morphing.html + // https://coherent-labs.com/Documentation/cpp-gameface/d4/d08/interface_morph_animation.html + export export interface HTMLImageElement { + getSrcSVGAnimation(): MorphAnimation | null; + } + export export interface Element { + getMaskSVGAnimation(): MorphAnimation | null; + } + export export interface MorphAnimation { + currentTime: number; + playbackRate: number; + play(): void; + pause(): void; + reverse(): void; + playFromTo(playTime: number, pauseTime: number, callback?: () => void): void; + } + + export { + GamepadButton$1 as GamepadButton, + }; + + export {}; + +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/types/l10n.d.ts b/CS2M/CS2M.UI/types/l10n.d.ts new file mode 100644 index 0000000..81dde70 --- /dev/null +++ b/CS2M/CS2M.UI/types/l10n.d.ts @@ -0,0 +1,211 @@ +declare module "cs2/l10n" { + import { FC, FunctionComponent, MemoExoticComponent } from 'react'; + + export interface LocComponent

extends MemoExoticComponent> { + renderString: LocStringRenderer

; + propsAreEqual: PropsAreEqual

; + } + export type LocStringRenderer

= (loc: Localization, props: P) => string; + export type PropsAreEqual

= (prevProps: P, nextProps: P) => boolean; + export type LocReactNode = JSX.Element | string; + export interface Typed { + __Type: T; + } + export type TypeFromMap> = { + [K in keyof T]: K extends string ? T[K] & Typed : never; + }[keyof T]; + export export enum Unit { + Integer = "integer", + IntegerRounded = "integerRounded", + IntegerPerMonth = "integerPerMonth", + IntegerPerHour = "integerPerHour", + FloatSingleFraction = "floatSingleFraction", + FloatTwoFractions = "floatTwoFractions", + FloatThreeFractions = "floatThreeFractions", + Percentage = "percentage", + PercentageSingleFraction = "percentageSingleFraction", + Angle = "angle", + Length = "length", + Area = "area", + Volume = "volume", + VolumePerMonth = "volumePerMonth", + Weight = "weight", + WeightPerCell = "weightPerCell", + WeightPerMonth = "weightPerMonth", + Power = "power", + Energy = "energy", + DataRate = "dataRate", + DataBytes = "dataBytes", + DataMegabytes = "dataMegabytes", + Money = "money", + MoneyPerCell = "moneyPerCell", + MoneyPerMonth = "moneyPerMonth", + MoneyPerHour = "moneyPerHour", + MoneyPerDistance = "moneyPerDistance", + MoneyPerDistancePerMonth = "moneyPerDistancePerMonth", + BodiesPerMonth = "bodiesPerMonth", + XP = "xp", + Temperature = "temperature", + NetElevation = "netElevation", + ScreenFrequency = "screenFrequency", + Height = "height", + Custom = "custom" + } + export enum LocElementType { + Bounds = "Game.UI.Localization.LocalizedBounds", + Fraction = "Game.UI.Localization.LocalizedFraction", + Number = "Game.UI.Localization.LocalizedNumber", + String = "Game.UI.Localization.LocalizedString" + } + export interface LocElements { + [LocElementType.Bounds]: LocalizedBounds; + [LocElementType.Fraction]: LocalizedFraction; + [LocElementType.Number]: LocalizedNumber; + [LocElementType.String]: LocalizedString; + } + export type LocElement = TypeFromMap; + export interface LocalizedBounds { + min: number; + max: number; + unit?: Unit; + } + export interface LocalizedFraction { + value: number; + total: number; + unit?: Unit; + } + export interface LocalizedNumber { + value: number; + unit?: Unit; + signed: boolean; + } + export interface LocalizedString { + id: string | null; + value: string | null; + args: Record | null; + } + export interface UnitSettings { + timeFormat: TimeFormat; + temperatureUnit: TemperatureUnit; + unitSystem: UnitSystem; + } + export enum TimeFormat { + TwentyFourHours = 0, + TwelveHours = 1 + } + export enum TemperatureUnit { + Celsius = 0, + Fahrenheit = 1, + Kelvin = 2 + } + export enum UnitSystem { + Metric = 0, + Freedom = 1 + } + export interface Localization { + translate(id: string, fallback?: string | null): string | null; + unitSettings: UnitSettings; + } + export function useCachedLocalization(): Localization; + export interface LocalizedProps { + value: LocElement; + transformer?: LocTransformer; + } + export interface LocTransformer { + (value: string): string; + } + export export const Localized: LocComponent; + export interface LocalizedBoundsProps { + min: number; + max: number; + unit?: Unit; + } + export const LocalizedBounds$1: LocComponent; + export interface SimulationDate { + year: number; + month: number; + } + export interface LocalizedDateProps { + value: SimulationDate; + } + export export const LocalizedDate: LocComponent; + export interface LocalizedDurationProps { + value: number; + daysPerYear: number; + maxMonths?: number; + } + export export const LocalizedDuration: LocComponent; + export enum NameType { + Custom = "names.CustomName", + Localized = "names.LocalizedName", + Formatted = "names.FormattedName" + } + export type Name = CustomName | LocalizedName | FormattedName; + export interface CustomName extends Typed { + name: string; + } + export interface LocalizedName extends Typed { + nameId: string; + } + export interface FormattedName extends Typed { + nameId: string; + nameArgs: { + [key: string]: string; + }; + } + export interface LocalizedNameProps { + value: Name; + } + export export const LocalizedEntityName: FC; + export interface LocalizedFractionProps { + value: number; + total: number; + unit?: Unit; + } + export const LocalizedFraction$1: LocComponent; + export interface LocalizedNumberProps { + value: number; + unit?: Unit; + signed?: boolean; + } + export const LocalizedNumber$1: LocComponent; + export interface LocalizedPercentageProps { + value: number; + max: number; + } + export export const LocalizedPercentage: LocComponent; + export interface LocalizedStringProps { + id: string | null; + fallback?: string | null; + showIdOnFail?: boolean; + args?: Record | null; + } + export const LocalizedString$1: LocComponent; + // https://coherent-labs.com/Documentation/cpp-gameface/d1/dea/shape_morphing.html + // https://coherent-labs.com/Documentation/cpp-gameface/d4/d08/interface_morph_animation.html + export export interface HTMLImageElement { + getSrcSVGAnimation(): MorphAnimation | null; + } + export export interface Element { + getMaskSVGAnimation(): MorphAnimation | null; + } + export export interface MorphAnimation { + currentTime: number; + playbackRate: number; + play(): void; + pause(): void; + reverse(): void; + playFromTo(playTime: number, pauseTime: number, callback?: () => void): void; + } + + export { + LocalizedBounds$1 as LocalizedBounds, + LocalizedFraction$1 as LocalizedFraction, + LocalizedNumber$1 as LocalizedNumber, + LocalizedString$1 as LocalizedString, + useCachedLocalization as useLocalization, + }; + + export {}; + +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/types/modding.d.ts b/CS2M/CS2M.UI/types/modding.d.ts new file mode 100644 index 0000000..5fc082b --- /dev/null +++ b/CS2M/CS2M.UI/types/modding.d.ts @@ -0,0 +1,46 @@ +declare module "cs2/modding" { + import { ComponentType } from 'react'; + + export type ModuleRegistryExtend = >(curr: T) => (props: any) => JSX.Element; + export type ModuleRegistryAppend = ComponentType<{}> | (() => JSX.Element); + export type AppendHookTargets = "Menu" | "Editor" | "Game" | "GameTopLeft" | "GameTopRight" | "GameBottomRight"; + export type ModuleRegistry = { + get(modulePath: string, exportName: string): any; + add(modulePath: string, module: Record): void; + override(modulePath: string, exportName: string, newValue: any): void; + extend(modulePath: string, exportNameOrSCSSValue: string | any, extendCb?: ModuleRegistryExtend): void; + append(modulePath: string, exportName: string, appendedComponent?: ModuleRegistryAppend, index?: number): void; + append(target: AppendHookTargets, appendedComponent: ModuleRegistryAppend, index?: number, _?: never): void; + registry: Map>; + find(query: string | RegExp): [ + path: string, + ...exports: string[] + ][]; + reset(): void; + }; + export type ModRegistrar = (moduleRegistry: ModuleRegistry) => void; + export export const findModule: (query: string | RegExp) => [ + path: string, + ...exports: string[] + ][]; + export export const getModule: (modulePath: string, exportName: string) => any; + // https://coherent-labs.com/Documentation/cpp-gameface/d1/dea/shape_morphing.html + // https://coherent-labs.com/Documentation/cpp-gameface/d4/d08/interface_morph_animation.html + export export interface HTMLImageElement { + getSrcSVGAnimation(): MorphAnimation | null; + } + export export interface Element { + getMaskSVGAnimation(): MorphAnimation | null; + } + export export interface MorphAnimation { + currentTime: number; + playbackRate: number; + play(): void; + pause(): void; + reverse(): void; + playFromTo(playTime: number, pauseTime: number, callback?: () => void): void; + } + + export {}; + +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/types/react.d.ts b/CS2M/CS2M.UI/types/react.d.ts new file mode 100644 index 0000000..6664fbf --- /dev/null +++ b/CS2M/CS2M.UI/types/react.d.ts @@ -0,0 +1,8 @@ +import * as React from 'react'; + +declare module 'react' { + interface HTMLAttributes extends React.AriaAttributes, React.DOMAttributes { + // extends React's HTMLAttributes + cohinline?: string; + } +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/types/ui.d.ts b/CS2M/CS2M.UI/types/ui.d.ts new file mode 100644 index 0000000..77ff0ab --- /dev/null +++ b/CS2M/CS2M.UI/types/ui.d.ts @@ -0,0 +1,592 @@ +declare module "cs2/ui" { + import { CSSProperties, HTMLAttributes, PropsWithChildren, ReactElement, ReactNode, Ref, RefObject } from 'react'; + + export interface RefReactElement extends ReactElement

{ + ref?: Ref; + } + export interface TransitionStyles { + base?: string; + enter?: string; + enterActive?: string; + exit?: string; + exitActive?: string; + } + export interface ClassProps { + className?: string; + } + export type BalloonDirection = "up" | "down" | "left" | "right"; + export type BalloonAlignment = "start" | "center" | "end"; + export interface BalloonTheme extends TransitionStyles { + balloon: string; + bounds: string; + container: string; + arrow: string; + content: string; + hidden: string; + up: string; + down: string; + left: string; + right: string; + start: string; + center: string; + end: string; + } + export interface TooltipProps extends ClassProps { + tooltip: ReactNode; + disabled?: boolean; + forceVisible?: boolean; + theme?: Partial; + direction?: BalloonDirection; + alignment?: BalloonAlignment; + children: RefReactElement; + anchorElRef?: RefObject; + } + export export const Tooltip: ({ tooltip, forceVisible, disabled, theme, direction, alignment, className, children, anchorElRef }: PropsWithChildren) => JSX.Element; + export class FocusSymbol { + readonly debugName: string; + readonly r: number; + constructor(debugName: string); + toString(): string; + } + export const FOCUS_DISABLED: FocusSymbol; + export const FOCUS_AUTO: FocusSymbol; + export type FocusKey = typeof FOCUS_DISABLED | typeof FOCUS_AUTO | UniqueFocusKey; + export type UniqueFocusKey = FocusSymbol | string | number; + export interface PanelTheme extends PanelTitleBarTheme { + panel: string; + header: string; + content: string; + footer: string; + floatingHint?: string; + } + export interface PanelTitleBarTheme { + titleBar: string; + title: string; + icon: string; + iconSpace: string; + closeButton: string; + closeIcon: string; + toggle: string; + toggleIcon: string; + toggleIconExpanded: string; + } + export interface DialogStackProps { + showDialog: (dialog: ReactNode) => void; + closeAll: () => void; + } + export export const DialogStack: import("react").Context; + export interface DialogContextProps { + onClose: () => void; + } + export export const DialogContext: import("react").Context; + export export const DialogRenderer: ({ children }: PropsWithChildren) => JSX.Element; + export interface Number2 { + readonly x: number; + readonly y: number; + } + export interface ConfirmationDialogProps extends PropsWithChildren { + title?: ReactNode; + message?: ReactNode; + details?: string; + confirm?: ReactNode; + cancel?: ReactNode; + onConfirm: (dismiss: boolean) => void; + onCancel?: () => void; + dismissible?: boolean; + cancellable?: boolean; + zIndex?: number; + multiline?: boolean; + } + export const UITriggeredConfirmationDialog: React.FC; + export enum UISound { + selectItem = "select-item", + dragSlider = "drag-slider", + hoverItem = "hover-item", + expandPanel = "expand-panel", + grabSlider = "grabSlider", + selectDropdown = "select-dropdown", + selectToggle = "select-toggle", + focusInputField = "focus-input-field", + signatureBuildingEvent = "signature-building-event", + bulldoze = "bulldoze", + bulldozeEnd = "bulldoze-end", + relocateBuilding = "relocate-building", + mapTilePurchaseMode = "map-tile-purchase-mode", + mapTilePurchaseModeEnd = "map-tile-purchase-mode-end", + xpEvent = "xp-event", + milestoneEvent = "milestone-event", + economy = "economy", + chirpEvent = "chirp-event", + likeChirp = "like-chirp", + chirper = "chirper", + purchase = "purchase", + enableBuilding = "enable-building", + disableBuilding = "disable-building", + pauseSimulation = "pause-simulation", + resumeSimulation = "resume-simulation", + simulationSpeed1 = "simulation-speed-1", + simulationSpeed2 = "simulation-speed-2", + simulationSpeed3 = "simulation-speed-3", + togglePolicy = "toggle-policy", + takeLoan = "take-loan", + removeItem = "remove-item", + toggleInfoMode = "toggle-info-mode", + takePhoto = "take-photo", + tutorialTriggerCompleteEvent = "tutorial-trigger-complete-event", + selectRadioNetwork = "select-radio-network", + selectRadioStation = "select-radio-station", + generateRandomName = "generate-random-name", + decreaseElevation = "decrease-elevation", + increaseElevation = "increase-elevation", + selectPreviousItem = "select-previous-item", + selectNextItem = "select-next-item", + openPanel = "open-panel", + closePanel = "close-panel", + openMenu = "open-menu", + closeMenu = "close-menu", + clickDisableButton = "click-disable-button" + } + export type Action = () => void | boolean; + export type Action1D = (value: number) => void | boolean; + export interface InputActionsDefinition { + "Move Horizontal": Action1D; + "Change Slider Value": Action1D; + "Change Tool Option": Action1D; + "Change Value": Action1D; + "Change Line Schedule": Action1D; + "Select Popup Button": Action1D; + "Move Vertical": Action1D; + "Switch Radio Station": Action1D; + "Scroll Vertical": Action1D; + "Scroll Assets": Action1D; + "Select": Action; + "Purchase Dev Tree Node": Action; + "Select Chirp Sender": Action; + "Save Game": Action; + "Overwrite Save": Action; + "Confirm": Action; + "Expand Group": Action; + "Collapse Group": Action; + "Select Route": Action; + "Remove Operating District": Action; + "Upgrades Menu": Action; + "Purchase Map Tile": Action; + "Unfollow Citizen": Action; + "Like Chirp": Action; + "Unlike Chirp": Action; + "Enable Info Mode": Action; + "Disable Info Mode": Action; + "Toggle Tool Color Picker": Action; + "Cinematic Mode": Action; + "Photo Mode": Action; + "Focus Citizen": Action; + "Unfocus Citizen": Action; + "Focus Line Panel": Action; + "Focus Occupants Panel": Action; + "Focus Info Panel": Action; + "Close": Action; + "Back": Action; + "Leave Underground Mode": Action; + "Leave Info View": Action; + "Leave Map Tile View": Action; + "Jump Section": Action1D; + "Switch Tab": Action1D; + "Switch Option Section": Action1D; + "Switch DLC": Action1D; + "Switch Ordering": Action1D; + "Switch Radio Network": Action1D; + "Change Time Scale": Action1D; + "Switch Page": Action1D; + "Default Tool": Action; + "Default Tool UI": Action; + "Tool Options": Action; + "Switch Toolmode": Action; + "Toggle Snapping": Action; + "Toggle Contour Lines": Action; + "Capture Keyframe": Action; + "Reset Property": Action; + "Toggle Property": Action; + "Previous Tutorial Phase": Action; + "Continue Tutorial": Action; + "Finish Tutorial": Action; + "Close Tutorial": Action; + "Focus Tutorial List": Action; + "Start Next Tutorial": Action; + "Pause Simulation": Action; + "Resume Simulation": Action; + "Switch Speed": Action; + "Speed 1": Action; + "Speed 2": Action; + "Speed 3": Action; + "Bulldozer": Action; + "Exit Underground Mode": Action; + "Enter Underground Mode": Action; + "Increase Elevation": Action; + "Decrease Elevation": Action; + "Change Elevation": Action1D; + "Advisor": Action; + "Quicksave": Action; + "Quickload": Action; + "Focus Selected Object": Action; + "Hide UI": Action; + "Map Tile Purchase Panel": Action; + "Info View": Action; + "Progression Panel": Action; + "Economy Panel": Action; + "City Information Panel": Action; + "Statistic Panel": Action; + "Transportation Overview Panel": Action; + "Notification Panel": Action; + "Chirper Panel": Action; + "Lifepath Panel": Action; + "Event Journal Panel": Action; + "Radio Panel": Action; + "Photo Mode Panel": Action; + "Take Photo": Action; + "Relocate Selected Object": Action; + "Toggle Selected Object Active": Action; + "Delete Selected Object": Action; + "Toggle Selected Object Emptying": Action; + "Toggle Selected Lot Edit": Action; + "Toggle Follow Selected Citizen": Action; + "Toggle Traffic Routes": Action; + "Pause Menu": Action; + "Load Game": Action; + "Start Game": Action; + "Save Options": Action; + "Switch User": Action; + "Unset Binding": Action; + "Reset Binding": Action; + "Switch Savegame Location": Action1D; + "Show Advanced": Action; + "Hide Advanced": Action; + "Select Directory": Action; + "Search Options": Action; + "Clear Search": Action; + "Credit Speed": Action1D; + "Debug UI": Action; + "Debug Prefab Tool": Action; + "Debug Change Field": Action1D; + "Debug Multiplier": Action1D; + } + export type InputAction = keyof InputActionsDefinition; + export interface ButtonTheme { + button: string; + hint: string; + } + export interface ButtonSounds { + select?: UISound | string | null; + hover?: UISound | string | null; + focus?: UISound | string | null; + } + export interface ButtonProps extends React.ButtonHTMLAttributes { + focusKey?: FocusKey; + debugName?: string; + selected?: boolean; + theme?: Partial; + sounds?: ButtonSounds | null; + selectAction?: InputAction; + selectSound?: UISound | string | null; + tooltipLabel?: ReactNode; + disableHint?: boolean; + /** When the button is clicked or the SELECT button on a gamepad is pressed */ + onSelect?: () => void; + as?: "button" | "div"; + hintAction?: InputAction; + forceHint?: boolean; + shortcut?: InputAction; + allowFocusableChildren?: boolean; + } + export interface IconButtonTheme extends ButtonTheme { + icon: string; + } + export interface IconButtonProps extends ButtonProps { + src: string; + tinted?: boolean; + theme?: Partial; + } + export interface LabeledIconButtonTheme extends IconButtonTheme { + label: string; + } + export interface LabeledIconButtonProps extends IconButtonProps { + theme: Partial; + } + type ButtonTheme$1 = Partial; + type ButtonProps$1 = ButtonProps & Partial & { + variant?: "flat" | "primary" | "round" | "menu" | "icon" | "floating" | "default"; + theme?: ButtonTheme$1; + }; + export export const Button: (props: ButtonProps$1) => JSX.Element; + export export const MenuButton: (props: Partial) => JSX.Element; + export export const FloatingButton: (props: Partial) => JSX.Element; + export type AnchoredPopupAlignment = "left" | "right"; + export interface DropdownTheme extends DropdownToggleTheme, DropdownMenuTheme, DropdownItemTheme { + } + export interface DropdownToggleTheme { + dropdownToggle: string; + label: string; + indicator?: string; + hiddenIcon?: string; + visibleIcon?: string; + } + export interface DropdownMenuTheme { + dropdownPopup: string; + dropdownMenu: string; + scrollable: string; + } + export interface DropdownItemTheme { + dropdownItem: string; + } + export interface DropdownProps { + focusKey?: FocusKey; + initialFocused?: UniqueFocusKey | null; + theme?: Partial; + content: ReactNode; + alignment?: AnchoredPopupAlignment; + onToggle?: (visible: boolean) => void; + } + export export const Dropdown: ({ focusKey, initialFocused, theme: partialTheme, content, alignment, children, onToggle }: PropsWithChildren) => JSX.Element; + export interface DropdownToggleProps extends DropdownToggleBaseProps, ClassProps { + theme?: DropdownToggleTheme; + openIconComponent?: ReactNode; + closeIconComponent?: ReactNode; + } + export export const DropdownToggle: ({ theme, openIconComponent, closeIconComponent, children, ...props }: PropsWithChildren) => JSX.Element; + export interface DropdownToggleBaseProps extends React.ButtonHTMLAttributes { + tooltip?: ReactNode; + showHint?: boolean; + theme?: Partial; + buttonTheme?: ButtonProps$1["theme"]; + sounds?: ButtonSounds | null; + selectSound?: UISound | string | null; + tooltipLabel?: ReactNode; + } + export interface DropdownItemProps extends ClassProps { + focusKey?: FocusKey; + value: T; + selected?: boolean; + theme?: DropdownItemTheme; + sounds?: ButtonSounds | null; + closeOnSelect?: boolean; + /** + * Called when the user selects this item. + * The provided callback will not be invoked if this item is already selected. + */ + onChange?: (value: T) => void; + /** Called when the user clicks this item while it was already selected. */ + onToggleSelected?: (value: T) => void; + } + /** + * Used to select between a number of mutually exclusive values. + * When one item is selected, the other items in the menu cease to be selected. + * + * Values can be integers, enums, strings or any other object that can be compared with `===`. + * + * When the item is clicked, the dropdown menu is automatically hidden. + */ + export export function DropdownItem({ focusKey, value, selected, theme, sounds, className, onChange, onToggleSelected, closeOnSelect, children }: PropsWithChildren>): JSX.Element; + export interface TransitionSounds { + enter?: UISound | string | null; + exit?: UISound | string | null; + } + export type LocReactNode = JSX.Element | string; + export interface PanelProps extends HTMLAttributes { + focusKey?: FocusKey; + header?: ReactNode; + footer?: ReactNode; + theme?: Partial; + transition?: TransitionStyles | null; + transitionSounds?: TransitionSounds | null; + contentClassName?: string; + onClose?: () => void; + allowFocusExit?: boolean; + hintClassName?: string; + showCloseHint?: boolean | InputAction; + unfocusedHintAction?: InputAction; + backActionOverride?: string; + allowLooping?: boolean; + } + export interface DraggablePanelProps extends PanelProps { + initialPosition?: Number2; + } + export interface InfoSectionProps extends ClassProps { + focusKey?: FocusKey; + tooltip?: ReactNode; + disableFocus?: boolean; + } + export const InfoSection: ({ focusKey, tooltip, disableFocus, className, children }: PropsWithChildren) => JSX.Element; + export interface InfoSectionFoldoutProps extends InfoSectionProps { + header?: ReactNode; + initialExpanded?: boolean; + expandFromContent?: boolean; + onToggleExpanded?: (expanded: boolean) => void; + } + export const InfoSectionFoldout: ({ header, initialExpanded, expandFromContent, focusKey, tooltip, disableFocus, className, onToggleExpanded, children }: PropsWithChildren) => JSX.Element; + export interface InfoRowProps extends ClassProps { + icon?: string; + left?: ReactNode; + right?: ReactNode; + tooltip?: ReactNode; + link?: ReactNode; + uppercase?: boolean; + subRow?: boolean; + disableFocus?: boolean; + noShrinkRight?: boolean; + } + export const InfoRow: ({ icon, left, right, tooltip, link, uppercase, subRow, disableFocus, className, noShrinkRight }: InfoRowProps) => JSX.Element; + export interface SimplePanelProps extends PanelProps { + draggable?: false | undefined; + } + interface DraggablePanelProps$1 extends DraggablePanelProps { + draggable: true; + } + type PanelProps$1 = SimplePanelProps | DraggablePanelProps$1; + export export const Panel: (props: PropsWithChildren) => JSX.Element; + export interface IconProps { + src: string; + tinted?: boolean; + className?: string; + children?: ReactNode; + } + export export const Icon: ({ tinted, className, src, children }: IconProps) => JSX.Element; + export const PortalContainerProvider: ({ children }: { + children: RefReactElement; + }) => JSX.Element; + export function usePortalContainer(): HTMLElement; + export interface IPortal { + ({ children }: PropsWithChildren): React.ReactPortal; + usePortalContainer: typeof usePortalContainer; + ContainerProvider: typeof PortalContainerProvider; + } + export export const Portal: IPortal; + export interface AutoScrollSettings { + speed: number; + delay: number; + repeat: boolean; + minOverflow: number; + } + export interface ScrollControllerCallback { + scrollTo(x: number, y: number): void; + scrollBy(x: number, y: number): void; + smoothScrollTo(x: number, y: number): void; + scrollIntoView(element: Element): void; + } + export class ScrollController { + private _callback; + scrollTo(x: number, y: number): void; + scrollBy(x: number, y: number): void; + smoothScrollTo(x: number, y: number): void; + scrollIntoView(element: Element): void; + _attachCallback(callback: ScrollControllerCallback): void; + _detachCallback(callback: ScrollControllerCallback): void; + } + export interface ScrollableProps { + horizontal?: boolean; + vertical?: boolean; + trackVisibility?: "always" | "scrollable"; + overshootX?: number; + overshootY?: number; + smooth?: boolean; + controller?: ScrollController; + className?: string; + style?: CSSProperties; + onScroll?: () => void; + onOverflowX?: (overflow: boolean) => void; + onOverflowY?: (overflow: boolean) => void; + autoScroll?: boolean; + autoScrollSettings?: AutoScrollSettings; + } + export export const Scrollable: (props: ScrollableProps & { + children?: import("react").ReactNode; + } & import("react").RefAttributes) => import("react").ReactElement> | null; + export enum ParagraphStyle { + None = 0, + Heading1 = 1, + Heading2 = 2, + Heading3 = 3, + Heading4 = 4, + Heading5 = 5, + Heading6 = 6, + ListItem = 7 + } + export type FormattedTextRenderResult = { + node: ReactNode; + style: ParagraphStyle; + images: string[]; + }; + export interface FormattedTextRenderer { + render(str: string): FormattedTextRenderResult; + } + export interface FormattedTextTheme { + p: string; + h1: string; + h2: string; + h3: string; + h4: string; + h5: string; + h6: string; + link: string; + listItem: string; + } + export interface FormattedTextProps extends HTMLAttributes { + focusKey?: FocusKey; + text?: LocReactNode; + theme?: Partial; + renderer?: FormattedTextRenderer; + onLinkSelect?: (data: string) => void; + selectAction?: InputAction; + } + export export const FormattedText: ({ focusKey, text, theme: partialTheme, renderer, className, onLinkSelect, selectAction, ...props }: FormattedTextProps) => JSX.Element; + export interface FormattedParagraphsTheme extends FormattedTextTheme { + paragraphs: string; + } + export interface FormattedParagraphsProps extends HTMLAttributes { + focusKey?: FocusKey; + /** @deprecated */ + text?: string | string[]; + theme?: Partial; + renderer?: FormattedTextRenderer; + onLinkSelect?: (data: string) => void; + selectAction?: InputAction; + maxLineLength?: number; + splitLineLength?: number; + } + export export const FormattedParagraphs: ({ focusKey, text, theme: partialTheme, renderer, className, children, onLinkSelect, selectAction, maxLineLength, splitLineLength, ...props }: PropsWithChildren) => JSX.Element; + export export class MarkdownRenderer implements FormattedTextRenderer { + render(str: string): FormattedTextRenderResult; + } + export type LinkRenderer = (data: string, text: ReactNode[], key?: string | number | null | undefined) => ReactNode | undefined; + export export class MarkupRenderer implements FormattedTextRenderer { + private linkRenderer?; + constructor(linkRenderer?: LinkRenderer | undefined); + render(str: string): FormattedTextRenderResult; + } + // https://coherent-labs.com/Documentation/cpp-gameface/d1/dea/shape_morphing.html + // https://coherent-labs.com/Documentation/cpp-gameface/d4/d08/interface_morph_animation.html + export export interface HTMLImageElement { + getSrcSVGAnimation(): MorphAnimation | null; + } + export export interface Element { + getMaskSVGAnimation(): MorphAnimation | null; + } + export export interface MorphAnimation { + currentTime: number; + playbackRate: number; + play(): void; + pause(): void; + reverse(): void; + playFromTo(playTime: number, pauseTime: number, callback?: () => void): void; + } + + export { + ButtonProps$1 as ButtonProps, + InfoRow as PanelSectionRow, + InfoSection as PanelSection, + InfoSectionFoldout as PanelFoldout, + PanelProps$1 as PanelProps, + UITriggeredConfirmationDialog as ConfirmationDialog, + }; + + export {}; + +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/types/utils.d.ts b/CS2M/CS2M.UI/types/utils.d.ts new file mode 100644 index 0000000..8d8b530 --- /dev/null +++ b/CS2M/CS2M.UI/types/utils.d.ts @@ -0,0 +1,26 @@ +declare module "cs2/utils" { + export type EqualityComparer = (a: T, b: T) => boolean; + export interface Entity { + index: number; + version: number; + } + export export function entityKey({ index, version }: Entity): string; + export export function parseEntityKey(value: any): Entity | undefined; + export export function entityEquals(a: Entity | null | undefined, b: Entity | null | undefined): boolean; + export export function isNullOrEmpty(s: string | null | undefined): boolean; + /** + * Performs equality by iterating through keys on an object and returning false + * when any key has values which are not strictly equal between the arguments. + * Returns true when the values of all keys are strictly equal. + */ + export export function shallowEqual(a: any, b: any, depth?: number): boolean; + export export function useMemoizedValue(value: T, equalityComparer: EqualityComparer): T; + export export function formatLargeNumber(value: number): string; + export export function useFormattedLargeNumber(value: number): string; + export export function useRem(): number; + export export function useCssLength(length: string): number; + export export function preloadImages | string[]>(urls: T): T; + + export {}; + +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/types/validateTypes.ts b/CS2M/CS2M.UI/types/validateTypes.ts new file mode 100644 index 0000000..695aaa2 --- /dev/null +++ b/CS2M/CS2M.UI/types/validateTypes.ts @@ -0,0 +1,7 @@ +import { ModRegistrar } from "cs2/modding"; + +async function validateExportTypes() { + // only default export is processed by the UI, any named exports will be ignored. + let isIndexFileValid: { 'default': ModRegistrar } = await import('../src/index'); + return isIndexFileValid; +} \ No newline at end of file diff --git a/CS2M/CS2M.UI/webpack.config.js b/CS2M/CS2M.UI/webpack.config.js new file mode 100644 index 0000000..9057ab1 --- /dev/null +++ b/CS2M/CS2M.UI/webpack.config.js @@ -0,0 +1,121 @@ +const path = require("path"); +const MOD = require("./mod.json"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const { CSSPresencePlugin } = require("./tools/css-presence"); +const TerserPlugin = require("terser-webpack-plugin"); +const gray = (text) => `\x1b[90m${text}\x1b[0m`; + +const CSII_USERDATAPATH = process.env.CSII_USERDATAPATH; + +if (!CSII_USERDATAPATH) { + throw "CSII_USERDATAPATH environment variable is not set, ensure the CSII Modding Toolchain is installed correctly"; +} + +const OUTPUT_DIR = `${CSII_USERDATAPATH}\\Mods\\${MOD.id}`; + +const banner = ` + * Cities: Skylines II UI Module + * + * Id: ${MOD.id} + * Author: ${MOD.author} + * Version: ${MOD.version} + * Dependencies: ${MOD.dependencies.join(",")} +`; + +module.exports = { + mode: "production", + stats: "none", + entry: { + [MOD.id]: "./src/index.tsx", + }, + externalsType: "window", + externals: { + react: "React", + "react-dom": "ReactDOM", + "cs2/modding": "cs2/modding", + "cs2/api": "cs2/api", + "cs2/bindings": "cs2/bindings", + "cs2/l10n": "cs2/l10n", + "cs2/ui": "cs2/ui", + "cs2/input": "cs2/input", + "cs2/utils": "cs2/utils", + "cohtml/cohtml": "cohtml/cohtml", + }, + module: { + rules: [ + { + test: /\.tsx?$/, + use: "ts-loader", + exclude: /node_modules/, + }, + { + test: /\.s?css$/, + include: path.join(__dirname, "src"), + use: [ + MiniCssExtractPlugin.loader, + { + loader: "css-loader", + options: { + url: true, + importLoaders: 1, + modules: { + auto: true, + exportLocalsConvention: "camelCase", + localIdentName: "[local]_[hash:base64:3]", + }, + }, + }, + "sass-loader", + ], + }, + { + test: /\.(png|jpe?g|gif|svg)$/i, + type: "asset/resource", + generator: { + filename: "images/[name][ext][query]", + }, + }, + ], + }, + resolve: { + extensions: [".tsx", ".ts", ".js"], + modules: ["node_modules", path.join(__dirname, "src")], + alias: { + "mod.json": path.resolve(__dirname, "mod.json"), + }, + }, + output: { + path: path.resolve(__dirname, OUTPUT_DIR), + library: { + type: "module", + }, + publicPath: `coui://ui-mods/`, + }, + optimization: { + minimize: true, + minimizer: [ + new TerserPlugin({ + extractComments: { + banner: () => banner, + }, + }), + ], + }, + experiments: { + outputModule: true, + }, + plugins: [ + new MiniCssExtractPlugin(), + new CSSPresencePlugin(), + { + apply(compiler) { + let runCount = 0; + compiler.hooks.done.tap("AfterDonePlugin", (stats) => { + console.log(stats.toString({ colors: true })); + console.log(`\n🔨 ${!runCount++ ? "Built" : "Updated"} ${MOD.id}`); + console.log(" " + gray(OUTPUT_DIR) + "\n"); + }); + }, + }, + ], +}; diff --git a/CS2M/CS2M.csproj b/CS2M/CS2M.csproj index e0c2781..bd10c15 100644 --- a/CS2M/CS2M.csproj +++ b/CS2M/CS2M.csproj @@ -67,6 +67,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/CS2M/Log.cs b/CS2M/Log.cs index 6549805..1d850ee 100644 --- a/CS2M/Log.cs +++ b/CS2M/Log.cs @@ -1,6 +1,9 @@ -using System; -using Colossal.Logging; +using Colossal.Logging; +using System; +using System.Collections.Generic; using System.Diagnostics; +using System.Linq; +using System.Reflection; namespace CS2M { @@ -51,5 +54,42 @@ public static void Debug(string message) Logger.Debug(message); System.Diagnostics.Debug.Print(message); } + + public static void FindAllMethodsReturning() + { + var result = new List(); + var targetType = typeof(T); + + foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) + { + Type[] types; + try + { + types = assembly.GetTypes(); + } + catch (ReflectionTypeLoadException ex) + { + types = ex.Types.Where(t => t != null).ToArray(); + } + + foreach (var type in types) + { + foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static)) + { + if (method.ReturnType == targetType) + { + result.Add(method); + } + } + } + } + + var methods = result; + foreach (var method in methods) + { + Log.Info($"Метод: {method.DeclaringType.FullName}.{method.Name} возвращает ILocalAssetDatabase"); + } + + } } } diff --git a/CS2M/Mod.cs b/CS2M/Mod.cs index 709e861..588667e 100644 --- a/CS2M/Mod.cs +++ b/CS2M/Mod.cs @@ -1,4 +1,5 @@ using Colossal.IO.AssetDatabase; +using Colossal.Logging; using CS2M.Commands; using CS2M.Commands.ApiServer; using CS2M.Mods; @@ -12,6 +13,7 @@ namespace CS2M public class Mod : IMod { public static Settings.Settings ModSettings; + public static ILog log = LogManager.GetLogger($"{nameof(CS2M)}.{nameof(Mod)}").SetShowsErrorsInUI(false); public void OnLoad(UpdateSystem updateSystem) { diff --git a/CS2M/Networking/LocalPlayer.cs b/CS2M/Networking/LocalPlayer.cs index 2c900ca..207fa26 100644 --- a/CS2M/Networking/LocalPlayer.cs +++ b/CS2M/Networking/LocalPlayer.cs @@ -1,10 +1,31 @@ -using Colossal.Win32; +using Colossal.Entities; +using Colossal.IO.AssetDatabase; +using Colossal.Win32; using CS2M.API.Commands; using CS2M.API.Networking; using CS2M.Commands.ApiServer; using CS2M.UI; +using Game; +using Game.Assets; +using Game.City; +using Game.PSI; +using Game.Routes; +using Game.SceneFlow; +using Game.Settings; +using Game.Simulation; +using Game.UI; +using Game.UI.Menu; +using Game.Zones; using LiteNetLib; +using LiteNetLib.Utils; +using MessagePack; using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Threading.Tasks; +using Unity.Entities; +using UnityEngine; using static Game.Rendering.Debug.RenderPrefabRenderer; namespace CS2M.Networking @@ -17,6 +38,8 @@ public class LocalPlayer : Player private NetworkManager _networkManager; private string _message; + public const string stateSnapshotName = "CS2M_Server_State"; + public LocalPlayer() : base() { Instance = this; @@ -117,6 +140,7 @@ public bool DownloadingMap() Command.SendToAll(new textMessageCommand($"= {Username} joined game =")); _networkManager.CancelConnectTimeout(); + return Playing(); } @@ -131,6 +155,139 @@ public bool Playing() return true; } + public string saveCurrentState() + { + + // Save Game Run + Log.Info("World name:" + World.DefaultGameObjectInjectionWorld.Name); + + + //var gm = GameManager.instance; + //if (gm != null && GameManager.instance.gameMode.IsGame() ) + if (UISystem.Instance._gameMode == GameMode.Game) + { + CityConfigurationSystem cityConfig = World.DefaultGameObjectInjectionWorld.GetExistingSystemManaged(); + + XPSystem curXPsys = World.DefaultGameObjectInjectionWorld.GetExistingSystemManaged(); + + Guid session = Telemetry.GetCurrentSession(); + + var currentSaveInfo = new SaveInfo + { + cityName = cityConfig.overrideCityName, + mapName = cityConfig.cityName, + population = Telemetry.gameplayData.population.m_Population, + money = Telemetry.gameplayData.moneyAmount, + sessionGuid = Telemetry.GetCurrentSession(), + lastModified = DateTime.Now + }; + + // Creating preview, like in AutoSaveSystem.SafeAutoSave(); + RenderTexture preview = ScreenCaptureHelper.CreateRenderTarget("PreviewSaveGame-Auto", 680, 383); + ScreenCaptureHelper.CaptureScreenshot(Camera.main, preview, new MenuHelpers.SaveGamePreviewSettings()); + + MenuUISystem existingSystemManaged = World.DefaultGameObjectInjectionWorld.GetExistingSystemManaged(); + + //COSystemBase.baseLog.InfoFormat("Auto-saving {0}...", text); + Log.Info("Saving ... " + stateSnapshotName); + + try + { + ILocalAssetDatabase cs2SaveDatabaseTarget = AssetDatabase.user; + + /*if (cs2SaveDatabaseTarget.Exists(SaveHelpers.GetAssetDataPath(cs2SaveDatabaseTarget, text), out var asset)) + { + cs2SaveDatabaseTarget.DeleteAsset(asset); + }*/ + + GameManager.instance.Save(stateSnapshotName, existingSystemManaged.GetSaveInfo(autoSave: false), cs2SaveDatabaseTarget, preview).ContinueWith(task => + { + if (task.Exception != null) + Log.Error($"Error saving: {task.Exception}"); + }); + + ; + } + catch (Exception exception) + { + //COSystemBase.baseLog.Error(exception); + Log.Error(exception.ToString()); + } + finally + { + //CoreUtils.Destroy((UnityEngine.Object)preview); + UnityEngine.Object.Destroy(preview); + + } + + Log.Info( + $"cityName: {currentSaveInfo.cityName}, " + + $"mapName: {currentSaveInfo.mapName}, " + + $"population: {currentSaveInfo.population}, " + + $"money: {currentSaveInfo.money}, " + + $"sessionGuid: {currentSaveInfo.sessionGuid}, " + + $"lastModified: {currentSaveInfo.lastModified}. " + ); + + // Check if path correct + string fileFullPath = Environment.GetEnvironmentVariable("CSII_USERDATAPATH") + "/Saves/" + Mod.ModSettings.userID + "/" + stateSnapshotName + ".cok"; + if (File.Exists(fileFullPath)) + { + Log.Info($"Save file crated succesfully {fileFullPath}"); + return fileFullPath; + } else + { + string msg_id = "You didn't set correct USER ID in mod's settings!"; + ShowWarningMessage("You didn't set correct USER ID in mod's settings! Plaese visit the mod settings, and fill your USER ID.", "No USER_ID set!"); + Log.Warn($"Save NOT created. {msg_id} CheckPath: {fileFullPath}"); + return null; + } + + + // Environment.GetEnvironmentVariable("CSII_USERDATAPATH") = C:\Users\SCAD\AppData\LocalLow\Colossal Order\Cities Skylines II/ + // AssetDatabase.user = User + // return Environment.GetEnvironmentVariable("CSII_USERDATAPATH") + "/Saves/" + AssetDatabase.user.GetHashCode(); + + //Log.FindAllMethodsReturning(); + + } + else + { + Log.Info("assetdb root:" + AssetDatabase.user.rootPath + " " + AssetDatabase.user.GetHashCode()); + //assetdb root: C:/Users/SCAD/AppData/LocalLow/Colossal Order/Cities Skylines II + + //AutoSaveSystem.PruneAutoSaves + //SharedSettings.instance.general + + //GameManager.instance.userInterface.appBindings.ShowMessageDialog(new MessageDialog("Paradox.TELEMETRY_CONSENT_ERROR_TITLE", "Paradox.TELEMETRY_CONSENT_ERROR_DESCRIPTION", "Common.OK"), delegate {} ); + + ShowWarningMessage("Nothing to save, because you are in main menu. Here you can discauss upcoming session, but the game simulation not started yet. Thus your stat will not be saved, or transfred to clients.", "Game in main menu!"); + + + //MessageDialog msg2 = new MessageDialog("title", "message", "confact", "act1 act2"); + //AppBindings apb = new AppBindings(); + //apb.ShowMessageDialog(msg2, null); + + Log.Warn(">>> Game in main menu. Nothing to save."); + return null; + } + + + + } + + public void ShowWarningMessage(string message, string tille) + { + ErrorDialogManager.Initialize(); + ErrorDialog msgd = new ErrorDialog(); + msgd.localizedTitle = "Game in main menu."; + msgd.localizedMessage = "Nothing to save, because you are in main menu. Here you can discauss upcoming session, but the game simulation not started yet. Thus your stat will not be saved, or transfred to clients."; + msgd.severity = ErrorDialog.Severity.Warning; + msgd.actions = ErrorDialog.Actions.None; + ErrorDialogManager.ShowErrorDialog(msgd); + //ErrorDialogManager.Clear(); + } + // INACTIVE -> PLAYING (Server) public bool Playing(ConnectionConfig connectionConfig) { @@ -141,7 +298,9 @@ public bool Playing(ConnectionConfig connectionConfig) _networkManager = new NetworkManager(); + // Start the LiteNetLib server bool serverStarted = _networkManager.StartServer(connectionConfig); + if (!serverStarted) { _message = "= Error! The server failed to start. ="; @@ -156,7 +315,20 @@ public bool Playing(ConnectionConfig connectionConfig) _message = "= The server has started succesfully. ="; printStatus(_message); - return true; + string specailSave = saveCurrentState(); + + if (specailSave != null) + { + + Command.SendToClients(new StateSyncCommand(specailSave)); + return true; + } + else + { + return false; + } + + } public void Blocked() @@ -238,4 +410,4 @@ public void SendToApiServer(ApiCommandBase message) _networkManager.SendToApiServer(message); } } -} \ No newline at end of file +} diff --git a/CS2M/Settings/Settings.cs b/CS2M/Settings/Settings.cs index 10aeb3e..c0b62f3 100644 --- a/CS2M/Settings/Settings.cs +++ b/CS2M/Settings/Settings.cs @@ -18,6 +18,7 @@ public class Settings : ModSetting private const string GeneralSettings = "GeneralSettings"; private const string AdvancedSettings = "AdvancedSettings"; + [SettingsUISection(Section, GeneralSettings)] [SettingsUIDropdown(typeof(Settings), nameof(GetLoggingLevels))] [SettingsUISetter(typeof (Settings), nameof(OnSetLoggingLevel))] @@ -31,6 +32,10 @@ public class Settings : ModSetting [SettingsUITextInput] public string ApiServerPort { get; set; } + [SettingsUISection(Section, GeneralSettings)] + [SettingsUITextInput] + public string userID { get; set; } + public Settings(IMod mod) : base(mod) { SetDefaults(); @@ -41,6 +46,7 @@ public sealed override void SetDefaults() LoggingLevel = Level.Debug.severity; ApiServer = "api.citiesskylinesmultiplayer.com"; ApiServerPort = "4242"; + userID = ""; } public static DropdownItem[] GetLoggingLevels() diff --git a/CS2M/UI/UISystem.cs b/CS2M/UI/UISystem.cs index 2d13833..2edc2b5 100644 --- a/CS2M/UI/UISystem.cs +++ b/CS2M/UI/UISystem.cs @@ -43,16 +43,19 @@ public partial class UISystem : UISystemBase private ValueBinding _hostGameEnabled; private ValueBinding _chatSendEnabled; private ValueBinding _playerStatus; + private ValueBinding _stopSrvVis; private ValueBinding> _modSupportStatus; - private GameMode _gameMode = GameMode.Other; + public GameMode _gameMode = GameMode.Other; protected override void OnStartRunning() { base.OnStartRunning(); + _activeMenuScreenBinding = BindingsHelper.GetValueBinding("menu", "activeScreen"); _activeGameScreenBinding = BindingsHelper.GetValueBinding("game", "activeScreen"); + var panel = World.GetOrCreateSystemManaged(); panel.SetDefaultArgs(new ChatPanel()); } @@ -62,6 +65,28 @@ protected override void OnCreate() base.OnCreate(); Instance = this; + AddBinding(_joinMenuVisible = new ValueBinding(nameof(CS2M), "JoinMenuVisible", false)); + AddBinding(_hostMenuVisible = new ValueBinding(nameof(CS2M), "HostMenuVisible", false)); + AddBinding(_modSupportStatus = new ValueBinding>(nameof(CS2M), "modSupport", new List(), new ListWriter(new ValueWriter()))); + + AddBinding(_joinIPAddress = new ValueBinding(nameof(CS2M), "JoinIpAddress", "127.0.0.1")); + AddBinding(_joinPort = new ValueBinding(nameof(CS2M), "JoinPort", 4230)); + AddBinding(_hostPort = new ValueBinding(nameof(CS2M), "HostPort", 4230)); + Random rnd = new Random(); + AddBinding(_username = new ValueBinding(nameof(CS2M), "Username", "CS2M_u" + rnd.Next(100, 1000))); + + AddBinding(_joinGameEnabled = new ValueBinding(nameof(CS2M), "JoinGameEnabled", true)); + AddBinding(_hostGameEnabled = new ValueBinding(nameof(CS2M), "HostGameEnabled", true)); + AddBinding(_chatSendEnabled = new ValueBinding(nameof(CS2M), "ChatSendEnabled", false)); + + AddBinding(_stopSrvVis = new ValueBinding(nameof(CS2M), "stopSrvVisible", false)); + + AddBinding(_playerStatus = new ValueBinding(nameof(CS2M), "PlayerStatus", "Playing network session in CSII")); + + AddBinding(_NetworkStates = new ValueBinding(nameof(CS2M), "uiNetworkStates", "= Waiting for commands =")); + + + AddBinding(new TriggerBinding(nameof(CS2M), "ShowMultiplayerMenu", ShowUITraversal)); AddBinding(new TriggerBinding(nameof(CS2M), "HideJoinGameMenu", HideJoinGameMenu)); @@ -91,30 +116,15 @@ protected override void OnCreate() _usrMsg.Update(usrMsg); })); + AddBinding(_usrMsg = new ValueBinding(nameof(CS2M), "playerMessage", "")); AddBinding(new TriggerBinding(nameof(CS2M), "JoinGame", JoinGame)); AddBinding(new TriggerBinding(nameof(CS2M), "HostGame", HostGame)); + AddBinding(new TriggerBinding(nameof(CS2M), "StopServer", stopServer)); - AddBinding(_joinMenuVisible = new ValueBinding(nameof(CS2M), "JoinMenuVisible", false)); - AddBinding(_hostMenuVisible = new ValueBinding(nameof(CS2M), "HostMenuVisible", false)); - AddBinding(_modSupportStatus = new ValueBinding>(nameof(CS2M), "modSupport", new List(), new ListWriter(new ValueWriter()))); - - AddBinding(_joinIPAddress = new ValueBinding(nameof(CS2M), "JoinIpAddress", "127.0.0.1")); - AddBinding(_joinPort = new ValueBinding(nameof(CS2M), "JoinPort", 4230)); - AddBinding(_hostPort = new ValueBinding(nameof(CS2M), "HostPort", 4230)); - Random rnd = new Random(); - AddBinding(_username = new ValueBinding(nameof(CS2M), "Username", "CS2M_u" + rnd.Next(100, 1000))); - - AddBinding(_joinGameEnabled = new ValueBinding(nameof(CS2M), "JoinGameEnabled", true)); - AddBinding(_hostGameEnabled = new ValueBinding(nameof(CS2M), "HostGameEnabled", true)); - AddBinding(_chatSendEnabled = new ValueBinding(nameof(CS2M), "ChatSendEnabled", false)); - - AddBinding(_playerStatus = new ValueBinding(nameof(CS2M), "PlayerStatus", "Playing network session in CSII")); - - AddBinding(_NetworkStates = new ValueBinding(nameof(CS2M), "uiNetworkStates", "= Waiting for commands =")); AddBinding(new TriggerBinding(nameof(CS2M), "SendMessage", sendMessage)); Command.ConnectToCSM( @@ -123,9 +133,9 @@ protected override void OnCreate() sendToClients: NetworkInterface.Instance.SendToClients, getCommandHandler: type => { - if (type == typeof(PlayerJoinedCommand)) + if (type == typeof(StateSyncCommand)) { - return new PlayerJoinedHandler(); + return new StateSyncCommandHandler(); } if (type == typeof(textMessageCommand)) { @@ -136,7 +146,12 @@ protected override void OnCreate() } ); - + Log.Info("=== CS2M UI Sys Started ==="); + Log.Info("Unity: "+Environment.GetEnvironmentVariable("CSII_UNITYVERSION")); + Log.Info("Entities: " + Environment.GetEnvironmentVariable("CSII_ENTITIESVERSION")); + Log.Info("InstallPath:" + Environment.GetEnvironmentVariable("CSII_INSTALLATIONPATH")); + Log.Info("UserFolder:" + Environment.GetEnvironmentVariable("CSII_USERDATAPATH")); + } private void RefreshModSupport() @@ -163,6 +178,7 @@ private void ShowUITraversal() } else if (_gameMode == GameMode.Game) { + ShowHostGameMenu(); Log.Info("I'm in active game session. Opening Host UI"); } @@ -247,6 +263,17 @@ private void HostGame() _hostGameEnabled.Update(false); _joinGameEnabled.Update(false); _chatSendEnabled.Update(true); + _stopSrvVis.Update(true); + } + + private void stopServer() + { + SetGameState(PlayerStatus.INACTIVE); + LocalPlayer.Instance.Inactive(); + _hostGameEnabled.Update(true); + _joinGameEnabled.Update(true); + _chatSendEnabled.Update(true); + _stopSrvVis.Update(false); } public void SetGameState(PlayerStatus status) @@ -265,27 +292,26 @@ protected override void OnGameLoadingComplete(Purpose purpose, GameMode mode) -public class PlayerJoinedCommand : CommandBase +public class StateSyncCommand : CommandBase { - public string PlayerName { get; set; } + public string pathToSave { get; set; } - public PlayerJoinedCommand() { } + public StateSyncCommand() { } - public PlayerJoinedCommand(int senderId, string playerName) + public StateSyncCommand(string pathFromSave) { - SenderId = senderId; - PlayerName = playerName; - MesasgeBody = $"{playerName} has joined the server"; + pathToSave = pathFromSave; + Log.Info("Command StateSyncCommand:" + pathToSave); } } -public class PlayerJoinedHandler : CommandHandler +public class StateSyncCommandHandler : CommandHandler { - protected override void Handle(PlayerJoinedCommand command) + protected override void Handle(StateSyncCommand command) { - Log.Info(command.MesasgeBody); + Log.Info("Command StateSyncCommand:" + command.MesasgeBody); UISystem.Instance?.piblishNetworkStateInUI(command.MesasgeBody); } diff --git a/lang/en-US.json b/lang/en-US.json index 1c76ea3..2d9890b 100644 --- a/lang/en-US.json +++ b/lang/en-US.json @@ -6,9 +6,11 @@ "Options.OPTION[CS2M.CS2M.Mod.Settings.LoggingLevel]": "Logging Level", "Options.OPTION[CS2M.CS2M.Mod.Settings.ApiServer]": "API Server", "Options.OPTION[CS2M.CS2M.Mod.Settings.ApiServerPort]": "API Server Port", + "Options.OPTION[CS2M.CS2M.Mod.Settings.userID]": "Your User ID:", "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.LoggingLevel]": "Set the logging level of the CS2M mod. Note that levels Trace or Debug may impair performance.", "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.ApiServer]": "", "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.ApiServerPort]": "", + "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.userID]": "Find your UserID in addrss bar of your Steam profiile, or just naviagate %appdata%/../LocalLow/Colossal Order/Cities Skylines II/Saves (Windows)", "CS2M.UI.Multiplayer": "Multiplayer", "CS2M.UI.IPAddress": "IP Address", "CS2M.UI.Port": "Port", diff --git a/lang/ru-RU.json b/lang/ru-RU.json index 2300fb6..c80d2c5 100644 --- a/lang/ru-RU.json +++ b/lang/ru-RU.json @@ -6,9 +6,11 @@ "Options.OPTION[CS2M.CS2M.Mod.Settings.LoggingLevel]": "Уровень Логирования", "Options.OPTION[CS2M.CS2M.Mod.Settings.ApiServer]": "API-Сервер", "Options.OPTION[CS2M.CS2M.Mod.Settings.ApiServerPort]": "Порт API-сервера", + "Options.OPTION[CS2M.CS2M.Mod.Settings.userID]": "Ваш UserID: ", "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.LoggingLevel]": "Установите уровень логирования мода CS2M. Учтите, что уровни Trace и Debug могут серьезно уменьшить производительность игры.", "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.ApiServer]": "API-сервер позволяет проверить, доступен ли ваш IP-адрес извне", "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.ApiServerPort]": "", + "Options.OPTION_DESCRIPTION[CS2M.CS2M.Mod.Settings.userID]": "Найдите свой UserID в адресной строке своего профиля Staem, или просто перйдите по адресу %appdata%/../LocalLow/Colossal Order/Cities Skylines II/Saves (windows)", "CS2M.UI.Multiplayer": "Мультиплеер (Мод)", "CS2M.UI.IPAddress": "IP-адрес", "CS2M.UI.Port": "Порт", diff --git a/server_err_on_Join.txt b/server_err_on_Join.txt deleted file mode 100644 index 559f15c..0000000 --- a/server_err_on_Join.txt +++ /dev/null @@ -1,47 +0,0 @@ -[CRITICAL] System update error during PreSimulation->NetworkingSystem: - -NullReferenceException: Object reference not set to an instance of an object - at CS2M.Networking.NetworkManager.ListenerOnPeerConnectedEvent (LiteNetLib.NetPeer peer) [0x00018] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at LiteNetLib.EventBasedNetListener.LiteNetLib.INetEventListener.OnPeerConnected (LiteNetLib.NetPeer peer) [0x00008] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at LiteNetLib.NetManager.ProcessEvent (LiteNetLib.NetEvent evt) [0x00046] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at LiteNetLib.NetManager.PollEvents () [0x00086] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at CS2M.Networking.NetworkManager.ProcessEvents () [0x0001e] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at CS2M.Networking.LocalPlayer.OnUpdate () [0x0000f] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at CS2M.Networking.NetworkInterface.OnUpdate () [0x00001] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at CS2M.Networking.NetworkingSystem.OnUpdate () [0x00006] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at Unity.Entities.SystemBase.Update () [0x0004e] in :0 - at Game.UpdateSystem.Update (Game.SystemUpdatePhase phase) [0x0004e] in :0 -Colossal.Logging.CustomLogHandler:LogFormat(LogType, Object, String, Object[]) -UnityEngine.Logger:LogFormat(LogType, String, Object[]) -Colossal.Logging.UnityLogger:Log(Level, String, Exception) -Colossal.Logging.UnityLogger:CriticalFormat(Exception, String, Object, Object) -Game.UpdateSystem:Update(SystemUpdatePhase) -Game.Simulation.SimulationSystem:OnUpdate() -Unity.Entities.SystemBase:Update() -Game.UpdateSystem:Update(SystemUpdatePhase) -Game.SceneFlow.GameManager:LateUpdateWorld() -Game.SceneFlow.GameManager:LateUpdate() - -[CRITICAL] System update error during PreSimulation->NetworkingSystem: - -NullReferenceException: Object reference not set to an instance of an object - at CS2M.Networking.NetworkManager.ListenerOnPeerConnectedEvent (LiteNetLib.NetPeer peer) [0x00018] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at LiteNetLib.EventBasedNetListener.LiteNetLib.INetEventListener.OnPeerConnected (LiteNetLib.NetPeer peer) [0x00008] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at LiteNetLib.NetManager.ProcessEvent (LiteNetLib.NetEvent evt) [0x00046] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at LiteNetLib.NetManager.PollEvents () [0x00086] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at CS2M.Networking.NetworkManager.ProcessEvents () [0x0001e] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at CS2M.Networking.LocalPlayer.OnUpdate () [0x0000f] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at CS2M.Networking.NetworkInterface.OnUpdate () [0x00001] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at CS2M.Networking.NetworkingSystem.OnUpdate () [0x00006] in <0b85ae1b77d543a0a8ac1d0cd7520cdd>:0 - at Unity.Entities.SystemBase.Update () [0x0004e] in :0 - at Game.UpdateSystem.Update (Game.SystemUpdatePhase phase) [0x0004e] in :0 -Colossal.Logging.CustomLogHandler:LogFormat(LogType, Object, String, Object[]) -UnityEngine.Logger:LogFormat(LogType, String, Object[]) -Colossal.Logging.UnityLogger:Log(Level, String, Exception) -Colossal.Logging.UnityLogger:CriticalFormat(Exception, String, Object, Object) -Game.UpdateSystem:Update(SystemUpdatePhase) -Game.Simulation.SimulationSystem:OnUpdate() -Unity.Entities.SystemBase:Update() -Game.UpdateSystem:Update(SystemUpdatePhase) -Game.SceneFlow.GameManager:LateUpdateWorld() -Game.SceneFlow.GameManager:LateUpdate()