local l_StudioPublishService_0 = game:GetService("StudioPublishService");
local l_Parent_0 = script.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Packages.Roact);
local v3 = require(l_Parent_0.Packages.RoactRodux);
local v4 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v4.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v7 = require(l_Parent_0.Src.Resources.Constants);
local l_UI_0 = v4.UI;
local l_Button_0 = l_UI_0.Button;
local l_ScrollingFrame_0 = l_UI_0.ScrollingFrame;
local l_LoadingIndicator_0 = l_UI_0.LoadingIndicator;
local l_UI_1 = v4.UI;
local l_SearchBar_0 = l_UI_1.SearchBar;
local l_Separator_0 = l_UI_1.Separator;
local v15 = require(l_Parent_0.Src.Actions.SetIsPublishing);
local v16 = require(l_Parent_0.Src.Actions.SetScreen);
local v17 = require(l_Parent_0.Src.Actions.SetPlaceInfo);
local v18 = require(l_Parent_0.Src.Actions.SetPublishInfo);
local v19 = require(l_Parent_0.Src.Actions.SetPublishInProgress);
local v20 = require(l_Parent_0.Src.Thunks.LoadExistingPlaces);
local v21 = require(l_Parent_0.Src.Components.Footer);
local v22 = require(l_Parent_0.Src.Components.TilePlace);
local _ = require(l_Parent_0.Src.Util.PublishPlaceAsUtilities).shouldShowDevPublishLocations;
local _ = require(l_Parent_0.Src.Util.PublishPlaceAsUtilities).getIsOptInChina;
local v25 = v2.PureComponent:extend("ScreenChoosePlace");
local l_StudioUsePublishInProgressScreen2_0 = game:GetFastFlag("StudioUsePublishInProgressScreen2");
v25.init = function(v27)
    v27.state = {
        searchTerm = ""
    };
    v27.finishedConnection = nil;
    v27.layoutRef = v2.createRef();
    v27.OnSearchRequested = function(v28)
        v27:setState({
            searchTerm = v28
        });
    end;
end;
v25.didMount = function(v29)
    v29.finishedConnection = l_StudioPublishService_0.GamePublishFinished:connect(function(v30, _, v32)
        if v29.state.selectedPlace == nil then
            return ;
        elseif not v30 then
            v29.props.OpenPublishFailPage(v29.state.selectedPlace, v29.props.ParentGame, v32);
            return ;
        else
            v29.props.OpenPublishSuccessfulPage(v29.state.selectedPlace, v29.props.ParentGame);
            return ;
        end;
    end);
end;
v25.willUnmount = function(v33)
    for v34, _ in pairs(v33.props.Places) do
        v33.props.Places[v34] = nil;
    end;
    if v33.finishedConnection then
        v33.finishedConnection:disconnect();
    end;
