local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_CorePackages_0.Rodux);
local v4 = require(l_Modules_0.LuaApp.Actions.SetCurrentToastMessage);
local v5 = require(l_Modules_0.LuaApp.Actions.RemoveCurrentToastMessage);
local v6 = require(l_Modules_0.LuaApp.Actions.RemoveAllToastMessages);
local v7 = {
    enqueuedToastMessages = {},
    currentToastMessage = nil
};
local function _(v8, v9)
    local v10 = false;
    if v8.toastMessage == v9.toastMessage then
        v10 = false;
        if v8.toastSubMessage == v9.toastSubMessage then
            v10 = false;
            if v8.toastType == v9.toastType then
                v10 = false;
                if v8.universeId == v9.universeId then
                    v10 = v8.isLocalized == v9.isLocalized;
                end;
            end;
        end;
    end;
    return v10;
end;
local function v19(v12, v13)
    local l_currentToastMessage_0 = v12.currentToastMessage;
    local v15 = false;
    if l_currentToastMessage_0.toastMessage == v13.toastMessage then
        v15 = false;
        if l_currentToastMessage_0.toastSubMessage == v13.toastSubMessage then
            v15 = false;
            if l_currentToastMessage_0.toastType == v13.toastType then
                v15 = false;
                if l_currentToastMessage_0.universeId == v13.universeId then
                    v15 = l_currentToastMessage_0.isLocalized == v13.isLocalized;
                end;
            end;
        end;
    end;
    if not v15 then
        for _, v17 in ipairs(v12.enqueuedToastMessages) do
            local v18 = false;
            if v17.toastMessage == v13.toastMessage then
                v18 = false;
                if v17.toastSubMessage == v13.toastSubMessage then
                    v18 = false;
                    if v17.toastType == v13.toastType then
                        v18 = false;
                        if v17.universeId == v13.universeId then
                            v18 = v17.isLocalized == v13.isLocalized;
                        end;
                    end;
                end;
            end;
            if v18 then
                return true;
            end;
        end;
        return false;
    else
        return true;
    end;
end;
local v20 = 0;
return v3.createReducer(v7, {
    [v4.name] = function(v21, v22)
        local v23 = {
            enqueuedToastMessages = {}
        };
        local v24 = v2.Dictionary.join(v22.toastMessage, {
            sequenceNumber = v20
        });
        v20 = v20 + 1;
        if v21.currentToastMessage then
            if not v19(v21, v24) then
                v23.currentToastMessage = v21.currentToastMessage;
                v23.enqueuedToastMessages = v2.List.join(v21.enqueuedToastMessages, {
                    v24
                });
                return v23;
            else
                return v21;
            end;
        else
            v23.currentToastMessage = v24;
            return v23;
        end;
    end,
    [v5.name] = function(v25, _)
        local v27 = {
            enqueuedToastMessages = {}
        };
        if #v25.enqueuedToastMessages > 0 then
            v27.currentToastMessage = v25.enqueuedToastMessages[1];
            v27.enqueuedToastMessages = v2.List.removeIndex(v25.enqueuedToastMessages, 1);
        end;
        return v27;
    end,
    [v6.name] = function(_, _)
        return {
            enqueuedToastMessages = {}
        };
    end
});


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_Modules_0.LuaApp.Actions.SetDevSubs);
local v4 = require(l_Modules_0.LuaApp.Actions.SetDevSub);
return function(v5, v6)
    v5 = v5 or {};
    if v6.type == v3.name then
        return (v2.List.join({}, v6.devSubs));
    else
        if v6.type == v4.name then
            local v7 = {};
            for _, v9 in pairs(v5) do
                if v9.id == v6.devSub.id then
                    table.insert(v7, v6.devSub);
                else
                    table.insert(v7, v9);
                end;
            end;
            v5 = v7;
        end;
        return v5;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_DeviceOrientationMode_0 = require(game:GetService("CorePackages").Workspace.Packages.RobloxAppEnums).DeviceOrientationMode;
local v2 = require(l_Modules_0.LuaApp.Actions.SetDeviceOrientation);
return function(v3, v4)
    v3 = v3 or l_DeviceOrientationMode_0.Portrait;
    assert(v3, "");
    if v4.type == v2.name then
        return v4.deviceOrientation;
    else
        return v3;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Actions.SetFetchHomePageDataStatusAll);
local v2 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
return function(v3, v4)
    v3 = v3 or v2.NotStarted;
    if v4.type == v1.name then
        v3 = v4.status;
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Actions.AddFriendFollowing);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        v3 = v1.Dictionary.join(v3, {
            [v4.id] = v4.following
        });
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_Modules_0.LuaApp.Actions.AddFriendStatus);
local v4 = require(l_CorePackages_0.Workspace.Packages.NetworkingFriends).config({
    roduxNetworking = require(l_CorePackages_0.Workspace.Packages.RoduxNetworking).mock()
});
return function(v5, v6)
    v5 = v5 or {};
    if v6.type == v3.name then
        return (v2.Dictionary.join(v5, {
            [v6.id] = v6.status
        }));
    elseif v6.type == v4.RequestFriendshipFromUserId.Succeeded.name then
        return v2.Dictionary.join(v5, {
            [tostring(v6.namedIds.users)] = Enum.FriendStatus.FriendRequestSent
        });
    elseif v6.type == v4.AcceptFriendRequestFromUserId.Succeeded.name then
        return v2.Dictionary.join(v5, {
            [tostring(v6.ids[1])] = Enum.FriendStatus.Friend
        });
    elseif v6.type == v4.DeclineFriendRequestFromUserId.Succeeded.name then
        local l_ids_0 = v6.ids;
        local v8 = {};
        for _, v10 in l_ids_0, nil, nil do
            v8[tostring(v10)] = Enum.FriendStatus.NotFriend;
        end;
        return v2.Dictionary.join(v5, v8);
    elseif v6.type == v4.UnfriendTargetUserId.Succeeded.name then
        return v2.Dictionary.join(v5, {
            [tostring(v6.namedIds.users)] = Enum.FriendStatus.NotFriend
        });
    else
        return v5;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Actions.SetGameBadges);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        v3 = v1.Dictionary.join(v3, {
            [v4.universeId] = v4.badges
        });
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_CorePackages_0.Rodux);
local v3 = require(l_Modules_0.LuaApp.Actions.Games.AddOmniRecommendations);
local v4 = require(l_Modules_0.LuaApp.Actions.Games.AddContentMetadata);
local v5 = require(l_CorePackages_0.Cryo);
local v6 = require(l_Modules_0.LuaApp.Constants);
return v2.createReducer({}, {
    [v4.name] = function(v7, v8)
        v7 = v7 or {};
        if v8.contentMetadata[v6.OmniRecommendationsContentType.GameCoPlay] then
            v7 = v5.Dictionary.join(v7, v8.contentMetadata[v6.OmniRecommendationsContentType.GameCoPlay]);
        end;
        return v7;
    end,
    [v3.name] = function(v9, v10)
        v9 = v9 or {};
        for _, v12 in pairs(v10.recommendations) do
            local v13 = v12.metadata[v6.OmniRecommendationsContentType.GameCoPlay];
            if v13 then
                v9 = v5.Dictionary.join(v9, v13);
            end;
        end;
        return v9;
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.SetGameFollowingStatus);
local v3 = require(l_Modules_0.LuaApp.Actions.SetGameFollow);
return function(v4, v5)
    v4 = v4 or {};
    if v5.type == v2.name then
        return (v1.Set(v4, v5.universeId, {
            canFollow = v5.canFollow,
            isFollowed = v5.isFollowed
        }));
    else
        if v5.type == v3.name then
            local v6 = v4[v5.universeId];
            if v6 then
                v4 = v1.Set(v4, v5.universeId, (v1.Set(v6, "isFollowed", v5.isFollowed)));
            end;
        end;
        return v4;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Actions.SetGameVoiceStatus);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        v3 = v1.Dictionary.join(v3, {
            [v4.universeId] = v4.isUniverseEnabledForVoice
        });
    end;
    return v3;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
return require(l_CorePackages_0.Rodux).createReducer({
    boundInputs = {},
    focusController = nil
}, {
    [require(l_Modules_0.LuaApp.Actions.SetBoundInputs).name] = function(_, v3)
        return {
            boundInputs = v3.boundInputs or {},
            focusController = v3.focusController
        };
    end,
    [require(l_Modules_0.LuaApp.Actions.MaybeClearBoundInputs).name] = function(v4, v5)
        if v4.focusController ~= v5.focusController then
            return v4;
        else
            return {
                boundInputs = {},
                focusController = nil
            };
        end;
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetExperienceNotificationsEnabledCount);
local v3 = require(l_Modules_0.LuaApp.Actions.Games.SetExperienceNotificationsEnabledLimit);
return function(v4, v5)
    v4 = v4 or {
        count = 0,
        limit = 0
    };
    assert(v4, "");
    if v5.type == v2.name then
        return (v1.Dictionary.join(v4, {
            count = v5.count
        }));
    else
        if v5.type == v3.name then
            v4 = v1.Dictionary.join(v4, {
                limit = v5.limit
            });
        end;
        return v4;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Cryo);
