local l_HttpService_0 = game:GetService("HttpService");
local l_Parent_0 = script.Parent.Parent;
local l_MessageBus_0 = require(l_Parent_0.MessageBus).MessageBus;
local v3 = require(l_Parent_0.t);
local v4 = require(l_Parent_0.Cryo);
local l_default_0 = require(l_Parent_0.LoggingProtocol).default;
local _ = require(script.Parent.GameProtocolTypes);
local v7 = require(script.Parent.Flags.GetFFlagMoveLuaExpLaunchBegin);
local v9 = {
    GAME_LAUNCH_DESCRIPTOR = {
        mid = l_MessageBus_0.getMessageId("Game", "launch"),
        validateParams = v3.intersection(v3.strictInterface({
            placeId = v3.optional(v3.number),
            userId = v3.optional(v3.number),
            accessCode = v3.optional(v3.string),
            gameInstanceId = v3.optional(v3.string),
            linkCode = v3.optional(v3.string),
            referralPage = v3.optional(v3.string),
            launchData = v3.optional(v3.string),
            joinAttemptOrigin = v3.optional(v3.string),
            joinAttemptId = v3.string
        }), function(v8)
            return v8.placeId or v8.userId;
        end)
    }
};
v9.__index = v9;
v9.new = function()
    return (setmetatable({
        subscriber = l_MessageBus_0.Subscriber.new()
    }, v9));
end;
v9.launchGame = function(v10, v11, v12, v13)
    if type(v11.placeId) == "string" then
        v11.placeId = tonumber(v11.placeId);
    end;
    if type(v11.userId) == "string" then
        v11.userId = tonumber(v11.userId);
    end;
    local v14 = if v11.joinAttemptId ~= nil then v11.joinAttemptId else l_HttpService_0:GenerateGUID(false);
    v11 = v4.Dictionary.join(v11, {
        joinAttemptId = v14,
        joinAttemptOrigin = if v12 ~= nil then v12 else v11.joinAttemptOrigin
    });
    if v13 then
        v13(v14);
    end;
    if v7() then
        l_default_0:logEvent("experience_launch_begin");
    end;
    l_MessageBus_0.publish(v10.GAME_LAUNCH_DESCRIPTOR, v11);
end;
v9.default = v9.new();
return v9;


local v0 = require(script.GameProtocol);
local v1 = require(script.ExperienceServiceWrapper);
local _ = require(script.GameProtocolTypes);
return {
    GameProtocol = v0,
    GameParams = require(script.GameParams),
    ExperienceService = v1,
    Flags = {
        GetFFlagMoveLuaExpLaunchBegin = require(script.Flags.GetFFlagMoveLuaExpLaunchBegin),
        UseExperienceService = require(script.Flags.UseExperienceService)
    }
};


local l_Parent_0 = script.Parent.Parent;
local l_MessageBus_0 = require(l_Parent_0.MessageBus).MessageBus;
local v2 = require(l_Parent_0.t);
local _ = require(script.Parent.ExternalContentSharingProtocolTypes);
local _ = require(l_Parent_0.MessageBus);
local v5 = {
    EXTERNAL_CONTENT_SHARING_SHARE_TEXT_DESCRIPTOR = {
        mid = l_MessageBus_0.getMessageId("ExternalContentSharing", "shareText"),
        validateParams = v2.strictInterface({
            text = v2.string,
            context = v2.optional(v2.string)
        })
    },
    EXTERNAL_CONTENT_SHARING_SHARE_URL_DESCRIPTOR = {
        mid = l_MessageBus_0.getMessageId("ExternalContentSharing", "shareUrl"),
        validateParams = v2.strictInterface({
            url = v2.string,
            context = v2.optional(v2.string)
        })
    },
    EXTERNAL_CONTENT_SHARING_SHARE_IMAGE_DESCRIPTOR = {
        mid = l_MessageBus_0.getMessageId("ExternalContentSharing", "shareImage"),
        validateParams = v2.strictInterface({
            context = v2.optional(v2.string),
            image = v2.string,
            shareSheetTitle = v2.optional(v2.string),
            url = v2.optional(v2.string)
        })
    },
    EXTERNAL_CONTENT_SHARING_SHARE_VIDEO_DESCRIPTOR = {
        mid = l_MessageBus_0.getMessageId("ExternalContentSharing", "shareVideo"),
        validateParams = v2.strictInterface({
            context = v2.optional(v2.string),
            shareSheetTitle = v2.optional(v2.string),
            url = v2.optional(v2.string),
            video = v2.string
        })
    }
};
v5.__index = v5;
v5.new = function(v6)
    return (setmetatable({
        messageBus = v6 or l_MessageBus_0
    }, v5));
end;
v5.shareText = function(v7, v8)
    v7.messageBus.publish(v7.EXTERNAL_CONTENT_SHARING_SHARE_TEXT_DESCRIPTOR, v8);
end;
v5.shareUrl = function(v9, v10)
    v9.messageBus.publish(v9.EXTERNAL_CONTENT_SHARING_SHARE_URL_DESCRIPTOR, v10);
end;
v5.shareImage = function(v11, v12)
    v11.messageBus.publish(v11.EXTERNAL_CONTENT_SHARING_SHARE_IMAGE_DESCRIPTOR, v12);
end;
v5.shareVideo = function(v13, v14)
    v13.messageBus.publish(v13.EXTERNAL_CONTENT_SHARING_SHARE_VIDEO_DESCRIPTOR, v14);
end;
v5.default = v5.new();
return v5;


local _ = require(script.ExternalContentSharingProtocolTypes);
return {
    ExternalContentSharingProtocol = require(script.ExternalContentSharingProtocol)
};


local l_Error_0 = require(script.Parent.Parent.LuauPolyfill).Error;
local v1 = {};
v1.__index = v1;
v1.new = function()
    local v2 = {};
    setmetatable(v2, v1);
    v2.aborted = false;
    v2.reason = l_Error_0.new("Undefined Error");
    v2._signal = Instance.new("BindableEvent");
    return v2;
end;
v1.abort = function(v3)
    local v4 = v1.new();
    v4.reason = v3 or l_Error_0.new("Signal Aborted");
    return v4;
end;
v1.timeout = function(v5)
    local v6 = v1.new();
    v6.reason = l_Error_0.new("TimeoutError");
    task.delay(v5 / 1000, function()
        v6:fire();
    end);
    return v6;
end;
v1.throwIfAborted = function(v7)
    if v7.aborted then
        error(v7.reason);
    end;
end;
v1.connect = function(v8, v9)
    return v8._signal.Event:Connect(v9);
end;
v1.fire = function(v10)
    v10.aborted = true;
    v10._signal:Fire();
end;
return {
    AbortSignal = v1
};


local l_Array_0 = require(script.Parent.Parent.LuauPolyfill).Array;
local v1 = {};
v1.__index = v1;
v1.new = function(v2)
    local v3 = {};
    local v4 = nil;
    if not l_Array_0.isArray(v2) then
        v4 = v2 or {};
    else
        v4 = {};
        for _, v6 in v2, nil, nil do
            v4[v6[1]] = v6[2];
        end;
    end;
    v3.headerList = v4;
    v3.guard = "none";
    setmetatable(v3, v1);
    return v3;
end;
v1.append = function(v7, v8, v9)
    if v7.guard == "immutable" then
        error("TypeError: tried to append header to immutable Headers object");
    end;
    v7.headerList[v8] = v9;
end;
v1.delete = function(v10, v11)
    if v10.guard == "immutable" then
        error("TypeError: tried to delete key on immutable Headers object");
    end;
    if v10:has(v11) then
        v10.headerList[v11] = nil;
        return ;
    else
        return ;
    end;
end;
v1.get = function(v12, v13)
    return v12.headerList[v13];
end;
v1.has = function(v14, v15)
    return v14.headerList[v15] ~= nil;
end;
v1.set = function(v16, v17, v18)
    if v16.guard == "immutable" then
        error("TypeError: tried to set key on immutable Headers object");
    end;
    v16.headerList[v17] = v18;
end;
v1.__iter = function(v19)
    return next, v19.headerList;
end;
return {
    Headers = v1
};


local l_instanceof_0 = require(script.Parent.Parent.LuauPolyfill).instanceof;
local l_Headers_0 = require(script.Parent.Headers).Headers;
local l_Body_0 = require(script.Parent.Body).Body;
local l_AbortSignal_0 = require(script.Parent.AbortSignal).AbortSignal;
local v4 = setmetatable({}, {
    __index = l_Body_0
});
v4.__index = v4;
v4.new = function(v5, v6)
    local v7 = v6 or {};
    local v8 = nil;
    local v9 = nil;
    if type(v5) == "string" then
        v8 = v5;
        v9 = {};
    elseif not l_instanceof_0(v5, v4) then
        error("The first argument of Request.new() must be a string or Request object");
    else
        v8 = v5.url;
        v9 = v5;
    end;
    local v10 = if not v7.body and l_instanceof_0(v5, v4) then v5.body else nil;
    local v11 = setmetatable(l_Body_0.new(v7.body or v10), v4);
    v11.method = (v7.method or v9.method) or "GET";
    if not (not v7.body and not v10) and (not (v11.method ~= "GET") or v11.method == "HEAD") then
        error(string.format("'body' should not be provided as an option for request method %s", v11.method));
    end;
    v11.url = v8;
    v11.headers = if not v7.headers then v9.headers or l_Headers_0.new() else l_Headers_0.new(v7.headers);
    v11.cache = (v7.cache or v9.cache) or Enum.HttpCachePolicy.None;
    v11.signal = (v7.signal or v9.signal) or l_AbortSignal_0.abort("Request Cancelled");
    v11.destination = "document";
    v11.referrer = "client";
    v11.referrerPolicy = "no-referrer";
    v11.mode = v7.mode or "cors";
    v11.credentials = (v7.credentials or v9.credentials) or "omit";
    v11.redirect = (v7.redirect or v9.redirect) or "error";
    v11.integrity = (v7.integrity or v9.integrity) or "";
    v11.keepalive = (v7.keepalive or v9.keepalive) or false;
    v11.isReloadNavigation = false;
    v11.isHistoryNavigation = false;
    v11.duplex = (v7.duplex or v9.duplex) or "half";
    return v11;
end;
v4.clone = function(v12)
    return v4.new(v12);
end;
return {
    Request = v4
};


return {
    ModerationOverlay = "ModerationOverlay",
    CentralOverlay = "CentralOverlay",
    NavBar = "NavBar",
    RouterView = "RouterView",
    SearchBar = "SearchBar"
};


local l_Parent_0 = script:FindFirstAncestor("FocusNavigationUtils").Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.ReactFocusNavigation);
local v9 = {
    registered = function(v3, v4)
        local v5 = table.clone(v3);
        v5[v4.name] = v4.guiObject;
        return v5;
    end,
    deRegistered = function(v6, v7)
        if v6[v7.name] == v7.guiObject then
            local v8 = table.clone(v6);
            v8[v7.name] = nil;
            return v8;
        else
            return v6;
        end;
    end
};
local function v13(v10, v11)
    local v12 = v9[v11.type];
    if not v12 then
        error("Unknown action: " .. v11.type);
        return ;
    else
        return v12(v10, v11.payload);
    end;