end;
v25.render = function(v36)
    local l_props_0 = v36.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_Localization_0 = l_props_0.Localization;
    local l_OnClose_0 = l_props_0.OnClose;
    local l_NextPageCursor_0 = l_props_0.NextPageCursor;
    local l_Places_0 = l_props_0.Places;
    local l_ParentGame_0 = l_props_0.ParentGame;
    local l_IsPublishing_0 = l_props_0.IsPublishing;
    local l_SourceGameMinAge_0 = l_props_0.SourceGameMinAge;
    if l_SourceGameMinAge_0 then
        l_SourceGameMinAge_0 = false;
        if l_props_0.SourceGameMinAge >= 17 then
            l_SourceGameMinAge_0 = l_props_0.ParentGame.minimumAge and l_props_0.ParentGame.minimumAge < 17;
        end;
    end;
    local l_DispatchLoadExistingPlaces_0 = l_props_0.DispatchLoadExistingPlaces;
    local l_dispatchSetIsPublishing_0 = l_props_0.dispatchSetIsPublishing;
    local l_OpenChooseGamePage_0 = l_props_0.OpenChooseGamePage;
    local l_OpenPublishInProgressPage_0 = l_props_0.OpenPublishInProgressPage;
    local v50 = false;
    if v36.state.selectedPlace ~= nil then
        v50 = v36.state.selectedPlace.placeId == 0;
    end;
    local v51 = l_Localization_0:getText("ScreenHeader", "ChoosePlace", {
        not not l_ParentGame_0 and l_ParentGame_0.name or ""
    });
    local v52 = l_Localization_0:getText("General", "UntitledGame");
    local v53 = {
        v2.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Top,
            SortOrder = Enum.SortOrder.LayoutOrder,
            Padding = UDim.new(0, 0),
            [v2.Ref] = v36.layoutRef
        })
    };
    if l_props_0.PlacesQueryState == v7.QUERY_STATE.QUERY_STATE_SUCCESS then
        for _, v55 in pairs(l_Places_0) do
            if string.find(v55.name:lower(), v36.state.searchTerm:lower()) then
                local l_createElement_0 = v2.createElement;
                local l_v22_0 = v22;
                local v58 = {
                    Name = v55.name,
                    Id = v55.placeId,
                    LayoutOrder = #v53 + 1
                };
                local v59 = false;
                if v36.state.selectedPlace ~= nil then
                    v59 = v36.state.selectedPlace.placeId == v55.placeId;
                end;
                v58.Selected = v59;
                v58.LastItem = false;
                v58.OnActivated = function()
                    v36:setState({
                        selectedPlace = v55
                    });
                end;
                v53[#v53 + 1] = l_createElement_0(l_v22_0, v58);
            end;
        end;
        v53[0] = v2.createElement(v22, {
            Name = l_Localization_0:getText("Button", "AddNewPlaceToGame"),
            LayoutOrder = 1,
            Selected = v50,
            OnActivated = function()
                v36:setState({
                    selectedPlace = {
                        placeId = 0,
                        name = v52
                    }
                });
            end
        });
    end;
    local v60 = not v50 and "Overwrite" or "Create";
    local _ = 200;
    if not (not ((not not v53 and math.ceil(#v53 * 80) or 200) < 560) or not l_NextPageCursor_0) then
        l_DispatchLoadExistingPlaces_0(l_ParentGame_0, l_NextPageCursor_0);
    end;
    local l_createElement_1 = v2.createElement;
    local v63 = "Frame";
    local v64 = {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundColor3 = l_Stylizer_0.backgroundColor,
        BorderSizePixel = 0
    };
    local v65 = {
        Back = v2.createElement("ImageButton", {
            Image = l_Stylizer_0.icons.backArrow,
            Size = UDim2.new(0, 20, 0, 20),
            Position = UDim2.new(0, 30, 0, 10),
            Style = 0,
            BorderSizePixel = 0,
            BackgroundTransparency = 1,
            [v2.Event.Activated] = function()
                l_OpenChooseGamePage_0();
            end
        }),
        Sep1 = v2.createElement(l_Separator_0, {
            Position = UDim2.new(0.5, 0, 0, 50)
        }),
        Header = v2.createElement("TextLabel", {
            Text = v51,
            Position = UDim2.new(0, 30, 0, 80),
            TextXAlignment = Enum.TextXAlignment.Left,
            TextSize = 20,
            BackgroundTransparency = 1,
            Font = l_Stylizer_0.header.font,
            TextColor3 = l_Stylizer_0.textColor
        }),
        Warning17PlusFrame = if not l_SourceGameMinAge_0 then nil else v2.createElement("Frame", {
            Position = UDim2.new(0, 30, 0, 105),
            Size = UDim2.new(1, 0, 0, 20),
            BackgroundTransparency = 1
        }, {
            WarningIcon = v2.createElement("ImageLabel", {
                Size = UDim2.fromOffset(20, 20),
                AnchorPoint = Vector2.new(0, 0.5),
                Image = l_Stylizer_0.icons.warning,
                BackgroundTransparency = 1
            }),
            WarningText = v2.createElement("TextLabel", {
                Position = UDim2.fromOffset(25, 0),
                Text = l_Localization_0:getText("ScreenHeader", "17PlusWarning"),
                TextXAlignment = Enum.TextXAlignment.Left,
                TextSize = 20,
                BackgroundTransparency = 1,
                Font = l_Stylizer_0.header.font,
                TextColor3 = l_Stylizer_0.warningTextColor
            })
        }),
        SearchBar = v2.createElement("Frame", {
            Position = UDim2.new(0.7, 4, 0, 62),
            Size = UDim2.new(0, l_Stylizer_0.DROPDOWN_WIDTH + 20, 0, l_Stylizer_0.DROPDOWN_HEIGHT),
            BackgroundTransparency = 1
        }, {
            v2.createElement(l_SearchBar_0, {
                Size = UDim2.new(0.7, 0, 1, 0),
                ShowSearchIcon = true,
                ShowSearchButton = false,
                IncrementalTextSearch = true,
                OnSearchRequested = v36.OnSearchRequested
            })
        })
    };
    local v66 = false;
    if l_props_0.PlacesQueryState == v7.QUERY_STATE.QUERY_STATE_SUCCESS then
        v66 = v2.createElement(l_ScrollingFrame_0, {
            AutomaticCanvasSize = Enum.AutomaticSize.Y,
            Size = UDim2.new(1, 0, 0.5, l_Stylizer_0.FOOTER_HEIGHT * 2),
            Position = UDim2.new(0, 0, 0, 135),
            NextPageRequestDistance = 100,
            NextPageFunc = function()
                if l_NextPageCursor_0 then
                    l_DispatchLoadExistingPlaces_0(l_ParentGame_0, l_NextPageCursor_0);
                end;
            end
        }, v53);
    end;
    v65.MainContentsSuccess = v66;
    v66 = false;
    if l_props_0.PlacesQueryState == v7.QUERY_STATE.QUERY_STATE_QUERYING then
        v66 = v2.createElement("Frame", {
            Position = UDim2.new(0, 30, 0, 115),
            Size = UDim2.new(0.95, 0, 0.7, 0),
            BackgroundColor3 = l_Stylizer_0.backgroundColor
        }, {
            v2.createElement(l_LoadingIndicator_0, {
                Position = UDim2.new(0.5, -100, 0, 115),
                Size = UDim2.new(0, 200, 0, 50)
            })
        });
    end;
    v65.MainContentsQuerying = v66;
    v66 = false;
    if l_props_0.PlacesQueryState == v7.QUERY_STATE.QUERY_STATE_FAILED then
        v66 = v2.createElement("Frame", {
            Position = UDim2.new(0, 30, 0, 115),
            Size = UDim2.new(0.95, 0, 0.7, 0),
            BackgroundColor3 = l_Stylizer_0.backgroundColor
        }, {
            v2.createElement("TextLabel", {
                Text = l_Localization_0:getText("General", "FetchFailed"),
                Position = UDim2.new(0.5, 0, 0, 50),
                TextSize = 24,
                BackgroundTransparency = 1,
                TextXAlignment = Enum.TextXAlignment.Center,
                TextColor3 = l_Stylizer_0.failText.text,
                Font = l_Stylizer_0.failText.font
            }),
            v2.createElement(l_Button_0, {
                AnchorPoint = Vector2.new(0.5, 0.5),
                OnClick = function()
                    l_DispatchLoadExistingPlaces_0(l_ParentGame_0);
                end,
                Position = UDim2.new(0.5, 0, 0, 100),
                Size = UDim2.new(0, 150, 0, 75),
                Style = "Round",
                Text = l_Localization_0:getText("Button", "Retry")
            })
        });
    end;
    v65.MainContentsFailed = v66;
    v66 = v2.createElement;
    local l_v21_0 = v21;
    local v68 = {};
    local v69 = {
        Name = v60
    };
    local l_l_ParentGame_0_0 = l_ParentGame_0;
    if l_l_ParentGame_0_0 then
        l_l_ParentGame_0_0 = false;
        if v36.state.selectedPlace ~= nil then
            l_l_ParentGame_0_0 = not l_IsPublishing_0;
        end;
    end;
    v69.Active = l_l_ParentGame_0_0;
    v69.OnActivated = function()
        if l_StudioUsePublishInProgressScreen2_0 and v36.state.selectedPlace.placeId ~= 0 then
            l_OpenPublishInProgressPage_0(l_ParentGame_0, v36.state.selectedPlace, l_props_0.IsPublish);
            return ;
        else
            game:GetService("StudioPublishService"):SetTeamCreateOnPublishInfo(false, "");
            if v36.state.selectedPlace.placeId == 0 then
                l_StudioPublishService_0:setUploadNames("New Place", l_ParentGame_0.name);
            else
                l_StudioPublishService_0:setUploadNames(v36.state.selectedPlace.name, l_ParentGame_0.name);
            end;
            l_StudioPublishService_0:publishAs(l_ParentGame_0.universeId, v36.state.selectedPlace.placeId, 0, l_props_0.IsPublish, nil);
            l_dispatchSetIsPublishing_0(true);
            return ;
        end;
    end;
    v68.MainButton = v69;
    v68.OnClose = l_OnClose_0;
    v65.Footer = v66(l_v21_0, v68);
    return l_createElement_1(v63, v64, v65);
end;
return v3.connect(function(v71, _)
    local l_placeInfo_0 = v71.ExistingGame.placeInfo;
    local l_selectedGame_0 = v71.ExistingGame.selectedGame;
    local _ = v71.ExistingGame.gameConfiguration;
    return {
        NextPageCursor = l_placeInfo_0.nextPageCursor,
        Places = l_placeInfo_0.places,
        ParentGame = l_selectedGame_0,
        IsPublishing = v71.PublishedPlace.isPublishing,
        PlacesQueryState = l_placeInfo_0.queryState,
        SourceGameMinAge = v71.ExistingGame.gameInfo.minimumAge
    };
end, function(v76)
    return {
        DispatchLoadExistingPlaces = function(v77, v78)
            v76(v20(v77, v78));
        end,
        dispatchSetIsPublishing = function(v79)
            v76(v15(v79));
        end,
        OpenChooseGamePage = function()
            v76(v17({
                places = {}
            }));
            v76(v16(v7.SCREENS.CHOOSE_GAME));
        end,
        OpenPublishInProgressPage = function(v80, v81, v82)
            v76(v19({
                universe = v80,
                place = v81,
                isPublish = v82,
                failCount = 0,
                requestInFlight = false
            }));
            v76(v16(v7.SCREENS.PUBLISH_IN_PROGRESS));
        end,
        OpenPublishSuccessfulPage = function(v83, v84)
            v76(v18({
                id = v84.universeId,
                name = v83.name,
                parentGameName = v84.name
            }));
            v76(v16(v7.SCREENS.PUBLISH_SUCCESSFUL));
        end,
        OpenPublishFailPage = function(v85, v86, v87)
            v76(v18({
                id = v85.placeId,
                name = v85.name,
                parentGameName = v86.name,
                parentGameId = v86.universeId,
                failed = true,
                message = v87
            }));
            v76(v16(v7.SCREENS.PUBLISH_FAIL));
        end,
        ClearPlaces = function()
            v76(v17({
                places = {}
            }));
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization
})(v25)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_ScrollingFrame_0 = v3.UI.ScrollingFrame;
local v7 = require(l_Parent_0.Src.Network.Requests.SettingsImpl);
local v8 = require(l_Parent_0.Src.Resources.Constants);
local l_Separator_0 = v3.UI.Separator;
local v10 = require(l_Parent_0.Src.Components.Menu.MenuBar);
local v11 = require(l_Parent_0.Src.Components.Footer);
local v12 = require(l_Parent_0.Src.Components.BasicInfo);
local v13 = require(l_Parent_0.Src.Actions.AddChange);
local v14 = require(l_Parent_0.Src.Actions.SetIsPublishing);
local v15 = require(l_Parent_0.Src.Actions.SetScreen);
local v16 = require(l_Parent_0.Src.Actions.SetPublishInfo);
local v17 = require(l_Parent_0.Src.Thunks.LoadGroups);
local v18 = require(l_Parent_0.Src.Thunks.LoadDataSharingDefault);
local l_shouldShowDevPublishLocations_0 = require(l_Parent_0.Src.Util.PublishPlaceAsUtilities).shouldShowDevPublishLocations;
local l_sendAnalyticsToKibana_0 = require(l_Parent_0.Src.Util.PublishPlaceAsUtilities).sendAnalyticsToKibana;
local l_game_FastInt_0 = game:GetFastInt("LuobuDevPublishAnalyticsHundredthsPercentage");
local v22 = require(l_Parent_0.Src.Flags.getFFlagCAP1107);
local l_TextInputDialog_0 = v3.UI.TextInputDialog;
local v24 = require(l_Parent_0.Src.Util.KeyProvider);
local v25 = v24.getOptInLocationsKeyName();
local v26 = v24.getChinaKeyName();
local v27 = v24.getLuobuStudioDevPublishKeyName();
local v28 = v24.getSelectedKeyName();
local v29 = v24.getCreateNewGameKeyName();
local l_StudioPublishService_0 = game:GetService("StudioPublishService");
local v31 = {
    "BasicInfo"
};
local v32 = v1.PureComponent:extend("ScreenCreateNewGame");
v32.init = function(v33)
    v33.state = {
        selected = 1,
        showEmailDialog = false,
        bottomText = ""
    };
    v33.finishedConnection = nil;
    v33.changeSelection = function(v34)
        v33:setState({
            selected = v34
        });
    end;
    v33.scrollingFrameRef = v1.createRef();
    v33.shouldShowEmailDialog = function()
        local l_ChangedOptInLocations_0 = v33.props.ChangedOptInLocations;
        if l_ChangedOptInLocations_0 and l_ChangedOptInLocations_0[v26] ~= nil then
            return l_ChangedOptInLocations_0[v26];
        else
            return false;
        end;
    end;
end;
v32.didMount = function(v36)
    v36.finishedConnection = l_StudioPublishService_0.GamePublishFinished:connect(function(v37, v38)
        if v37 and v38 ~= 0 then
            v36.props.OpenPublishSuccessfulPage(v36.props.Changed);
            return ;
        else
            v36.props.OpenPublishFailPage(v36.props.Changed);
            return ;
        end;
    end);
    v36.props.DispatchLoadGroups();
    if v22() then
        v36.props.DispatchDataSharingDefault();
    end;
end;
v32.willUnmount = function(v39)
    if v39.finishedConnection then
        v39.finishedConnection:disconnect();
    end;
end;
v32.render = function(v40)
    local l_props_0 = v40.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_Localization_0 = l_props_0.Localization;
    local v44 = l_props_0.API:get();
    local l_OnClose_0 = l_props_0.OnClose;
    local l_ReadyToSave_0 = l_props_0.ReadyToSave;
    local l_IsPublishing_0 = l_props_0.IsPublishing;
    local l_Changed_0 = l_props_0.Changed;
    local l_IsPublish_0 = l_props_0.IsPublish;
    local l_dispatchSetIsPublishing_0 = l_props_0.dispatchSetIsPublishing;
    local l_selected_0 = v40.state.selected;
    local _ = nil;
    local v56 = {
        MenuBar = v1.createElement(v10, {
            Entries = v31,
            Selected = l_selected_0,
            SelectionChanged = v40.changeSelection
        }),
        Separator = v1.createElement(l_Separator_0, {
            Position = UDim2.new(0, l_Stylizer_0.MENU_BAR_WIDTH, 0.5, 0),
            DominantAxis = Enum.DominantAxis.Height
        }),
        Page = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Position = UDim2.new(0, l_Stylizer_0.MENU_BAR_WIDTH, 0, 0),
            Size = UDim2.new(1, -l_Stylizer_0.MENU_BAR_WIDTH, 1, -l_Stylizer_0.FOOTER_HEIGHT)
        }, {
            v1.createElement(v12, {
                IsPublish = l_IsPublish_0
            })
        }),
        Footer = v1.createElement(v11, {
            MainButton = {
                Name = not l_IsPublish_0 and "Save" or "Create",
                Active = l_ReadyToSave_0 and not l_IsPublishing_0,
                OnActivated = function()
                    if not l_shouldShowDevPublishLocations_0() or not v40.shouldShowEmailDialog() then
                        if l_shouldShowDevPublishLocations_0() then
                            l_sendAnalyticsToKibana_0(v27, l_game_FastInt_0, v29, {
                                [v25] = v26,
                                [v28] = false
                            });
                        end;
                        l_dispatchSetIsPublishing_0(true);
                        v7.saveAll(l_Changed_0, l_Localization_0, v44, nil, l_IsPublish_0, l_props_0.OwnedGroups);
                        return ;
                    else
                        v40:setState({
                            showEmailDialog = true
                        });
                        return ;
                    end;
                end
            },
            OnClose = l_OnClose_0,
            NextScreen = v8.SCREENS.CHOOSE_GAME,
            NextScreenText = "UpdateExistingGame",
            IsPublish = l_IsPublish_0
        }, {
            EmailDialog = v1.createElement(l_TextInputDialog_0, {
                Enabled = v40.state.showEmailDialog,
                Size = Vector2.new(l_Stylizer_0.emailDialog.Size.X, l_Stylizer_0.emailDialog.Size.Y),
                Title = l_Localization_0:getText(v25, "EmailDialogHeader"),
                Header = l_Localization_0:getText(v25, "EmailDialogHeader"),
                Buttons = {
                    {
                        Key = "Submit",
                        Text = l_Localization_0:getText("Button", "Submit")
                    },
                    {
                        Key = "Cancel",
                        Text = l_Localization_0:getText("Button", "Cancel")
                    }
                },
                Body = l_Localization_0:getText(v25, "EmailDialogBody"),
                Description = l_Localization_0:getText(v25, "EmailDialogDescription"),
                TextInput = {
                    {
                        PlaceholderText = l_Localization_0:getText(v25, "EmailAddress")
                    },
                    {
                        PlaceholderText = l_Localization_0:getText(v25, "ConfirmEmailAddress"),
                        BottomText = v40.state.bottomText
                    }
                },
                OnClose = function()
                    v40:setState({
                        showEmailDialog = false,
                        bottomText = ""
                    });
                end,
                OnButtonPressed = function(v53, v54, v55)
                    if not (v53 == "Submit") then
                        v40:setState({
                            showEmailDialog = false,
                            bottomText = ""
                        });
                        return ;
                    else
                        l_sendAnalyticsToKibana_0(v27, l_game_FastInt_0, v29, {
                            [v25] = v26,
                            [v28] = true
                        });
                        if v54 == v55 then
                            v40:setState({
                                showEmailDialog = false,
                                bottomText = ""
                            });
                            l_dispatchSetIsPublishing_0(true);
                            v7.saveAll(l_Changed_0, l_Localization_0, v44, v54, l_IsPublish_0, l_props_0.OwnedGroups);
                            return ;
                        else
                            v40:setState({
                                bottomText = l_Localization_0:getText(v25, "ErrorEmailNotEqual")
                            });
                            return ;
                        end;
                    end;
                end
            })
        })
    };
    if not (not v22() and not l_IsPublish_0) then
        v56.Page = v1.createElement(l_ScrollingFrame_0, {
            BackgroundTransparency = 1,
            Position = UDim2.new(0, l_Stylizer_0.MENU_BAR_WIDTH, 0, 0),
            Size = UDim2.new(1, -l_Stylizer_0.MENU_BAR_WIDTH, 1, -l_Stylizer_0.FOOTER_HEIGHT),
            CanvasSize = UDim2.new(1, -l_Stylizer_0.MENU_BAR_WIDTH, 0, 0),
            AutomaticCanvasSize = Enum.AutomaticSize.Y,
            [v1.Ref] = v40.scrollingFrameRef
        }, {
            v1.createElement(v12, {
                IsPublish = l_IsPublish_0
            })
        });
    end;
    return v1.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundColor3 = l_Stylizer_0.backgroundColor
    }, v56);
end;
return v2.connect(function(v57, _)
    local l_NewGameSettings_0 = v57.NewGameSettings;
    local v60 = nil;
    if v22() then
        v60 = v57.GroupsHavePermission.groupInfo.ownedGroups;
    end;
    return {
        Changed = l_NewGameSettings_0.changed,
        ReadyToSave = next(l_NewGameSettings_0.errors) == nil,
        IsPublishing = v57.PublishedPlace.isPublishing,
        ChangedOptInLocations = l_NewGameSettings_0.changed.OptInLocations,
        OwnedGroups = v60
    };
end, function(v61)
    return {
        OpenPublishSuccessfulPage = function(v62)
            v61(v16({
                id = game.GameId,
                name = v62.name,
                parentGameName = v62.name
            }));
            v61(v15(v8.SCREENS.PUBLISH_SUCCESSFUL));
        end,
        OpenPublishFailPage = function(v63)
            v61(v16({
                id = game.GameId,
                name = v63.name,
                parentGameName = v63.name,
                parentGameId = 0,
                settings = v63,
                failed = true
            }));
            v61(v15(v8.SCREENS.PUBLISH_FAIL));
        end,
        DispatchLoadGroups = function()
            v61(v17());
        end,
        DispatchDataSharingDefault = function()
            assert(v22());
            v61(v18());
        end,
        dispatchSetIsPublishing = function(v64)
            v61(v14(v64));
        end,
        dispatchSetExistingUniverseConfiguration = function(v65)
            v61(v13("name", v65.name));
            if v65.description then
                v61(v13("description", v65.description));
            end;
            if v65.genre then
                v61(v13("genre", v65.genre));
            end;
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization,
    API = l_ContextServices_0.API
})(v32)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v6 = v3.RobloxAPI.new();
local v7 = require(l_Parent_0.Src.Actions.SetPublishInfo);
local v8 = require(l_Parent_0.Src.Actions.SetScreen);
local v9 = require(l_Parent_0.Src.Actions.SetIsPublishing);
local v10 = require(l_Parent_0.Src.Resources.Constants);
local l_StyleModifier_0 = v3.Util.StyleModifier;
local l_Button_0 = v3.UI.Button;
local v13 = require(l_Parent_0.Src.Network.Requests.SettingsImpl);
local l_StudioPublishService_0 = game:GetService("StudioPublishService");
local l_ContentProvider_0 = game:GetService("ContentProvider");
local v16 = v1.PureComponent:extend("ScreenPublishFail");
v16.init = function(v17)
    v17.state = {};
    v17.finishedConnection = nil;
    v17.isMounted = false;
    v17.thumbnailUrl = string.format("rbxthumb://type=Asset&id=%i&w=%i&h=%i", v17.props.Id, 150, 150);
end;
v16.didMount = function(v18)
    v18.isMounted = true;
    spawn(function()
        l_ContentProvider_0:PreloadAsync({
            v18.thumbnailUrl
        }, function(_, v20)
            if v18.isMounted then
                v18:setState({
                    assetFetchStatus = v20
                });
            end;
        end);
    end);
    v18.finishedConnection = l_StudioPublishService_0.GamePublishFinished:connect(function(v21)
        if v21 then
            v18.props.OpenPublishSuccessfulPage(v18.props.Id, v18.props.Name, v18.props.ParentGameName);
        end;
    end);
end;
v16.willUnmount = function(v22)
    v22.isMounted = false;
    if v22.finishedConnection then
        v22.finishedConnection:disconnect();
    end;
end;
v16.render = function(v23)
    local l_props_0 = v23.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_Localization_0 = l_props_0.Localization;
    local l_v6_0 = v6;
    local l_Id_0 = l_props_0.Id;
    local l_Name_0 = l_props_0.Name;
    local l_ParentGameId_0 = l_props_0.ParentGameId;
    local l_Settings_0 = l_props_0.Settings;
    local l_IsPublishing_0 = l_props_0.IsPublishing;
    local l_dispatchSetIsPublishing_0 = l_props_0.dispatchSetIsPublishing;
    local _ = nil;
    return v1.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundColor3 = l_Stylizer_0.backgroundColor,
        BorderSizePixel = 0
    }, {
        Icon = v1.createElement("ImageLabel", {
            Position = UDim2.new(0.5, 0, 0.2, 0),
            AnchorPoint = Vector2.new(0.5, 0.5),
            Size = UDim2.new(0, 150, 0, 150),
            Image = v23.state.assetFetchStatus == Enum.AssetFetchStatus.Success and v23.thumbnailUrl or l_Stylizer_0.icons.thumbnailPlaceHolder,
            BorderSizePixel = 0
        }),
        Name = v1.createElement("TextLabel", {
            Text = l_Name_0,
            Position = UDim2.new(0.5, 0, 0.35, 0),
            TextSize = 20,
            BackgroundTransparency = 1,
            TextColor3 = l_Stylizer_0.header.text,
            TextXAlignment = Enum.TextXAlignment.Center,
            Font = l_Stylizer_0.header.font
        }),
        Fail = v1.createElement("TextLabel", {
            Text = if not l_IsPublishing_0 then l_Localization_0:getText("PublishFail", "SaveFail") else l_Localization_0:getText("PublishFail", "Fail"),
            Position = UDim2.new(0.5, 0, 0.5, 0),
            TextSize = 24,
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextColor3 = l_Stylizer_0.failText.text,
            Font = l_Stylizer_0.failText.font
        }),
        Retry = v1.createElement(l_Button_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            OnClick = function()
                if not l_IsPublishing_0 then
                    if l_ParentGameId_0 == 0 then
                        v13.saveAll(l_Settings_0, l_Localization_0, l_v6_0, nil, l_props_0.IsPublish);
                    else
                        l_StudioPublishService_0:publishAs(l_ParentGameId_0, l_Id_0, 0, l_props_0.IsPublish, nil);
                    end;
                end;
                l_dispatchSetIsPublishing_0(true);
            end,
            Position = UDim2.new(0.5, 0, 0.8, 0),
            Size = UDim2.new(0, 150, 0, 40),
            Style = "Round",
            StyleModifier = if not l_IsPublishing_0 then nil else l_StyleModifier_0.Disabled,
            Text = l_Localization_0:getText("Button", "Retry")
        }),
        Message = v1.createElement("TextLabel", {
            Text = not (l_props_0.Message ~= nil) and "" or l_props_0.Message,
            TextSize = 24,
            Position = UDim2.new(0.5, 0, 0.5, 32),
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextColor3 = l_Stylizer_0.failText.text,
            Font = l_Stylizer_0.failText.font
        })
    });