local l_PeekViewState_0 = require(l_CorePackages_0.Workspace.Packages.PeekView).PeekViewState;
local v4 = require(l_Modules_0.LuaApp.Actions.Games.SetGameDetailsPeekViewState);
return function(v5, v6)
    v5 = v5 or {
        viewState = l_PeekViewState_0.Closed
    };
    if v6.type == v4.name then
        v5 = v2.Dictionary.join(v5, {
            viewState = v6.viewState
        });
    end;
    return v5;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetGameFavorite);
return function(v3, v4)
    v3 = v3 or {};
    assert(v3, "");
    if v4.type == v2.name then
        v3 = v1.Set(v3, v4.universeId, v4.isFavorited);
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.UpdateGameMedia);
return function(v3, v4)
    v3 = v3 or {};
    assert(v3, "");
    if v4.type == v2.name then
        v3 = v1.Set(v3, v4.universeId, v4.entries);
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetGamePasses);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        v3 = v1.Dictionary.join(v3, {
            [v4.universeId] = v4.passes
        });
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Packages.Dash);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetGamePrivateServersEnabled);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        v3 = v1.assign(v3, {
            [v4.universeId] = v4.privateServersEnabled
        });
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetGameSocialLinks);
return function(v3, v4)
    v3 = v3 or {};
    assert(v3, "");
    if v4.type == v2.name then
        v3 = v1.Set(v3, v4.universeId, v4.socialLinks);
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Models.GameSortGroup);
local v3 = require(l_Modules_0.LuaApp.Actions.Games.SetGameSortsInGroup);
local v4 = require(l_Modules_0.LuaApp.Actions.Games.AppendGameSortsInGroup);
local v5 = require(l_Modules_0.Personalization.Flags.GetFFlagExploreApiSortsEnabled);
local v6 = {
    Games = v2.new(),
    GamesSeeAll = v2.new(),
    HomeGames = v2.new(),
    GamesList = if not v5() then nil else v2.new()
};
return function(v7, v8)
    v7 = v7 or v6;
    assert(v7, "");
    if v8.type == v3.name then
        if v7[v8.groupId] then
            return (v1.Dictionary.join(v7, {
                [v8.groupId] = v1.Dictionary.join(v7[v8.groupId], {
                    sorts = v8.sorts,
                    pageId = v8.pageId
                })
            }));
        end;
    elseif not (not (v5() and v8.type == v4.name) or not v7[v8.groupId]) then
        local v9 = v7[v8.groupId];
        local l_sorts_0 = v8.sorts;
        if v9.sorts then
            l_sorts_0 = v1.List.join(v9.sorts, l_sorts_0);
        end;
        v7 = v1.Dictionary.join(v7, {
            [v8.groupId] = v1.Dictionary.join(v9, {
                sorts = l_sorts_0,
                pageId = ""
            })
        });
    end;
    return v7;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
local v3 = require(l_Modules_0.LuaApp.Actions.Games.SetGameSortTokenFetchingStatus);
return function(v4, v5)
    v4 = v4 or {
        Games = v2.NotStarted,
        HomeGames = v2.NotStarted,
        GamesSeeAll = v2.NotStarted
    };
    if v5.type == v3.name then
        v4 = v1.Set(v4, v5.sortCategory, v5.fetchStatus);
    end;
    return v4;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.AddGameSorts);
local _ = require(l_Modules_0.LuaApp.Models.GameSort);
return function(v4, v5)
    v4 = v4 or {};
    if v5.type == v2.name then
        local v6 = {};
        for _, v8 in pairs(v5.sorts) do
            v6[v8.name] = v8;
        end;
        v4 = v1.JoinDictionaries(v4, v6);
    end;
    return v4;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetGameSortStatus);
return function(v3, v4)
    v3 = v3 or {};
    assert(v3, "");
    if v4.type == v2.name then
        v3 = v1.Set(v3, v4.sortName, v4.status);
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_Modules_0.LuaApp.Actions.Games.AddGames);
local v3 = require(l_Modules_0.LuaApp.Actions.Games.AddOmniRecommendations);
local v4 = require(l_Modules_0.LuaApp.Actions.Games.AddContentMetadata);
local v5 = require(l_CorePackages_0.Cryo);
local v6 = require(l_Modules_0.LuaApp.Constants);
local function v12(v7, v8)
    local v9 = {};
    for v10, _ in pairs(v8) do
        if not v7[v10] then
            v9[v10] = v8[v10];
        else
            v9[v10] = v5.Dictionary.join(v7[v10], v8[v10]);
        end;
    end;
    return (v5.Dictionary.join(v7, v9));
end;
return function(v13, v14)
    v13 = v13 or {};
    assert(v13, "");
    if v14.type == v2.name then
        v13 = v12(v13, v14.games);
    end;
    if v14.type == v4.name and v14.contentMetadata[v6.OmniRecommendationsContentType.Game] ~= nil then
        v13 = v12(v13, v14.contentMetadata[v6.OmniRecommendationsContentType.Game]);
    end;
    if v14.type == v3.name then
        for _, v16 in pairs(v14.recommendations) do
            local v17 = v16.metadata[v6.OmniRecommendationsContentType.Game];
            if v17 then
                return (v12(v13, v17));
            end;
        end;
    end;
    return v13;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetNextTokenRefreshTime);
return function(v3, v4)
    v3 = v3 or {
        Games = -1,
        HomeGames = -1,
        GamesSeeAll = -1
    };
    if v4.type == v2.name then
        v3 = v1.Set(v3, v4.sortCategory, v4.nextRefreshTime);
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetOmniRecommendationsRefreshTime);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        v3 = v1.Dictionary.join(v3, {
            [v4.pageType] = v4.refreshTime
        });
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetRecommendedGameEntries);
return function(v3, v4)
    v3 = v3 or {};
    assert(v3, "");
    if v4.type == v2.name then
        v3 = v1.Set(v3, v4.universeId, v4.entries);
    end;
    return v3;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetGlobalContextMenuInset);
return function(v1, v2)
    v1 = v1 or {
        left = 0,
        top = 0,
        right = 0,
        bottom = 0
    };
    assert(v1, "");
    if v2.type == v0.name then
        return {
            left = v2.left,
            top = v2.top,
            right = v2.right,
            bottom = v2.bottom
        };
    else
        return v1;
    end;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetGlobalGuiInset);
return function(v1, v2)
    v1 = v1 or {
        left = 0,
        top = 0,
        right = 0,
        bottom = 0
    };
    assert(v1, "");
    if v2.type == v0.name then
        return {
            left = v2.left,
            top = v2.top,
            right = v2.right,
            bottom = v2.bottom
        };
    else
        return v1;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Actions.SetHomePageDataStatus);
local v2 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
return function(v3, v4)
    v3 = v3 or v2.NotStarted;
    if v4.type == v1.name then
        v3 = v4.status;
    end;
    return v3;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetHomePageUpsellCardVariation);
return function(v1, v2)
    v1 = v1 or {
        upsellCardType = "",
        titleTextOverride = "",
        bodyTextOverride = ""
    };
    if v2.type == v0.name then
        v1 = {
            upsellCardType = v2.upsellCardType,
            titleTextOverride = v2.titleTextOverride,
            bodyTextOverride = v2.bodyTextOverride
        };
    end;
    return v1;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetIAPProducts);
return function(v1, v2)
    v1 = v1 or {
        Robux = {},
        PremiumRobux = {},
        Subscriptions = {}
    };
    assert(v1, "");
    if v2.type == v0.name then
        return {
            Robux = v2.robux,
            PremiumRobux = v2.premiumRobux,
            Subscriptions = v2.subscriptions
        };
    else
        return v1;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_Modules_0.Common.Immutable);
local l_ConvertUniverseIdToString_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).ConvertUniverseIdToString;
local l_ReceivedUserPresence_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Actions.ReceivedUserPresence;
local v5 = require(l_Modules_0.LuaApp.Models.User);
return function(v6, v7)
    v6 = v6 or {};
    local function _(v8, v9)
        if v9 then
            local v10 = v6[tostring(v9)];
            if v10 then
                v6 = v2.Set(v6, tostring(v9), v2.RemoveFromDictionary(v10, v8));
            end;
        end;
    end;
    local function v14(v12, v13)
        v6 = v2.JoinDictionaries(v6, {
            [v13] = v2.JoinDictionaries(v6[v13] or {}, {
                [v12] = v12
            })
        });
    end;
    if v7.type == l_ReceivedUserPresence_0.name then
        local v15 = tostring(v7.userId);
        local v16 = tostring(v7.previousUniverseId);
        if v7.presence == v5.PresenceType.IN_GAME then
            local v17 = l_ConvertUniverseIdToString_0(v7.universeId);
            if not (not (v16 and v17 ~= v16) or not v16) then
                local v18 = v6[tostring(v16)];
                if v18 then
                    v6 = v2.Set(v6, tostring(v16), v2.RemoveFromDictionary(v18, v15));
                end;
            end;
            v14(v15, v17);
        elseif v16 then
            local v19 = v6[tostring(v16)];
            if v19 then
                v6 = v2.Set(v6, tostring(v16), v2.RemoveFromDictionary(v19, v15));
            end;
        end;
    end;
    return v6;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetIsLocalUserSoothsayer);
return function(v1, v2)
    local v3 = v1 or false;
    if v2.type == v0.name then
        return v2.isSoothsayer;
    else
        return v3;
    end;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetLocalUserUnder13);
return function(v1, v2)
    local v3 = true;
    if v1 ~= true then
        v3 = false;
    end;
    v1 = v3;
    if v2.type == v0.name then
        return v2.isUnder13;
    else
        return v1;
    end;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetLocalUserId);
return function(v1, v2)
    if v2.type == v0.name then
        return v2.userId;
    else
        return v1 or "";
    end;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_LuaApp_0 = l_CoreGui_0.RobloxGui.Modules.LuaApp;
local v3 = require(l_LuaApp_0.Actions.Moderation.SetModerationStatus);
local v4 = require(l_LuaApp_0.Actions.Moderation.SetModerationDetail);
local v5 = require(l_CorePackages_0.Cryo);
return function(v6, v7)
    v6 = v6 or {};
    assert(v6, "");
    if v7.type == v3.name then
        v6 = {
            userModerated = v7.userModerated
        };
    end;
    if v7.type == v4.name then
        v6 = v5.Dictionary.join(v6, (v5.Dictionary.join(v6 or {}, {
            moderationDetail = v7.moderationDetail
        })));
    end;
    return v6;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetNativeLocaleName);
return function(v1, v2)
    v1 = v1 or "";
    assert(v1, "");
    if v2.type == v0.name then
        v1 = v2.nativeLocaleName;
    end;
    return v1;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Actions.SetNativePurchaseResult);
local v2 = require(l_Modules_0.LuaApp.Actions.ClearNativePurchaseResult);
return function(v3, v4)
    local v5 = if v3 ~= nil then v3 else {};
    if v4.type == v1.name then
        return {
            nativeProductId = v4.nativeProductId,
            purchaseStatus = v4.purchaseStatus
        };
    elseif v4.type == v2.name then
        return {};
    else
        return v5;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Actions.SetNativeRobuxProducts);
local v2 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
return function(v3, v4)
    v3 = v3 or {
        Products = nil,
        FetchingStatus = v2.NotStarted
    };
    assert(v3, "");
    if v4.type == v1.name then
        return {
            Products = v4.nativeRobuxProducts,
            FetchingStatus = v2.Done
        };
    else
        return v3;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_Modules_0.Common.Rodux);
local v3 = require(l_CorePackages_0.Cryo);
local v4 = require(l_CorePackages_0.tutils);
local v5 = require(l_Modules_0.LuaApp.mutedError);
local v6 = require(l_Modules_0.LuaApp.Actions.ApplySetNavigationLocked);
local v7 = require(l_Modules_0.LuaApp.Actions.SetBackNavigationDisabled);
local v8 = require(l_Modules_0.LuaApp.Actions.ApplyRoactNavigationHistory);
local v9 = require(l_Modules_0.LuaApp.FlagSettings);
local v10 = require(l_Modules_0.LuaApp.Constants);
local l_getCurrentRouteState_0 = require(l_CorePackages_0.Workspace.Packages.Navigation).getCurrentRouteState;
local v12 = require(l_Modules_0.LuaApp.Flags.GetFFlagLuaAppNavigationAnalytics);
local l_GetFFlagLuaAppRefactorSelectRoute_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagLuaAppRefactorSelectRoute;
local l_getLegacyPageFromRoactNavigationRoute_0 = require(l_CorePackages_0.Workspace.Packages.NavigationRodux).Utils.getLegacyPageFromRoactNavigationRoute;
local function _()
    return {
        routeName = v9.GetDefaultAppPage(),
        key = v9.GetDefaultAppPage()
    };
end;
local function v16()
    return {
        routeName = v9.GetDefaultAppPage(),
        key = v9.GetDefaultAppPage(),
        name = v9.GetDefaultAppPage(),
        rnKey = v9.GetDefaultAppPage()
    };
end;
local function _()
    return {
        (v16())
    };
end;
return v2.createReducer({
    history = {
        {
            (v16())
        }
    },
    currentRoute = if not v12() then {
        (v16())
    } else v16(),
    lockNavigationActions = false,
    backNavigationDisableCounter = 0,
    roactNavigationState = if not l_GetFFlagLuaAppRefactorSelectRoute_0() then nil else {
        routeName = v9.GetDefaultAppPage(),
        key = v9.GetDefaultAppPage()
    }
}, {
    [v8.name] = function(v18, v19)
        local l_navigationState_0 = v19.navigationState;
        if not (not l_navigationState_0 or not l_navigationState_0.routes) and l_navigationState_0.index then
            local v21 = {};
            for v22 = 1, l_navigationState_0.index do
                local v23 = l_navigationState_0.routes[v22];
                if v23.routeName == v10.TempRnSwitchNavigatorName then
                    v23 = v23.routes[v23.index];
                end;
                table.insert(v21, v3.List.join(v21[v22 - 1] or {}, {
                    if not l_GetFFlagLuaAppRefactorSelectRoute_0() then v3.Dictionary.join(v23.params or {}, {
                        name = v23.routeName,
                        rnKey = v23.key
                    }) else l_getLegacyPageFromRoactNavigationRoute_0(v23)
                }));
            end;
            if #v21 == 0 then
                v5("RN computed history is empty for action: " .. v4.toString(v19));
                v21 = {
                    {
                        (v16())
                    }
                };
            end;
            local v24 = l_getCurrentRouteState_0({
                state = v19.navigationState
            }) or if v12() then v16() else {};
            if not l_GetFFlagLuaAppRefactorSelectRoute_0() then
                v24.name = v24.routeName;
                v24.rnKey = v24.key;
            end;
            return v3.Dictionary.join(v18, {
                currentRoute = v24,
                history = v21,
                lockNavigationActions = l_navigationState_0.isTransitioning or false,
                roactNavigationState = table.clone(v19.navigationState)
            });
        else
            local l_v18_0 = v18;
            if v18.lockNavigationActions then
                l_v18_0 = v3.Dictionary.join(v18, {
                    lockNavigationActions = false
                });
            end;
            v5("Roact Navigation state is not complete in action: " .. v4.toString(v19));
            return l_v18_0;
        end;
    end,
    [v6.name] = function(v26, v27)
        if v26.lockNavigationActions == v27.locked then
            return v26;
        else
            return (v3.Dictionary.join(v26, {
                lockNavigationActions = v27.locked or false
            }));
        end;
    end,
    [v7.name] = function(v28, v29)
        return v3.Dictionary.join(v28, {
            backNavigationDisableCounter = not not v29.disabled and v28.backNavigationDisableCounter + 1 or math.max(v28.backNavigationDisableCounter - 1, 0)
        });
    end
});


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetOmniRecommendationsMetadataRequestStatus);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        local v5 = {};
        for v6, v7 in pairs(v4.contentIds) do
            v5[v6] = v1.Dictionary.join(v3[v6] or {}, v7);
        end;
        v3 = v1.Dictionary.join(v3, v5);
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Actions.Games.SetOmniRecommendationsRequestStatus);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        v3 = v1.Dictionary.join(v3, {
            [v4.pageType] = v4.status
        });
    end;
    return v3;
end;


local v0 = require(game:GetService("CorePackages").Cryo);
local v1 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetPassesThumbnails);
return function(v2, v3)
    local v4 = v2 or {};
    if v3.type == v1.name then
        v4 = v0.Dictionary.join(v4, v3.passesThumbnails);
    end;
    return v4;
end;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetPlatform);
return function(v1, v2)
    v1 = v1 or Enum.Platform.None;
    assert(v1, "");
    if v2.type == v0.name then
        return v2.platform;
    else
        return v1;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Reducers.Games.GameSortTokenFetchingStatus);