end;
local v14 = v1.createContext(nil);
return {
    Provider = function(v15)
        local v16, v17 = v1.useReducer(v13, {});
        return v1.createElement(v14.Provider, {
            value = {
                state = v16,
                dispatch = v17
            }
        }, v15.children);
    end,
    registryContext = v14,
    useRegisterFocusNavigableSurface = function()
        local v18 = v1.useContext(v14);
        local v19 = if not v18 then nil else v18.dispatch;
        return v1.useCallback(function(v20, v21)
            if v19 then
                v19({
                    type = "registered",
                    payload = {
                        name = v20,
                        guiObject = v21
                    }
                });
            end;
        end, {
            v19
        });
    end,
    useDeRegisterFocusNavigableSurface = function()
        local v22 = v1.useContext(v14);
        local v23 = if not v22 then nil else v22.dispatch;
        return v1.useCallback(function(v24, v25)
            if v23 then
                v23({
                    type = "deRegistered",
                    payload = {
                        name = v24,
                        guiObject = v25
                    }
                });
            end;
        end, {
            v23
        });
    end,
    useRegistryEntry = function(v26)
        local v27 = v1.useContext(v14);
        if v27 == nil then
            return nil;
        else
            local v28 = v27.state[v26];
            if v28 == nil then
                return nil;
            else
                return v28;
            end;
        end;
    end,
    useFocusRegistryEntry = function(v29)
        local v30 = v2.useFocusGuiObject();
        local v31 = v1.useContext(v14);
        local v32;
        if v31 == nil then
            v32 = nil;
        else
            local v33 = v31.state[v29];
            v32 = if v33 == nil then nil else v33;
        end;
        return v1.useCallback(function()
            if v32 then
                v30(v32);
            end;
        end, {
            v30,
            v32
        });
    end
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FocusNavigationUtils");
local v1 = require(l_script_FirstAncestor_0.Parent.React);
local _ = require(l_script_FirstAncestor_0.FocusNavigableSurfaceIdentifierEnum);
local v3 = require(l_script_FirstAncestor_0.useFocusNavigableSurfaceRegistryConnection);
local v4 = require(l_script_FirstAncestor_0.useDefaultFocusNavigationBindings);
return function(v5)
    local v6, v7 = v1.useState(nil);
    v3(v6, v5.surfaceIdentifier);
    return v1.createElement("Frame", {
        Size = UDim2.fromScale(1, 1),
        BackgroundTransparency = 1,
        ref = v4(v7)
    }, v5.children);
end;


return {
    Search = "Search",
    TabForward = "TabForward",
    TabBackward = "TabBackward",
    HoldToPlay = "HoldToPlay",
    NavigateBack = "NavigateBack",
    Play = "Play",
    DisplayStatsAndInfo = "DisplayStatsAndInfo",
    IgnoreFriendRequest = "IgnoreFriendRequest",
    AcceptFriendRequest = "AcceptFriendRequest",
    AddFriend = "AddFriend",
    NoOpEvent = "NoOpEvent",
    SeeAll = "SeeAll",
    OpenQuickMenu = "OpenQuickMenu",
    ScrollUp = "ScrollUp",
    ScrollDown = "ScrollDown"
};


return function(v0)
    for _, v2 in v0:GetDescendants() do
        if not ((not v2:IsA("GuiObject") or not v2.Selectable) or not v2.Visible) then
            return v2;
        end;
    end;
    return nil;
end;


return {
    ["jest.config"] = script["jest.config"],
    useAutoFocus = require(script.useAutoFocus),
    useDescendantHasFocus = require(script.useDescendantHasFocus),
    useFirstFocusableDescendantRef = require(script.useFirstFocusableDescendantRef),
    useFocusNavigableSurfaceRegistryConnection = require(script.useFocusNavigableSurfaceRegistryConnection),
    useDefaultFocusNavigationBindings = require(script.useDefaultFocusNavigationBindings),
    useGlobalFocusHandler = require(script.useGlobalFocusHandler),
    useGlobalDefaultSelectionCursor = require(script.useGlobalDefaultSelectionCursor),
    FocusNavigableSurfaceRegistry = require(script.FocusNavigableSurfaceRegistry),
    FocusNavigableSurfaceIdentifierEnum = require(script.FocusNavigableSurfaceIdentifierEnum),
    FocusNavigableSurfaceWrapper = require(script.FocusNavigableSurfaceWrapper),
    FocusNavigationEventNameEnum = require(script.FocusNavigationEventNameEnum),
    getFirstFocusableDescendant = require(script.getFirstFocusableDescendant),
    useLastInputMode = require(script.useLastInputMode),
    useLastInputMethod = require(script.useLastInputMethod)
};


local v0 = require(script.Parent.Parent.Dev.JestConfigs);
return {
    displayName = "FocusNavigationUtils",
    setupFilesAfterEnv = {
        v0.setupFiles.LogHandler,
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler()
    }
};


local l_CoreGui_0 = game:GetService("CoreGui");
local l_Parent_0 = script:FindFirstAncestor("FocusNavigationUtils").Parent;
local v2 = require(l_Parent_0.React);
local l_FocusNavigationContext_0 = require(l_Parent_0.ReactFocusNavigation).FocusNavigationContext;
local function v32(v4, v5, v6)
    local v7 = #v5 == 0;
    local v8 = {};
    local v9 = {};
    local _ = function()
        if not v7 then
            v7 = true;
            for _, v11 in v8, nil, nil do
                v11:Disconnect();
            end;
        end;
    end;
    local function v18(_, _, v15)
        if not (not v15 or v7) then
            v7 = true;
            for _, v17 in v8, nil, nil do
                v17:Disconnect();
            end;
        end;
    end;
    local function v19(v20)
        table.insert(v9, (task.delay(v4, function()
            if not v7 then
                local v21 = v5[v20];
                if not (not v21 or not v21:IsDescendantOf(l_CoreGui_0)) then
                    v6:focusGuiObject(v21, false);
                end;
                v19(#v5 < v20 and 1 or v20 % #v5 + 1);
            end;
        end)));
    end;
    for _, v23 in v5, nil, nil do
        table.insert(v8, v23.SelectionChanged:Connect(v18));
    end;
    local l_delay_0 = task.delay;
    local l_v4_0 = v4;
    local v26 = 1;
    table.insert(v9, (l_delay_0(l_v4_0, function()
        if not v7 then
            local v27 = v5[v26];
            if not (not v27 or not v27:IsDescendantOf(l_CoreGui_0)) then
                v6:focusGuiObject(v27, false);
            end;
            v19(#v5 < v26 and 1 or v26 % #v5 + 1);
        end;
    end)));
    return {
        cancel = function()
            for _, v29 in v9, nil, nil do
                task.cancel(v29);
            end;
            table.clear(v9);
            if not v7 then
                v7 = true;
                for _, v31 in v8, nil, nil do
                    v31:Disconnect();
                end;
            end;
        end
    };
end;
return function(v33, v34)
    local v35 = v2.useContext(l_FocusNavigationContext_0);
    return v2.useCallback(function()
        if not v35 then
            return nil;
        else
            return (v32(v34, v33, v35));
        end;
    end, {
        v35,
        v33,
        v34
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FocusNavigationUtils");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local v3 = require(l_Parent_0.ReactFocusNavigation);
local v4 = require(l_Parent_0.InputHandlers);
local l_useNavigation_0 = require(l_Parent_0.RoactUtils).Hooks.useNavigation;
local l_useSelector_0 = require(l_Parent_0.RoactUtils).Hooks.RoactRodux.useSelector;
local l_canGoBack_0 = require(l_Parent_0.Navigation).canGoBack;
local v8 = require(l_script_FirstAncestor_0.FocusNavigationEventNameEnum);
local l_useFocusRegistryEntry_0 = require(l_script_FirstAncestor_0.FocusNavigableSurfaceRegistry).useFocusRegistryEntry;
local v10 = require(l_script_FirstAncestor_0.FocusNavigableSurfaceIdentifierEnum);
local v11 = require(l_script_FirstAncestor_0.useDescendantHasFocus);
local l_useRegistryEntry_0 = require(l_script_FirstAncestor_0.FocusNavigableSurfaceRegistry).useRegistryEntry;
local v13 = {
    [Enum.KeyCode.ButtonB] = v8.NavigateBack,
    [Enum.KeyCode.Escape] = v8.NavigateBack,
    [Enum.KeyCode.ButtonY] = v8.Search,
    [Enum.KeyCode.Slash] = v8.Search,
    [Enum.KeyCode.PageUp] = v8.ScrollUp,
    [Enum.KeyCode.LeftBracket] = v8.ScrollUp,
    [Enum.KeyCode.PageDown] = v8.ScrollDown,
    [Enum.KeyCode.RightBracket] = v8.ScrollDown
};
local function _(v14)
    if v14 == nil then
        return nil;
    elseif not v14:IsA("ScrollingFrame") then
        return v14:FindFirstAncestorWhichIsA("ScrollingFrame");
    else
        return v14;
    end;
end;
local function v19(v16, v17)
    if v16 ~= nil then
        local v18 = v16.AbsoluteCanvasSize.Y - v16.AbsoluteWindowSize.Y;
        if v17 > 0 and v18 - 350 <= v16.CanvasPosition.Y then
            v16.CanvasPosition = Vector2.new(0, v18);
            return ;
        elseif v17 < 0 and v16.CanvasPosition.Y <= 350 then
            v16.CanvasPosition = Vector2.new(0, 0);
            return ;
        else
            v16.CanvasPosition = v16.CanvasPosition + Vector2.new(0, v17);
        end;
    end;
end;
useDefaultFocusNavigationBindings = function(v20)
    local v21 = l_useNavigation_0();
    local v22 = l_useFocusRegistryEntry_0(v10.SearchBar);
    local v23 = l_useFocusRegistryEntry_0(v10.NavBar);
    local v24 = v11((l_useRegistryEntry_0(v10.NavBar)));
    local v26 = l_useSelector_0(function(v25)
        return v25.TabBarVisible;
    end);
    local v27 = v3.useFocusedGuiObject();
    local v28 = if v27 == nil then nil else if v27:IsA("ScrollingFrame") then v27 else v27:FindFirstAncestorWhichIsA("ScrollingFrame");
    return (v3.useEventHandlerMap(v2.useMemo(function()
        return {
            [v8.Search] = {
                handler = v4.onRelease(function(_)
                    v22();
                end)
            },
            [v8.NavigateBack] = {
                handler = v4.onRelease(function(_)
                    if not l_canGoBack_0(v21) then
                        if not (not v26 or v24) then
                            v23();
                        end;
                        return ;
                    elseif v21.pop ~= nil then
                        v21.pop();
                        return ;
                    else
                        v21.goBack();
                        return ;
                    end;
                end)
            },
            [v8.ScrollDown] = {
                handler = v4.onRelease(function(_)
                    v19(v28, 300);
                end)
            },
            [v8.ScrollUp] = {
                handler = v4.onRelease(function(_)
                    v19(v28, -300);
                end)
            }
        };
    end, {
        v21,
        v22,
        v23,
        v24,
        v26,
        v28
    }), (v3.useEventMap(v13, v20))));
end;
return useDefaultFocusNavigationBindings;


local l_GuiService_0 = game:GetService("GuiService");
local v1 = require(script:FindFirstAncestor("FocusNavigationUtils").Parent.React);
local function _(v2)
    local l_SelectedCoreObject_0 = l_GuiService_0.SelectedCoreObject;
    if not (v2 and l_SelectedCoreObject_0) then
        return false;
    else
        local v4 = true;
        if l_SelectedCoreObject_0 ~= v2 then
            v4 = l_SelectedCoreObject_0:IsDescendantOf(v2);
        end;
        return v4 and l_SelectedCoreObject_0:FindFirstAncestorOfClass("CoreGui") ~= nil;
    end;
end;
return function(v6)
    local l_SelectedCoreObject_1 = l_GuiService_0.SelectedCoreObject;
    local v8;
    if not (v6 and l_SelectedCoreObject_1) then
        v8 = false;
    else
        local v9 = true;
        if l_SelectedCoreObject_1 ~= v6 then
            v9 = l_SelectedCoreObject_1:IsDescendantOf(v6);
        end;
        v8 = v9 and l_SelectedCoreObject_1:FindFirstAncestorOfClass("CoreGui") ~= nil;
    end;
    local v10;
    l_SelectedCoreObject_1, v10 = v1.useState(v8);
    v1.useEffect(function()
        local v11 = nil;
        local v12 = nil;
        if not v6 then
            v10(false);
        else
            local l_v10_0 = v10;
            local l_v6_0 = v6;
            local l_SelectedCoreObject_2 = l_GuiService_0.SelectedCoreObject;
            local v16;
            if not (l_v6_0 and l_SelectedCoreObject_2) then
                v16 = false;
            else
                local v17 = true;
                if l_SelectedCoreObject_2 ~= l_v6_0 then
                    v17 = l_SelectedCoreObject_2:IsDescendantOf(l_v6_0);
                end;
                v16 = v17 and l_SelectedCoreObject_2:FindFirstAncestorOfClass("CoreGui") ~= nil;
            end;
            l_v10_0(v16);
            v11 = l_GuiService_0:GetPropertyChangedSignal("SelectedCoreObject"):Connect(function()
                if v12 then
                    v12:Disconnect();
                end;
                local l_v6_1 = v6;
                local l_SelectedCoreObject_3 = l_GuiService_0.SelectedCoreObject;
                local v20;
                if not (l_v6_1 and l_SelectedCoreObject_3) then
                    v20 = false;
                else
                    local v21 = true;
                    if l_SelectedCoreObject_3 ~= l_v6_1 then
                        v21 = l_SelectedCoreObject_3:IsDescendantOf(l_v6_1);
                    end;
                    v20 = v21 and l_SelectedCoreObject_3:FindFirstAncestorOfClass("CoreGui") ~= nil;
                end;
                l_v6_1 = l_GuiService_0.SelectedCoreObject;
                if not (not v20 or not l_v6_1) then
                    v12 = l_v6_1.AncestryChanged:Connect(function()
                        if l_v6_1:FindFirstAncestorOfClass("CoreGui") == nil then
                            v12:Disconnect();
                            local l_v10_1 = v10;
                            local l_v6_2 = v6;
                            local l_SelectedCoreObject_4 = l_GuiService_0.SelectedCoreObject;
                            local v25;
                            if not (l_v6_2 and l_SelectedCoreObject_4) then
                                v25 = false;
                            else
                                local v26 = true;
                                if l_SelectedCoreObject_4 ~= l_v6_2 then
                                    v26 = l_SelectedCoreObject_4:IsDescendantOf(l_v6_2);
                                end;
                                v25 = v26 and l_SelectedCoreObject_4:FindFirstAncestorOfClass("CoreGui") ~= nil;
                            end;
                            l_v10_1(v25);
                        end;
                    end);
                end;
                v10(v20);
            end);
        end;
        return function()
            if v11 then
                v11:Disconnect();
            end;
            if v12 then
                v12:Disconnect();
            end;
        end;
    end, {
        v6
    });
    return l_SelectedCoreObject_1;
end;


local v0 = require(script:FindFirstAncestor("FocusNavigationUtils").Parent.React);
local v1 = require(script.Parent.getFirstFocusableDescendant);
local function _(v2)
    if v2 then
        v2:Disconnect();
    end;
end;
return function(v4)
    local v5 = v0.useRef(nil);
    v0.useEffect(function()
        local v6 = nil;
        local v7 = nil;
        local v8 = nil;
        local function v9(v10)
            local l_v6_0 = v6;
            if l_v6_0 then
                l_v6_0:Disconnect();
            end;
            l_v6_0 = v8;
            if l_v6_0 then
                l_v6_0:Disconnect();
            end;
            l_v6_0 = v1(v10);
            if l_v6_0 then
                v6 = l_v6_0:GetPropertyChangedSignal("Selectable"):Connect(function()
                    v9(v10);
                end);
                v8 = l_v6_0.AncestryChanged:Connect(function()
                    v9(v10);
                end);
            end;
            v5.current = l_v6_0;
        end;
        if not v4 then
            v5.current = nil;
        else
            v9(v4);
            v7 = v4.DescendantAdded:Connect(function()
                v9(v4);
            end);
        end;
        return function()
            local l_v6_1 = v6;
            if l_v6_1 then
                l_v6_1:Disconnect();
            end;
            l_v6_1 = v7;
            if l_v6_1 then
                l_v6_1:Disconnect();
            end;
            l_v6_1 = v8;
            if l_v6_1 then
                l_v6_1:Disconnect();
            end;
        end;
    end, {
        v4
    });
    return v5;
end;


local v0 = require(game:GetService("CorePackages").Packages.React);
local l_script_FirstAncestor_0 = script:FindFirstAncestor("FocusNavigationUtils");
local v2 = require(l_script_FirstAncestor_0.FocusNavigableSurfaceRegistry);
local l_useRegisterFocusNavigableSurface_0 = v2.useRegisterFocusNavigableSurface;
local l_useDeRegisterFocusNavigableSurface_0 = v2.useDeRegisterFocusNavigableSurface;
local _ = require(l_script_FirstAncestor_0.FocusNavigableSurfaceIdentifierEnum);
return function(v6, v7)
    local v8 = l_useRegisterFocusNavigableSurface_0();
    local v9 = l_useDeRegisterFocusNavigableSurface_0();
    v0.useEffect(function()
        if not v6 then
            v9(v7, v6);
        else
            v8(v7, v6);
        end;
        return function()
            v9(v7, v6);
        end;
    end, {
        v6,
        v7,
        v8,
        v9
    });
end;


local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_Parent_0 = script:FindFirstAncestor("FocusNavigationUtils").Parent;
local v3 = require(l_Parent_0.React);
local l_useCursor_0 = require(l_CorePackages_0.UIBlox).App.SelectionCursor.useCursor;
local l_useDesignTokens_0 = require(l_Parent_0.Style).useDesignTokens;
return function()
    local v7 = l_useDesignTokens_0(function(v6)
        return {
            width = v6.Global.Size_25,
            radius = UDim.new(0, v6.Semantic.Radius.Medium),
            offset = v6.Global.Space_25
        };
    end);
    local v8 = l_useCursor_0(v7.radius, v7.offset, v7.width);
    local v9 = if not v8 then nil else v8.current;
    v3.useEffect(function()
        if l_CoreGui_0.SelectionImageObject == nil and v9 ~= nil then
            l_CoreGui_0.SelectionImageObject = v9;
            return function()
                l_CoreGui_0.SelectionImageObject = nil;
            end;
        else
            return nil;
        end;
    end, {
        v9
    });
end;


local l_RunService_0 = game:GetService("RunService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("FocusNavigationUtils");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v4 = require(l_Parent_0.React);
local v5 = require(l_Parent_0.ReactFocusNavigation);
local l_MessageBus_0 = require(l_Parent_0.MessageBus).MessageBus;
local v7 = require(l_Parent_0.LoggingProtocol);
local l_mutedError_0 = require(l_Parent_0.Loggers).mutedError;
local l_GetFFlagEnableAppCommonInputHooks_0 = require(l_Parent_0.SharedFlags).GetFFlagEnableAppCommonInputHooks;
local v10 = nil;
v10 = if not l_GetFFlagEnableAppCommonInputHooks_0() then v5.useLastInputMethod else require(l_script_FirstAncestor_0.useLastInputMethod);
local l_useFocusGuiObject_0 = v5.useFocusGuiObject;
local l_useRegistryEntry_0 = require(l_script_FirstAncestor_0.FocusNavigableSurfaceRegistry).useRegistryEntry;
local v13 = require(l_script_FirstAncestor_0.FocusNavigableSurfaceIdentifierEnum);
local v14 = require(l_script_FirstAncestor_0.useAutoFocus);
local v15 = require(l_script_FirstAncestor_0.useDescendantHasFocus);
local v16 = game:DefineFastFlag("EnableKeyboardFocusHandling", false);
local v17 = game:DefineFastFlag("TenFootUiCorrectAutoFocusLoggingBehavior", false);
local v18 = game:DefineFastInt("AutoFocusFailsafeThreshold", 5);
local v19 = game:DefineFastFlag("LuaAppDismissFocusOnClick", false);
local v20 = {
    [Enum.UserInputType.MouseButton1] = true,
    [Enum.UserInputType.MouseButton2] = true,
    [Enum.UserInputType.MouseButton3] = true,
    [Enum.UserInputType.Touch] = true
};
local v21 = l_MessageBus_0.Subscriber.new();
local l_default_0 = v7.default;
local function v24(v23)
    if typeof(v23) == "table" then
        return true;
    else
        return false;
    end;
end;
local function _(v25)
    local v26 = 0;
    return (l_RunService_0.Heartbeat:Connect(function(v27)
        v26 = v26 + v27;
        if v18 < v26 then
            v25();
            v26 = 0;
        end;
    end));
end;
local function v33(v29)
    local v30 = l_MessageBus_0.getMessageId("Game", "onGameLeave");
    local v31 = nil;
    v21:subscribe({
        mid = v30,
        validateParams = v24
    }, function(_)
        v31 = task.delay(v18, function()
            v29();
        end);
    end);
    return {
        unsubscribe = function()
            v21:unsubscribeWithMsgId(v30);
            if v31 then
                task.cancel(v31);
            end;
        end
    };
end;
return function(v34)
    local v35 = v10();
    local v36 = l_useFocusGuiObject_0();
    local v37 = true;
    if v35 ~= "Gamepad" then
        v37 = if not v16 then nil else v35 == "Keyboard";
    end;
    if v19 then
        v4.useEffect(function()
            local v39 = l_UserInputService_0.LastInputTypeChanged:Connect(function(v38)
                if v20[v38] then
                    v36(nil);
                end;
            end);
            return function()
                v39:Disconnect();
            end;
        end, {
            v36
        });
    end;
    local v40 = l_useRegistryEntry_0(v13.NavBar);
    local v41 = l_useRegistryEntry_0(v13.RouterView);
    local v42 = l_useRegistryEntry_0(v13.CentralOverlay);
    local v43 = l_useRegistryEntry_0(v13.ModerationOverlay);
    local v45 = v4.useMemo(function()
        local v44 = {};
        if not v43 then
            if not v42 then
                if v41 then
                    table.insert(v44, v41);
                end;
                if v40 then
                    table.insert(v44, v40);
                end;
                return v44;
            else
                table.insert(v44, v42);
                return v44;
            end;
        else
            table.insert(v44, v43);
            return v44;
        end;
    end, {
        v43,
        v41,
        v40,
        v42
    });
    local v46 = v14(v45, 0.1);
    local v47 = v15(v40);
    local v48 = v15(v41);
    local v49 = v15(v42);
    local v50 = v15(v43);
    local _ = nil;
    local v52 = (v37 and not if not v43 then if v42 then v49 else v47 or v48 else v50) and not v34;
    v4.useEffect(function()
        local v53 = nil;
        local v54 = nil;
        local function v55()
            if v53 then
                v53.cancel();
            end;
            v53 = v46();
        end;
        if v52 then
            if v53 then
                v53.cancel();
            end;
            v53 = v46();
            local function v56()
                if not v17 then
                    l_default_0:logEvent("GamePadFocusFailsafeActivated", {
                        targetCount = #v45
                    });
                else
                    l_mutedError_0("[useGlobalFocusHandler] globalFocusHandler failed to autofocus with " .. #v45 .. " targets, retrying");
                end;
                if v53 then
                    v53.cancel();
                end;
                v53 = v46();
            end;
            local v57 = 0;
            local l_v56_0 = v56 --[[ copy: 3 -> 5 ]];
            do
                local l_v57_0 = v57;
                v54 = l_RunService_0.Heartbeat:Connect(function(v60)
                    l_v57_0 = l_v57_0 + v60;
                    if v18 < l_v57_0 then
                        l_v56_0();
                        l_v57_0 = 0;
                    end;
                end);
            end;
        end;
        local v61 = nil;
        if v52 then
            v61 = v33(v55);
        end;
        return function()
            if v53 then
                v53.cancel();
            end;
            if v61 then
                v61.unsubscribe();
            end;
            if v54 then
                v54:Disconnect();
            end;
        end;
    end, {
        v52,
        v46,
        v45
    });
end;


local l_Parent_0 = script:FindFirstAncestor("FocusNavigationUtils").Parent;
local v1 = require(script.Parent.useLastInputMethod);
local l_VRService_0 = require(l_Parent_0.MockableProxyServices).VRService;
local v3 = game:DefineFastFlag("EnableVRInputModeHandling", false);
local v4 = {
    Keyboard = "Focus",
    Gamepad = "Focus",
    Mouse = "Cursor",
    Touch = "Cursor",
    None = "None"
};
return function()
    local v5 = v1();
    if not v3 or not l_VRService_0.VREnabled then
        return v4[v5];
    else
        return "Cursor";
    end;
end;


local v0 = require(script.Parent.FormFactor);
local v1 = require(script.Parent.SetFormFactor);
return function(v2, v3)
    v2 = v2 or v0.UNKNOWN;
    if v3.type == v1.name then
        return v3.formFactor;
    else
        return v2;
    end;
end;


return require(script:FindFirstAncestor("FormFactor").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        formFactor = v0
    };
end);


return {
    FormFactorReducer = require(script.FormFactorReducer),
    Enums = {
        FormFactor = require(script.FormFactor)
    },
    Actions = {
        SetFormFactor = require(script.SetFormFactor)
    }
};


local v0 = require(script:FindFirstAncestor("FriendsCarousel").Parent.SocialLuaAnalytics);
local l_AnalyticsFactory_0 = v0.Analytics.AnalyticsFactory;
local l_DefaultAnalyticsService_0 = v0.Analytics.DefaultAnalyticsService;
return l_AnalyticsFactory_0.setUpAnalyticsFactory({
    eventLists = {
        EventStream = require(script.Parent.EventStreamActionList),
        Diag = require(script.Parent.DiagActionList)
    },
    analyticsImpl = {
        EventStream = l_DefaultAnalyticsService_0.EventStream,
        Diag = l_DefaultAnalyticsService_0.Diag
    }
});


return require(script.Parent.Parent.dependencies).enumerate(script.Name, {
    OpenPeopleList = "openPeopleList",
    RequestFriendship = "requestFriendship",
    RevokeFriendRequest = "revokeFriendRequest",
    FriendsLanding = "friendsLanding",
    AddFriendsButton = "AddFriendsButton"
});


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.dependencies);
local l_Roact_0 = v1.Roact;
local l_RoactRodux_0 = v1.RoactRodux;
local l_NetworkingFriends_0 = v1.NetworkingFriends;
local l_compose_0 = v1.SocialLibraries.RoduxTools.compose;
local l_EventNames_0 = require(l_Parent_0.Analytics).EventNames;
local v7 = require(l_Parent_0.Analytics.withLoadingTimer);
local v8 = require(l_Parent_0.Flags.getFIntFriendsCarouselLoadingTimeThresholdSec);
local v9 = require(script.Parent.CarouselWithLoadingTimer2);
local v10 = require(l_Parent_0.Flags.FFlagFriendsCarouselUILoadingTime);
local function v13(v11, v12)
    return l_EventNames_0.CarouselLoadingTime, {
        friendsFetchingStatus = v11.friendsFetchingStatus,
        recommendationFetchingStatus = v11.recommendationFetchingStatus,
        loadingThreshold = v8(),
        loadingTime = v12.loadingTime,
        reachedThreshold = v12.reachedThreshold
    };
end;
local v14 = l_Roact_0.Component:extend("CarouselWithLoadingTimer");
v14.init = function(v15)
    v15.onSuccessfulRender = function()
        v15.props.loadingTimerProps.stopTimer();
    end;
end;
v14.didMount = function(v16)
    v16.props.loadingTimerProps.startTimer();
end;
v14.willUnmount = function(v17)
    v17.props.loadingTimerProps.resetTimer();
end;
v14.render = function(v18)
    return v18.props.renderComponent({
        onSuccessfulRender = v18.onSuccessfulRender
    });
end;
v14 = v7(v14, {
    loadingThreshold = v8(),
    onReachingThreshold = function(v19, v20)
        v20.fireEvent(v13(v20, {
            reachedThreshold = true,
            loadingTime = v19
        }));
    end,
    onLoaded = function(v21, v22)
        v22.fireEvent(v13(v22, {
            reachedThreshold = false,
            loadingTime = v21
        }));
    end
});
if not v10 then
    return (l_compose_0(l_RoactRodux_0.connect(function(v23)
        local v24 = tostring(v23.LocalUserId);
        return {
            friendsFetchingStatus = l_NetworkingFriends_0.GetFriendsFromUserId.getStatus(v23, v24),
            recommendationFetchingStatus = l_NetworkingFriends_0.GetFriendRecommendationsFromUserId.getStatus(v23, v24)
        };
    end, nil))(v14));
else
    return v9;
end;


local l_Parent_0 = script:FindFirstAncestor("FriendsCarousel").Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.UIBlox);
local v3 = require(l_Parent_0.RobloxAppHooks);
local v4 = require(l_Parent_0.SocialLuaAnalytics);
local l_useLocalUserId_0 = v3.useLocalUserId;
local l_useLoadingTimers_0 = v4.Analytics.Timing.useLoadingTimers;
local l_RetrievalStatus_0 = v2.App.Loading.Enum.RetrievalStatus;
local v8 = require(script.Parent.AnalyticsSetup);
local v9 = require(script.Parent.EventNames);
local v10 = require(script.Parent.UILoadingEvents);
return function(v11)
    local v12 = l_useLocalUserId_0();
    local v13 = l_useLoadingTimers_0({});
    local v14 = v1.useRef({});
    local v15 = v1.useMemo(function()
        return v8({
            infoForAllEvents = {
                uid = if not v12 then nil else tostring(v12)
            }
        });
    end, {
        v12
    });
    v1.useEffect(function()
        v13.start("carouselLoadingTime");
    end, {});
    local function v18(v16, v17)
        v15.fireAnalyticsEvent(v9.FriendsCarouselUILoadingTime, {
            loadingTime = (not (not not v17 and typeof(v17) == "number") or v17 < 0) and 0 or v17,
            fetch = v16,
            status = l_RetrievalStatus_0.Done.rawValue()
        });
    end;
    return v11.renderComponent({
        onSuccessfulRender = function(v19)
            if not v14.current[v10.EmptyHint] and not v14.current[("%*%*"):format(v10.EmptyHint, v10.ExperimentSuffix)] then
                if v19 and not v14.current[v19] then
                    v14.current[v19] = true;
                    v18(v19, (v13.getTime("carouselLoadingTime")));
                    return ;
                else
                    return ;
                end;
            else
                return ;
            end;
        end
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsCarousel");
local l_DiagEventTypes_0 = require(l_script_FirstAncestor_0.Parent.SocialLuaAnalytics).Analytics.Enums.DiagEventTypes;
local v2 = require(script.Parent.EventNames);
local v3 = require(script.Parent.FetchNames);
local v4 = require(l_script_FirstAncestor_0.Flags.FFlagFriendsCarouselOldFriendEndpointLoadingTime);
local v5 = require(l_script_FirstAncestor_0.Flags.FFlagFriendsCarouselUILoadingTime);
local l_FriendsCarouselFriendshipUpdateSignal_0 = require(l_script_FirstAncestor_0.Signals).FriendsCarouselFriendshipUpdateSignal;
local v7 = {
    Done = game:DefineFastString("AllFriendsCarouselLoadingTimeDoneStats", "AllFriendsCarouselLoadingTimeDone"),
    Failed = game:DefineFastString("AllFriendsCarouselLoadingTimeFailedStats", "AllFriendsCarouselLoadingTimeFailed")
};
local v8 = {
    Done = game:DefineFastString("AllFriendsNextPageCarouselLoadingTimeDoneStats", "AllFriendsNextPageCarouselLoadingTimeDone"),
    Failed = game:DefineFastString("AllFriendsNextPageCarouselLoadingTimeFailedStats", "AllFriendsNextPageCarouselLoadingTimeFailed")
};
local v9 = {
    Done = game:DefineFastString("OnlineFriendsCarouselLoadingTimeDoneStats", "OnlineFriendsCarouselLoadingTimeDone"),
    Failed = game:DefineFastString("OnlineFriendsCarouselLoadingTimeFailedStats", "OnlineFriendsCarouselLoadingTimeFailed")
};
local v10 = {
    Done = game:DefineFastString(" OldAllFriendsCarouselLoadingTimeDoneStats", "OldAllFriendsCarouselLoadingTimeDone"),
    Failed = game:DefineFastString("OldAllFriendsCarouselLoadingTimeFailedStats", "OldAllFriendsCarouselLoadingTimeFailed")
};
local v11 = game:DefineFastString("FriendsCarouselUILoadingTimeStats", "FriendsCarouselUILoadingTime");
return {
    [v2.CarouselLoadedWithUsers] = {
        name = game:DefineFastString("FriendsCarouselLoadedWithUsers", "FriendsCarouselLoadedWithUsers")
    },
    [v2.UserPressed] = {
        name = game:DefineFastString("FriendsCarouselUserPressed", "FriendsCarouselUserPressed")
    },
    [v2.RequestFriendship] = {
        name = game:DefineFastString("FriendsCarouselRequestFriendship", "FriendsCarouselRequestFriendship")
    },
    [v2.RevokeFriendRequest] = {
        name = game:DefineFastString("FriendsCarouselRevokeFriendRequest", "FriendsCarouselRevokeFriendRequest")
    },
    [v2.ViewAllFriends] = {
        name = game:DefineFastString("HomePageNavigationViewAllFriends", "HomePageNavigationFriendsLanding")
    },
    [v2.ViewAddFriends] = {
        name = game:DefineFastString("HomePageNavigationViewAddFriends", "AddFriendsHomeEntry")
    },
    [v2.PaginatedFriendsCarouselLoadingTime] = {
        type = l_DiagEventTypes_0.Stats,
        name = function(v12)
            if v12.fetch == v3.AllFriends then
                if not v12.nextPage then
                    return v7[v12.status];
                else
                    return v8[v12.status];
                end;
            else
                return v9[v12.status];
            end;
        end,
        stats = function(v13)
            return v13.loadingTime or 0;
        end
    },
    [v2.FriendsEndpointLoadingTime] = if not v4 then nil else {
        type = l_DiagEventTypes_0.Stats,
        name = function(v14)
            return v10[v14.status];
        end,
        stats = function(v15)
            return v15.loadingTime or 0;
        end
    },
    [v2.FriendsCarouselUILoadingTime] = if not v5 then nil else {
        type = l_DiagEventTypes_0.Stats,
        name = function(v16)
            return (("%*_%*"):format(v11, v16.fetch));
        end,
        stats = function(v17)
            return v17.loadingTime or 0;
        end
    },
    [v2.OnlineFriendsRefetchOnPresenceUpdate] = if not l_FriendsCarouselFriendshipUpdateSignal_0 then nil else {
        type = l_DiagEventTypes_0.Counter,
        name = game:DefineFastString("OnlineFriendsRefetchOnPresenceUpdateCounter", "OnlineFriendsRefetchOnPresenceUpdate")
    },
    [v2.OnlineFriendsRefetchOnFriendshipUpdate] = if not l_FriendsCarouselFriendshipUpdateSignal_0 then nil else {
        type = l_DiagEventTypes_0.Counter,
        name = game:DefineFastString("OnlineFriendsRefetchOnFriendshipUpdateCounter", "OnlineFriendsRefetchOnFriendshipUpdate")
    }
};


return require(script.Parent.Parent.dependencies).enumerate(script.Name, {
    CarouselLoadedWithUsers = "CarouselLoadedWithUsers",
    UserSeen = "UserSeen",
    UserPressed = "UserPressed",
    RequestFriendship = "RequestFriendship",
    RevokeFriendRequest = "RevokeFriendRequest",
    ViewAllFriends = "ViewAllFriends",
    ViewAddFriends = "ViewAddFriends",
    CarouselLoadingTime = "CarouselLoadingTime",
    ContactImporterOnAddFriends = "ContactImporterOnAddFriends",
    PaginatedFriendsCarouselLoadingTime = "PaginatedFriendsCarouselLoadingTime",
    FriendsEndpointLoadingTime = "FriendsEndpointLoadingTime",
    FriendsCarouselUILoadingTime = "FriendsCarouselUILoadingTime",
    OnlineFriendsRefetchOnPresenceUpdate = "OnlineFriendsRefetchOnPresenceUpdate",
    OnlineFriendsRefetchOnFriendshipUpdate = "OnlineFriendsRefetchOnFriendshipUpdate"
});


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(script.Parent.EventNames);
local v3 = require(l_Parent_1.SocialLuaAnalytics);
local l_Enums_0 = v3.Analytics.Enums;
local l_Contexts_0 = l_Enums_0.Contexts;
local l_EventTypes_0 = l_Enums_0.EventTypes;
local v7 = require(script.Parent.BtnValues);
local v8 = require(l_Parent_0.Common.Constants);
local v9 = require(script.Parent.formatFriendStatus);
local v10 = require(script.Parent.getUniverseIdFromUser);
local l_formatRecommendationContextType_0 = v3.Analytics.Formatters.formatRecommendationContextType;
local l_formatPresence_0 = v3.Analytics.Formatters.formatPresence;
local v13 = require(l_Parent_0.Flags.getFIntShowFriendRecommendationsLimit);
local v14 = require(l_Parent_0.Flags.FFlagFriendsCarouselOldFriendEndpointLoadingTime);
local v15 = require(l_Parent_0.Flags.FFlagFriendsCarouselUILoadingTime);
local function v17(v16)
    return v16;
end;
return {
    [v2.CarouselLoadedWithUsers] = {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.FriendsCarouselLoaded,
        additionalInfo = {
            source = v8.HomepageFriendsCarouselSourceName
        },
        formatRulesForAdditionalInfo = {
            friendCount = v17,
            recommendationCount = v17,
            recommendationLimit = v13,
            refreshCount = v17,
            experimentLayerStatus = v17,
            fetchedRecommendations = v17,
            recommendationSessionId = v17
        }
    },
    [v2.UserSeen] = {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.UserSeen,
        additionalInfo = {
            source = v8.HomepageFriendsCarouselSourceName
        },
        formatRulesForAdditionalInfo = {
            absolutePosition = v17,
            recommendationContextType = l_formatRecommendationContextType_0,
            friendStatus = v9,
            isRecommendation = v17,
            presence = l_formatPresence_0,
            recommendationRank = v17,
            userId = v17,
            universeId = v10
        }
    },
    [v2.UserPressed] = {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.ButtonClick,
        additionalInfo = {
            btn = v7.OpenPeopleList,
            source = v8.HomepageFriendsCarouselSourceName
        },
        formatRulesForAdditionalInfo = {
            absolutePosition = v17,
            recommendationContextType = l_formatRecommendationContextType_0,
            friendId = v17,
            friendStatus = v9,
            isRecommendation = v17,
            recommendationRank = v17,
            universeId = v10,
            presence = l_formatPresence_0
        }
    },
    [v2.RequestFriendship] = {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.ButtonClick,
        additionalInfo = {
            btn = v7.RequestFriendship,
            source = v8.HomepageFriendsCarouselSourceName
        },
        formatRulesForAdditionalInfo = {
            absolutePosition = v17,
            recommendationContextType = l_formatRecommendationContextType_0,
            recommendationRank = v17,
            requestedId = v17
        }
    },
    [v2.RevokeFriendRequest] = {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.ButtonClick,
        additionalInfo = {
            btn = v7.RevokeFriendRequest,
            source = v8.HomepageFriendsCarouselSourceName
        },
        formatRulesForAdditionalInfo = {
            absolutePosition = v17,
            recommendationContextType = l_formatRecommendationContextType_0,
            recommendationRank = v17,
            requestedId = v17
        }
    },
    [v2.ViewAllFriends] = {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.ButtonClick,
        additionalInfo = {
            btn = v7.FriendsLanding,
            source = v8.HomepageFriendsCarouselSourceName
        },
        formatRulesForAdditionalInfo = {
            friendCount = v17,
            recommendationLimit = v13,
            recommendationCount = v17
        }
    },
    [v2.ViewAddFriends] = {
        context = l_Contexts_0.AddFriends,
        eventType = l_EventTypes_0.ButtonClick,
        additionalInfo = {
            btn = v7.AddFriendsButton,
            absolutePosition = 1,
            source = v8.HomepageFriendsCarouselSourceName
        },
        formatRulesForAdditionalInfo = {
            friendCount = v17,
            recommendationLimit = v13,
            recommendationCount = v17,
            requestCount = v17,
            showContactImporterModal = v17
        }
    },
    [v2.CarouselLoadingTime] = {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.CarouselLoadingTime,
        additionalInfo = {
            source = v8.HomepageFriendsCarouselSourceName
        },
        formatRulesForAdditionalInfo = {
            carouselFetchingStatus = v17,
            friendsFetchingStatus = v17,
            recommendationFetchingStatus = v17,
            loadingTime = v17,
            reachedThreshold = v17,
            loadingThreshold = v17,
            experimentLayerStatus = v17,
            isLegacyCarousel = v17
        }
    },
    [v2.ContactImporterOnAddFriends] = {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.ContactImporterOnAddFriends,
        additionalInfo = {
            isLegacyAddFriends = false
        }
    },
    [v2.PaginatedFriendsCarouselLoadingTime] = {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.LoadingTime,
        formatRulesForAdditionalInfo = {
            status = v17,
            loadingTime = v17,
            loadingThreshold = v17,
            nextPage = v17,
            fetch = v17
        },
        additionalInfo = {
            source = v8.HomepageFriendsCarouselSourceName
        }
    },
    [v2.FriendsEndpointLoadingTime] = if not v14 then nil else {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.LoadingTime,
        formatRulesForAdditionalInfo = {
            status = v17,
            loadingTime = v17,
            loadingThreshold = v17,
            nextPage = v17,
            fetch = v17
        },
        additionalInfo = {
            source = v8.HomepageFriendsCarouselSourceName
        }
    },
    [v2.FriendsCarouselUILoadingTime] = if not v15 then nil else {
        context = l_Contexts_0.HomePage,
        eventType = l_EventTypes_0.LoadingTime,
        formatRulesForAdditionalInfo = {
            status = v17,
            fetch = v17,
            loadingTime = v17,
            loadingThreshold = v17,
            nextPage = v17
        },
        additionalInfo = {
            source = v8.HomepageFriendsCarouselSourceName
        }
    }
};


return {
    AllFriends = "allFriends",
    OnlineFriends = "onlineFriends",
    OldAllFriends = "oldAllFriends"
};


local v0 = require(script:FindFirstAncestor("FriendsCarousel").dependencies);
return v0.Roact.createContext({
    fireEvent = v0.Dash.noop
});


return {
    AddFriendsBtn = "AddFriendsBtn",
    EmptyHint = "EmptyHint",
    CarouselFriend = "CarouselFriend",
    CarouselPresence = "CarouselPresence",
    ExperimentSuffix = "_exp"
};


local l_Parent_0 = script.Parent.Parent;
local l_FriendStatuses_0 = require(l_Parent_0.dependencies).SocialLuaAnalytics.Analytics.Enums.FriendStatuses;
local _ = require(l_Parent_0.Common.LocalTypes);
return function(v3)
    if not v3.isFriendWithUser then
        if not v3.hasPendingFriendRequest then
            if not v3.hasIncomingFriendRequest then
                return l_FriendStatuses_0.NotFriends;
            else
                return l_FriendStatuses_0.RequestReceived;
            end;
        else
            return l_FriendStatuses_0.RequestSent;
        end;
    else
        return l_FriendStatuses_0.Friends;
    end;
end;


local _ = require(script.Parent.Parent.Common.LocalTypes);
return function(v1)
    local v2 = nil;
    if v1.isFriendWithUser then
        v2 = v1.universeId;
    end;
    return v2;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsCarousel");
local v1 = require(l_script_FirstAncestor_0.dependencies);
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_Context_0 = v1.SocialLibraries.Context;
local v4 = require(script.FriendsCarouselAnalyticsContext);
local v5 = require(script.setupFireEvent);
local v6 = require(script.useAnalytics);
local v7 = require(l_Parent_0.SocialLuaAnalytics);
local l_AnalyticsFactory_0 = v7.Analytics.AnalyticsFactory;
local l_DefaultAnalyticsService_0 = v7.Analytics.DefaultAnalyticsService;
return {
    EventNames = require(script.EventNames),
    Analytics = if not require(l_script_FirstAncestor_0.Flags.FFlagFriendsCarouselOldFriendEndpointLoadingTime) then l_AnalyticsFactory_0.setUpAnalyticsFactory({
        eventLists = {
            EventStream = require(script.EventStreamActionList),
            Diag = require(script.DiagActionList)
        },
        analyticsImpl = {
            EventStream = l_DefaultAnalyticsService_0.EventStream,
            Diag = l_DefaultAnalyticsService_0.Diag
        }
    }) else require(script.AnalyticsSetup),
    setupFireEvent = v5,
    Context = v4,
    connect = l_Context_0.getConnect(v4),
    with = l_Context_0.getWith(v4),
    useAnalytics = v6
};


local v0 = require(script.Parent.Parent.dependencies);
local l_SocialLuaAnalytics_0 = v0.SocialLuaAnalytics;
local v2 = require(script.Parent.DiagActionList);
local l_fireEventStream_0 = l_SocialLuaAnalytics_0.Analytics.FireEvent.fireEventStream;
local l_fireDiagCounter_0 = l_SocialLuaAnalytics_0.Analytics.FireEvent.fireDiagCounter;
local v5 = require(script.Parent.EventStreamActionList);
local l_AnalyticsService_0 = v0.AnalyticsService;
return function(v7)
    local v8 = l_fireEventStream_0({
        eventStreamImpl = v7.analytics.EventStream,
        eventList = v5,
        infoForAllEvents = v7.infoForAllEvents
    });
    local v9 = l_fireDiagCounter_0({
        diagImpl = if v7.analytics.Diag then v7.analytics.Diag else l_AnalyticsService_0.Diag,
        eventList = v2
    });
    return function(v10, v11)
        if not (not v9 or not v2[v10]) then
            v9(v10);
        end;
        return v8(v10, v11);
    end;
end;


local l_React_0 = require(script.Parent.Parent.dependencies).React;
local v1 = require(script.Parent.FriendsCarouselAnalyticsContext);
return function()
    return l_React_0.useContext(v1);
end;


local v0 = require(script.Parent.Parent.dependencies);
local l_Roact_0 = v0.Roact;
local l_llama_0 = v0.llama;
return function(v3, v4)
    local v5 = l_Roact_0.PureComponent:extend("LoadingTimer");
    v5.init = function(v6)
        v6.loadingTime = {
            startTime = nil,
            endTime = nil,
            thresholdCanceled = false
        };
        v6.startThresholdTimer = function()
            if v4.loadingThreshold then
                delay(v4.loadingThreshold, function()
                    if not (((not v4.onReachingThreshold or v6.thresholdCanceled) or v6.loadingTime.endTime) or not v6.loadingTime.startTime) then
                        v6.stopTimer(true);
                        v4.onReachingThreshold(v6.getLoadingTime(), v6.props);
                    end;
                end);
                return ;
            else
                return ;
            end;
        end;
        v6.resetTimer = function()
            v6.loadingTime = {
                startTime = nil,
                endTime = nil
            };
        end;
        v6.startTimer = function()
            v6.loadingTime.startTime = os.clock();
            v6.startThresholdTimer();
        end;
        v6.stopTimer = function(v7)
            if not v6.loadingTime.endTime then
                v6.loadingTime.endTime = os.clock();
                if not (not v4.onLoaded or v7) then
                    v4.onLoaded(v6.getLoadingTime(), v6.props);
                end;
                return ;
            else
                return ;
            end;
        end;
        v6.getLoadingTime = function()
            if not v6.loadingTime.endTime or not v6.loadingTime.startTime then
                return -1;
            else
                return v6.loadingTime.endTime - v6.loadingTime.startTime;
            end;
        end;
        v6.cancelThreshold = function()
            v6.thresholdCanceled = true;
        end;
    end;
    v5.render = function(v8)
        return l_Roact_0.createElement(v3, l_llama_0.Dictionary.join(v8.props, {
            loadingTimerProps = {
                startTimer = v8.startTimer,
                stopTimer = v8.stopTimer,
                resetTimer = v8.resetTimer,
                getLoadingTime = v8.getLoadingTime,
                cancelThreshold = v8.cancelThreshold
            }
        }));
    end;
    return v5;
end;


return {
    RODUX_KEY = "FriendsCarousel",
    RECOMMENDATION_SESSION_ID_KEY = "friendRecommendationsSessionId",
    HomepageFriendsCarouselSourceName = "HomepageFriendsCarousel"
};


return {
    UpdatedFindFriendsText = "Feature.Chat.Label.AddFriends",
    FindFriendsText = "Feature.Friends.Action.FindFriends",
    PresenceOffline = "Common.Presence.Label.Offline",
    PresenceOnline = "Common.Presence.Label.Online",
    FriendRequestSentToast = "Feature.Friends.Action.FriendRequestSent",
    FriendRequestCancelledToast = "Feature.Friends.Action.FriendRequestCancelled",
    SomethingIsWrongToast = "Feature.Toast.NetworkingError.SomethingIsWrong",
    SingularMutualFriend = "Feature.Friends.Label.SingularMutualFriend",
    MutualFriends = "Feature.Friends.Label.MutualFriends",
    PlayedTogether = "Feature.Friends.Label.Frequent",
    FindFriendsTitle = "Feature.SocialTab.Label.AddFriendHintBody",
    FindFriendsBody = "Feature.Friends.Label.FindFriendsHintBody",
    NewText = "Feature.Catalog.Label.New",
    SuggestedContext = "Feature.Friends.Label.Suggested",
    FriendRequestContext = "Feature.Friends.Label.FriendRequest",
    FindFriendsTitleV2 = "Feature.AddFriends.Title.AddFriendsTooltipTitle",
    FindFriendsBodyV2 = "Feature.AddFriends.Label.AddFriendsTooltip"
};


return {
    SQUARE_TILES = "squareTiles",
    CIRCULAR_TILES = "circularTiles"
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsCarousel");
local v1 = require(l_script_FirstAncestor_0.dependencies);
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_Roact_0 = v1.Roact;
local l_UIBlox_0 = v1.UIBlox;
local l_llama_0 = v1.llama;
local l_useStyle_0 = l_UIBlox_0.Core.Style.useStyle;
local l_Images_0 = l_UIBlox_0.App.ImageSet.Images;
local l_StyledTextLabel_0 = l_UIBlox_0.App.Text.StyledTextLabel;
local l_ImageSetLabel_0 = l_UIBlox_0.Core.ImageSet.ImageSetLabel;
local l_IconSize_0 = l_UIBlox_0.App.Constant.IconSize;
local l_Badge_0 = l_UIBlox_0.App.Indicator.Badge;
local l_useCursor_0 = l_UIBlox_0.App.SelectionCursor.useCursor;
local l_useDesignTokens_0 = v1.Hooks.useDesignTokens;
local l_useUiModeInfo_0 = v1.Hooks.useUiModeInfo;
local l_UiMode_0 = v1.RobloxAppEnums.UiMode;
local v16 = require(l_script_FirstAncestor_0.Utils.getTextHeight);
local v17 = require(l_script_FirstAncestor_0.Flags.getFFlagFriendsCarouselCircularBadge);
local l_getFFlagUpdateFriendCarousel10ft_0 = v1.getFFlagUpdateFriendCarousel10ft;
local l_FFlagFriendsCarouselInjectSocialBtn_0 = require(l_Parent_0.SharedFlags).FFlagFriendsCarouselInjectSocialBtn;
local l_FFlagLuaAppFixCursorHooks_0 = v1.FFlagLuaAppFixCursorHooks;
if not l_FFlagFriendsCarouselInjectSocialBtn_0 then
    local v21 = {
        layoutOrder = 0,
        onActivated = function()
        end,
        thumbnailSize = 96,
        totalHeight = 96,
        labelText = ""
    };
    local v22 = l_Images_0["icons/menu/friends_large"];
    local v23 = l_Images_0["component_assets/circle_68_stroke_2"];
    local v24 = UDim.new(0.5, 0);
    return function(v25)
        local v26 = l_llama_0.Dictionary.join(v21, v25 or {});
        local v27 = l_useStyle_0();
        local v28 = l_useUiModeInfo_0();
        local v30 = l_useDesignTokens_0(function(v29)
            if v28.uiMode == l_UiMode_0.TenFoot then
                return {
                    tilePadding = v29.Global.Space_100,
                    textFont = v29.Semantic.Typography.CaptionHeader
                };
            else
                return {
                    tilePadding = 8,
                    textFont = v27.Font.CaptionHeader
                };
            end;
        end);
        return l_Roact_0.createFragment({
            AddFriendsTileCircular = l_Roact_0.createElement("Frame", {
                Size = if not l_getFFlagUpdateFriendCarousel10ft_0() then UDim2.new(0, v26.thumbnailSize, 0, v26.totalHeight) else UDim2.new(0, v26.thumbnailSize, 0, 0),
                AutomaticSize = if not l_getFFlagUpdateFriendCarousel10ft_0() then nil else Enum.AutomaticSize.Y,
                BackgroundTransparency = 1,
                LayoutOrder = v26.layoutOrder
            }, {
                Layout = l_Roact_0.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center,
                    VerticalAlignment = Enum.VerticalAlignment.Top,
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    Padding = if not l_getFFlagUpdateFriendCarousel10ft_0() then UDim.new(0, 8) else UDim.new(0, v30.tilePadding)
                }),
                AddFriendButton = l_Roact_0.createElement("TextButton", {
                    LayoutOrder = 1,
                    Size = UDim2.new(0, v26.thumbnailSize, 0, v26.thumbnailSize),
                    BackgroundColor3 = v27.Theme.UIEmphasis.Color,
                    Text = "",
                    BackgroundTransparency = v27.Theme.UIEmphasis.Transparency,
                    SelectionImageObject = if not l_FFlagLuaAppFixCursorHooks_0 then l_useCursor_0(v24) else if not l_FFlagLuaAppFixCursorHooks_0 then nil else l_useCursor_0(v24),
                    [l_Roact_0.Event.Activated] = v26.onActivated
                }, {
                    AddFriendButtonBorder = l_Roact_0.createElement(l_ImageSetLabel_0, {
                        Image = v23,
                        BackgroundTransparency = 1,
                        ImageColor3 = v27.Theme.SecondaryDefault.Color,
                        ImageTransparency = v27.Theme.SecondaryDefault.Transparency,
                        Size = UDim2.new(0, v26.thumbnailSize, 0, v26.thumbnailSize)
                    }, {
                        AddIcon = l_Roact_0.createElement(l_ImageSetLabel_0, {
                            AnchorPoint = Vector2.new(0.5, 0.5),
                            BackgroundTransparency = 1,
                            Image = v22,
                            ImageColor3 = v27.Theme.IconEmphasis.Color,
                            Position = UDim2.fromScale(0.5, 0.5),
                            Size = UDim2.fromOffset(l_IconSize_0.Large, l_IconSize_0.Large)
                        }),
                        Badge = if not v17() then nil else v26.badgeValue and l_Roact_0.createElement(l_Badge_0, {
                            anchorPoint = Vector2.new(1, 0),
                            position = UDim2.fromOffset(v26.thumbnailSize - 5, 5),
                            value = v26.badgeValue
                        })
                    }),
                    UICorner = l_Roact_0.createElement("UICorner", {
                        CornerRadius = v24
                    })
                }),
                AddFriendsLabel = l_Roact_0.createElement(l_StyledTextLabel_0, {
                    layoutOrder = 2,
                    text = v26.labelText,
                    fontStyle = if not l_getFFlagUpdateFriendCarousel10ft_0() then v27.Font.CaptionHeader else v30.textFont,
                    colorStyle = v27.Theme.TextEmphasis,
                    size = if l_getFFlagUpdateFriendCarousel10ft_0() then nil else UDim2.fromOffset(v26.thumbnailSize, v16(v26.labelText, v27.Font.CaptionHeader.Font, v27.Font.BaseSize * v27.Font.CaptionHeader.RelativeSize)),
                    automaticSize = if not l_getFFlagUpdateFriendCarousel10ft_0() then nil else Enum.AutomaticSize.XY,
                    textTruncate = Enum.TextTruncate.AtEnd,
                    textXAlignment = Enum.TextXAlignment.Center,
                    textYAlignment = Enum.TextYAlignment.Top,
                    fluidSizing = false,
                    richText = false,
                    lineHeight = 1
                })
            })
        });
    end;
else
    return nil;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsCarousel");
local v1 = require(l_script_FirstAncestor_0.dependencies);
local l_t_0 = v1.t;
local l_Roact_0 = v1.Roact;
local l_UIBlox_0 = v1.UIBlox;
local l_memoize_0 = v1.memoize;
local l_ImageSetLabel_0 = l_UIBlox_0.Core.ImageSet.ImageSetLabel;
local l_Interactable_0 = l_UIBlox_0.Core.Control.Interactable;
local l_ControlState_0 = l_UIBlox_0.Core.Control.Enum.ControlState;
local l_Images_0 = l_UIBlox_0.App.ImageSet.Images;
local l_StyledTextLabel_0 = l_UIBlox_0.App.Text.StyledTextLabel;
local l_IconSize_0 = l_UIBlox_0.App.Constant.IconSize;
local l_Badge_0 = l_UIBlox_0.App.Indicator.Badge;
local l_withStyle_0 = l_UIBlox_0.Style.withStyle;
local v14 = require(l_script_FirstAncestor_0.Utils.getTextHeight);
local l_Colors_0 = require(l_script_FirstAncestor_0.Parent.Style).Colors;
local v16 = l_Images_0["icons/graphic/findfriends_large"];
local function _(v17, v18)
    return 1 - (1 - v17) / v18;
end;
local v20 = l_Roact_0.PureComponent:extend("AddFriendsTileSquare");
v20.defaultProps = {
    badgeValue = nil,
    tileSize = 100,
    labelText = ""
};
v20.validateProps = l_t_0.strictInterface({
    badgeValue = l_t_0.optional(l_t_0.union(l_t_0.string, l_t_0.integer)),
    onActivated = l_t_0.callback,
    tileSize = l_t_0.number,
    labelText = l_t_0.string
});
v20.init = function(v21)
    v21.state = {};
    v21.onStateChanged = function(v22, v23, v24)
        local l_Transparency_0 = v23.Transparency;
        local l_Transparency_1 = v24.Transparency;
        if v22 == l_ControlState_0.Pressed then
            l_Transparency_0 = 1 - (1 - v23.Transparency) / 2;
            l_Transparency_1 = 1 - (1 - v24.Transparency) / 2;
        elseif v22 == l_ControlState_0.Hover then
            l_Transparency_0 = 1 - (1 - v23.Transparency) / 2;
            l_Transparency_1 = 1 - (1 - v24.Transparency) / 2;
        end;
        v21:setState({
            iconTransparency = l_Transparency_0,
            backgroundTransparency = l_Transparency_1
        });
    end;
    v21.onStateChangedSetup = l_memoize_0(function(v27, v28)
        return function(_, v30)
            v21.onStateChanged(v30, v27, v28);
        end;
    end);
    v21.getTextHeight = l_memoize_0(function(v31, v32, v33)
        return v14(v31, v32, v33);
    end);
end;
v20.render = function(v34)
    local l_state_0 = v34.state;
    local l_props_0 = v34.props;
    local l_backgroundTransparency_0 = l_state_0.backgroundTransparency;
    local l_iconTransparency_0 = l_state_0.iconTransparency;
    return l_withStyle_0(function(v39)
        local l_Theme_0 = v39.Theme;
        local l_Font_0 = v39.Font;
        local l_IconEmphasis_0 = l_Theme_0.IconEmphasis;
        local l_BackgroundUIDefault_0 = l_Theme_0.BackgroundUIDefault;
        return l_Roact_0.createFragment({
            AddFriendsTileSquare = l_Roact_0.createElement("Frame", {
                AutomaticSize = Enum.AutomaticSize.Y,
                Size = UDim2.fromOffset(l_props_0.tileSize, 0),
                BackgroundTransparency = 1
            }, {
                UIListLayout = l_Roact_0.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    VerticalAlignment = Enum.VerticalAlignment.Top,
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    Padding = UDim.new(0, 8)
                }),
                AddFriendButton = l_Roact_0.createElement(l_Interactable_0, {
                    LayoutOrder = 1,
                    Size = UDim2.fromOffset(l_props_0.tileSize, l_props_0.tileSize),
                    BackgroundTransparency = 1,
                    onStateChanged = v34.onStateChangedSetup(l_IconEmphasis_0, l_BackgroundUIDefault_0),
                    [l_Roact_0.Event.Activated] = l_props_0.onActivated
                }, {
                    Background = l_Roact_0.createElement("Frame", {
                        Size = UDim2.fromScale(1, 1),
                        BackgroundTransparency = l_backgroundTransparency_0,
                        BackgroundColor3 = l_BackgroundUIDefault_0.Color
                    }, {
                        UICorner = l_Roact_0.createElement("UICorner", {
                            CornerRadius = UDim.new(0, 8)
                        }),
                        Icon = l_Roact_0.createElement(l_ImageSetLabel_0, {
                            AnchorPoint = Vector2.new(0.5, 0.5),
                            BackgroundTransparency = 1,
                            ImageTransparency = l_iconTransparency_0,
                            ImageColor3 = l_Colors_0.White,
                            Image = v16,
                            Size = UDim2.fromOffset(l_IconSize_0.Large, l_IconSize_0.Large),
                            Position = UDim2.fromScale(0.5, 0.5)
                        }),
                        Badge = l_props_0.badgeValue and l_Roact_0.createElement(l_Badge_0, {
                            anchorPoint = Vector2.new(1, 0),
                            position = UDim2.fromOffset(l_props_0.tileSize - 8, 8),
                            value = l_props_0.badgeValue
                        })
                    })
                }),
                AddFriendsLabel = l_Roact_0.createElement(l_StyledTextLabel_0, {
                    layoutOrder = 2,
                    text = l_props_0.labelText,
                    fontStyle = l_Font_0.CaptionHeader,
                    colorStyle = l_Theme_0.TextEmphasis,
                    size = UDim2.fromOffset(l_props_0.tileSize, v34.getTextHeight(l_props_0.labelText, l_Font_0.CaptionHeader.Font, l_Font_0.BaseSize * l_Font_0.CaptionHeader.RelativeSize) * 2),
                    textTruncate = Enum.TextTruncate.AtEnd,
                    textXAlignment = Enum.TextXAlignment.Center,
                    textYAlignment = Enum.TextYAlignment.Top,
                    fluidSizing = false,
                    richText = false,
                    lineHeight = 1
                })
            })
        });
    end);
end;
return v20;


local l_Parent_0 = script:FindFirstAncestor("FriendsCarousel").Parent;
local v1 = require(l_Parent_0.Roact);
local v2 = require(l_Parent_0.React);
local v3 = require(l_Parent_0.Cryo);
local v4 = require(l_Parent_0.UIBlox);
local v5 = require(l_Parent_0.RobloxAppHooks);
local v6 = require(l_Parent_0.RobloxAppEnums);
local v7 = require(l_Parent_0.Style);
local l_useStyle_0 = v4.Core.Style.useStyle;
local l_StyledTextLabel_0 = v4.App.Text.StyledTextLabel;
local l_ImageSetLabel_0 = v4.Core.ImageSet.ImageSetLabel;
local l_IconSize_0 = v4.App.Constant.IconSize;
local l_Badge_0 = v4.App.Indicator.Badge;
local l_useCursor_0 = v4.App.SelectionCursor.useCursor;
local l_useDesignTokens_0 = v7.useDesignTokens;
local l_useUiModeInfo_0 = v5.useUiModeInfo;
local l_UiMode_0 = v6.UiMode;
local l_FFlagLuaAppFixCursorHooks_0 = require(l_Parent_0.SharedFlags).FFlagLuaAppFixCursorHooks;
local v18 = game:DefineFastFlag("AddFriendsBtnFixSelectionOnConsole", false);
local v19 = UDim.new(0.5, 0);
local v20 = {
    layoutOrder = 0,
    onActivated = function()
    end,
    tileSize = 96,
    title = ""
};
return function(v21)
    local v22 = v2.useMemo(function()
        return v3.Dictionary.join(v20, v21 or {});
    end, {
        v20,
        v21
    });
    local v23 = l_useStyle_0();
    local v24 = l_useUiModeInfo_0();
    local v26 = l_useDesignTokens_0(function(v25)
        if v24.uiMode == l_UiMode_0.TenFoot then
            return {
                tilePadding = v25.Global.Space_100,
                textFont = v25.Semantic.Typography.CaptionHeader
            };
        else
            return {
                tilePadding = 8,
                textFont = v23.Font.CaptionHeader
            };
        end;
    end);
    return v1.createFragment({
        ButtonTileCircular = v2.createElement("Frame", {
            Size = UDim2.new(0, v22.tileSize, 0, 0),
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            LayoutOrder = v22.layoutOrder
        }, {
            Layout = v2.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                VerticalAlignment = Enum.VerticalAlignment.Top,
                SortOrder = Enum.SortOrder.LayoutOrder,
                Padding = UDim.new(0, v26.tilePadding)
            }),
            Button = v2.createElement("TextButton", {
                LayoutOrder = 1,
                Size = UDim2.new(0, v22.tileSize, 0, v22.tileSize),
                BackgroundColor3 = if not v22.backgroundColor then v23.Theme.UIEmphasis.Color else v22.backgroundColor,
                Text = "",
                BackgroundTransparency = if not v22.backgroundColor then v23.Theme.UIEmphasis.Transparency else 0,
                SelectionImageObject = if not l_FFlagLuaAppFixCursorHooks_0 then l_useCursor_0(v19) else if not l_FFlagLuaAppFixCursorHooks_0 then nil else l_useCursor_0(v19),
                [v2.Event.Activated] = v22.onActivated
            }, {
                StrokeWrapper = if not v22.noBorder then v1.createElement("Frame", {
                    AnchorPoint = Vector2.new(0.5, 0.5),
                    Position = UDim2.fromScale(0.5, 0.5),
                    Size = UDim2.new(1, -4, 1, -4),
                    BackgroundTransparency = 1,
                    ZIndex = 0
                }, {
                    UICorner = v1.createElement("UICorner", {
                        CornerRadius = UDim.new(0.5, 0)
                    }),
                    UIStroke = v1.createElement("UIStroke", {
                        Thickness = 2,
                        Color = v23.Theme.IconEmphasis.Color,
                        Transparency = v23.Theme.SecondaryDefault.Transparency
                    })
                }) else nil,
                Icon = v2.createElement(l_ImageSetLabel_0, {
                    AnchorPoint = Vector2.new(0.5, 0.5),
                    BackgroundTransparency = 1,
                    Image = v22.icon,
                    ImageColor3 = v22.iconColor or v23.Theme.IconEmphasis.Color,
                    Position = UDim2.fromScale(0.5, 0.5),
                    Size = UDim2.fromOffset(l_IconSize_0.Large, l_IconSize_0.Large)
                }),
                Badge = if not v22.badgeValue then nil else v2.createElement(l_Badge_0, {
                    anchorPoint = Vector2.new(1, 0),
                    position = UDim2.fromOffset(v22.tileSize - 5, 5),
                    value = v22.badgeValue
                }),
                UICorner = v2.createElement("UICorner", {
                    CornerRadius = v19
                })
            }),
            ButtonLabel = v2.createElement("TextButton", {
                LayoutOrder = 2,
                Size = UDim2.new(0, v22.tileSize, 0, 0),
                AutomaticSize = Enum.AutomaticSize.Y,
                BackgroundTransparency = 1,
                Text = "",
                [v2.Event.Activated] = v22.onActivated,
                Selectable = if not v18 then nil else false
            }, {
                Layout = v2.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Vertical,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center,
                    VerticalAlignment = Enum.VerticalAlignment.Top,
                    SortOrder = Enum.SortOrder.LayoutOrder
                }),
                Label = v2.createElement(l_StyledTextLabel_0, {
                    text = v22.title,
                    fontStyle = v26.textFont,
                    colorStyle = v23.Theme.TextEmphasis,
                    automaticSize = Enum.AutomaticSize.XY,
                    textTruncate = Enum.TextTruncate.AtEnd,
                    textXAlignment = Enum.TextXAlignment.Center,
                    textYAlignment = Enum.TextYAlignment.Top,
                    fluidSizing = false,
                    richText = false,
                    lineHeight = 1
                })
            })
        })
    });
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local v2 = require(l_Parent_0.dependencies);
local v3 = require(l_Parent_1.React);
local l_Roact_0 = v2.Roact;
local l_llama_0 = v2.llama;
local l_memoize_0 = v2.memoize;
local l_withLocalization_0 = v2.withLocalization;
local l_useDesignTokens_0 = v2.Hooks.useDesignTokens;
local l_useUiModeInfo_0 = v2.Hooks.useUiModeInfo;
local l_UiMode_0 = v2.RobloxAppEnums.UiMode;
local l_useLocalization_0 = v2.Hooks.useLocalization;
local v12 = require(l_Parent_0.Components.FindFriendsTile);
local v13 = require(l_Parent_0.Components.FindFriendsHint);
local v14 = require(l_Parent_0.Components.CarouselUserTile);
local v15 = require(l_Parent_0.Components.LoadingTile);
local v16 = require(l_Parent_0.Components.ButtonTileCircular);
local _ = require(l_Parent_0.Components.PaginatedCarousel.useCarouselList);
local v18 = require(l_Parent_0.Components.useCreateCarouselList);
local _ = require(l_Parent_0.Common.LocalTypes);
local v20 = require(l_Parent_0.Common.TextKeys);
local v21 = require(l_Parent_0.Analytics.UILoadingEvents);
local l_getFFlagUpdateFriendCarousel10ft_0 = v2.getFFlagUpdateFriendCarousel10ft;
local l_FFlagFriendsCarouselPagination_0 = require(l_Parent_1.SharedFlags).FFlagFriendsCarouselPagination;
local v24 = require(l_Parent_0.Flags.FFlagFriendsCarouselUILoadingTime);
local l_FFlagFriendsCarouselInjectSocialBtn_0 = require(l_Parent_1.SharedFlags).FFlagFriendsCarouselInjectSocialBtn;
local l_FFlagMoveCarouselHeader_0 = require(l_Parent_1.SharedFlags).FFlagMoveCarouselHeader;
local v27 = game:DefineFastFlag("FriendsCarouseCINavigationUpdate", false);
local v28 = l_Roact_0.Component:extend("Carousel");
v28.defaultProps = {};
v28.init = function(v29)
    v29.reportNonFriendsElements = function(v30)
        local l_props_0 = v29.props;
        if l_props_0.onSuccessfulRender then
            l_props_0.onSuccessfulRender((("%*%*"):format(v30, not l_props_0.paginatedCarouselEnabled and "" or v21.ExperimentSuffix)));
        end;
    end;
    v29.renderFindFriendsTile = function()
        local l_props_1 = v29.props;
        local v33 = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else l_props_1.addFriendsBtn or {};
        return l_withLocalization_0({
            newTextBadge = v20.NewText
        })(function(v34)
            return l_Roact_0.createElement(v12, {
                onActivated = l_props_1.onFindFriendsTileActivated,
                badgeValue = if not l_props_1.showNewBadge then nil else v34.newTextBadge,
                tileSize = if not l_getFFlagUpdateFriendCarousel10ft_0() then v29.getTileUIProperties().tileHeight else l_props_1.designTokens.tileSize,
                showNewAddFriendsUIVariant = l_props_1.showNewAddFriendsUIVariant,
                onDidMount = if not v24 then l_props_1.onSuccessfulRender else v29.reportNonFriendsElements(v21.AddFriendsBtn),
                backgroundColor = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else v33.backgroundColor,
                noBorder = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else v33.backgroundColor and true or false,
                icon = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else v33.icon,
                iconColor = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else v33.iconColor
            });
        end);
    end;
    v29.renderFindFriendsHint = function(v35)
        local l_props_2 = v29.props;
        return l_Roact_0.createElement(v13, {
            layoutOrder = v35.layoutOrder,
            tileHeight = if not l_getFFlagUpdateFriendCarousel10ft_0() then v29.getTileUIProperties().tileHeight else l_props_2.designTokens.tileSize,
            showNewAddFriendsUIVariant = l_props_2.showNewAddFriendsUIVariant,
            onDidMount = if not v24 then nil else v29.reportNonFriendsElements(v21.EmptyHint)
        });
    end;
    v29.renderUserTile = function(v37)
        local l_props_3 = v29.props;
        if not v37.data.isLoading then
            return l_Roact_0.createElement(v14, (l_llama_0.Dictionary.join(v37, {
                user = v37.data,
                tileSize = if not l_getFFlagUpdateFriendCarousel10ft_0() then v29.getTileUIProperties().tileHeight else l_props_3.designTokens.tileSize,
                tileInfoHeight = v37.tileInfoHeight,
                onActivated = l_props_3.onUserTileActivated,
                showToast = l_props_3.showToast,
                userSeen = l_props_3.userSeen,
                reportRender = if not v24 then nil else l_props_3.onSuccessfulRender
            })));
        else
            return l_Roact_0.createElement(v15, {
                layoutOrder = v37.layoutOrder,
                tileSize = if not l_getFFlagUpdateFriendCarousel10ft_0() then v29.getTileUIProperties().tileHeight else l_props_3.designTokens.tileSize,
                tileInfoHeight = v37.tileInfoHeight
            });
        end;
    end;
    v29.getTileUIProperties = if not l_getFFlagUpdateFriendCarousel10ft_0() then l_memoize_0(function()
        return {
            tileHeight = 96
        };
    end) else nil;
    v29.renderItem = function(v39)
        local l_props_4 = v29.props;
        local l_data_0 = v39.data;
        if not l_data_0.isCustomBtn then
            return v29.renderUserTile(v39);
        else
            return l_Roact_0.createElement(v16, {
                layoutOrder = v39.layoutOrder,
                title = l_data_0.text,
                icon = l_data_0.icon,
                iconColor = l_data_0.iconColor,
                backgroundColor = l_data_0.backgroundColor,
                noBorder = not not l_data_0.backgroundColor or false,
                onActivated = l_data_0.onActivated,
                tileSize = if not l_getFFlagUpdateFriendCarousel10ft_0() then v29.getTileUIProperties().tileHeight else l_props_4.designTokens.tileSize
            });
        end;
    end;