end;
return v2.connect(function(v35, _)
    local l_publishInfo_0 = v35.PublishedPlace.publishInfo;
    return {
        Id = l_publishInfo_0.id,
        Name = l_publishInfo_0.name,
        ParentGameName = l_publishInfo_0.parentGameName,
        ParentGameId = l_publishInfo_0.parentGameId,
        Settings = l_publishInfo_0.settings,
        IsPublishing = v35.PublishedPlace.isPublishing,
        Message = l_publishInfo_0.message
    };
end, function(v38)
    return {
        OpenPublishSuccessfulPage = function(v39, v40, v41)
            v38(v7({
                id = v39,
                name = v40,
                parentGameName = v41
            }));
            v38(v8(v10.SCREENS.PUBLISH_SUCCESSFUL));
        end,
        dispatchSetIsPublishing = function(v42)
            v38(v9(v42));
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization,
    API = l_ContextServices_0.API
})(v16)));


local l_Parent_0 = script.Parent.Parent.Parent;
local l_StudioPublishService_0 = game:GetService("StudioPublishService");
local _ = game:GetService("StudioService");
local v3 = require(l_Parent_0.Packages.Framework);
local v4 = require(l_Parent_0.Packages.Roact);
local v5 = require(l_Parent_0.Packages.RoactRodux);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v3.UI;
local l_Button_0 = l_UI_0.Button;
local l_LoadingIndicator_0 = l_UI_0.LoadingIndicator;
local _ = game:GetService("ContentProvider");
local v12 = require(l_Parent_0.Src.Resources.Constants);
local v13 = require(l_Parent_0.Src.Actions.SetPublishInfo);
local v14 = require(l_Parent_0.Src.Actions.SetPublishInProgress);
local v15 = require(l_Parent_0.Src.Actions.SetScreen);
local v16 = v4.PureComponent:extend("ScreenPublishInProgress");
local l_game_FastInt_0 = game:GetFastInt("StudioTeamCreateConflictRetryCount");
local l_game_FastInt_1 = game:GetFastInt("StudioTeamCreateConflictDelaySec");
local v19 = 0;
v16.init = function(v20)
    v20.state = {};
    v20.isMounted = false;
    if v20.props.Id == 0 then
        local _ = game.GameId;
    end;
end;
v16.didMount = function(v22)
    v22.isMounted = true;
    v22.finishedConnection = l_StudioPublishService_0.GamePublishFinished:connect(function(v23, _, v25, v26)
        local _ = v22.props.Progress.FailCount;
        if v26 == Enum.StudioPlaceUpdateFailureReason.TeamCreateConflict and v19 < l_game_FastInt_0 then
            v19 = v19 + 1;
            if v22.retryThread ~= nil then
                task.cancel(v22.retryThread);
                v22.retryThread = nil;
            end;
            v22.retryThread = task.delay(l_game_FastInt_1, function()
                l_StudioPublishService_0:setUploadNames(v22.props.Progress.Place.name, v22.props.Progress.Universe.name);
                l_StudioPublishService_0:publishAs(v22.props.Progress.Universe.universeId, v22.props.Progress.Place.placeId, 0, v22.props.Progress.IsPublish, nil, v19 < l_game_FastInt_0);
            end);
            return ;
        else
            v22.props.DispatchRequestInFlight(false);
            if not v23 then
                v22.props.OpenPublishFailPage(v22.props.Progress.Place, v22.props.Progress.Universe, v25);
                return ;
            else
                v22.props.OpenPublishSuccessfulPage(v22.props.Progress.Place, v22.props.Progress.Universe);
                return ;
            end;
        end;
    end);
    v19 = 0;
end;
v16.willUnmount = function(v28)
    v28.isMounted = false;
    if v28.retryThread ~= nil then
        task.cancel(v28.retryThread);
        v28.retryThread = nil;
    end;
    if v28.finishedConnection then
        v28.finishedConnection:disconnect();
    end;
end;
v16.render = function(v29)
    local l_props_0 = v29.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_Localization_0 = l_props_0.Localization;
    local _ = l_props_0.OnClose;
    local _ = l_props_0.Name;
    local _ = l_props_0.ParentGameName;
    if l_props_0.Progress.RequestInFlight == false and l_props_0.Progress.FailCount == 0 then
        l_StudioPublishService_0:setUploadNames(l_props_0.Progress.Place.name, l_props_0.Progress.Universe.name);
        l_StudioPublishService_0:publishAs(l_props_0.Progress.Universe.universeId, l_props_0.Progress.Place.placeId, 0, l_props_0.Progress.IsPublish, nil, v19 < l_game_FastInt_0);
        l_props_0.DispatchRequestInFlight(true);
    end;
    local v36 = l_Localization_0:getText("General", "UploadInProgressElps");
    local v37 = l_Localization_0:getText("General", "PleaseWait");
    if v19 > 0 then
        v37 = l_Localization_0:getText("General", "UploadConflictRetry");
    end;
    return v4.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundColor3 = l_Stylizer_0.backgroundColor,
        BorderSizePixel = 0
    }, {
        Icon = v4.createElement(l_LoadingIndicator_0, {
            Position = UDim2.new(0.5, 0, 0.3, 0),
            AnchorPoint = Vector2.new(0.5, 0.5),
            Size = UDim2.new(0, 150, 0, 50)
        }),
        UploadInProgressLabel = v4.createElement("TextLabel", {
            Text = v36,
            Position = UDim2.new(0.5, 0, 0.5, 0),
            TextSize = 24,
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextColor3 = l_Stylizer_0.successText.text,
            Font = l_Stylizer_0.successText.font
        }),
        PleaseWaitLabel = v4.createElement("TextLabel", {
            Text = v37,
            Position = UDim2.new(0.5, 0, 0.6, 0),
            TextSize = 24,
            BackgroundTransparency = 1,
            TextColor3 = l_Stylizer_0.header.text,
            TextXAlignment = Enum.TextXAlignment.Center,
            Font = l_Stylizer_0.header.font
        }),
        CancelButton = v4.createElement(l_Button_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            OnClick = l_props_0.OnClose,
            Position = UDim2.new(0.5, 0, 0.9, 0),
            Size = UDim2.new(0, 150, 0, 30),
            Style = "Round",
            Text = l_Localization_0:getText("Button", "Cancel")
        })
    });