local v2 = require(l_Modules_0.LuaApp.Reducers.Games.GameSortsStatus);
local v3 = require(l_Modules_0.LuaApp.Reducers.SearchesInGamesStatus);
local v4 = require(l_Modules_0.LuaApp.Reducers.OmniRecommendationsRetrievalStatus);
local v5 = require(l_Modules_0.LuaApp.Reducers.OmniRecommendationsMetadataRetrievalStatus);
return function(v6, v7)
    v6 = v6 or {};
    return {
        GameSortTokenFetchingStatus = v1(v6.GameSortTokenFetchingStatus, v7),
        GameSortsStatus = v2(v6.GameSortsStatus, v7),
        SearchesInGamesStatus = v3(v6.SearchesInGamesStatus, v7),
        OmniRecommendationsRetrievalStatus = v4(v6.OmniRecommendationsRetrievalStatus, v7),
        OmniRecommendationsMetadataRetrievalStatus = v5(v6.OmniRecommendationsMetadataRetrievalStatus, v7)
    };
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_CorePackages_0.Rodux);
local v4 = require(l_CorePackages_0.tutils);
return v3.createReducer({
    hasBlur = false,
    blurDisplayOrder = 0,
    details = {}
}, {
    [require(l_Modules_0.LuaApp.Actions.SetScreenGuiBlur).name] = function(v5, v6)
        local v7 = nil;
        v7 = if v6.blur == true then v2.Dictionary.join(v5.details, {
            [v6.source] = v6.displayOrder
        }) else v2.Dictionary.join(v5.details, {
            [v6.source] = v2.None
        });
        local v8 = v4.fieldCount(v7) > 0;
        local v9 = 0;
        for _, v11 in pairs(v7) do
            v9 = math.max(v9, v11);
        end;
        return {
            hasBlur = v8,
            blurDisplayOrder = v9,
            details = v7
        };
    end
});


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Actions.SetScreenSize);
return function(v1, v2)
    v1 = v1 or Vector2.new(0, 0);
    assert(v1, "");
    if v2.type == v0.name then
        return v2.screenSize;
    else
        return v1;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Reducers.SearchesInGames);
local v2 = require(l_Modules_0.AvatarExperience.Catalog.Reducers.SearchesInCatalog);
return function(v3, v4)
    v3 = v3 or {};
    return {
        SearchesInGames = v1(v3.SearchesInGames, v4),
        SearchesInCatalog = v2(v3.SearchesInCatalog, v4)
    };
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_Modules_0.LuaApp.Actions.SetSearchBarFocused);
return function(v4, v5)
    v4 = v4 or {
        focused = false
    };
    if v5.type == v3.name then
        v4 = v2.Dictionary.join(v4, {
            focused = v5.focused
        });
    end;
    return v4;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Actions.SetSearchTime);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        v3 = v1.Dictionary.join(v3, {
            [v4.searchUuid] = v4.searchTime
        });
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.SetSearchInGames);
local v3 = require(l_Modules_0.LuaApp.Actions.AppendSearchInGames);
local v4 = require(l_Modules_0.LuaApp.Actions.RemoveSearchInGames);
local v5 = require(l_Modules_0.LuaApp.Actions.ResetSearchesInGames);
return function(v6, v7)
    v6 = v6 or {};
    if v7.type == v2.name then
        return (v1.Set(v6, v7.searchUuid, v7.searchInGames));
    elseif v7.type == v3.name then
        local l_searchUuid_0 = v7.searchUuid;
        local v9 = v6[l_searchUuid_0];
        local l_searchInGames_0 = v7.searchInGames;
        if v9 then
            l_searchInGames_0.emphasis = v9.emphasis;
            l_searchInGames_0.entries = v1.JoinLists(v9.entries, l_searchInGames_0.entries);
        end;
        return (v1.Set(v6, l_searchUuid_0, l_searchInGames_0));
    elseif v7.type == v4.name then
        return (v1.Set(v6, v7.searchUuid, nil));
    else
        if v7.type == v5.name then
            v6 = {};
        end;
        return v6;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.SetSearchInGamesStatus);
return function(v3, v4)
    v3 = v3 or {};
    assert(v3, "");
    if v4.type == v2.name then
        v3 = v1.Set(v3, v4.searchUuid, v4.status);
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.SetSearchParameters);
return function(v3, v4)
    v3 = v3 or {};
    assert(v3, "");
    if v4.type == v2.name then
        v3 = v1.Set(v3, v4.searchUuid, v4.parameters);
    end;
    return v3;
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_CorePackages_0.Rodux);
local v4 = require(l_CorePackages_0.Cryo);
return v3.createReducer({}, {
    [require(l_Modules_0.LuaApp.Actions.SetSearchType).name] = function(v5, v6)
        return v4.Dictionary.join(v5, {
            [v6.searchUuid] = v6.searchType
        });
    end
});


local v0 = require(game:GetService("CorePackages").Cryo);
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_Modules_0.LuaApp.Actions.ProcessSiteAlertInfoPayload);
local v3 = require(l_Modules_0.LuaApp.Actions.RefreshSiteAlertInfo);
local v4 = require(l_Modules_0.LuaApp.Actions.ApplySetNavigationLocked);
local v5 = require(l_Modules_0.LuaApp.Actions.ApplyRoactNavigationHistory);
return function(v6, v7)
    v6 = v6 or {};
    if v7.type == v2.name then
        return {
            Text = not not v7.visible and v7.text or nil,
            Link = not not v7.visible and v7.link or nil,
            timestamp = v7.timestamp or nil,
            updateRequested = false
        };
    elseif v7.type == v3.name then
        return v0.Dictionary.join(v6, {
            updateRequested = v7.updateRequested
        });
    else
        for _, v9 in ipairs({
            v4,
            v5
        }) do
            if v7.type == v9.name then
                return v0.Dictionary.join(v6, {
                    updateRequested = true
                });
            end;
        end;
        return v6;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.SetTopBarHeight);
local v3 = require(l_Modules_0.LuaApp.Actions.SetStatusBarHeight);
local v4 = require(l_Modules_0.LuaApp.Constants);
return function(v5, v6)
    v5 = v5 or {
        topBarHeight = v4.TOP_BAR_SIZE,
        statusBarHeight = 0
    };
    assert(v5, "");
    if v6.type == v2.name then
        if v5.topBarHeight ~= v6.topBarHeight then
            return (v1.JoinDictionaries(v5, {
                topBarHeight = v6.topBarHeight
            }));
        end;
    elseif v6.type == v3.name then
        v5 = v1.JoinDictionaries(v5, {
            statusBarHeight = v6.statusBarHeight
        });
    end;
    return v5;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Actions.SetUserRobux);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        v3 = v1.Set(v3, v4.userId, v4.robux);
    end;
    return v3;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.Common.Immutable);
local v2 = require(l_Modules_0.LuaApp.Enum.RetrievalStatus);
local v3 = require(l_Modules_0.LuaApp.Actions.FetchingUser);
local v4 = require(l_Modules_0.LuaApp.Actions.AddUser);
return function(v5, v6)
    v5 = v5 or {};
    assert(v5, "");
    if v6.type == v3.name then
        return (v1.Set(v5, v6.userId, v6.status));
    else
        if v6.type == v4.name then
            v5 = v1.Set(v5, v6.user.id, v2.Done);
        end;
        return v5;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_Modules_0.LuaApp.Actions.ReceivedAllFriends);
local l_ReceivedUserPresence_0 = require(l_CorePackages_0.Workspace.Packages.UserLib).Actions.ReceivedUserPresence;
local v4 = require(l_Modules_0.LuaApp.Actions.RequestAllFriends);
local v5 = require(l_Modules_0.LuaApp.Actions.RequestUserPresence);
local v6 = require(l_Modules_0.Common.Immutable);
return function(v7, v8)
    v7 = v7 or {};
    if v8.type == v4.name then
        return v6.JoinDictionaries(v7, {
            allFriendsIsFetching = true
        });
    elseif v8.type == v2.name then
        return v6.JoinDictionaries(v7, {
            allFriendsIsFetching = false
        });
    elseif v8.type == v5.name then
        return v6.JoinDictionaries(v7, {
            [v8.userId] = v6.JoinDictionaries(v7[v8.userId] or {}, {
                presenceIsFetching = true
            })
        });
    else
        if v8.type == l_ReceivedUserPresence_0.name then
            local v9 = v7[v8.userId];
            if v9 then
                return v6.JoinDictionaries(v7, {
                    [v8.userId] = v6.JoinDictionaries(v9, {
                        presenceIsFetching = false
                    })
                });
            end;
        end;
        return v7;
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v2 = require(l_CorePackages_0.Cryo);
local v3 = require(l_Modules_0.LuaApp.Actions.AddUsersSearchResults);
local v4 = require(l_Modules_0.LuaApp.Actions.RemoveUsersSearchResults);
return function(v5, v6)
    v5 = v5 or {};
    if v6.type == v3.name then
        local v7 = v5[v6.keyword];
        local _ = nil;
        return (v2.Dictionary.join(v5, {
            [v6.keyword] = v2.Dictionary.join({}, {
                nextPageCursor = v6.nextPageCursor or v2.None,
                entries = if not v7 then v6.entries else v2.List.join(v7.entries, v6.entries)
            })
        }));
    else
        if v6.type == v4.name then
            v5 = v2.Dictionary.join(v5, {
                [v6.keyword] = v2.None
            });
        end;
        return v5;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(game:GetService("CorePackages").Cryo);
local v2 = require(l_Modules_0.LuaApp.Actions.SetVoiceSettings);
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == v2.name then
        v3 = v1.Dictionary.join(v3, {
            isUserEligible = v4.isUserEligible,
            isVoiceEnabled = v4.isVoiceEnabled,
            isUserOptIn = v4.isUserOptIn
        });
    end;
    return v3;