end;
v28.render = function(v42)
    local l_props_5 = v42.props;
    return l_Roact_0.createElement(l_props_5.carousel, l_llama_0.Dictionary.join(l_props_5.carouselProps, {
        friendCount = l_props_5.friendCount,
        renderFindFriendsTile = v42.renderFindFriendsTile,
        renderFindFriendsHint = v42.renderFindFriendsHint,
        items = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then l_props_5.friendsAndRecList else l_props_5.carouselList,
        renderItem = v42.renderItem,
        sideMargin = if not l_getFFlagUpdateFriendCarousel10ft_0() then nil else l_props_5.designTokens.horizontalMargin,
        friendThumbnailSize = if not l_getFFlagUpdateFriendCarousel10ft_0() then v42.getTileUIProperties().tileHeight else l_props_5.designTokens.tileSize,
        headerPadding = if not l_getFFlagUpdateFriendCarousel10ft_0() then nil else l_props_5.designTokens.headerPadding,
        cardPadding = not l_getFFlagUpdateFriendCarousel10ft_0() and 10 or l_props_5.designTokens.cardPadding,
        fetchNext = if not l_FFlagFriendsCarouselPagination_0 then nil else v42.props.fetchNext,
        title = if not l_FFlagMoveCarouselHeader_0 then nil else l_props_5.headerTitle,
        onActivateHeader = if not l_FFlagMoveCarouselHeader_0 then nil else l_props_5.onSeeAllFriends,
        _propToUpdateFindFriendsTile = if not v27 then nil else l_props_5.onFindFriendsTileActivated,
        _propToUpdateFindFriendsTile2 = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else l_props_5.addFriendsBtn
    }));