end;
return v5.connect(function(v38, _)
    local l_publishInfo_0 = v38.PublishedPlace.publishInfo;
    local l_publishInProgress_0 = v38.PublishInProgress.publishInProgress;
    return {
        Id = l_publishInfo_0.id,
        Name = l_publishInfo_0.name,
        ParentGameName = l_publishInfo_0.parentGameName,
        Progress = {
            Universe = l_publishInProgress_0.universe,
            Place = l_publishInProgress_0.place,
            IsPublish = l_publishInProgress_0.isPublish,
            FailCount = l_publishInProgress_0.failCount,
            RequestInFlight = l_publishInProgress_0.requestInFlight
        }
    };
end, function(v42)
    return {
        DispatchRequestInFlight = function(v43)
            v42(v14({
                requestInFlight = v43
            }));
        end,
        OpenPublishSuccessfulPage = function(v44, v45)
            v42(v13({
                id = v45.universeId,
                name = v44.name,
                parentGameName = v45.name
            }));
            v42(v15(v12.SCREENS.PUBLISH_SUCCESSFUL));
        end,
        OpenPublishFailPage = function(v46, v47, v48)
            v42(v13({
                id = v46.placeId,
                name = v46.name,
                parentGameName = v47.name,
                parentGameId = v47.universeId,
                failed = true,
                message = v48
            }));
            v42(v15(v12.SCREENS.PUBLISH_FAIL));
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization
})(v16)));


local l_Parent_0 = script.Parent.Parent.Parent;
local l_StudioService_0 = game:GetService("StudioService");
local v2 = require(l_Parent_0.Packages.Framework);
local v3 = require(l_Parent_0.Packages.Roact);
local v4 = require(l_Parent_0.Packages.RoactRodux);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Button_0 = v2.UI.Button;
local l_ContentProvider_0 = game:GetService("ContentProvider");
local v9 = v3.PureComponent:extend("ScreenPublishSuccessful");
v9.init = function(v10)
    v10.state = {};
    v10.isMounted = false;
    local l_Id_0 = v10.props.Id;
    if l_Id_0 == 0 then
        l_Id_0 = game.GameId;
    end;
    v10.thumbnailUrl = string.format("rbxthumb://type=GameIcon&id=%i&w=%i&h=%i", l_Id_0, 150, 150);
end;
v9.didMount = function(v12)
    v12.isMounted = true;
    spawn(function()
        l_ContentProvider_0:PreloadAsync({
            v12.thumbnailUrl
        }, function(_, v14)
            if v12.isMounted then
                v12:setState({
                    assetFetchStatus = v14
                });
            end;
        end);
    end);
end;
v9.willUnmount = function(v15)
    v15.isMounted = false;
    l_StudioService_0:requestClose(v15.props.CloseMode);
end;
v9.render = function(v16)
    local l_props_0 = v16.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_Localization_0 = l_props_0.Localization;
    local l_OnClose_0 = l_props_0.OnClose;
    local l_Name_0 = l_props_0.Name;
    local v22 = l_Localization_0:getText("PublishSuccess", "FindInGame", {
        l_props_0.ParentGameName
    });
    local v23 = l_Localization_0:getText("PublishSuccess", "Success");
    if l_props_0.IsPublish == false then
        v23 = l_Localization_0:getText("PublishSuccess", "SaveSuccess");
    end;
    return v3.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundColor3 = l_Stylizer_0.backgroundColor,
        BorderSizePixel = 0
    }, {
        Icon = v3.createElement("ImageLabel", {
            Position = UDim2.new(0.5, 0, 0.2, 0),
            AnchorPoint = Vector2.new(0.5, 0.5),
            Size = UDim2.new(0, 150, 0, 150),
            Image = v16.state.assetFetchStatus == Enum.AssetFetchStatus.Success and v16.thumbnailUrl or l_Stylizer_0.icons.thumbnailPlaceHolder,
            BorderSizePixel = 0
        }),
        Name = v3.createElement("TextLabel", {
            Text = l_Name_0,
            Position = UDim2.new(0.5, 0, 0.35, 0),
            TextSize = 20,
            BackgroundTransparency = 1,
            TextColor3 = l_Stylizer_0.header.text,
            TextXAlignment = Enum.TextXAlignment.Center,
            Font = l_Stylizer_0.header.font
        }),
        Success = v3.createElement("TextLabel", {
            Text = v23,
            Position = UDim2.new(0.5, 0, 0.4, 0),
            TextSize = 24,
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Center,
            TextColor3 = l_Stylizer_0.successText.text,
            Font = l_Stylizer_0.successText.font
        }),
        ParentGame = v3.createElement("TextLabel", {
            Text = v22,
            Position = UDim2.new(0.5, 0, 0.5, 0),
            TextSize = 18,
            BackgroundTransparency = 1,
            TextColor3 = l_Stylizer_0.header.text,
            TextXAlignment = Enum.TextXAlignment.Center,
            Font = l_Stylizer_0.header.font
        }),
        CloseButton = v3.createElement(l_Button_0, {
            AnchorPoint = Vector2.new(0.5, 0.5),
            OnClick = l_OnClose_0,
            Position = UDim2.new(0.5, 0, 0.9, 0),
            Size = UDim2.new(0, 150, 0, 30),
            Style = "Round",
            Text = l_Localization_0:getText("Button", "Close")
        })
    });
end;
return v4.connect(function(v24, _)
    local l_publishInfo_0 = v24.PublishedPlace.publishInfo;
    return {
        Id = l_publishInfo_0.id,
        Name = l_publishInfo_0.name,
        ParentGameName = l_publishInfo_0.parentGameName
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization
})(v9)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Src.Resources.Constants);
local v4 = {
    [v3.SCREENS.CREATE_NEW_GAME] = require(l_Parent_0.Src.Components.ScreenCreateNewGame),
    [v3.SCREENS.CHOOSE_GAME] = require(l_Parent_0.Src.Components.ScreenChooseGame),
    [v3.SCREENS.CHOOSE_PLACE] = require(l_Parent_0.Src.Components.ScreenChoosePlace),
    [v3.SCREENS.PUBLISH_IN_PROGRESS] = require(l_Parent_0.Src.Components.ScreenPublishInProgress),
    [v3.SCREENS.PUBLISH_SUCCESSFUL] = require(l_Parent_0.Src.Components.ScreenPublishSuccessful),
    [v3.SCREENS.PUBLISH_FAIL] = require(l_Parent_0.Src.Components.ScreenPublishFail)
};
for v5, _ in pairs(v3.SCREENS) do
    assert(v4[v5] ~= nil, string.format("ScreenSelect.lua does not handle screen %s", v5));
end;
return v2.connect(function(v7, _)
    return {
        Screen = v7.Screen.screen
    };
end)(function(v9)
    return v1.createElement(v4[v9.Screen], {
        OnClose = v9.OnClose,
        IsPublish = v9.IsPublish,
        CloseMode = v9.CloseMode
    });
end);


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local v3 = v1.PureComponent:extend("ServiceWrapper");
v3.init = function(v4)
    assert(v4.props[v1.Children] ~= nil, "Expected child elements to wrap");
    assert(v4.props.localization ~= nil, "Expected a Localization object");
    assert(v4.props.plugin ~= nil, "Expected a plugin object");
    assert(v4.props.store ~= nil, "Expected a Rodux Store object");
    assert(v4.props.theme ~= nil, "Expected a PluginTheme object");
    assert(v4.props.focusGui ~= nil, "Expected a FocusGui object");
    assert(v4.props.mouse ~= nil, "Expected a Mouse object");
end;
v3.render = function(v5)
    return l_ContextServices_0.provide({
        l_ContextServices_0.Focus.new(v5.props.focusGui),
        l_ContextServices_0.Plugin.new(v5.props.plugin),
        v5.props.localization,
        v5.props.theme,
        l_ContextServices_0.Store.new(v5.props.store),
        l_ContextServices_0.API.new(),
        l_ContextServices_0.Mouse.new(v5.props.mouse),
        v5.props.calloutController
    }, v5.props[v1.Children]);
end;
return v3;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Framework);
local l_Separator_0 = v2.UI.Separator;
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_ContentProvider_0 = game:GetService("ContentProvider");
local v7 = v1.PureComponent:extend("TileGame");
v7.init = function(v8)
    v8.state = {
        assetFetchStatus = nil
    };
    v8.isMounted = false;
end;
v7.didMount = function(v9)
    v9.isMounted = true;
    spawn(function()
        l_ContentProvider_0:PreloadAsync({
            v9.thumbnailUrl
        }, function(_, v11)
            if v9.isMounted then
                v9:setState({
                    assetFetchStatus = v11
                });
            end;
        end);
    end);
end;
v7.willUnmount = function(v12)
    v12.isMounted = false;
end;
v7.render = function(v13)
    local l_props_0 = v13.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_Localization_0 = l_props_0.Localization;
    local l_Name_0 = l_props_0.Name;
    local l_MinimumAge_0 = l_props_0.MinimumAge;
    local v19 = l_props_0.LayoutOrder or 0;
    local l_PrivacyType_0 = l_props_0.PrivacyType;
    local l_OnActivated_0 = l_props_0.OnActivated;
    v13.thumbnailUrl = string.format("rbxthumb://type=AutoGeneratedAsset&id=%i&w=%i&h=%i", l_props_0.Id, 150, 150);
    local v22 = v13.state.assetFetchStatus == Enum.AssetFetchStatus.Success;
    local l_SCREEN_CHOOSE_GAME_0 = l_Stylizer_0.SCREEN_CHOOSE_GAME;
    local v24 = nil;
    local v25 = nil;
    local _ = nil;
    v24 = l_SCREEN_CHOOSE_GAME_0.ICON_SIZE;
    v25 = v24 + l_SCREEN_CHOOSE_GAME_0.NAME_SIZE;
    return v1.createElement("ImageButton", {
        BackgroundTransparency = 1,
        LayoutOrder = v19,
        BorderSizePixel = 0,
        [v1.Event.Activated] = l_OnActivated_0
    }, {
        Icon = v1.createElement("ImageLabel", {
            Position = UDim2.new(0, 0, 0, 0),
            Size = UDim2.new(1, 0, 0, l_SCREEN_CHOOSE_GAME_0.ICON_SIZE),
            Image = not not v22 and v13.thumbnailUrl or l_Stylizer_0.icons.thumbnailPlaceHolder,
            ImageColor3 = not not v22 and Color3.new(1, 1, 1) or l_Stylizer_0.icons.imageColor,
            BackgroundColor3 = l_Stylizer_0.icons.backgroundColor,
            BorderSizePixel = 0
        }),
        Name = v1.createElement("TextLabel", {
            Text = l_Name_0,
            Position = UDim2.fromOffset(0, v24),
            Size = UDim2.new(1, 0, 0, l_SCREEN_CHOOSE_GAME_0.NAME_SIZE),
            TextWrapped = true,
            TextTruncate = Enum.TextTruncate.AtEnd,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextYAlignment = Enum.TextYAlignment.Top,
            TextSize = 18,
            Font = l_Stylizer_0.font,
            TextColor3 = l_Stylizer_0.textColor,
            BackgroundTransparency = 1
        }, {
            Padding = v1.createElement("UIPadding", {
                PaddingTop = UDim.new(0, l_SCREEN_CHOOSE_GAME_0.NAME_PADDING),
                PaddingBottom = UDim.new(0, l_SCREEN_CHOOSE_GAME_0.NAME_PADDING),
                PaddingLeft = UDim.new(0, l_SCREEN_CHOOSE_GAME_0.NAME_PADDING),
                PaddingRight = UDim.new(0, l_SCREEN_CHOOSE_GAME_0.NAME_PADDING)
            })
        }),
        Separator = v1.createElement(l_Separator_0, {
            Position = UDim2.new(0.5, 0, 0, v25)
        }),
        Footer = v1.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, l_SCREEN_CHOOSE_GAME_0.TILE_HEIGHT - v25),
            Position = UDim2.fromOffset(0, v25),
            BackgroundTransparency = 1
        }, {
            Padding = v1.createElement("UIPadding", {
                PaddingLeft = UDim.new(0, l_SCREEN_CHOOSE_GAME_0.FOOTER_SIDE_PADDING),
                PaddingRight = UDim.new(0, l_SCREEN_CHOOSE_GAME_0.FOOTER_SIDE_PADDING)
            }),
            PrivacyLabel = v1.createElement("TextLabel", {
                Text = l_Localization_0:getText("PrivacyType", l_PrivacyType_0),
                AnchorPoint = Vector2.new(0, 0.5),
                Position = UDim2.fromScale(0, 0.5),
                Size = UDim2.fromScale(1, 1),
                TextWrapped = true,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextSize = 14,
                Font = l_Stylizer_0.font,
                TextColor3 = l_PrivacyType_0 == "Public" and l_Stylizer_0.successText.text or l_Stylizer_0.dimmerTextColor,
                BackgroundTransparency = 1
            }),
            AgeGuidelinesLabel = if not not l_MinimumAge_0 and l_MinimumAge_0 >= 17 then v1.createElement("TextLabel", {
                Text = l_MinimumAge_0 .. "+",
                AnchorPoint = Vector2.new(1, 0.5),
                Position = UDim2.fromScale(1, 0.5),
                Size = UDim2.fromOffset(0, 20),
                AutomaticSize = Enum.AutomaticSize.X,
                TextSize = 12,
                Font = l_Stylizer_0.font,
                TextColor3 = l_Stylizer_0.textColor,
                BackgroundColor3 = l_Stylizer_0.foregroundColorContrast
            }, {
                Padding = v1.createElement("UIPadding", {
                    PaddingLeft = UDim.new(0, l_SCREEN_CHOOSE_GAME_0.GUIDELINE_LABEL_PADDING),
                    PaddingRight = UDim.new(0, l_SCREEN_CHOOSE_GAME_0.GUIDELINE_LABEL_PADDING)
                }),
                Corners = v1.createElement("UICorner", {
                    CornerRadius = UDim.new(0, 4)
                })
            }) else nil
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization
})(v7));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v2.UI;
local l_Separator_0 = l_UI_0.Separator;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_RadioButton_0 = l_UI_0.RadioButton;
local l_LayoutOrderIterator_0 = v2.Util.LayoutOrderIterator;
local l_ContentProvider_0 = game:GetService("ContentProvider");
local v11 = v1.PureComponent:extend("TilePlace");
v11.init = function(v12)
    v12.state = {};
    v12.isMounted = false;
    if v12.props.Id then
        v12.thumbnailUrl = string.format("rbxthumb://type=AutoGeneratedAsset&id=%i&w=%i&h=%i", v12.props.Id, 150, 150);
    end;