end;


local l_RoactMotionImplementation_0 = script.Parent.RoactMotionImplementation;
return {
    spring = require(l_RoactMotionImplementation_0.MotionSpecifier).spring,
    SimpleMotion = require(l_RoactMotionImplementation_0.SimpleMotion)
};


return {
    UPDATE_RATE = 0.008333333333333333,
    TIME_FACTOR = 1,
    MAX_ACCUMULATION = 0.2,
    DEFAULT_STIFFNESS = 170,
    DEFAULT_DAMPING = 26,
    SPRING_PRECISION = 0.01
};


local v0 = require(script.Parent.Config);
local v1 = require(script.Parent.MotionType);
return {
    spring = function(v2, v3, v4, v5)
        return {
            type = v1.Spring,
            value = v2,
            stiffness = v3 or v0.DEFAULT_STIFFNESS,
            damping = v4 or v0.DEFAULT_DAMPING,
            precision = v5 or v0.SPRING_PRECISION
        };
    end,
    extractValue = function(v6)
        if type(v6) == "table" then
            return v6.value;
        else
            return v6;
        end;
    end,
    getType = function(v7)
        if type(v7) == "table" then
            return v7.type;
        else
            return v1.Instant;
        end;
    end
};


local l_RunService_0 = game:GetService("RunService");
local v1 = require(game:GetService("CoreGui").RobloxGui.Modules.Common.Roact);
local v2 = require(script.Parent.stepSpring);
local v3 = require(script.Parent.merge);
local v4 = require(script.Parent.Config);
local v5 = require(script.Parent.MotionType);
local v6 = require(script.Parent.MotionSpecifier);
local v7 = v1.Component:extend("SimpleMotion");
local v8 = {};
l_RunService_0.RenderStepped:Connect(function(v9)
    for v10 in pairs(v8) do
        v10(v9);
    end;
end);
v7.init = function(v11)
    local v12 = {};
    local v13 = {};
    for v14, v15 in pairs(v11.props.style) do
        v13[v14] = 0;
        v12[v14] = v6.extractValue(v15);
    end;
    if v11.props.defaultStyle then
        for v16, v17 in pairs(v11.props.defaultStyle) do
            v12[v16] = v17;
        end;
    end;
    v11.resting = false;
    v11.wasResting = true;
    v11.accumulator = 0;
    v11.state = {
        values = v12,
        velocities = v13
    };
end;
v7.render = function(v18)
    return v18.props.render(v18.state.values);
end;
v7.update = function(v19, v20)
    if not v19.resting then
        local v21 = v3(v19.state.values);
        local v22 = v3(v19.state.velocities);
        local v23 = false;
        v19.accumulator = v19.accumulator + v20 % v4.MAX_ACCUMULATION;
        while v4.UPDATE_RATE <= v19.accumulator do
            v19.accumulator = v19.accumulator - v4.UPDATE_RATE;
            local v24 = true;
            for v25, v26 in pairs(v19.props.style) do
                local v27 = v6.getType(v26);
                local v28 = nil;
                local v29 = nil;
                if v27 == v5.Instant then
                    v28 = v26;
                    v29 = 0;
                    v19.wasResting = false;
                elseif v27 == v5.Spring then
                    local v30, v31 = v2(v4.UPDATE_RATE * v4.TIME_FACTOR, v21[v25], v22[v25], v26.value, v26.stiffness, v26.damping, v26.precision);
                    v28 = v30;
                    v29 = v31;
                else
                    error(("Unsupported MotionType %q"):format(v27));
                end;
                v21[v25] = v28;
                v22[v25] = v29;
                if not (v28 == v19.state.values[v25]) or v29 ~= v19.state.velocities[v25] then
                    v23 = true;
                end;
                if not (v28 == v6.extractValue(v26)) or v29 ~= 0 then
                    v24 = false;
                end;
            end;
            if v24 then
                v19.resting = true;
                v19.accumulator = 0;
                break;
            end;
        end;
        if v23 then
            v19:setState({
                values = v21,
                velocities = v22
            });
        end;
        if not ((v19.wasResting or not v19.resting) or not v19.props.onRested) then
            v19.props.onRested();
        end;
        v19.wasResting = v19.resting;
        return ;
    else
        return ;
    end;
end;
v7.didMount = function(v32)
    v32.renderCallback = function(v33)
        v32:update(v33);
    end;
    v8[v32.renderCallback] = true;
end;
v7.willUnmount = function(v34)
    v8[v34.renderCallback] = nil;
end;
v7.didUpdate = function(v35, v36)
    if v36 == v35.props then
        return ;
    else
        v35.resting = false;
        return ;
    end;
end;
return v7;


return function(...)
    local v0 = {};
    for v1 = 1, select("#", ...) do
        for v2, v3 in pairs(select(v1, ...)) do
            v0[v2] = v3;
        end;
    end;
    return v0;
end;


return function(v0, v1, v2, v3, v4, v5, v6)
    local v7 = v2 + (-v4 * (v1 - v3) + -v5 * v2) * v0;
    local v8 = v1 + v2 * v0;
    if math.abs(v7) < v6 and math.abs(v3 - v8) < v6 then
        return v3, 0;
    else
        return v8, v7;
    end;
end;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local _ = require(l_Modules_0.AvatarExperience.Common.Reducers.AvatarExperience);
local _ = require(l_Modules_0.LuaApp.Reducers.Navigation);
local _ = require(l_Modules_0.Personalization.DataStoreTypes);
local _ = require(l_CorePackages_0.Workspace.Packages.CommunityLinks);
return {};