end;
if not (l_getFFlagUpdateFriendCarousel10ft_0() or l_FFlagFriendsCarouselInjectSocialBtn_0) and not l_FFlagMoveCarouselHeader_0 then
    return v28;
else
    return function(v44)
        local v45 = nil;
        if l_getFFlagUpdateFriendCarousel10ft_0() then
            local v46 = l_useUiModeInfo_0();
            local l_v46_0 = v46 --[[ copy: 2 -> 4 ]];
            v45 = l_useDesignTokens_0(function(v48)
                if l_v46_0.uiMode == l_UiMode_0.TenFoot then
                    return {
                        horizontalMargin = v48.Global.Space_800,
                        tileSize = v48.Global.Size_1200,
                        headerPadding = v48.Global.Space_200,
                        cardPadding = v48.Global.Space_300
                    };
                else
                    return {
                        horizontalMargin = nil,
                        tileSize = 96,
                        headerPadding = nil,
                        cardPadding = 10
                    };
                end;
            end);
        end;
        local v49 = nil;
        if l_FFlagFriendsCarouselInjectSocialBtn_0 then
            v49 = v18({
                users = v44.users or {},
                friendCount = v44.friendCount,
                socialOnboardingBtns = v44.socialOnboardingBtns,
                includeAddFriendsBtn = false
            });
        end;
        local v50 = nil;
        if l_FFlagMoveCarouselHeader_0 then
            v50 = l_useLocalization_0({
                headerTitle = v44.friendCount == 0 and "CommonUI.Features.Label.Friends" or {
                    "Feature.Home.HeadingFriends";
                    friendCount = v44.friendCount
                }
            }).headerTitle;
        end;
        return v3.createElement(v28, (l_llama_0.Dictionary.join(v44, {
            designTokens = v45,
            carouselList = v49,
            headerTitle = if not l_FFlagMoveCarouselHeader_0 then nil else v50
        })));
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FriendsCarousel");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local v3 = require(l_Parent_0.PlayerContextualMenu);
local v4 = require(l_script_FirstAncestor_0.dependencies);
local l_RoactRodux_0 = v4.RoactRodux;
local v6 = require(script.Parent.Carousel);
local v7 = require(script.Parent.carouselMapStateToProps);
local v8 = require(script.Parent.carouselMapDispatchToProps);
local v9 = require(l_script_FirstAncestor_0.Components.PaginatedCarousel.PaginatedCarouselWrapper);
local _ = require(l_script_FirstAncestor_0.Components.PaginatedCarousel.useCarouselList);
local _ = require(l_script_FirstAncestor_0.Common.LocalTypes);
local v12 = require(l_script_FirstAncestor_0.Common.Constants);
local l_Dictionary_0 = v4.llama.Dictionary;
local l_useUiModeInfo_0 = v4.Hooks.useUiModeInfo;
local l_UiMode_0 = v4.RobloxAppEnums.UiMode;
local l_AnalyticsService_0 = v4.AnalyticsService;
local v17 = require(l_script_FirstAncestor_0.Analytics);
local l_setupFireEvent_0 = v17.setupFireEvent;
local l_EventNames_0 = v17.EventNames;
local v20 = require(l_Parent_0.SocialCommon);
local l_getRecommendationContextualInfoType_0 = v20.Utils.getRecommendationContextualInfoType;
local l_convertUserPresenceTypeToString_0 = v20.Utils.convertUserPresenceTypeToString;
local v23 = require(l_script_FirstAncestor_0.Utils.friendshipStatusToEnum);
local l_Enums_0 = require(l_Parent_0.LuaSocialLibrariesDeps).NetworkingFriends.Enums;
local l_RecommendationContextType_0 = v4.RoduxFriends.Enums.RecommendationContextType;
local l_AppPage_0 = require(l_Parent_0.RobloxAppEnums).AppPage;
local l_NavigateDown_0 = require(l_Parent_0.NavigationRodux).Thunks.NavigateDown;
local l_getFFlagUpdateFriendCarousel10ft_0 = v4.getFFlagUpdateFriendCarousel10ft;
local l_FFlagFriendsCarouselPagination_0 = require(l_Parent_0.SharedFlags).FFlagFriendsCarouselPagination;
local v30 = game:DefineFastFlag("FriendsCarouselPlayerContextualMenuEntrypoint", false);
local l_FFlagFriendsCarouselPaginatedFriendsEnabled_0 = require(l_Parent_0.SharedFlags).FFlagFriendsCarouselPaginatedFriendsEnabled;
local l_FFlagContactRecs_0 = require(l_Parent_0.SharedFlags).FFlagContactRecs;
local v33 = require(l_script_FirstAncestor_0.Flags.FFlagFriendsCarouselUILoadingTime);
local l_FFlagFriendsCarouselInjectSocialBtn_0 = require(l_Parent_0.SharedFlags).FFlagFriendsCarouselInjectSocialBtn;
local l_FFlagMoveCarouselHeader_0 = require(l_Parent_0.SharedFlags).FFlagMoveCarouselHeader;
local v36 = {
    analyticsService = l_AnalyticsService_0
};
local function v56(v37)
    local v38 = l_Dictionary_0.join(v36, v37);
    local v39, v40 = v2.useState({});
    local l_eventIngestService_0 = v38.eventIngestService;
    local v42 = v2.useMemo(function()
        return {
            Diag = v38.diagService,
            EventStream = l_eventIngestService_0
        };
    end, {
        v38.diagService,
        l_eventIngestService_0
    });
    local v43 = v2.useMemo(function()
        return l_setupFireEvent_0({
            infoForAllEvents = {
                uid = v38.localUserId,
                recommendationSessionId = v38.recommendationSessionId
            },
            analytics = v42
        });
    end, {
        v38.localUserId,
        v38.recommendationSessionId
    });
    local v47 = v2.useCallback(function(v44, v45)
        if not v39[v44.id] then
            v43(l_EventNames_0.UserSeen, {
                presence = v44.userPresenceType or v44.presence and v44.presence.userPresenceType,
                absolutePosition = v45.absolutePosition,
                friendId = v44.id,
                friendStatus = v44,
                recommendationContextType = v44.contextType,
                recommendationRank = v44.rank,
                isRecommendation = not not v44.contextType or false,
                userId = v44.id,
                universeId = v44
            });
            v40(function(v46)
                return {
                    seenUsers = l_Dictionary_0.join(v46, {
                        [v44.id] = true
                    })
                };
            end);
        end;
    end, {
        v39,
        v43
    });
    local v48 = if not l_getFFlagUpdateFriendCarousel10ft_0() then nil else l_useUiModeInfo_0();
    local v49 = v4.Hooks.useDispatch();
    local v51 = v2.useCallback(function(v50)
        v49(v3.openPlayerContextualMenu(v50));
    end, {
        v38.openPlayerContextualMenu,
        v49
    });
    return v2.createElement(v17.Context.Provider, {
        value = {
            fireEvent = v43
        }
    }, {
        carousel = v2.createElement(v6, {
            carousel = v38.carousel,
            carouselProps = v38.carouselProps,
            showToast = v38.showToast,
            onSuccessfulRender = v38.onSuccessfulRender,
            onSeeAllFriends = if not l_FFlagMoveCarouselHeader_0 then nil else if not l_FFlagMoveCarouselHeader_0 then nil else v2.useCallback(function()
                v43(l_EventNames_0.ViewAllFriends, {
                    friendCount = v38.friendCount
                });
                v49(l_NavigateDown_0({
                    name = l_AppPage_0.ViewFriends,
                    extraProps = {
                        navigateToFriendsLandingEventStart = {
                            startPage = l_AppPage_0.Home,
                            startTime = os.clock()
                        }
                    }
                }));
            end, {
                v43,
                v38.friendCount
            }),
            friendsAndRecList = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then if l_FFlagFriendsCarouselPaginatedFriendsEnabled_0 and v38.carouselList then v38.carouselList else v38.friendsAndRecList else nil,
            users = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else if l_FFlagFriendsCarouselPaginatedFriendsEnabled_0 and v38.carouselList then v38.carouselList else v38.friendsAndRecList,
            fetchNext = if not not l_FFlagFriendsCarouselPaginatedFriendsEnabled_0 and l_FFlagFriendsCarouselPagination_0 then v38.fetchMoreFriends else nil,
            socialOnboardingBtns = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else v38.socialOnboardingBtns,
            addFriendsBtn = if not l_FFlagFriendsCarouselInjectSocialBtn_0 then nil else v38.addFriendsBtn,
            paginatedCarouselEnabled = if not v33 then nil else v38.carouselList ~= nil,
            friendCount = v38.friendCount,
            friendRequestCount = v38.friendRequestCount,
            fetchingStatus = v38.fetchingStatus,
            userSeen = v47,
            onFindFriendsTileActivated = v2.useCallback(function()
                v38.navigateFromAddFriends();
                v43(l_EventNames_0.ViewAddFriends, {
                    friendCount = v38.friendCount,
                    recommendationLimit = true,
                    recommendationCount = v38.recommendationCount,
                    requestCount = v38.friendRequestCount,
                    showContactImporterModal = not not v38.showContactImporter or false
                });
            end, {
                v43,
                v38.navigateFromAddFriends,
                v38.friendCount,
                v38.recommendationCount,
                v38.friendRequestCount
            }),
            onUserTileActivated = v2.useCallback(function(v52, v53)
                v43(l_EventNames_0.UserPressed, {
                    presence = v52.userPresenceType or v52.presence and v52.presence.userPresenceType,
                    absolutePosition = v53.absolutePosition,
                    friendId = v52.id,
                    friendStatus = v52,
                    recommendationContextType = v52.contextType,
                    recommendationRank = v52.rank,
                    isRecommendation = not not v52.contextType or false,
                    universeId = v52
                });
                if not (not l_getFFlagUpdateFriendCarousel10ft_0() or not v48) and v48.uiMode == l_UiMode_0.TenFoot then
                    local _ = nil;
                    (if not v30 then v38.openPlayerContextualMenu else v51)({
                        subjectUserId = v52.id,
                        subjectPresence = if not v52.userPresenceType then nil else {
                            locationString = v52.lastLocation,
                            locationPlaceId = v52.placeId,
                            locationRootPlaceId = v52.rootPlaceId,
                            locationUniverseId = v52.universeId,
                            status = l_convertUserPresenceTypeToString_0(v52.userPresenceType)
                        },
                        robloxFriendshipStatus = v23(v52),
                        friendshipOriginSourceType = l_Enums_0.FriendshipOriginSourceType.FriendRecommendations.rawValue()
                    });
                    return ;
                else
                    local v55 = nil;
                    v55 = not not l_FFlagContactRecs_0 and v52.contextType == l_RecommendationContextType_0.Contacts;
                    v38.openProfilePeekView(v52.id, {
                        openJoinable = true,
                        profilePeekViewProps = {
                            resetPeekView = true,
                            absolutePosition = v53.absolutePosition,
                            isHomePageCarousel = true,
                            source = v12.HomepageFriendsCarouselSourceName,
                            recommendationRank = v52.rank,
                            isRecommendation = not not v52.contextType or false,
                            mutualFriendsCount = not not v52.mutualFriendsList and #v52.mutualFriendsList or 0,
                            recommendationSessionId = v38.recommendationSessionId,
                            recommendationContextType = if not v52.contextType then nil else v52.contextType.rawValue(),
                            contextualInfoType = l_getRecommendationContextualInfoType_0(v52),
                            contactProps = if not v55 then nil else {
                                contactId = v52.entityId,
                                contactName = v52.entityDisplayName,
                                avatarImageUrl = if not v52.thumbnailEntities then nil else v52.thumbnailEntities.avatarImageUrl
                            },
                            profileType = if not v55 then nil else "FromContacts"
                        },
                        contextualMenuProps = {
                            user = v52,
                            absolutePosition = v53.absolutePosition,
                            positionIndex = v53.positionIndex,
                            anchorSpaceSize = v53.anchorSpaceSize,
                            anchorSpacePosition = v53.anchorSpacePosition,
                            onOpen = v53.onOpen,
                            onClose = v53.onClose,
                            source = v12.HomepageFriendsCarouselSourceName
                        }
                    });
                    return ;
                end;
            end, {
                v43,
                v38.openProfilePeekView,
                v38.recommendationSessionId
            }),
            showNewBadge = not not v38.showContactImporter and (v38.showNewAddFriendsUIVariant or false),
            showNewAddFriendsUIVariant = v38.showNewAddFriendsUIVariant
        })
    });
end;
if not l_FFlagFriendsCarouselPaginatedFriendsEnabled_0 then
    return l_RoactRodux_0.connect(v7, v8)(v56);
else
    return (l_RoactRodux_0.connect(v7, v8)((v9(v56))));
end;