end;
v11.didMount = function(v13)
    v13.isMounted = true;
    if v13.props.Id then
        spawn(function()
            l_ContentProvider_0:PreloadAsync({
                v13.thumbnailUrl
            }, function(_, v15)
                if v13.isMounted then
                    v13:setState({
                        assetFetchStatus = v15
                    });
                end;
            end);
        end);
    end;
end;
v11.willUnmount = function(v16)
    v16.isMounted = false;
end;
v11.render = function(v17)
    local l_props_0 = v17.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_Name_0 = l_props_0.Name;
    local l_Selected_0 = l_props_0.Selected;
    assert(l_Selected_0 ~= nil);
    local _ = l_props_0.LastItem;
    local l_OnActivated_0 = l_props_0.OnActivated;
    local v24 = l_props_0.LayoutOrder or 0;
    local v25 = nil;
    local v26 = false;
    if l_props_0.Id then
        if v17.state.assetFetchStatus == Enum.AssetFetchStatus.Success then
            v26 = true;
            v25 = v17.thumbnailUrl;
        else
            v25 = l_Stylizer_0.icons.thumbnailPlaceHolder;
        end;
    end;
    local v27 = l_LayoutOrderIterator_0.new();
    return v1.createElement("ImageButton", {
        Size = UDim2.new(1, -40, 0, 80),
        LayoutOrder = v24,
        BackgroundTransparency = 1,
        [v1.Event.Activated] = l_OnActivated_0
    }, {
        Tile = v1.createElement("Frame", {
            Size = UDim2.fromScale(1, 1),
            BackgroundTransparency = 1
        }, {
            ListLayout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                SortOrder = Enum.SortOrder.LayoutOrder,
                Padding = UDim.new(0, 20),
                VerticalAlignment = Enum.VerticalAlignment.Center
            }),
            RadioButton = v1.createElement(l_RadioButton_0, {
                Selected = l_Selected_0,
                Text = "",
                OnClick = l_OnActivated_0,
                LayoutOrder = v27:getNextOrder()
            }),
            Icon = not not v25 and v1.createElement("ImageLabel", {
                Size = UDim2.new(0, 60, 0, 60),
                Image = v25,
                ImageColor3 = not not v26 and Color3.new(1, 1, 1) or l_Stylizer_0.icons.imageColor,
                BackgroundColor3 = l_Stylizer_0.icons.backgroundColor,
                BorderSizePixel = 0,
                LayoutOrder = v27:getNextOrder()
            }) or nil,
            Name = v1.createElement(l_TextLabel_0, {
                Text = l_Name_0,
                TextWrapped = true,
                TextXAlignment = Enum.TextXAlignment.Left,
                LayoutOrder = v27:getNextOrder()
            })
        }),
        Separator = v1.createElement(l_Separator_0, {
            Size = UDim2.fromScale(1, 0),
            Position = UDim2.new(0.5, 0, 1, 0)
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization
})(v11));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Cryo);
local v3 = require(l_Parent_0.Packages.FitFrame);
local v4 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v4.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v4.UI;
local l_TitledFrame_0 = l_UI_0.TitledFrame;
local l_ToggleButton_0 = l_UI_0.ToggleButton;
local l_TextWithInlineLink_0 = l_UI_0.TextWithInlineLink;
local l_FitTextLabel_0 = v3.FitTextLabel;
local l_LayoutOrderIterator_0 = v4.Util.LayoutOrderIterator;
local v13 = v1.PureComponent:extend("ToggleButtonWithTitle");
v13.init = function(v14)
    v14.state = {
        descriptionWidth = 0
    };
    v14.descriptionRef = v1.createRef();
    v14.onResize = function()
        local l_current_0 = v14.descriptionRef.current;
        if l_current_0 then
            v14:setState({
                descriptionWidth = l_current_0.AbsoluteSize.X
            });
            return ;
        else
            return ;
        end;
    end;
end;
v13.render = function(v16)
    local l_props_0 = v16.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_TeachingCallout_0 = l_props_0[v1.Children].TeachingCallout;
    local l_descriptionWidth_0 = v16.state.descriptionWidth;
    local l_Description_0 = l_props_0.Description;
    local l_Disabled_0 = l_props_0.Disabled;
    local l_LayoutOrder_0 = l_props_0.LayoutOrder;
    local l_Selected_0 = l_props_0.Selected;
    local l_Title_0 = l_props_0.Title;
    local l_OnClick_0 = l_props_0.OnClick;
    local l_LinkProps_0 = l_props_0.LinkProps;
    local v28 = l_LayoutOrderIterator_0.new();
    return v1.createElement(l_TitledFrame_0, {
        LayoutOrder = l_LayoutOrder_0,
        Title = l_Title_0
    }, {
        ToggleButton = v1.createElement(l_ToggleButton_0, {
            Disabled = l_Disabled_0,
            Selected = l_Selected_0,
            LayoutOrder = v28:getNextOrder(),
            OnClick = l_OnClick_0,
            Size = UDim2.fromOffset(40, 24)
        }, {
            TeachingCallout = l_TeachingCallout_0
        }),
        Description = l_props_0.Description and v1.createElement(l_FitTextLabel_0, {
            BackgroundTransparency = 1,
            LayoutOrder = v28:getNextOrder(),
            TextTransparency = not l_props_0.Disabled and 0 or 0.5,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextYAlignment = Enum.TextYAlignment.Top,
            Text = l_Description_0,
            TextWrapped = true,
            width = UDim.new(0, l_descriptionWidth_0),
            Font = Enum.Font.SourceSans,
            TextSize = 16,
            TextColor3 = l_Stylizer_0.dimmerTextColor
        }),
        LinkText = l_props_0.LinkProps and v1.createElement(l_TextWithInlineLink_0, v2.Dictionary.join(l_LinkProps_0, {
            LinkPlaceholder = "[link]",
            MaxWidth = math.max(l_descriptionWidth_0, l_Stylizer_0.textWithInlineLink.maxWidth),
            LayoutOrder = v28:getNextOrder(),
            TextProps = v2.Dictionary.join(l_Stylizer_0.fontStyle.Subtext, {
                BackgroundTransparency = 1,
                TextXAlignment = Enum.TextXAlignment.Left
            }),
            HorizontalAlignment = Enum.HorizontalAlignment.Left
        })),
        DescriptionWidth = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            LayoutOrder = v28:getNextOrder(),
            Size = UDim2.new(1, 0, 0, 0),
            [v1.Ref] = v16.descriptionRef,
            [v1.Change.AbsoluteSize] = v16.onResize
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v13));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Cryo);
local v4 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v4.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_StyleModifier_0 = v4.Util.StyleModifier;
local v8 = require(l_Parent_0.Src.Actions.AddChange);
return function(v9, v10)
    local v11 = v1.PureComponent:extend("Page");
    v11.init = function(v12)
        v12.state = {
            StyleModifier = nil,
            showDialog = false
        };
        v12.onMouseEnter = function()
            if v12.state.StyleModifier == nil then
                v12:setState({
                    StyleModifier = l_StyleModifier_0.Hover
                });
            end;
        end;
        v12.onMouseLeave = function()
            if v12.state.StyleModifier == l_StyleModifier_0.Hover then
                v12:setState({
                    StyleModifier = v1.None
                });
            end;
        end;
    end;
    v11.didMount = function(v13)
        if v13.props.GetPlayerAcceptances then
            v13.props.GetPlayerAcceptances((v13.props.API:get()));
        end;
    end;
    v11.render = function(v14)
        local l_props_0 = v14.props;
        local v16 = not not l_props_0.Content and l_props_0.Content(v14) or {};
        local l_LayoutOrder_0 = l_props_0.LayoutOrder;
        local l_AddLayout_0 = l_props_0.AddLayout;
        local l_ContentHeightChanged_0 = l_props_0.ContentHeightChanged;
        return v1.createElement("Frame", {
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 1, 0),
            LayoutOrder = l_LayoutOrder_0
        }, v3.Dictionary.join(v16, {
            Padding = v1.createElement("UIPadding", {
                PaddingLeft = UDim.new(0, 20),
                PaddingRight = UDim.new(0, 20)
            }),
            Layout = l_AddLayout_0 and v1.createElement("UIListLayout", {
                Padding = UDim.new(0, 15),
                SortOrder = Enum.SortOrder.LayoutOrder,
                [v1.Change.AbsoluteContentSize] = function(v20)
                    if l_ContentHeightChanged_0 then
                        l_ContentHeightChanged_0(v20.AbsoluteContentSize.y);
                    end;
                end
            })
        }));
    end;
    return v2.connect(function(v21, _)
        if v9 then
            return v9(function(v23)
                if v21.NewGameSettings.changed[v23] ~= nil then
                    return v21.NewGameSettings.changed[v23];
                else
                    return v21.NewGameSettings.current[v23];
                end;
            end, v21);
        else
            return ;
        end;
    end, function(v24)
        if v10 then
            return v10(function(v25)
                return function(v26)
                    v24(v8(v25, v26));
                end;
            end, v24);
        else
            return ;
        end;
    end)((l_withContext_0({
        Stylizer = l_ContextServices_0.Stylizer,
        Localization = l_ContextServices_0.Localization,
        Mouse = l_ContextServices_0.Mouse,
        API = l_ContextServices_0.API
    })(v11)));
end;


game:DefineFastFlag("CAP1107", false);
return function()
    return game:GetFastFlag("CAP1107");
end;