local l_HttpService_0 = game:GetService("HttpService");
local _ = game:GetService("CoreGui").RobloxGui.Modules;
return function()
    return l_HttpService_0:GenerateGUID(true);
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices.createService(script.Name);
local _ = require(l_CorePackages_0.Workspace.Packages.WebViewProtocol);
return v1;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_Events_0 = l_Modules_0.LuaApp.Analytics.Events;
local v2 = require(l_Events_0.pageHeartbeat);
local v3 = require(l_Events_0.userInteractions);
local v4 = require(l_Modules_0.LuaApp.Services.RoactAnalytics);
return {
    get = function(v5)
        local v6 = v4.get(v5);
        return {
            reportPageHeartbeat = function(v7, v8)
                v2(v6.EventStream, v7, v8);
            end,
            reportPageChanged = function()
                v3(v6.EventStream, "luaPage");
            end
        };
    end
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Analytics.Events.appStageLoaded);
local v2 = require(l_Modules_0.LuaApp.Services.RoactAnalytics);
return {
    get = function(v3)
        local v4 = v2.get(v3);
        return {
            reportAppReady = function(v5)
                v1(v4.EventStream, v5, "appReady");
            end
        };
    end
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Analytics.Events.buttonClick);
local v2 = require(l_Modules_0.LuaApp.Analytics.Events.formInteraction);
local v3 = require(l_Modules_0.LuaApp.Analytics.Events.modalAction);
local v4 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.crossDeviceEnterCodeButtonClick);
local v5 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.upsellCardModalAction);
local v6 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.upsellCardButtonClick);
local v7 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.upsellCardFormInteraction);
local v8 = require(l_Modules_0.LuaApp.Analytics.Events.screenLoaded);
local v9 = require(l_Modules_0.LuaApp.Analytics.Events.formFieldValidation);
local v10 = require(l_Modules_0.LuaApp.Services.RoactAnalytics);
local v11 = require(l_Modules_0.LuaApp.EventStreamConstants);
local v12 = require(l_Modules_0.LuaApp.Analytics.Events.usernameSuggestionClick);
local v13 = require(l_Modules_0.LuaApp.Flags.GetFFlagAuthNewModalSchematization);
local v14 = require(l_Modules_0.LuaApp.Analytics.Events.reportEphemeralCounter);
local v15 = require(l_Modules_0.LuaApp.Components.Authentication.Flags.FFlagSignupDisplayNameLogging);
local v16 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.authPageLoad);
local v17 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.authClientError);
local v18 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.authModalShown);
local v19 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.authButtonClick);
local v20 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.usernameSuggestionShown);
local v21 = require(l_Modules_0.LuaApp.Analytics.Events.Auth.authFormInteraction);
return {
    get = function(v22)
        local v23 = v10.get(v22);
        local v88 = {
            reportScreenLoaded = function(v24)
                v8(v23.EventStream, v24);
            end,
            reportAuthPageload = function(v25, v26, v27)
                v16(v23.EventStream, v25, v26, v27);
            end,
            reportAuthModalShown = function(v28, v29)
                v18(v23.EventStream, v28, v29);
            end,
            reportAuthClientError = function(v30, v31)
                v17(v23.EventStream, v30, v31);
            end,
            reportAuthButtonClick = function(v32, v33, v34, v35, v36)
                v19(v23.EventStream, v32, v33, v34, v35, v36);
            end,
            reportModalShown = function(v37, v38)
                v3(v23.EventStream, v37, v11.ActionType.Shown, v38);
                local v39 = {
                    origin = v38
                };
                if v13() then
                    v23.EventStream:setRBXEventStream(v37, v11.AuthEventName.AuthModalShown, v39);
                end;
            end,
            reportModalShownWithSection = function(v40, v41, v42)
                v5(v23.EventStream, v40, "", v11.ActionType.Shown, v41, v42);
            end,
            reportModalShownWithSectionAndError = function(v43, v44, v45, v46, v47)
                v5(v23.EventStream, v43, v44, v11.ActionType.Shown, v45, v46, v47);
            end,
            reportModalDismissed = function(v48, v49)
                v3(v23.EventStream, v48, v11.ActionType.Dismiss, v49);
            end,
            reportModalDismissedWithSection = function(v50, v51, v52)
                v5(v23.EventStream, v50, "", v11.ActionType.Dismiss, v51, v52);
            end,
            reportModalActionWithSection = function(v53, v54, v55, v56, v57, v58)
                v5(v23.EventStream, v53, v54, v55, v56, v57, v58);
            end,
            reportBirthdaySelection = function(v59)
                local l_Submit_0 = v11.ActionType.Submit;
                v2(v23.EventStream, v59, v11.Field.BirthdayYear, l_Submit_0);
                v2(v23.EventStream, v59, v11.Field.BirthdayMonth, l_Submit_0);
                v2(v23.EventStream, v59, v11.Field.BirthdayDay, l_Submit_0);
            end,
            reportAgeFocus = function(v61)
                v2(v23.EventStream, v61, v11.Field.BirthdayAge, v11.ActionType.Focus);
            end,
            reportYearFocus = function(v62)
                v2(v23.EventStream, v62, v11.Field.BirthdayYear, v11.ActionType.Focus);
            end,
            reportUsernameFocus = function(v63)
                v2(v23.EventStream, v63, v11.Field.Username, v11.ActionType.Focus);
            end,
            reportDisplayNameFocus = function(v64)
                if not v15 then
                    v2(v23.EventStream, v64, v11.Field.DisplayName, v11.ActionType.Focus);
                    return ;
                else
                    v21(v23.EventStream, v11.Context.SinglePageSignUpScreen, v11.Field.DisplayName, v11.ActionType.Focus);
                    return ;
                end;
            end,
            reportPasswordFocus = function(v65)
                v2(v23.EventStream, v65, v11.Field.Password, v11.ActionType.Focus);
            end,
            report2SVCodeFocus = function(v66)
                v2(v23.EventStream, v66, v11.Field.TwoStepAuthCode, v11.ActionType.Focus);
            end,
            reportFocus = function(v67, v68, v69)
                v2(v23.EventStream, v67, v68, v11.ActionType.Focus, v69);
            end,
            report2SVInvalidCode = function(v70, v71)
                v9(v23.EventStream, v70, v11.Field.TwoStepAuthCode, v71);
            end,
            reportErrorMessageShown = function(v72, v73, v74)
                v2(v23.EventStream, v72, v73, v11.ActionType.Shown, v74);
            end,
            reportInteractWithAction = function(v75, v76, v77, v78, v79)
                v2(v23.EventStream, v75, v76, v77, v78, v79);
            end,
            reportInteractWithActionAndSection = function(v80, v81, v82, v83, v84, v85)
                v7(v23.EventStream, v80, v81, v82, v83, v84, v85);
            end,
            reportSignUpButtonClicked = function(v86)
                v1(v23.EventStream, v86, v11.Button.SignUp);
            end,
            reportLogInButtonClicked = function(v87)
                v1(v23.EventStream, v87, v11.Button.LogIn);
            end
        };
        v88.reportSwitchAccountButtonClicked = function(v89)
            v88.reportAuthButtonClick(v89, v11.Button.SwitchAccounts, nil);
        end;
        v88.reportContinueButtonClicked = function(v90)
            v1(v23.EventStream, v90, v11.Button.Continue);
        end;
        v88.reportDismissCornerXButtonClicked = function(v91)
            v1(v23.EventStream, v91, v11.Button.DismissCornerX);
        end;
        v88.reportForgotPasswordButtonClicked = function(v92)
            v1(v23.EventStream, v92, v11.Button.ForgotPassword);
        end;
        v88.report2SVHelpButtonClicked = function(v93)
            v1(v23.EventStream, v93, v11.Button.NeedHelpLink);
        end;
        v88.reportResendCodeButtonClicked = function(v94)
            v1(v23.EventStream, v94, v11.Button.ResendCode);
        end;
        v88.reportRememberDeviceButtonClicked = function(v95)
            v1(v23.EventStream, v95, v11.Button.RememberDevice);
        end;
        v88.reportShowPasswordButtonClicked = function(v96)
            v1(v23.EventStream, v96, v11.Button.ShowPassword);
        end;
        v88.reportHidePasswordButtonClicked = function(v97)
            v1(v23.EventStream, v97, v11.Button.HidePassword);
        end;
        v88.reportAvatarSelectedButtonClicked = function(v98, v99)
            v1(v23.EventStream, v98, v11.Button.AvatarSelected, v99);
        end;
        v88.reportWeChatButtonClicked = function(v100)
            v1(v23.EventStream, v100, v11.Button.WeChat);
        end;
        v88.reportQQButtonClicked = function(v101)
            v1(v23.EventStream, v101, v11.Button.QQ);
        end;
        v88.reportButtonClicked = function(v102, v103)
            v1(v23.EventStream, v102, v103);
        end;
        v88.reportButtonClickedWithCType = function(v104, v105, v106)
            v4(v23.EventStream, v104, v105, nil, v106);
        end;
        v88.reportButtonClickedWithSectionAndOrigin = function(v107, v108, v109, v110)
            v6(v23.EventStream, v107, v108, nil, v109, v110);
        end;
        v88.reportUsernameSuggestionClicked = function(v111, v112, v113, v114)
            v12(v23.EventStream, v111, v112, v113, v114);
        end;
        v88.reportUsernameSuggestionShown = function(v115, v116, v117, v118)
            v20(v23.EventStream, v115, v116, v117, v118);
        end;
        v88.reportDisplayNameFieldLoaded = function(v119, v120, v121)
            v14("DisplayNameFieldLoaded", 1);
            v21(v23.EventStream, v119, v120, v121);
        end;
        v88.reportDisplayNameFieldBypassed = function(v122, v123)
            v14(v123, 1);
            v17(v23.EventStream, v122, v123);
        end;
        v88.reportUsernameGenerationFailed = function(v124, v125)
            v14(v125, 1);
            v17(v23.EventStream, v124, v125);
        end;
        v88.reportAuthFormInteraction = function(v126, v127, v128, v129, v130)
            v21(v23.EventStream, v126, v127, v128, v129, v130);
        end;
        return v88;
    end
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(script.Parent.RoactAnalytics);
local v2 = require(l_Modules_0.LuaApp.ArgCheck);
local v3 = require(l_Modules_0.LuaApp.Analytics.Events.buttonClick);
return {
    get = function(v4)
        local l_EventStream_0 = v1.get(v4).EventStream;
        return {
            ButtonActivated = function(v6, v7)
                v2.isType(v6, "string", "associatedPageType");
                v2.isType(v7, "string", "currentPage");
                v3(l_EventStream_0, "BottomBarButton", v6, v7);
            end
        };
    end
};


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Modules_0 = l_CoreGui_0.RobloxGui.Modules;
local v3 = require(l_Modules_0.LuaApp.Services.RoactAnalytics);
local v4 = require(l_Modules_0.LuaApp.Analytics.Events.Games.gamePlayIntent);
local l_getPlatformTarget_0 = require(l_CorePackages_0.Workspace.Packages.Analytics).getPlatformTarget;
local v6 = require(l_CorePackages_0.Workspace.Packages.SocialLuaAnalytics);
local l_EventTypes_0 = v6.Analytics.Enums.EventTypes;
local l_Contexts_0 = v6.Analytics.Enums.Contexts;
local l_Pages_0 = v6.Analytics.Enums.Pages;
local v10 = require(l_CorePackages_0.Cryo);
local _ = require(l_Modules_0.LuaApp.DeepLinks.ShareLinks.Types);
local v12 = require(l_Modules_0.LuaApp.DeepLinks.ShareLinks.Flags.FFlagShareLinksFixTrackerForJoinClicks);
game:DefineFastString("ShareLinkAppOpen", "ShareLinkAppOpen");
game:DefineFastString("ShareLinkResolved", "ShareLinkResolved");
game:DefineFastString("ShareLinkErrorDialogCancelButtonClick", "ShareLinkErrorDialogCancelButtonClick");
game:DefineFastString("ShareLinkErrorDialogJoinButtonClick", "ShareLinkErrorDialogJoinButtonClick");
game:DefineFastString("ShareLinkLaunchGame", "ShareLinkLaunchGame");
local function _()
    return game:GetFastString("ShareLinkAppOpen");
end;
local function _()
    return game:GetFastString("ShareLinkResolved");
end;
local function _()
    return game:GetFastString("ShareLinkErrorDialogCancelButtonClick");
end;
local function _()
    return game:GetFastString("ShareLinkErrorDialogJoinButtonClick");
end;
local function _()
    return game:GetFastString("ShareLinkLaunchGame");
end;
return {
    get = function(v18)
        local v19 = v3.get(v18);
        return {
            openAppViaShareLink = function(v20)
                v19.EventStream:setRBXEventStream(l_Contexts_0.ShareLinks, l_EventTypes_0.AppOpenViaShareLink, v10.Dictionary.join({
                    target = l_getPlatformTarget_0()
                }, v20));
                v19.Diag:reportCounter(("%*%*%*"):format(game:GetFastString("ShareLinkAppOpen"), v20.linkType, not v20.isViaAppsFlyer and "" or "AppsFlyer"), 1);
            end,
            resolveLink = function(v21)
                v19.EventStream:setRBXEventStream(l_Contexts_0.ShareLinks, l_EventTypes_0.LinkResolved, v10.Dictionary.join({
                    target = l_getPlatformTarget_0()
                }, v21));
                v19.Diag:reportCounter(game:GetFastString("ShareLinkResolved") .. v21.linkStatus .. v21.linkType, 1);
            end,
            errorDialogButtonClick = function(v22)
                v19.EventStream:setRBXEventStream(l_Contexts_0.ShareLinks, l_EventTypes_0.ButtonClick, v10.Dictionary.join({
                    target = l_getPlatformTarget_0(),
                    btn = "cancel",
                    page = l_Pages_0.ShareLinkErrorDialog
                }, v22));
                v19.Diag:reportCounter(game:GetFastString("ShareLinkErrorDialogCancelButtonClick") .. v22.linkType, 1);
            end,
            errorJoinDialogButtonClick = function(v23)
                v19.EventStream:setRBXEventStream(l_Contexts_0.ShareLinks, l_EventTypes_0.ButtonClick, v10.Dictionary.join({
                    target = l_getPlatformTarget_0(),
                    btn = "join",
                    page = l_Pages_0.ShareLinkErrorDialog
                }, v23));
                if not v12 then
                    v19.Diag:reportCounter(game:GetFastString("ShareLinkErrorDialogCancelButtonClick") .. v23.linkType, 1);
                    return ;
                else
                    v19.Diag:reportCounter(game:GetFastString("ShareLinkErrorDialogJoinButtonClick") .. v23.linkType, 1);
                    return ;
                end;
            end,
            gameLaunch = function(v24)
                v4(v19.EventStream, l_Contexts_0.ShareLinks, {
                    placeId = v24.placeId,
                    rootPlaceId = tonumber(v24.placeId),
                    linkId = v24.linkId,
                    linkType = v24.linkType,
                    linkStatus = v24.linkStatus,
                    joinAttemptId = v24.joinAttemptId
                });
                v19.Diag:reportCounter(game:GetFastString("ShareLinkLaunchGame") .. v24.linkType, 1);
            end
        };
    end
};


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.Services.RoactAnalytics);
return {
    get = function(v1)
        local v2 = v0.get(v1);
        return {
            inviteePageLoad = function(v3, v4)
                v2.EventStream:setRBXEventStream("profileShareLink", "luaPageLoad", {
                    target = "mobile",
                    referringUserId = v3,
                    page = v4
                });
            end,
            inviterButtonClick = function(v5)
                v2.EventStream:setRBXEventStream("profileShareLink", "buttonClick", {
                    btn = "userShareProfileLink",
                    target = "mobile",
                    page = v5
                });
            end
        };
    end
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local v1 = require(l_Modules_0.LuaApp.Analytics.Events.search);
local v2 = require(l_Modules_0.LuaApp.Analytics.Events.nsOpenCTAShown);
local v3 = require(l_Modules_0.LuaApp.Analytics.Events.nsOpenContent);
local v4 = require(l_Modules_0.LuaApp.Analytics.Events.buttonClick);
local v5 = require(l_Modules_0.LuaApp.Services.RoactAnalytics);
return {
    get = function(v6)
        local v7 = v5.get(v6);
        local v8 = {};
        local function _(v9, v10, v11)
            v1(v7.EventStream, v9, v10, v11);
        end;
        v8.reportSearchButtonClick = function(v13)
            v4(v7.EventStream, v13, "search");
        end;
        v8.reportSearchFocused = function(v14)
            v1(v7.EventStream, v14, "open", nil);
        end;
        v8.reportSearched = function(v15, v16)
            v1(v7.EventStream, v15, "search", v16);
        end;
        v8.reportSearchCanceled = function(v17)
            v1(v7.EventStream, v17, "cancel", nil);
        end;
        v8.reportNSButtonTouch = function(v18)
            v3(v7.EventStream, "touch", v18);
        end;
        v8.reportNSOpenCTAShown = function(v19)
            v2(v7.EventStream, "seen", v19);
        end;
        v8.reportRobuxButtonClick = function(v20)
            v4(v7.EventStream, v20, "robux");
        end;
        v8.reportBackButtonClick = function(v21)
            v4(v7.EventStream, v21, "back");
        end;
        v8.reportAddFriendsButtonClick = function(v22)
            v4(v7.EventStream, v22, "addFriends");
        end;
        return v8;
    end
};


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_LocalizationService_0 = game:GetService("LocalizationService");
local l_CorePackages_0 = game:GetService("CorePackages");
local v3 = require(l_Modules_0.Common.Immutable);
local v4 = require(l_Modules_0.Common.Roact);
local v5 = require(l_CorePackages_0.Cryo);
local v6 = require(l_Modules_0.Common.RoactUtilities.ExternalEventConnection);
local l_RoactServices_0 = require(l_CorePackages_0.Workspace.Packages.RoactServices).RoactServices;
local v8 = require(l_CorePackages_0.tutils);
local l_CorePackages_1 = game:GetService("CorePackages");
local l_RoactServicesContext_0 = require(l_CorePackages_1.Workspace.Packages.RoactServices).RoactServicesContext;
local v11 = require(l_CorePackages_1.Workspace.Packages.SharedFlags).GetFFlagMigrateRoactUtilsToReactUtils();
local v12 = l_RoactServices_0.createService(script.Name);
v12.connect = function(v13)
    local v14 = {};
    for _, v16 in ipairs(v13) do
        v14[v16] = true;
    end;
    return function(v17)
        assert(v17 ~= nil, "Expected component to be passed to connection, got nil.");
        local v18 = v4.Component:extend((("Localize(%s)"):format((tostring(v17)))));
        v18.init = function(v19)
            local v20 = v12.get(v19.props.services);
            assert(v20 ~= nil, table.concat({
                "Cannot initialize RoactLocalization component without being a descendent of ServiceProvider",
                ("Tried to wrap component %q"):format((tostring(v17))),
                "Make sure there is a ServiceProvider above this component in the tree."
            }, "\n"));
            v19.state = {
                locale = l_LocalizationService_0.RobloxLocaleId
            };
            v19.localization = v20;
            v19.updateLocalization = function(v21)
                v19:setState({
                    locale = v21
                });
            end;
        end;
        v18.render = function(v22)
            local v23 = v12.get(v22.props.services);
            local v24 = {};
            for v25 in pairs(v14) do
                local v26 = v22.props.innerProps[v25];
                assert(v26 ~= nil, ("No localization string or table found for \"%s\""):format(v25));
                local v27 = true;
                if type(v26) ~= "table" then
                    v27 = type(v26) == "string";
                end;
                assert(v27, ("Localized field \"%s\" is not a string or table."):format(v25));
                if type(v26) == "table" then
                    assert(type(v26[1]) == "string", ("Localization table \"%s\" requires a key of type string, got %s"):format(v25, (type(v26[1]))));
                    v24[v25] = v23:Format(v26[1], v26);
                else
                    v24[v25] = v23:Format(v26);
                end;
            end;
            local v28 = v3.JoinDictionaries(v22.props.innerProps, v24);
            if type(v17) == "string" then
                v28.locale = nil;
            end;
            if not v11 then
                return v4.createElement(v6, {
                    event = l_LocalizationService_0:GetPropertyChangedSignal("RobloxLocaleId"),
                    callback = v22.updateLocalization
                }, {
                    Component = v4.createElement(v17, v28)
                });
            else
                return v4.createFragment({
                    RobloxLocaleIdChangedConnection = v4.createElement(v6, {
                        event = l_LocalizationService_0:GetPropertyChangedSignal("RobloxLocaleId"),
                        callback = v22.updateLocalization
                    }),
                    Component = v4.createElement(v17, v28)
                });
            end;
        end;
        v18.shouldUpdate = function(v29, v30, v31)
            if v31 ~= v29.state then
                return true;
            else
                for v32 in pairs(v14) do
                    local v33 = v30.innerProps[v32];
                    local v34 = v29.props.innerProps[v32];
                    if v33 ~= nil and v34 ~= nil then
                        if type(v33) == "table" and type(v34) == "table" then
                            if not v8.shallowEqual(v33, v34) then
                                return true;
                            end;
                        elseif v33 ~= v34 then
                            return true;
                        end;
                    elseif not (v33 == nil) or v34 ~= nil then
                        return true;
                    end;
                end;
                return not v8.shallowEqual(v30, v29.props.innerProps, v14);
            end;
        end;
        local v35 = v4.PureComponent:extend("ConnectionWrapper");
        v35.render = function(v36)
            return v4.createElement(l_RoactServicesContext_0.Consumer, {
                render = function(v37)
                    return v4.createElement(v18, {
                        services = v37,
                        innerProps = v5.Dictionary.join(v36.props, {
                            forwardRef = v5.None,
                            [v4.Ref] = v36.props.forwardRef
                        })
                    });
                end
            });
        end;
        return v4.forwardRef(function(v38, v39)
            return v4.createElement(v35, v5.Dictionary.join(v38, {
                forwardRef = v39
            }));
        end);
    end;
end;
return v12;


local l_Modules_0 = game:GetService("CoreGui").RobloxGui.Modules;
local l_CorePackages_0 = game:GetService("CorePackages");
local v2 = require(l_Modules_0.Common.Immutable);
local v3 = require(l_CorePackages_0.Logging);
local v4 = {};
v4.__index = v4;
v4.new = function(v5, v6, v7, v8)
    assert(typeof(v5) == "string", "name must be a string");
    assert(#v5 > 0, "name must not be an empty string");
    assert(typeof(v6) == "string", "initialState must be a string");
    assert(#v6 > 0, "initialState must not be an empty string");
    local v9 = true;
    if v7 ~= nil then
        v9 = typeof(v7) == "table";
    end;
    assert(v9, "initialContext must be a table or nil");
    assert(typeof(v8) == "table", "transitionTable must be a table");
    assert(typeof(v8[v6]) == "table", "initialState must be present in transitionTable");
    local v10 = {};
    setmetatable(v10, v4);
    v10.loggingEnabled = false;
    v10.name = v5;
    v10.currentState = v6;
    v10.currentContext = v7 or {};
    v10.transitionTable = {};
    v10.events = {};
    for v11, v12 in pairs(v8) do
        assert(typeof(v11) == "string", string.format("state name '%s' must be a string", (tostring(v11))));
        assert(typeof(v12) == "table", string.format("state name '%s' must map to a table", v11));
        local v13 = {};
        for v14, v15 in pairs(v12) do
            assert(typeof(v14) == "string", string.format("event name '%s' must be a string", (tostring(v14))));
            assert(typeof(v15) == "table", string.format("event name '%s' must map to a table", v14));
            local l_nextState_0 = v15.nextState;
            local l_action_0 = v15.action;
            if l_nextState_0 ~= nil then
                assert(typeof(l_nextState_0) == "string", string.format("nextState '%s' must be a string or nil", (tostring(l_nextState_0))));
                assert(v8[l_nextState_0] ~= nil, string.format("nextState '%s' does not exist in transitionTable", l_nextState_0));
            end;
            local v18 = true;
            if l_action_0 ~= nil then
                v18 = typeof(l_action_0) == "function";
            end;
            assert(v18, "action must be a function");
            v13[v14] = v15;
            if v10.events[v14] == nil then
                v10.events[v14] = function(v19)
                    return v10:handleEvent(v14, v19);
                end;
            end;
        end;
        v10.transitionTable[v11] = v13;
    end;
    setmetatable(v10.events, {
        __index = function(_, v21)
            error(string.format("'%s' is not a valid event in StateTable '%s'", tostring(v21), v10.name), 2);
        end
    });
    return v10;
end;
v4.handleEvent = function(v22, v23, v24)
    assert(typeof(v23) == "string", "eventKey must be a string");
    assert(#v23 > 0, "eventKey must not be an empty string");
    local v25 = true;
    if v24 ~= nil then
        v25 = typeof(v24) == "table";
    end;
    assert(v25, "args must be nil or valid table");
    local l_currentState_0 = v22.currentState;
    v25 = v22.transitionTable[l_currentState_0];
    assert(v25 ~= nil);
    if v25[v23] ~= nil then
        local v27 = v25[v23];
        local v28 = v27.nextState or l_currentState_0;
        local l_action_1 = v27.action;
        if v22.loggingEnabled then
            print(string.format("%s: changing state, '%s' [%s] --> '%s'", v22.name, l_currentState_0, v23, v28));
        end;
        local l_currentContext_0 = v22.currentContext;
        if l_action_1 ~= nil then
            l_currentContext_0 = v2.JoinDictionaries(v22.currentContext, l_action_1(l_currentState_0, v28, v24, v22.currentContext) or {});
            v22.currentContext = l_currentContext_0;
        end;
        v22.currentState = v28;
        if v22.stateChangeHandler ~= nil then
            v22.stateChangeHandler(l_currentState_0, v28, l_currentContext_0);
            return ;
        end;
    elseif v22.loggingEnabled then
        v3.warn(string.format("%s: unhandled state transition (%s[%s])", v22.name, l_currentState_0, v23));
    end;
end;
v4.onStateChange = function(v31, v32)
    local v33 = true;
    if v32 ~= nil then
        v33 = typeof(v32) == "function";
    end;
    assert(v33, "stateChangeHandler must be nil or a function");
    v31.stateChangeHandler = v32;
end;
return v4;


local v0 = require(game:GetService("CoreGui").RobloxGui.Modules.LuaApp.StateTable);
local v1 = {};
v1.__index = v1;
v1.new = function()
    local v2 = {
        transitionTable = {}
    };
    setmetatable(v2, v1);
    return v2;
end;
v1.withName = function(v3, v4)
    assert(typeof(v4) == "string", "stateTableName must be a string");
    assert(#v4 > 0, "stateTableName must not be empty");
    assert(v3.stateTableName == nil, "Cannot call withName twice");
    v3.stateTableName = v4;
    return v3;
end;
v1.withInitialState = function(v5, v6)
    assert(typeof(v6) == "string", "initialState must be a string");
    assert(#v6 > 0, "initialState must not be empty");
    assert(v5.initialState == nil, "Cannot call withInitialState twice");
    v5.initialState = v6;
    return v5;
end;
v1.withInitialContext = function(v7, v8)
    assert(typeof(v8) == "table", "initialContext must be a table");
    assert(v7.initialContext == nil, "Cannot call withInitialContext twice");
    v7.initialContext = v8;
    return v7;
end;
v1.addState = function(v9, v10)
    assert(typeof(v10) == "string", "stateName must be a string");
    assert(#v10 > 0, "stateName must not be empty");
    assert(v9.transitionTable[v10] == nil, string.format("Cannot add the same state '%s' twice", v10));
    v9.transitionTable[v10] = {};
    v9.currentStateName = v10;
    v9.currentEventName = nil;
    return v9;
end;
v1.withEvent = function(v11, v12)
    assert(typeof(v12) == "string", "eventName must be a string");
    assert(#v12 > 0, "eventName must not be empty");
    assert(v11.currentStateName ~= nil, "Cannot add an event without first specifying a state via addState()");
    assert(v11.transitionTable[v11.currentStateName][v12] == nil, "Cannot add an event to the same state more than once");
    v11.transitionTable[v11.currentStateName][v12] = {};
    v11.currentEventName = v12;
    return v11;
end;
v1.nextState = function(v13, v14)
    assert(typeof(v14) == "string", "stateName must be a string");
    assert(#v14 > 0, "stateName must not be empty");
    assert(v13.currentEventName ~= nil, "Must specify an event before attaching nextState, via withEvent()");
    assert(v13.transitionTable[v13.currentStateName][v13.currentEventName].nextState == nil, "Cannot set nextState twice for the same event transition");
    v13.transitionTable[v13.currentStateName][v13.currentEventName].nextState = v14;
    return v13;
end;
v1.action = function(v15, v16)
    assert(typeof(v16) == "function", "actionFunctor must be a function");
    assert(v15.currentEventName ~= nil, "Must specify an event before attaching action, via withEvent()");
    assert(v15.transitionTable[v15.currentStateName][v15.currentEventName].action == nil, "Cannot set action twice for the same event transition");
    v15.transitionTable[v15.currentStateName][v15.currentEventName].action = v16;
    return v15;
end;
v1.build = function(v17)
    local v18 = false;
    if v17.stateTableName ~= nil then
        v18 = #v17.stateTableName > 0;
    end;
    assert(v18, "State table name was not set via withName()");
    v18 = false;
    if v17.initialState ~= nil then
        v18 = #v17.initialState > 0;
    end;
    assert(v18, "Initial state was not set via withInitialState()");
    assert(typeof(v17.transitionTable[v17.initialState]) == "table", "Initial state was not added to state table");
    return v0.new(v17.stateTableName, v17.initialState, v17.initialContext, v17.transitionTable);
end;
return v1;