game:DefineFastInt("CAP1107ThrottleHundredthsPercentage", 0);
return function()
    return game:GetFastInt("CAP1107ThrottleHundredthsPercentage");
end;


game:DefineFastInt("CAP1107TimeoutInMs", 3000);
return function()
    return game:GetFastInt("CAP1107TimeoutInMs");
end;


game:DefineFastString("CAP1107DisplayUrl", "docs/ai-data-sharing");
return function()
    return game:GetFastString("CAP1107DisplayUrl");
end;


local l_HttpRbxApiService_0 = game:GetService("HttpRbxApiService");
local l_HttpService_0 = game:GetService("HttpService");
local l_ContentProvider_0 = game:GetService("ContentProvider");
local l_Promise_0 = require(script.Parent.Parent.Parent.Packages.Framework).Util.Promise;
local l_BaseUrl_0 = l_ContentProvider_0.BaseUrl;
if l_BaseUrl_0:find("https://www.") == 1 then
    l_BaseUrl_0 = l_BaseUrl_0:sub(13);
elseif l_BaseUrl_0:find("http://www.") == 1 then
    l_BaseUrl_0 = l_BaseUrl_0:sub(12);
end;
local function v10(v5)
    local l_Params_0 = v5.Params;
    v5.Params = nil;
    if l_Params_0 then
        local v7 = {};
        for v8, v9 in pairs(l_Params_0) do
            table.insert(v7, l_HttpService_0:UrlEncode(v8) .. "=" .. l_HttpService_0:UrlEncode(v9));
        end;
        v5.Url = v5.Url .. "?" .. table.concat(v7, "&");
    end;
end;
return {
    BuildRobloxUrl = function(v11, v12, ...)
        return "https://" .. v11 .. "." .. l_BaseUrl_0 .. (string.format(v12, ...) or "");
    end,
    Request = function(v13)
        v10(v13);
        return l_Promise_0.new(function(v14, v15)
            spawn(function()
                local l_status_0, l_result_0 = pcall(l_HttpRbxApiService_0.RequestAsync, l_HttpRbxApiService_0, v13);
                if not l_status_0 then
                    v15(l_result_0);
                    return ;
                else
                    v14(l_result_0);
                    return ;
                end;
            end);
        end);
    end,
    RequestInternal = function(v18)
        v10(v18);
        return l_Promise_0.new(function(v19, v20)
            spawn(function()
                l_HttpService_0:RequestInternal(v18):Start(function(v21, v22)
                    if not v21 then
                        v20("HTTP error: " .. tostring(v22.HttpError));
                        return ;
                    elseif v22.StatusCode >= 400 then
                        v20("HTTP error: " .. tostring(v22.StatusCode));
                        return ;
                    else
                        v19(v22.Body);
                        return ;
                    end;
                end);
            end);
        end);
    end
};


return {
    mock = function()
        return {
            creatorTargetId = 22915773,
            rootPlaceId = 10395446,
            name = "yeet game",
            universeId = 149757,
            privateType = "Public"
        };
    end,
    fromJsonData = function(v0)
        local v1 = not v0.creatorTargetId;
        local v2 = not v0.rootPlaceId;
        if not (not v0.id or v1) and not v2 then
            if type(v0.id) ~= "number" then
                return false, "Game.fromJsonData expects id to be a number";
            elseif type(v0.creatorTargetId) ~= "number" then
                return false, "Game.fromJsonData expects creatorId to be a number";
            elseif type(v0.rootPlaceId) ~= "number" then
                return false, "Game.fromJsonData expects rootPlaceId to be a number";
            elseif type(v0.name) ~= "string" then
                return false, "Game.fromJsonData expects name to be a string";
            elseif type(v0.privacyType) ~= "string" then
                return false, "Game.fromJsonData expects privacyType to be a string";
            else
                return true, {
                    creatorId = v0.creatorTargetId,
                    rootPlaceId = v0.rootPlaceId,
                    name = v0.name,
                    universeId = v0.id,
                    privacyType = v0.privacyType
                };
            end;
        else
            return false, "Game.fromJsonData received JSON without required fields";
        end;
    end
};


return {
    mock = function()
        return {
            groupId = 12341234,
            name = "yeet"
        };
    end,
    fromJsonData = function(v0)
        if type(v0.id) ~= "number" then
            return false, "Group.fromJsonData expects id to be a number";
        elseif type(v0.name) ~= "string" then
            return false, "Group.fromJsonData expects name to be a string";
        else
            return true, {
                name = v0.name,
                groupId = v0.id
            };
        end;
    end
};


return {
    mock = function()
        return {
            placeId = 3262491642,
            universeId = 1177385430,
            name = "test place to publish",
            description = "MOCK_DESCRIPTION"
        };
    end,
    fromJsonData = function(v0)
        if v0 then
            if type(v0.id) ~= "number" then
                return false, "Place.fromJsonData expects id to be a number";
            elseif type(v0.universeId) ~= "number" then
                return false, "Place.fromJsonData expects universeId to be a number";
            elseif type(v0.name) ~= "string" then
                return false, "Place.fromJsonData expects name to be a string";
            elseif type(v0.description) ~= "string" then
                return false, "Place.fromJsonData expects description to be a string";
            else
                return true, {
                    name = v0.name,
                    placeId = v0.id,
                    universeId = v0.universeId,
                    description = v0.description
                };
            end;
        else
            return false, "Invalid data to PlaceToPublish";
        end;
    end
};


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Src.Network.Http);
local l_HttpService_0 = game:GetService("HttpService");
local l_Promise_0 = require(l_Parent_0.Packages.Framework).Util.Promise;
local function v8(v4, v5)
    return v1.Request({
        Url = v1.BuildRobloxUrl("apis", "experience-guidelines-service/v1beta1/multi-creator-eligibility"),
        Method = "POST",
        Body = l_HttpService_0:JSONEncode({
            action = 1,
            universeId = v4,
            userIds = {
                v5
            }
        })
    }):andThen(function(v6)
        local v7 = l_HttpService_0:JSONDecode(v6);
        assert(#v7.eligibilityByCreator == 1);
        return {
            userIsEligible = v7.eligibilityByCreator[1].userIsEligible,
            universeId = v4
        };
    end);
end;
return function(v9, v10)
    local v11 = {};
    for _, v13 in pairs(v9) do
        table.insert(v11, v8(v13, v10));
    end;
    return l_Promise_0.all(v11):andThen(function(v14)
        local v15 = {};
        for _, v17 in pairs(v14) do
            v15[v17.universeId] = v17.userIsEligible;
        end;
        return v15;
    end);
end;


local v0 = require(script.Parent.Parent.Parent.Parent.Src.Network.Http);
local l_HttpService_0 = game:GetService("HttpService");
return function(v2)
    return v0.Request({
        Url = v0.BuildRobloxUrl("apis", "experience-guidelines-service/v1beta1/multi-age-recommendation"),
        Method = "POST",
        Body = l_HttpService_0:JSONEncode({
            universeIds = v2
        })
    }):andThen(function(v3)
        local v4 = l_HttpService_0:JSONDecode(v3);
        local v5 = {};
        for _, v7 in pairs(v4.ageRecommendationDetailsByUniverse) do
            local v8 = 0;
            local l_ageRecommendation_0 = v7.ageRecommendationDetails.ageRecommendationSummary.ageRecommendation;
            if l_ageRecommendation_0 then
                v8 = l_ageRecommendation_0.minimumAge;
            end;
            v5[v7.universeId] = v8;
        end;
        return v5;
    end);
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Src.Network.Models.GameToPublish);
local v3 = require(l_Parent_0.Src.Network.Http);
local v4 = require(l_Parent_0.Src.Resources.Constants);
return function(v5)
    local _ = nil;
    return v3.Request({
        Url = v3.BuildRobloxUrl("apis", "universes/v1/search"),
        Method = "GET",
        Params = {
            creatorType = v5.type == v4.SUBJECT_TYPE.GROUP and "Group" or "User",
            creatorTargetId = v5.id,
            isArchived = "false",
            pageIndex = v5.cursor,
            pageSize = v5.limit or 10,
            search = v5.search or "",
            sortOrder = v5.sortOrder or "Desc",
            sortParam = v5.sort or "LastUpdated"
        }
    }):andThen(function(v7)
        local v8 = l_HttpService_0:JSONDecode(v7);
        local v9 = v5.limit or 10;
        local v10 = {};
        if v8.nextResultIndex then
            v10.nextPageCursor = tostring((tonumber(v8.nextResultIndex / v9)));
        end;
        v10.games = {};
        for _, v12 in pairs(v8.data) do
            local v13, v14 = v2.fromJsonData(v12);
            if not v13 then
                error("Parsing error for ApiFetchGamesByUserId: " .. v14);
            else
                table.insert(v10.games, v14);
            end;
        end;
        return v10;
    end);
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Src.Network.Http);
local v3 = require(l_Parent_0.Src.Network.Models.Group);
return function()
    return v2.Request({
        Url = v2.BuildRobloxUrl("develop", "v1/user/groups/canmanage"),
        Method = "GET"
    }):andThen(function(v4)
        local v5 = l_HttpService_0:JSONDecode(v4);
        local v6 = {
            groups = {}
        };
        for _, v8 in pairs(v5.data) do
            local v9, v10 = v3.fromJsonData(v8);
            if not v9 then
                error("Parsing error for ApiFetchGroupsCanManage: " .. v10);
            else
                table.insert(v6.groups, v10);
            end;
        end;
        return v6;
    end);
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Src.Network.Http);
local l_StudioService_0 = game:GetService("StudioService");
local v4 = require(l_Parent_0.Src.Flags.getFFlagCAP1107);
return function(_)
    assert(v4());
    return v2.Request({
        Url = v2.BuildRobloxUrl("groups", "v2/users/%d/groups/roles", (l_StudioService_0:GetUserId())),
        Method = "GET"
    }):andThen(function(v6)
        local v7 = l_HttpService_0:JSONDecode(v6);
        local v8 = {};
        for _, v10 in pairs(v7.data) do
            if v10.role.rank == 255 then
                table.insert(v8, v10.group.id);
            end;
        end;
        return v8;
    end);
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Promise_0 = require(l_Parent_0.Packages.Framework).Util.Promise;
local v3 = require(l_Parent_0.Src.Network.Models.PlaceToPublish);
local v4 = require(l_Parent_0.Src.Network.Http);
return function(v5, v6)
    local l_universeId_0 = v5.universeId;
    if l_universeId_0 then
        return v4.Request({
            Url = v4.BuildRobloxUrl("develop", "v1/universes/%d/places", l_universeId_0),
            Method = "GET",
            Params = {
                sortOrder = v6.sortOrder or "Asc",
                limit = v6.limit or 10,
                cursor = v6.cursor
            }
        }):andThen(function(v8)
            local v9 = l_HttpService_0:JSONDecode(v8);
            local v10 = {};
            if v9.previousPageCursor then
                v10.previousPageCursor = v9.previousPageCursor;
            end;
            if v9.nextPageCursor then
                v10.nextPageCursor = v9.nextPageCursor;
            end;
            v10.places = {};
            for _, v12 in pairs(v9.data) do
                local v13, v14 = v3.fromJsonData(v12);
                if not v13 then
                    error("Parsing error for ApiFetchPlacesByUniverseId: " .. v14);
                else
                    table.insert(v10.places, v14);
                end;
            end;
            return v10;
        end);
    else
        return l_Promise_0.reject("NO UNIVERSE ID - ApiFetchPlacesByGameId");
    end;
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Src.Flags.getFFlagCAP1107);
local v3 = require(l_Parent_0.Src.Flags.getFIntCAP1107TimeoutInMs);
local v4 = require(l_Parent_0.Src.Network.Http);
return function()
    assert(v2());
    return v4.RequestInternal({
        Url = v4.BuildRobloxUrl("apis", "resource-settings/v1/preferences:batchGet?preferenceTypes=Universes"),
        Method = "GET",
        Timeout = v3()
    }):andThen(function(v5)
        local v6 = l_HttpService_0:JSONDecode(v5);
        return v6.configurations, v6.isEligible;
    end);
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v2 = require(l_Parent_0.Src.Network.Http);
local v3 = require(l_Parent_0.Src.Flags.getFFlagCAP1107);
return function(v4)
    assert(v3());
    return v2.Request({
        Url = v2.BuildRobloxUrl("apis", "resource-settings/v1/universes"),
        Method = "POST",
        Body = l_HttpService_0:JSONEncode({
            configurations = {
                {
                    universeId = v4,
                    dataSharingLicenseTypes = {
                        "RobloxGlobal"
                    }
                }
            }
        })
    }):catch(function(v5)
        warn("Error setting universe data sharing configuration", v5);
        return nil;
    end);
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
local v3 = require(l_Parent_0.Src.Resources.Constants);
return v1.createReducer({
    placeInfo = {
        places = {},
        parentGame = {},
        queryState = v3.QUERY_STATE.QUERY_STATE_NONE
    },
    gameInfo = {
        games = {},
        queryState = v3.QUERY_STATE.QUERY_STATE_NONE
    },
    selectedGame = {},
    gameConfiguration = {
        optInRegions = {}
    }
}, {
    SetChooseGameQueryState = function(v4, v5)
        return v2.Dictionary.join(v4, {
            gameInfo = v2.Dictionary.join(v4.gameInfo, v5.gameInfo)
        });
    end,
    SetSelectedGame = function(v6, v7)
        return v2.Dictionary.join(v6, {
            selectedGame = v7.selectedGame
        });
    end,
    SetGameInfo = function(v8, v9)
        return v2.Dictionary.join(v8, {
            gameInfo = v2.Dictionary.join(v8.gameInfo, v9.gameInfo)
        });
    end,
    SetPlaceInfo = function(v10, v11)
        return v2.Dictionary.join(v10, {
            placeInfo = v2.Dictionary.join(v10.placeInfo, v11.placeInfo)
        });
    end,
    SetChoosePlaceQueryState = function(v12, v13)
        return v2.Dictionary.join(v12, {
            placeInfo = v2.Dictionary.join(v12.placeInfo, v13.placeInfo)
        });
    end,
    ResetInfo = function(v14, v15)
        return v2.Dictionary.join(v14, {
            gameInfo = v2.Dictionary.join(v14.gameInfo, v15.gameInfo),
            placeInfo = v2.Dictionary.join(v14.placeInfo, v15.placeInfo)
        });
    end,
    SetGameConfiguration = function(v16, v17)
        return v2.Dictionary.join(v16, {
            gameConfiguration = v2.Dictionary.join(v16.gameConfiguration, v17.gameConfiguration)
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
return v1.createReducer({
    groupInfo = {
        groups = {},
        ownedGroups = {}
    }
}, {
    SetGroupInfo = function(v3, v4)
        return v2.Dictionary.join(v3, {
            groupInfo = v2.Dictionary.join(v3.groupInfo, v4.groupInfo)
        });
    end,
    ResetInfo = function(v5, v6)
        return v2.Dictionary.join(v5, {
            groupInfo = v2.Dictionary.join(v5.groupInfo, v6.groupInfo)
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
return (require(l_Parent_0.Packages.Rodux).combineReducers({
    Screen = require(l_Parent_0.Src.Reducers.Screen),
    ExistingGame = require(l_Parent_0.Src.Reducers.ExistingGame),
    NewGameSettings = require(l_Parent_0.Src.Reducers.NewGameSettings),
    PublishedPlace = require(l_Parent_0.Src.Reducers.PublishedPlace),
    PublishInProgress = require(l_Parent_0.Src.Reducers.PublishInProgress),
    GroupsHavePermission = require(l_Parent_0.Src.Reducers.GroupsHavePermission),
    Policy = require(l_Parent_0.Src.Reducers.Policy),
    SelectedGroup = require(l_Parent_0.Src.Reducers.SelectedGroup)
}));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Src.Resources.Constants);
local v2 = require(l_Parent_0.Packages.Rodux);
local v3 = require(l_Parent_0.Packages.Cryo);
local l_shouldShowDevPublishLocations_0 = require(l_Parent_0.Src.Util.PublishPlaceAsUtilities).shouldShowDevPublishLocations;
local l_RemoveVRToggleDialog2_0 = game:GetFastFlag("RemoveVRToggleDialog2");
local v6 = nil;
if l_shouldShowDevPublishLocations_0() then
    v6 = {};
end;
local function v13(v7, v8)
    v7 = v7 or {};
    v8 = v8 or {};
    if v3.isEmpty(v7) ~= v3.isEmpty(v8) then
        return false;
    else
        for v9, v10 in pairs(v7) do
            if v8[v9] ~= v10 then
                return false;
            end;
        end;
        for v11, v12 in pairs(v8) do
            if v7[v11] ~= v12 then
                return false;
            end;
        end;
        return true;
    end;
end;
return v2.createReducer({
    current = {},
    changed = {
        name = "Untitled Game",
        creatorId = 0,
        description = "",
        genre = v1.GENRE_IDS[1],
        playableDevices = {
            Computer = true,
            Phone = true,
            Tablet = true,
            VR = l_RemoveVRToggleDialog2_0 or nil
        },
        teamCreateEnabled = true,
        OptInLocations = v6,
        isActive = false,
        isFriendsOnly = false
    },
    errors = {}
}, {
    AddChange = function(v14, v15)
        local l_value_0 = v15.value;
        if l_value_0 == v14.current[v15.setting] then
            l_value_0 = v3.None;
        end;
        if not (not (type(l_value_0) == "table") or not v13(l_value_0, v14.current[v15.setting])) then
            l_value_0 = v3.None;
        end;
        return v3.Dictionary.join(v14, {
            changed = v3.Dictionary.join(v14.changed, {
                [v15.setting] = l_value_0
            }),
            errors = v3.Dictionary.join(v14.errors, {
                [v15.setting] = v3.None
            })
        });
    end,
    AddErrors = function(v17, v18)
        return v3.Dictionary.join(v17, {
            errors = v3.Dictionary.join(v17.errors, v18.errors)
        });
    end,
    ResetInfo = function(v19, v20)
        return v3.Dictionary.join(v19, {
            current = v3.Dictionary.join(v19.current, v20.current),
            changed = v3.Dictionary.join(v19.changed, v20.changed),
            errors = v3.Dictionary.join(v19.errors, v20.errors)
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
return v1.createReducer({
    PlayerAcceptance = false
}, {
    SetPlayerAcceptance = function(v3, v4)
        return v2.Dictionary.join(v3, {
            PlayerAcceptance = v4.playerAcceptance
        });
    end,
    ResetInfo = function(v5, _)
        return v2.Dictionary.join(v5, {
            PlayerAcceptance = false
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
return v1.createReducer({
    publishInProgress = {
        universe = {},
        place = {},
        isPublish = false,
        failCount = 0,
        requestInFlight = false
    }
}, {
    SetPublishInProgress = function(v3, v4)
        return v2.Dictionary.join(v3, {
            publishInProgress = v2.Dictionary.join(v3.publishInProgress, v4.publishInProgress)
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
return v1.createReducer({
    isPublishing = false,
    publishInfo = {
        id = 0,
        name = "",
        parentGameName = "",
        parentGameId = 0,
        settings = {},
        message = ""
    }
}, {
    SetIsPublishing = function(v3, v4)
        return v2.Dictionary.join(v3, {
            isPublishing = v4.isPublishing
        });
    end,
    SetPublishInfo = function(v5, v6)
        return v2.Dictionary.join(v5, {
            publishInfo = v2.Dictionary.join(v5.publishInfo, v6.publishInfo)
        });
    end,
    ResetInfo = function(v7, v8)
        return v2.Dictionary.join(v7, {
            publishInfo = v2.Dictionary.join(v7.publishInfo, v8.publishInfo),
            isPublishing = v8.isPublishing
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
return v1.createReducer({
    screen = require(l_Parent_0.Src.Resources.Constants).SCREENS.CREATE_NEW_GAME
}, {
    SetScreen = function(v3, v4)
        return v2.Dictionary.join(v3, {
            screen = v4.screen
        });
    end,
    ResetInfo = function(v5, v6)
        return v2.Dictionary.join(v5, {
            screen = v6.screen
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
return v1.createReducer({
    selectedGroup = 0
}, {
    SetSelectedGroup = function(v3, v4)
        return v2.Dictionary.join(v3, {
            selectedGroup = v4.selectedGroup
        });
    end
});


return {
    SCREENS = {
        CREATE_NEW_GAME = "CREATE_NEW_GAME",
        CHOOSE_GAME = "CHOOSE_GAME",
        CHOOSE_PLACE = "CHOOSE_PLACE",
        PUBLISH_IN_PROGRESS = "PUBLISH_IN_PROGRESS",
        PUBLISH_SUCCESSFUL = "PUBLISH_SUCCESSFUL",
        PUBLISH_FAIL = "PUBLISH_FAIL"
    },
    QUERY_STATE = {
        QUERY_STATE_NONE = "NONE",
        QUERY_STATE_QUERYING = "QUERYING",
        QUERY_STATE_FAILED = "FAILED",
        QUERY_STATE_SUCCESS = "SUCCESS"
    },
    GENRE_IDS = {
        "All",
        "Adventure",
        "Tutorial",
        "Funny",
        "Ninja",
        "FPS",
        "Scary",
        "Fantasy",
        "War",
        "Pirate",
        "RPG",
        "SciFi",
        "Sports",
        "TownAndCity",
        "WildWest"
    },
    SUBJECT_TYPE = {
        USER = "USER",
        GROUP = "GROUP"
    },
    TEXT_SIZE = 22
};


local v0 = require(script.parent.parent.parent.Packages.Framework);
local l_StyleModifier_0 = v0.Util.StyleModifier;
local l_Style_0 = v0.Style;
local l_StyleKey_0 = l_Style_0.StyleKey;
local l_StudioTheme_0 = l_Style_0.Themes.StudioTheme;
local v5 = {
    font = Enum.Font.SourceSans,
    fontStyle = {
        Title = {
            Font = Enum.Font.SourceSans,
            TextSize = 24,
            TextColor3 = l_StyleKey_0.TitlebarText
        },
        Normal = {
            Font = Enum.Font.SourceSans,
            TextSize = 22,
            TextColor3 = l_StyleKey_0.MainText
        },
        Smaller = {
            Font = Enum.Font.SourceSans,
            TextSize = 20,
            TextColor3 = l_StyleKey_0.MainText
        },
        Subtext = {
            Font = Enum.Font.SourceSans,
            TextSize = 16,
            TextColor3 = l_StyleKey_0.DimmedText
        }
    },
    backgroundColor = l_StyleKey_0.MainBackground,
    foregroundColorContrast = l_StyleKey_0.ForegroundContrast,
    textColor = l_StyleKey_0.MainText,
    subTextColor = l_StyleKey_0.SubText,
    dimmerTextColor = l_StyleKey_0.DimmedText,
    warningTextColor = l_StyleKey_0.WarningText,
    disabledColor = l_StyleKey_0.Tab,
    borderColor = l_StyleKey_0.Border,
    hoverColor = l_Style_0.Colors.Blue,
    errorColor = l_StyleKey_0.ErrorText,
    icons = {
        newPlace = "rbxasset://textures/PublishPlaceAs/WhiteNew.png",
        backArrow = "rbxasset://textures/PublishPlaceAs/navigation_pushBack.png",
        checkmark = "rbxasset://textures/PublishPlaceAs/common_checkmarkCircle.png",
        thumbnailPlaceHolder = "rbxasset://textures/StudioSharedUI/TransparentWhiteImagePlaceholder.png",
        warning = "rbxasset://textures/StudioSharedUI/statusWarning.png",
        backgroundColor = l_StyleKey_0.IconBackgroundColor,
        imageColor = l_StyleKey_0.IconImageColor
    },
    descriptionBox = {
        maxHeight = 120,
        textBoxHeight = 90
    },
    toggleButton = {
        width = 40,
        height = 24
    },
    dialog = {
        minSize = {
            width = 400,
            height = 204
        },
        spacing = 20
    },
    tooltipIcon = {
        paddingY = 30,
        size = 14
    },
    optInLocations = {
        height = 52
    },
    requirementsLink = {
        height = 22,
        length = 250,
        paddingY = 25
    },
    emailDialog = {
        Size = {
            X = 500,
            Y = 350
        }
    },
    selectInput = {
        button = {
            height = 38
        },
        fontStyle = {
            Normal = {
                TextSize = 22
            }
        },
        padding = 10,
        width = {
            creator = 330,
            genre = 210
        }
    },
    defaultButton = {
        ButtonColor = l_StyleKey_0.DialogMainButton,
        ButtonColor_Hover = l_StyleKey_0.LinkText,
        ButtonColor_Disabled = l_StyleKey_0.DialogMainButtonDisabled,
        TextColor = l_StyleKey_0.DialogMainButtonText,
        TextColor_Disabled = l_StyleKey_0.DialogMainButtonTextDisabled,
        BorderColor = l_StyleKey_0.Light
    },
    cancelButton = {
        ButtonColor = l_StyleKey_0.Button,
        ButtonColor_Hover = l_StyleKey_0.ButtonHover,
        ButtonColor_Disabled = l_StyleKey_0.ButtonDisabled,
        TextColor = l_StyleKey_0.ButtonText,
        TextColor_Disabled = l_StyleKey_0.DimmedText,
        BorderColor = l_StyleKey_0.Border
    },
    pageButton = {
        ButtonColor = l_StyleKey_0.Button,
        ImageColor = l_StyleKey_0.MainText,
        BorderColor = l_StyleKey_0.Border,
        hovered = {
            ButtonColor = l_StyleKey_0.ButtonHover
        },
        disabled = {
            ButtonColor = l_StyleKey_0.ButtonDisabled,
            ImageColor = l_StyleKey_0.DimmedText
        }
    },
    menuBar = {
        backgroundColor = l_StyleKey_0.MenuBarBackground
    },
    menuEntry = {
        hover = l_StyleKey_0.MenuEntryHover,
        highlight = l_StyleKey_0.MenuEntryHighlight,
        text = l_StyleKey_0.BrightText,
        font = {
            selected = Enum.Font.SourceSansSemibold,
            unselected = Enum.Font.SourceSans
        }
    },
    footer = {
        gradient = l_StyleKey_0.MainText,
        textbutton = {
            font = Enum.Font.SourceSans
        }
    },
    header = {
        font = Enum.Font.SourceSans,
        text = l_StyleKey_0.BrightText
    },
    checkboxset = {
        font = Enum.Font.SourceSans,
        error = l_StyleKey_0.ErrorText,
        maxHeight = 65
    },
    listDialog = {
        font = Enum.Font.SourceSansSemibold,
        textColor = l_StyleKey_0.MainText
    },
    successText = {
        font = Enum.Font.SourceSans,
        text = Color3.fromRGB(2, 183, 87)
    },
    textWithInlineLink = {
        maxWidth = 380
    },
    failText = {
        font = Enum.Font.SourceSans,
        text = l_StyleKey_0.ErrorText
    },
    pageText = {
        font = Enum.Font.SourceSansLight
    },
    radioButton = {
        backgroundColor = l_StyleKey_0.InputFieldBackground,
        size = 20,
        image = {
            background = "rbxasset://textures/GameSettings/RadioButton.png",
            selected = l_StyleKey_0.RadioButtonImage
        }
    },
    genreInfo = {
        image = l_StyleKey_0.InformationImage,
        imageSize = 20,
        imageTextGap = 2,
        BodyBodyDefault = {
            Font = Enum.Font.SourceSans,
            TextSize = 18,
            TextColor = l_StyleKey_0.MainText
        },
        paneBackgroundColor = l_StyleKey_0.ForegroundContrast,
        paneBorderColor = l_StyleKey_0.OtherDivider,
        panePadding = 8,
        paneBorderSize = 1
    },
    DROPDOWN_WIDTH = 330,
    DROPDOWN_HEIGHT = 38,
    MENU_BAR_WIDTH = 192,
    FOOTER_HEIGHT = 65,
    SCREEN_CHOOSE_GAME = {
        ARROW_SIZE = 12,
        PAGE_PADDING = 115,
        TILE_HEIGHT = 232,
        ICON_SIZE = 150,
        NAME_SIZE = 45,
        NAME_PADDING = 8,
        TILE_FOOTER_SIZE = 35,
        FOOTER_SIDE_PADDING = 4,
        GUIDELINE_LABEL_PADDING = 4,
        FRAME_BUTTON_SIZE = 32,
        CELL_PADDING_X = 30,
        CELL_PADDING_Y = 40
    },
    isDarkerTheme = settings().Studio.Theme.Name == "Dark",
    [l_Style_0.ComponentSymbols.Image] = v0.Dash.join(l_Style_0.getRawComponentStyle("Image"), {
        ["&TooltipStyle"] = {
            Image = "rbxasset://textures/PublishPlaceAs/MoreDetails.png",
            Color = l_StyleKey_0.SubText,
            [l_StyleModifier_0.Hover] = {
                Color = l_StyleKey_0.MainTextHover
            }
        }
    })
};
local v6 = {
    [l_StyleKey_0.RadioButtonImage] = "rbxasset://textures/StudioSharedUI/radio_selected_enabled_dark.png",
    [l_StyleKey_0.InformationImage] = "rbxasset://studio_svg_textures/Shared/Alerts/Dark/Large/Information.png"
};
local v7 = {
    [l_StyleKey_0.RadioButtonImage] = "rbxasset://textures/ui/LuaApp/icons/ic-blue-dot.png",
    [l_StyleKey_0.InformationImage] = "rbxasset://studio_svg_textures/Shared/Alerts/Light/Large/Information.png"
};
return function(v8)
    local _ = nil;
    return ((if not v8 then l_StudioTheme_0.new(v6, v7) else l_StudioTheme_0.mock(v6, v7)):extend(v5));
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Rodux);
local v3 = require(l_Parent_0.Packages.Framework);
local v4 = require(l_Parent_0.Src.Components.ServiceWrapper);
local v5 = require(l_Parent_0.Src.Resources.MakeTheme);
local v6 = require(l_Parent_0.Src.Reducers.MainReducer);
local v7 = require(l_Parent_0.Src.Middleware.MainMiddleware);
local l_Localization_0 = v3.ContextServices.Localization;
local v9 = v1.Component:extend("MockServiceWrapper");
v9.render = function(v10)
    return v1.createElement(v4, {
        localization = v10.props.localization or l_Localization_0.mock(),
        plugin = {},
        focusGui = {},
        store = v2.Store.new(v6, v10.props.storeState, v7),
        theme = v10.props.theme or v5(true)
    }, v10.props[v1.Children]);
end;
return v9;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Src.Actions.AddChange);
local v2 = require(l_Parent_0.Src.Actions.AddErrors);
local v3 = require(l_Parent_0.Src.Flags.getFFlagCAP1107);
local v4 = require(l_Parent_0.Src.Network.Requests.ApiFetchUniverseOptOut);
local v5 = require(l_Parent_0.Src.Types.DataSharingFetchState);
local v6 = require(l_Parent_0.Packages.Cryo);
local l_Promise_0 = require(l_Parent_0.Packages.Framework).Util.Promise;
return function()
    return function(v8)
        assert(v3());
        v8:dispatch(v1("dataSharingDefault", v5.LOADING));
        v8:dispatch(v1("dataSharingEnabled", v6.None));
        v8:dispatch(v2({
            dataSharingDefault = "Loading"
        }));
        v4():andThen(function(v9, v10)
            if v10 then
                local l_isOptOut_0 = v9[1].isOptOut;
                v8:dispatch(v1("dataSharingDefault", not not l_isOptOut_0 and v5.OPT_OUT or v5.OPT_IN));
                v8:dispatch(v1("dataSharingEnabled", not l_isOptOut_0));
                return ;
            else
                return l_Promise_0.reject();
            end;
        end):catch(function()
            v8:dispatch(v1("dataSharingDefault", v5.INELIGIBLE));
        end);
    end;
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_StudioService_0 = game:GetService("StudioService");
local v2 = require(l_Parent_0.Src.Resources.Constants);
local v3 = require(l_Parent_0.Src.Actions.SetGameInfo);
local v4 = require(l_Parent_0.Src.Actions.SetChooseGameQueryState);
local v5 = require(l_Parent_0.Src.Network.Requests.ApiFetchGameAgeRecommendation);
local v6 = require(l_Parent_0.Src.Network.Requests.ApiFetchCreatorEligibility);
local v7 = require(l_Parent_0.Src.Network.Requests.ApiFetchGames);
local l_Promise_0 = require(l_Parent_0.Packages.Framework).Util.Promise;
local v9 = require(l_Parent_0.Packages.Cryo);
local v10 = {};
local v11 = -1;
local v12 = nil;
local v13 = nil;
local function v22(v14)
    assert(v14.games);
    local v15 = {};
    for _, v17 in pairs(v14.games) do
        if v17.minimumAge >= 17 then
            table.insert(v15, v17.universeId);
        end;
    end;
    return (if #v15 > 0 then v6(v15, l_StudioService_0:getUserId()) else l_Promise_0.resolve({})):andThen(function(v18)
        for _, v20 in pairs(v14.games) do
            local v21 = v18[v20.universeId];
            v20.isUserEligible = not (v21 ~= nil) or v21;
        end;
        return v14;
    end);
end;
local function v30(v23)
    assert(v23.games);
    local v24 = {};
    for _, v26 in pairs(v23.games) do
        table.insert(v24, v26.universeId);
    end;
    return v5(v24):andThen(function(v27)
        for _, v29 in pairs(v23.games) do
            v29.minimumAge = v27[v29.universeId];
        end;
        return v23;
    end);
end;
return function(v31, v32, v33)
    return function(v34)
        local v35 = nil;
        if not v13 then
            if game.GameId == 0 then
                v13 = 0;
            else
                v35 = v5({
                    game.GameId
                }):andThen(function(v36)
                    v13 = v36[game.GameId];
                end);
            end;
        end;
        if not (v33 == v12 and v33) then
            if not v33 then
                v34:dispatch(v4(v2.QUERY_STATE.QUERY_STATE_QUERYING));
            end;
            v12 = v33;
            if v32 ~= v11 then
                v10 = {};
                v11 = v32;
            end;
            v7({
                type = v31,
                id = v32,
                cursor = v33,
                limit = 25
            }):andThen(function(v37)
                return v30(v37);
            end):andThen(function(v38)
                return v22(v38);
            end):andThen(function(v39)
                assert(v39.games);
                v10 = v9.List.join(v10, v39.games);
                v39.games = v10;
                if v35 then
                    v35:await();
                end;
                assert(v13);
                v39.minimumAge = v13;
                v34:dispatch(v3(v39));
            end):catch(function(_)
                v34:dispatch(v4(v2.QUERY_STATE.QUERY_STATE_FAILED));
            end);
        end;
    end;
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Src.Actions.SetPlaceInfo);
local v2 = require(l_Parent_0.Src.Actions.SetChoosePlaceQueryState);
local v3 = require(l_Parent_0.Src.Actions.SetSelectedGame);
local v4 = require(l_Parent_0.Src.Network.Requests.ApiFetchPlacesByUniverseId);
local v5 = require(l_Parent_0.Src.Resources.Constants);
local _ = game:GetService("RbxAnalyticsService");
local v7 = nil;
local v8 = {};
return function(v9, v10)
    return function(v11)
        if not (v10 == v7 and v10) then
            v7 = v10;
            assert(type(v9.name) == "string", "LoadExistingPlaces.parentGame must have a string name");
            assert(type(v9.universeId) == "number", "LoadExistingPlaces.parentGame must have a number universeId");
            v11:dispatch(v3(v9));
            if not v10 then
                v11:dispatch(v2(v5.QUERY_STATE.QUERY_STATE_QUERYING));
            end;
            v4({
                universeId = v9.universeId
            }, {
                cursor = v10
            }):andThen(function(v12)
                v12.parentGame = v9;
                for v13 = 1, #v12.places do
                    v8[#v8 + 1] = v12.places[v13];
                end;
                v12.places = v8;
                v11:dispatch(v1(v12));
            end, function(_)
                v11:dispatch(v2(v5.QUERY_STATE.QUERY_STATE_FAILED));
            end);
        end;
    end;
end;