local l_script_FirstAncestor_0 = script:FindFirstAncestor("InGameAssetReporting");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local _ = require(l_script_FirstAncestor_0.Analysis.SceneAnalysis);
local l_getHumanoidDescription_0 = require(l_Parent_0.GetHumanoidDescription).getHumanoidDescription;
local l_HttpService_0 = game:GetService("HttpService");
local v5 = {
    Variant = {
        IGARv1 = "IGARv1"
    }
};
transformTargetPlayers = function(v6, v7)
    local v8 = {};
    if v7 == 0 then
        v7 = 1;
    end;
    for _, v10 in ipairs(v6) do
        local l_player_0 = v10.player;
        local l_count_0 = v10.count;
        local v13, v14 = l_getHumanoidDescription_0(l_player_0.UserId);
        table.insert(v8, {
            userId = l_player_0.UserId,
            hitCount = l_count_0,
            hitPercentage = l_count_0 / v7,
            humanoidDescription = v13,
            humanoidDescriptionStatus = v14
        });
    end;
    return v8;
end;
serializeTargetPlayersIntoTagValues = function(v15)
    local v16 = {};
    for _, v18 in ipairs(v15) do
        table.insert(v16, {
            data = l_HttpService_0:JSONEncode(v18)
        });
    end;
    return v16;
end;
buildReport = function(v19, v20, v21, v22, v23)
    local v24 = {
        tags = {
            ENTRY_POINT = {
                valueList = {
                    {
                        data = "in-experience"
                    }
                }
            },
            SUBMITTER_USER_ID = {
                valueList = {
                    {
                        data = tostring(v19)
                    }
                }
            },
            REPORTED_ABUSE_CATEGORY = {
                valueList = {
                    {
                        data = v22
                    }
                }
            },
            PLACE_ID = {
                valueList = {
                    {
                        data = tostring(game.PlaceId)
                    }
                }
            },
            REPORTER_COMMENT = {
                valueList = {
                    {
                        data = v23
                    }
                }
            },
            REPORTED_ABUSE_VECTOR = {
                valueList = {
                    {
                        data = "multi"
                    }
                }
            },
            VARIANT = {
                valueList = {
                    {
                        data = v5.Variant.IGARv1
                    }
                }
            },
            IGAR_REPORT_TARGET_PLAYERS = {
                valueList = serializeTargetPlayersIntoTagValues(transformTargetPlayers(v21.extractedPlayers, v21.stats.raycastCompletedCount))
            },
            IGAR_REPORT_TARGET_ASSETS = {
                valueList = {
                    {
                        data = l_HttpService_0:JSONEncode(v21.extractedAssets)
                    }
                }
            },
            IGAR_EXTRACTION_STATS = {
                valueList = {
                    {
                        data = l_HttpService_0:JSONEncode(v21.stats)
                    }
                }
            }
        }
    };
    if v20 then
        v24.tags.SCREENSHOT_ID = {
            valueList = {
                {
                    data = v20
                }
            }
        };
    end;
    return l_HttpService_0:JSONEncode(v24);
end;
return buildReport;


local l_Parent_0 = script:FindFirstAncestor("InGameAssetReporting").Parent.Parent;
local l_CoreGui_0 = game:GetService("CoreGui");
local l_CorePackages_0 = game:GetService("CorePackages");
local l_ExperienceStateCaptureService_0 = game:GetService("ExperienceStateCaptureService");
local l_LocalizationService_0 = game:GetService("LocalizationService");
local v5 = require(l_Parent_0.React);
local v6 = require(l_CorePackages_0.Roact);
local l_StyleProviderWithDefaultTheme_0 = require(l_Parent_0.Style).StyleProviderWithDefaultTheme;
local l_Localization_0 = require(l_Parent_0.InExperienceLocales).Localization;
local l_LocalizationProvider_0 = require(l_Parent_0.Localization).LocalizationProvider;
local v10 = require(script.Analysis.SceneAnalysis);
local v11 = require(script.InGameAssetReportUI.Components.InGameAssetReportMode);
return {
    interpretAnnotation = v10.interpretAnnotation,
    extractItemsFromInterpretations = v10.extractItemsFromInterpretations,
    __setRandomGenerator = v10.__setRandomGenerator,
    initialize = function()
        v6.mount(v5.createElement("ScreenGui", {
            IgnoreGuiInset = true,
            OnTopOfCoreBlur = false,
            ZIndexBehavior = Enum.ZIndexBehavior.Sibling
        }, {
            LocalizationProvider = v6.createElement(l_LocalizationProvider_0, {
                localization = l_Localization_0.new(l_LocalizationService_0.RobloxLocaleId)
            }, {
                StyleProvider = v5.createElement(l_StyleProviderWithDefaultTheme_0, {
                    withDarkTheme = true
                }, {
                    InGameAssetReportUI = v6.createElement(v11, {
                        backAction = function()
                            l_ExperienceStateCaptureService_0:ToggleCaptureMode();
                        end,
                        onReportComplete = function()
                            l_ExperienceStateCaptureService_0:ToggleCaptureMode();
                        end,
                        getIsSmallPortraitMode = function(v12)
                            local v13 = false;
                            if v12.X < v12.Y then
                                v13 = v12.X < 800;
                            end;
                            return v13;
                        end
                    })
                })
            })
        }), l_CoreGui_0, "InGameAssetReportMode");
    end,
    ["jest.config"] = script["jest.config"]
};


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


return {
    projects = {
        game:GetService("CoreGui"):WaitForChild("RobloxGui").Modules.InGameMenu
    }
};


return {
    MouseAndKeyboard = "MouseAndKeyboard",
    Touch = "Touch",
    Gamepad = "Gamepad",
    None = "None"
};


local v0 = require(script.Parent.InputTypeConstants);
return {
    [Enum.UserInputType.MouseButton1] = v0.MouseAndKeyboard,
    [Enum.UserInputType.MouseButton2] = v0.MouseAndKeyboard,
    [Enum.UserInputType.MouseButton3] = v0.MouseAndKeyboard,
    [Enum.UserInputType.MouseWheel] = v0.MouseAndKeyboard,
    [Enum.UserInputType.MouseMovement] = v0.MouseAndKeyboard,
    [Enum.UserInputType.Keyboard] = v0.MouseAndKeyboard,
    [Enum.UserInputType.TextInput] = v0.MouseAndKeyboard,
    [Enum.UserInputType.Gamepad1] = v0.Gamepad,
    [Enum.UserInputType.Gamepad2] = v0.Gamepad,
    [Enum.UserInputType.Gamepad3] = v0.Gamepad,
    [Enum.UserInputType.Gamepad4] = v0.Gamepad,
    [Enum.UserInputType.Gamepad5] = v0.Gamepad,
    [Enum.UserInputType.Gamepad6] = v0.Gamepad,
    [Enum.UserInputType.Gamepad7] = v0.Gamepad,
    [Enum.UserInputType.Gamepad8] = v0.Gamepad,
    [Enum.UserInputType.Touch] = v0.Touch,
    [Enum.UserInputType.None] = v0.None
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(script.Parent.InputTypeConstants);
local v2 = require(script.Parent.InputTypeMap);
local l_getFFlagDebugLuaAppAlwaysUseGamepad_0 = require(l_Parent_0.SharedFlags).getFFlagDebugLuaAppAlwaysUseGamepad;
return function(v4)
    if not l_getFFlagDebugLuaAppAlwaysUseGamepad_0() then
        return v2[v4] or v1.None;
    else
        return v1.Gamepad;
    end;
end;


return {
    InputTypeConstants = require(script.InputTypeConstants),
    getInputGroup = require(script.getInputGroup)
};


local _ = require(script:FindFirstAncestor("InputUi").Parent.Style);
return function(_, _)
    return {
        designWidth = 1920,
        imageWidth = 580,
        imageHeight = 450,
        textContainerWidth = 850,
        horizontalInnerPadding = 78,
        verticalPadding = 96
    };
end;


local v0 = require(script:FindFirstAncestor("InputUi").Parent.React);
local l_Players_0 = game:GetService("Players");
local v2 = nil;
pcall(function()
    v2 = game:GetService("ThirdPartyUserService");
end);
local v3 = require(script.Parent.GamepadDisconnectedModalView);
local function _()
    local v4 = "";
    if v2 then
        v4 = v2:GetUserPlatformName();
    end;
    if not (v4 ~= "") or v4 == nil then
        local l_LocalPlayer_0 = l_Players_0.LocalPlayer;
        if l_LocalPlayer_0 then
            v4 = l_LocalPlayer_0.DisplayName or l_LocalPlayer_0.Name;
        end;
    end;
    return v4 or "";
end;
return function(_)
    local v8 = "";
    if v2 then
        v8 = v2:GetUserPlatformName();
    end;
    if not (v8 ~= "") or v8 == nil then
        local l_LocalPlayer_1 = l_Players_0.LocalPlayer;
        if l_LocalPlayer_1 then
            v8 = l_LocalPlayer_1.DisplayName or l_LocalPlayer_1.Name;
        end;
    end;
    return v0.createElement(v3, {
        username = v8 or ""
    });
end;


local l_MemStorageService_0 = game:GetService("MemStorageService");
local l_UserInputService_0 = game:GetService("UserInputService");
local l_Parent_0 = script:FindFirstAncestor("InputUi").Parent;
local v3 = require(l_Parent_0.React);
local v4 = require(l_Parent_0.UIBlox);
local l_Images_0 = v4.App.ImageSet.Images;
local l_ImageSetLabel_0 = v4.Core.ImageSet.ImageSetLabel;
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local l_useDesignTokens_0 = require(l_Parent_0.Style).useDesignTokens;
local _ = require(script.Parent.GamepadDisconnectTokenMapper);
local l_game_EngineFeature_0 = game:GetEngineFeature("GamepadMessageKeyEngineFeature");
return function(v11)
    local v12 = l_useDesignTokens_0();
    local l_Color3_0 = v12.Semantic.Color.Text.Emphasis.Color3;
    local l_Transparency_0 = v12.Semantic.Color.Text.Emphasis.Transparency;
    local l_GamepadDisconnect_0 = v12.LuaApps.GamepadDisconnect;
    local l_designWidth_0 = l_GamepadDisconnect_0.designWidth;
    local l_imageWidth_0 = l_GamepadDisconnect_0.imageWidth;
    local l_imageHeight_0 = l_GamepadDisconnect_0.imageHeight;
    local l_textContainerWidth_0 = l_GamepadDisconnect_0.textContainerWidth;
    local l_horizontalInnerPadding_0 = l_GamepadDisconnect_0.horizontalInnerPadding;
    local l_verticalPadding_0 = l_GamepadDisconnect_0.verticalPadding;
    local v22 = "";
    if not l_game_EngineFeature_0 then
        v22 = "Feature.GamepadDisconnect.Label.Message";
    else
        v22 = l_MemStorageService_0:GetItem("GamepadDisconnectMessageKey");
        if v22 == "" then
            v22 = "Feature.GamepadDisconnect.Label.MessageGeneric";
        end;
    end;
    local v23 = l_useLocalization_0({
        title = "Feature.GamepadDisconnect.Label.Title",
        message = v22
    });
    return v3.createElement("Frame", {
        AnchorPoint = Vector2.new(0.5, 0.5),
        Position = UDim2.fromScale(0.5, 0.5),
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundTransparency = 1,
        BorderSizePixel = 0,
        Active = true
    }, {
        Modal = v3.createElement("Frame", {
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.fromScale(0.5, 0.5),
            Size = UDim2.new(1, 0, 1, -l_verticalPadding_0 * 2),
            BackgroundTransparency = v12.Semantic.Color.BackgroundUi.Contrast.Transparency,
            BackgroundColor3 = v12.Semantic.Color.BackgroundUi.Contrast.Color3,
            BorderSizePixel = 0
        }, {
            Content = v3.createElement("Frame", {
                AnchorPoint = Vector2.new(0.5, 0.5),
                Position = UDim2.fromScale(0.5, 0.5),
                Size = UDim2.new(1, 0, 0, l_imageHeight_0),
                BackgroundTransparency = 1,
                BorderSizePixel = 0
            }, {
                UIListLayout = v3.createElement("UIListLayout", {
                    FillDirection = Enum.FillDirection.Horizontal,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center,
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    VerticalAlignment = Enum.VerticalAlignment.Center,
                    Padding = UDim.new(l_horizontalInnerPadding_0 / l_designWidth_0, 0)
                }),
                ControllerImage = v3.createElement("ImageLabel", {
                    Image = "rbxasset://textures/ui/Gamepad/Controller.png",
                    Size = UDim2.new(l_imageWidth_0 / l_designWidth_0, 0, 0, l_imageHeight_0),
                    BackgroundTransparency = 1,
                    LayoutOrder = 1
                }, {
                    UIAspectRatioConstraint = v3.createElement("UIAspectRatioConstraint", {
                        AspectRatio = l_imageWidth_0 / l_imageHeight_0
                    }),
                    UISizeConstraint = v3.createElement("UISizeConstraint", {
                        MaxSize = Vector2.new(l_imageWidth_0, l_imageHeight_0),
                        MinSize = Vector2.new(l_imageWidth_0 * 0.5, l_imageHeight_0 * 0.5)
                    })
                }),
                TextContainer = v3.createElement("Frame", {
                    AutomaticSize = Enum.AutomaticSize.Y,
                    Size = UDim2.new(l_textContainerWidth_0 / l_designWidth_0, 0, 0, l_imageHeight_0),
                    BackgroundTransparency = 1,
                    LayoutOrder = 2
                }, {
                    UIListLayout = v3.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Vertical,
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        HorizontalAlignment = Enum.HorizontalAlignment.Left,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        Padding = UDim.new(0, v12.Global.Space_400)
                    }),
                    TitleRow = v3.createElement("Frame", {
                        AutomaticSize = Enum.AutomaticSize.Y,
                        Size = UDim2.fromScale(1, 0),
                        BackgroundTransparency = 1,
                        LayoutOrder = 1
                    }, {
                        UIListLayout = v3.createElement("UIListLayout", {
                            FillDirection = Enum.FillDirection.Horizontal,
                            SortOrder = Enum.SortOrder.LayoutOrder,
                            VerticalAlignment = Enum.VerticalAlignment.Center,
                            HorizontalAlignment = Enum.HorizontalAlignment.Left,
                            Padding = UDim.new(24 / l_textContainerWidth_0, 0)
                        }),
                        Icon = v3.createElement(l_ImageSetLabel_0, {
                            Image = l_Images_0["icons/menu/about_large"],
                            BackgroundTransparency = 1,
                            LayoutOrder = 1,
                            Size = UDim2.fromOffset(v12.Global.Size_600, v12.Global.Size_600)
                        }),
                        Title = v3.createElement("TextLabel", {
                            Text = v23.title,
                            BackgroundTransparency = 1,
                            TextColor3 = l_Color3_0,
                            TextTransparency = l_Transparency_0,
                            TextSize = v12.Semantic.Typography.Title.FontSize,
                            Font = v12.Semantic.Typography.Title.Font,
                            LayoutOrder = 2,
                            TextXAlignment = Enum.TextXAlignment.Left
                        })
                    }),
                    Message = v3.createElement("TextLabel", {
                        Text = string.format(v23.message, v11.username, l_UserInputService_0:GetStringForKeyCode(Enum.KeyCode.A)),
                        AutomaticSize = Enum.AutomaticSize.XY,
                        Size = UDim2.fromOffset(0, 0),
                        BackgroundTransparency = 1,
                        TextColor3 = l_Color3_0,
                        TextTransparency = l_Transparency_0,
                        TextSize = v12.Semantic.Typography.Subheader.FontSize,
                        Font = v12.Semantic.Typography.Subheader.Font,
                        LayoutOrder = 2,
                        TextWrapped = true,
                        TextXAlignment = Enum.TextXAlignment.Left
                    })
                })
            })
        })
    });
end;


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


local l_Parent_0 = script:FindFirstAncestor("InputUi").Parent;
local v1 = require(l_Parent_0.React);
local l_useUserExperiment_0 = require(l_Parent_0.RoactAppExperiment).useUserExperiment;
local l_MemStorageService_0 = game:GetService("MemStorageService");
local v4 = require(script.Parent.GetFFlagShowGamepadDisconnectDialog);
local function _()
    return l_useUserExperiment_0({
        "PlatformExcellence.QualityImprovement.Consoles"
    }, function(v5)
        return (v5["PlatformExcellence.QualityImprovement.Consoles"] or {}).showDisconnectDialog;
    end);
end;
return function(v7, v8)
    local v10 = l_useUserExperiment_0({
        "PlatformExcellence.QualityImprovement.Consoles"
    }, function(v9)
        return (v9["PlatformExcellence.QualityImprovement.Consoles"] or {}).showDisconnectDialog;
    end);
    v1.useEffect(function()
        if not v10 and not v4() then
            return function()
            end;
        else
            local v12 = l_MemStorageService_0:BindAndFire("ActiveGamepadConnected", function(v11)
                if v11 == "false" then
                    v8();
                    return ;
                else
                    v7();
                    return ;
                end;
            end);
            return function()
                v12:Disconnect();
            end;
        end;
    end, {
        v7,
        v8,
        v10
    });
end;


local l_Parent_0 = script:FindFirstAncestor("InputUi").Parent;
local v1 = require(l_Parent_0.React);
local l_useInputType_0 = require(l_Parent_0.RoactUtils).Hooks.useInputType;
local l_InputTypeConstants_0 = require(l_Parent_0.InputType).InputTypeConstants;
local v4 = require(script.Parent.useGamepadConnectedEvent);
local l_GetFFlagGamepadAnalytics_0 = require(l_Parent_0.SharedFlags).GetFFlagGamepadAnalytics;
return function(v6, v7, v8, v9)
    local v10 = l_useInputType_0() == l_InputTypeConstants_0.Gamepad;
    local v11 = v1.useRef(false);
    v4(v1.useCallback(function()
        if v11.current then
            if l_GetFFlagGamepadAnalytics_0() then
                v8:sendEventDeferred(v9 or "", "gamepadConnectionEvent", {
                    connectionEvent = "gamepadReconnected"
                });
            end;
            v11.current = false;
            v7();
        end;
    end, {
        v7
    }), (v1.useCallback(function()
        if v10 then
            if not v11.current then
                if l_GetFFlagGamepadAnalytics_0() then
                    v8:sendEventDeferred(v9 or "", "gamepadConnectionEvent", {
                        connectionEvent = "gamepadDisconnected"
                    });
                end;
                v11.current = true;
                v6();
            end;
            return ;
        else
            return ;
        end;
    end, {
        v10,
        v6
    })));
end;


local v0 = require(script.Parent.Parent.ArgCheck);
return function(v1, v2)
    assert(typeof(v1) == "Vector2", "getSafeAreaSize expects screenSize to be a Vector2");
    assert(type(v2) == "table", "getSafeAreaSize expects guiInset to be a table");
    v0.isNonNegativeNumber(v2.left, "getSafeAreaSize: guiInset.left");
    v0.isNonNegativeNumber(v2.right, "getSafeAreaSize: guiInset.right");
    v0.isNonNegativeNumber(v2.top, "getSafeAreaSize: guiInset.top");
    v0.isNonNegativeNumber(v2.bottom, "getSafeAreaSize: guiInset.bottom");
    local v3 = (v1.X - v2.left) - v2.right;
    local v4 = (v1.Y - v2.top) - v2.bottom;
    v0.isNonNegativeNumber(v3, "getSafeAreaSize: safeAreaWidth");
    v0.isNonNegativeNumber(v4, "getSafeAreaSize: safeAreaHeight");
    return UDim2.new(0, v3, 0, v4);
end;


return {
    ["jest.config"] = script["jest.config"],
    Gamepad = {
        useGamepadDisconnectOverlayEffect = require(script.Gamepad.useGamepadDisconnectOverlayEffect),
        GamepadDisconnectedModal = require(script.Gamepad.GamepadDisconnectedModal),
        GamepadDisconnectedModalView = require(script.Gamepad.GamepadDisconnectedModalView),
        GamepadDisconnectTokenMapper = require(script.Gamepad.GamepadDisconnectTokenMapper)
    },
    getSafeAreaSize = require(script.getSafeAreaSize)
};


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


local l_Parent_0 = script:FindFirstAncestor("InteractionFeedback").Parent;
local l_FeedbackManagerInjectionContext_0 = require(l_Parent_0.UIBlox).Core.Control.FeedbackManagerInjectionContext;
local v2 = require(l_Parent_0.React);
local v3 = require(script.Parent.useTriggerFeedback);
return function(v4)
    return v2.createElement(l_FeedbackManagerInjectionContext_0.Provider, {
        value = v3()
    }, v4.children);
end;


return {
    InteractionFeedbackContext = require(script.InteractionFeedbackContext),
    useTriggerFeedback = require(script.useTriggerFeedback),
    withTriggerFeedback = require(script.withTriggerFeedback),
    FeedbackManagerInjectionContextProvider = require(script.FeedbackManagerInjectionContextProvider),
    ["jest.config"] = script["jest.config"]
};


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


local v0 = require(script:FindFirstAncestor("InteractionFeedback").Parent.SoundManager);
local l_SoundManager_0 = v0.SoundManager;
local l_Sounds_0 = v0.Sounds;
local l_SoundGroups_0 = v0.SoundGroups;
local _ = require(script.Parent.InteractionFeedbackContext);
local v5 = require(script.Parent.triggerHaptic);
l_SoundManager_0.init();
return function(v6, v7, v8, v9)
    if not v8 then
        error("No config table was provided to InteractionFeedbackManager. Something is wrong.");
    end;
    local v10 = v8[v6];
    if v10 then
        local v11 = v10[v7];
        if v11 then
            local l_Sound_0 = v11.Sound;
            if l_Sound_0 then
                local v13 = l_Sounds_0[l_Sound_0];
                if not v13 then
                    error("Sound " .. l_Sound_0 .. " not found in SoundManager given contextKey: " .. v6 .. " and interactionType: " .. tostring(v7) .. ". Please check the Sounds.lua file.");
                end;
                l_SoundManager_0:PlaySound(v13.Name, {}, l_SoundGroups_0.AppBackground);
            end;
            local l_Haptic_0 = v11.Haptic;
            if l_Haptic_0 then
                v5(l_Haptic_0, v9);
            end;
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
end;


local l_Parent_0 = script:FindFirstAncestor("InteractionFeedback").Parent;
local l_HapticService_0 = game:GetService("HapticService");
local _ = require(script.Parent.InteractionFeedbackContext);
local l_IsVRAppBuild_0 = require(l_Parent_0.AppCommonLib).IsVRAppBuild;
local v4 = {};
local v5 = {};
local function v10(v6, v7)
    for _, v9 in ipairs(v6) do
        l_HapticService_0:SetMotor(Enum.UserInputType.Gamepad1, v9, v7.intensity);
        v4[v9] = os.clock();
        v5[v9] = game:GetService("RunService").Heartbeat:Connect(function()
            if v4[v9] then
                if v7.duration < os.clock() - v4[v9] then
                    l_HapticService_0:SetMotor(Enum.UserInputType.Gamepad1, v9, 0);
                    v5[v9]:Disconnect();
                    v5[v9] = nil;
                    v4[v9] = nil;
                end;
                return ;
            else
                return ;
            end;
        end);
    end;
end;
local function v12(v11)
    if not l_IsVRAppBuild_0() then
        if v11 == "Touch" then
            return {
                Enum.VibrationMotor.Large
            };
        elseif v11 == "Gamepad" then
            return {
                Enum.VibrationMotor.Large,
                Enum.VibrationMotor.Small
            };
        else
            return {};
        end;
    else
        return {
            Enum.VibrationMotor.LeftHand,
            Enum.VibrationMotor.RightHand
        };
    end;
end;
return function(v13, v14)
    v10(v12(v14), v13);
end;


local l_Parent_0 = script:FindFirstAncestor("InteractionFeedback").Parent;
local v1 = require(script.Parent.triggerFeedback);
local v2 = require(script.Parent.InteractionFeedbackContext);
local l_useInputType_0 = require(l_Parent_0.RoactUtils).Hooks.useInputType;
local v4 = require(l_Parent_0.React);
return function()
    local v5 = v4.useContext(v2);
    local v6 = l_useInputType_0();
    if not v5 then
        error("useTriggerFeedback must be used within an InteractionFeedbackProvider");
    end;
    return (v4.useCallback(function(v7, v8)
        return v1(v7, v8, v5, v6);
    end, {
        v5,
        v6
    }));
end;


local l_Parent_0 = script:FindFirstAncestor("InteractionFeedback").Parent;
local v1 = require(l_Parent_0.Cryo);
local v2 = require(l_Parent_0.React);
local v3 = require(script.Parent.useTriggerFeedback);
return function(v4)
    return function(v5)
        return v2.createElement(v4, (v1.Dictionary.join(v5, {
            triggerFeedback = v3()
        })));
    end;
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local l_default_0 = require(l_CorePackages_0.Workspace.Packages.LoggingProtocol).default;
local l_RunService_0 = require(l_CorePackages_0.Workspace.Packages.MockableProxyServices).RunService;
local v3 = require(script.Parent.IntervalPerformanceTrackerTelemetryConfig);
game:DefineFastFlag("DebugPrintIntervalPerformanceTrackerResults", false);
local l_GetFFlagFixInvertedIntervalFPSMetric_0 = require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFFlagFixInvertedIntervalFPSMetric;
local v5 = math.random(0, 1000) < require(l_CorePackages_0.Workspace.Packages.SharedFlags).GetFIntIntervalPerformanceTrackerEventStream();
local v15 = {
    averageFPS = {
        reducer = function(v6)
            return {
                framesCount = v6.framesCount == nil and 0 or v6.framesCount + 1,
                startTime = v6.startTime or tick()
            };
        end,
        getResult = function(v7)
            if not l_GetFFlagFixInvertedIntervalFPSMetric_0() then
                if (v7.framesCount ~= nil and v7.framesCount > 0) and v7.startTime ~= nil then
                    return (tick() - v7.startTime) / v7.framesCount;
                else
                    return nil;
                end;
            else
                local v8 = tick();
                if not ((v7.framesCount ~= nil and v7.framesCount ~= 0) and v7.startTime ~= nil) or v8 == v7.startTime then
                    return nil;
                else
                    return v7.framesCount / (v8 - v7.startTime);
                end;
            end;
        end
    },
    framesCount = {
        reducer = function(v9)
            return {
                framesCount = v9.framesCount == nil and 0 or v9.framesCount + 1
            };
        end,
        getResult = function(v10)
            return v10.framesCount;
        end
    },
    longestFrameTime = {
        reducer = function(v11)
            return {
                framesCount = v11.framesCount == nil and 0 or v11.framesCount + 1,
                longestFrameTime = (not (v11.longestFrameTime ~= nil) or v11.previousTime == nil) and 0 or math.max(v11.longestFrameTime, tick() - v11.previousTime),
                previousTime = tick()
            };
        end,
        getResult = function(v12)
            if v12.framesCount < 1 then
                return nil;
            else
                return v12.longestFrameTime;
            end;
        end
    },
    duration = {
        reducer = function(v13)
            return {
                startTime = v13.startTime or tick()
            };
        end,
        getResult = function(v14)
            return tick() - v14.startTime;
        end
    }
};
local v16 = {};
local v17 = {};
for v18, _ in v15, nil, nil do
    v16[v18] = v18;
    table.insert(v17, v18);
end;
local v20 = {};
v20.__index = v20;
v20.new = function(v21, v22)
    local v23 = {
        _metricsData = {},
        _timeout = v21,
        _startTime = nil,
        _metricsToTrack = v22
    };
    setmetatable(v23, v20);
    return v23;
end;
v20.getMetricsToTrack = function(v24)
    if v24._metricsToTrack and #v24._metricsToTrack > 0 then
        return v24._metricsToTrack;
    else
        return v17;
    end;
end;
v20.hasReachedTimeout = function(v25)
    if v25._timeout ~= nil and v25._startTime ~= nil then
        return v25._timeout < tick() - v25._startTime;
    else
        return false;
    end;
end;
v20.updateMetrics = function(v26)
    if v26._startTime == nil then
        v26._startTime = tick();
    end;
    for _, v28 in (v26:getMetricsToTrack()), nil, nil do
        local v29 = v15[v28];
        if v29 then
            if not v26._metricsData[v28] then
                v26._metricsData[v28] = {};
            end;
            v26._metricsData[v28] = v29.reducer(v26._metricsData[v28]);
        end;
    end;
end;
v20.getResult = function(v30)
    local v31 = {};
    for _, v33 in (v30:getMetricsToTrack()), nil, nil do
        local v34 = v15[v33];
        if v34 then
            v31[v33] = v34.getResult(v30._metricsData[v33]);
        end;
    end;
    return v31;
end;
local v35 = {};
v35.__index = v35;
v35.new = function()
    local v36 = {
        _metricsTrackers = v15,
        _intervals = {},
        _renderSteppedConnection = nil,
        availableMetricsEnum = v16
    };
    setmetatable(v36, v35);
    return v36;
end;
v35._updateIntervals = function(v37)
    for v38, v39 in v37._intervals, nil, nil do
        v39:updateMetrics();
        if v39:hasReachedTimeout() then
            v37:stopAndLogTracking(v38);
        end;
    end;
end;
v35.startTracking = function(v40, v41, v42, v43)
    if v5 then
        if not v40._intervals[v41] then
            local v44 = v20.new(v42, v43);
            v40._intervals[v41] = v44;
            v44:updateMetrics();
        end;
        if not v40._renderSteppedConnection then
            v40._renderSteppedConnection = l_RunService_0.RenderStepped:Connect(function()
                v40:_updateIntervals();
            end);
        end;
        return ;
    else
        return ;
    end;
end;
v35.stopAndLogTracking = function(v45, v46)
    if v5 then
        local v47 = v45._intervals[v46];
        if v47 then
            local v48 = v47:getResult();
            local v49 = {
                intervalName = v46
            };
            local v50 = 0;
            for v51, v52 in v48, nil, nil do
                if v52 ~= nil then
                    v50 = v50 + 1;
                end;
                v49[v51] = v52;
            end;
            if v50 > 0 then
                l_default_0:logRobloxTelemetryEvent(v3, nil, v49);
                if game:GetFastFlag("DebugPrintIntervalPerformanceTrackerResults") then
                    print("IntervalPerformanceTracker:" .. tostring(v46) .. " logged with results:");
                    for v53, v54 in v49, nil, nil do
                        print("\t" .. tostring(v53) .. " = " .. tostring(v54));
                    end;
                end;
            end;
            v45._intervals[v46] = nil;
        end;
        v45:disconnectUnusedRenderStepped();
        return ;
    else
        return ;
    end;
end;
v35.cancelTracking = function(v55, v56)
    if v5 then
        v55._intervals[v56] = nil;
        v55:disconnectUnusedRenderStepped();
        return ;
    else
        return ;
    end;
end;
v35.disconnectUnusedRenderStepped = function(v57)
    if not (next(v57._intervals) or not v57._renderSteppedConnection) then
        v57._renderSteppedConnection:Disconnect();
        v57._renderSteppedConnection = nil;
    end;
end;
v35.class = v35;
return v35.new();


local v0 = require(game:GetService("CorePackages").Workspace.Packages.LoggingProtocol);
game:DefineFastInt("IntervalPerformanceTrackerEventThrottleHundrethsPercent", 10000);
return {
    eventName = "luaIntervalPerformanceTrackerTelemetry",
    backends = {
        v0.TelemetryBackends.Points
    },
    throttlingPercentage = game:GetFastInt("IntervalPerformanceTrackerEventThrottleHundrethsPercent"),
    lastUpdated = {
        24,
        1,
        10
    },
    description = "Report lua performance tracking metrics to Grafana.",
    links = "https://roblox.atlassian.net/wiki/spaces/USER/pages/2379481365/Parallelize+work+through+the+new+multi-threading+API"
};


return {
    IntervalPerformanceTracker = require(script.IntervalPerformanceTracker),
    ["jest.config"] = script["jest.config"]
};


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


local v0 = require(script.Parent.Parent.dependencies);
local l_EventIngestService_0 = game:GetService("EventIngestService");
local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local l_Analytics_0 = v0.Analytics;
local v4 = l_Analytics_0.Analytics.new(l_RbxAnalyticsService_0);
local l_getPlatformTarget_0 = l_Analytics_0.getPlatformTarget;
return {
    Diag = v4.Diag,
    EventStream = {
        setRBXEventStream = function(_, v7, v8, v9)
            l_EventIngestService_0:SetRBXEventStream(l_getPlatformTarget_0(), v7, v8, v9 or {});
        end
    }
};


return {
    [require(script.Parent.EventNames).InvisibleModeInteracted] = {
        name = game:DefineFastString("InvisibleModeInteracted", "InvisibleModeInteracted")
    }
};


return {
    InvisibleModeInteracted = "InvisibleModeInteracted",
    InvisibleModeTooltipInteracted = "InvisibleModeTooltipInteracted",
    InvisibleModeTooltipSeen = "InvisibleModeTooltipSeen",
    InvisibleModeViewed = "InvisibleModeViewed",
    InvisibleStateSeen = "InvisibleStateSeen"
};


local l_Parent_0 = script.Parent.Parent;
local l_Parent_1 = l_Parent_0.Parent;
local l_Dash_0 = require(l_Parent_0.dependencies).Dash;
local l_Enums_0 = require(l_Parent_1.SocialLuaAnalytics).Analytics.Enums;
local l_Contexts_0 = l_Enums_0.Contexts;
local l_EventTypes_0 = l_Enums_0.EventTypes;
local v6 = require(script.Parent.EventNames);
return {
    [v6.InvisibleModeInteracted] = {
        context = l_Contexts_0.ProfileCard,
        eventType = l_EventTypes_0.InvisibleModeInteracted,
        formatRulesForAdditionalInfo = {
            invisibleModeActivated = l_Dash_0.identity,
            surface = l_Dash_0.identity
        }
    },
    [v6.InvisibleModeTooltipInteracted] = {
        context = l_Contexts_0.ProfileCard,
        eventType = l_EventTypes_0.InvisibleModeTooltipInteracted,
        formatRulesForAdditionalInfo = {
            surface = l_Dash_0.identity
        }
    },
    [v6.InvisibleModeTooltipSeen] = {
        context = l_Contexts_0.ProfileCard,
        eventType = l_EventTypes_0.InvisibleModeTooltipSeen,
        formatRulesForAdditionalInfo = {
            surface = l_Dash_0.identity
        }
    },
    [v6.InvisibleModeViewed] = {
        context = l_Contexts_0.ProfileCard,
        eventType = l_EventTypes_0.InvisibleModeViewed,
        formatRulesForAdditionalInfo = {
            surface = l_Dash_0.identity
        }
    },
    [v6.InvisibleStateSeen] = {
        context = l_Contexts_0.PresenceIndicator,
        eventType = l_EventTypes_0.InvisibleModeFeedback,
        formatRulesForAdditionalInfo = {
            surface = l_Dash_0.identity
        }
    }
};


local l_Context_0 = require(script.Parent.dependencies).SocialLibraries.Context;
local v1 = require(script.InvisibleModeAnalytics);
return {
    connect = l_Context_0.getConnect(v1),
    Context = v1,
    EventNames = require(script.EventNames),
    setupFireEvent = require(script.setupFireEvent),
    Surface = {
        HomePage = "homepage",
        ProfileCard = "profileCard",
        SocialTab = "socialTab",
        UniversalAppHeaderBar = "universalAppHeaderBar"
    },
    useAnalytics = require(script.useAnalytics),
    wrapWithAnalyticsProvider = require(script.wrapWithAnalyticsProvider)
};


local l_SocialLuaAnalytics_0 = require(script.Parent.Parent.dependencies).SocialLuaAnalytics;
local l_fireDiagCounter_0 = l_SocialLuaAnalytics_0.Analytics.FireEvent.fireDiagCounter;
local l_fireEventStream_0 = l_SocialLuaAnalytics_0.Analytics.FireEvent.fireEventStream;
local v3 = require(script.Parent.DiagActionList);
local _ = require(script.Parent.EventNames);
local v5 = require(script.Parent.EventStreamActionList);
return function(v6)
    local v7 = l_fireEventStream_0({
        eventStreamImpl = v6.analytics.EventStream,
        eventList = v5,
        infoForAllEvents = v6.infoForAllEvents
    });
    local v8 = l_fireDiagCounter_0({
        diagImpl = v6.analytics.Diag,
        eventList = v3
    });
    return function(v9, v10)
        if v3[v9] then
            v8(v9);
        end;
        return v7(v9, v10);
    end;
end;


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


local v0 = require(script.Parent.Parent.dependencies);
local l_React_0 = v0.React;
local v2 = require(script.Parent.AnalyticsService);
local v3 = require(script.Parent.InvisibleModeAnalytics);
local v4 = require(script.Parent.setupFireEvent);
local v5 = require(script.Parent.useAnalytics);
local l_useLocalUserId_0 = v0.Hooks.useLocalUserId;
return function(v7)
    return function(v8)
        if not v5() then
            return l_React_0.createElement(v3.Provider, {
                value = {
                    fireEvent = v8._fireEventOverride or v4({
                        analytics = v2,
                        infoForAllEvents = {
                            uid = l_useLocalUserId_0(),
                            source = "SelfPresenceIndicator"
                        }
                    })
                }
            }, {
                InvisibleModeComponentWrapped = l_React_0.createElement(v7, v8)
            });
        else
            return l_React_0.createElement(v7, v8);
        end;
    end;
end;


local l_Parent_0 = script.Parent.Parent;
local l_CoreGui_0 = game:GetService("CoreGui");
local l_LocalizationService_0 = game:GetService("LocalizationService");
local v3 = require(l_Parent_0.dependencies);
local l_PresenceReducer_0 = v3.PresenceReducer;
local l_React_0 = v3.React;
local l_Text_0 = v3.Text;
local l_UIBlox_0 = v3.UIBlox;
local l_Images_0 = l_UIBlox_0.App.ImageSet.Images;
local l_PlayerContext_0 = l_UIBlox_0.App.Indicator.PlayerContext;
local l_TooltipOrientation_0 = l_UIBlox_0.App.Dialog.Enum.TooltipOrientation;
local l_withTooltip_0 = l_UIBlox_0.App.Dialog.TooltipV2.withTooltip;
local l_useEffectOnce_0 = v3.Hooks.useEffectOnce;
local l_useLocalization_0 = v3.Hooks.useLocalization;
local l_useStyle_0 = v3.Hooks.useStyle;
local l_PresenceType_0 = l_PresenceReducer_0.Enums.PresenceType;
local v16 = require(l_Parent_0.Analytics);
local l_EventNames_0 = v16.EventNames;
local l_useAnalytics_0 = v16.useAnalytics;
local function v23(v19, v20)
    if v19 then
        assert(typeof(v19) == "string", "expiryTimeIso is a string");
        local l_status_0, l_result_0 = pcall(function()
            return DateTime.fromIsoDate(v19);
        end);
        if l_status_0 and l_result_0 then
            assert(typeof(l_result_0) == "DateTime", "expiryDateTime is a DateTime");
            return l_result_0:FormatLocalTime("hh:mm A", v20);
        else
            return nil;
        end;
    else
        return nil;
    end;
end;
return function(v24)
    local v25 = l_useAnalytics_0();
    local v26 = l_useStyle_0();
    local l_CaptionHeader_0 = v26.Font.CaptionHeader;
    assert(v25 ~= nil, "SelfPresenceStatusIndicator must be wrapped in an AnalyticsProvider");
    local v28 = v23(v24.invisibleModeExpiry, l_LocalizationService_0.RobloxLocaleId);
    local v29 = l_useLocalization_0({
        gotIt = "Feature.Avatar.Action.GotIt",
        invisible = "Common.Presence.Label.Invisible",
        invisibleUntil = {
            "Feature.Profile.Label.InvisibleUntilTime";
            time = v28
        },
        online = "Common.Presence.Label.Online",
        tooltip = {
            "Feature.Profile.Tooltip.InvisibleMode";
            time = v28
        }
    });
    local l_Color_0 = v26.Theme.OnlineStatus.Color;
    local v31 = l_Images_0["component_assets/circle_25"];
    local l_online_0 = v29.online;
    local l_Transparency_0 = v26.Theme.OnlineStatus.Transparency;
    if v24.presenceType == l_PresenceType_0.Invisible then
        l_Color_0 = v26.Theme.OfflineStatus.Color;
        v31 = l_Images_0["component_assets/circle_26_stroke_3"];
        l_online_0 = if not v28 then v29.invisible else v29.invisibleUntil;
        l_Transparency_0 = v26.Theme.OfflineStatus.Transparency;
    end;
    local v34 = v24.showText or false;
    local v35 = l_React_0.useMemo(function()
        if v34 then
            return (10 + l_Text_0.GetTextWidth(l_online_0, l_CaptionHeader_0.Font, l_CaptionHeader_0.RelativeSize * v26.Font.BaseSize)) + 12;
        else
            return 18;
        end;
    end, {
        v34,
        l_online_0,
        v26
    });
    local v36 = {
        bodyText = v29.tooltip,
        buttonProps = {
            onActivated = v24.tooltipActivated,
            text = v29.gotIt
        }
    };
    local v37 = {
        active = v24.showTooltip or false,
        DisplayOrder = 10,
        guiTarget = l_CoreGui_0,
        preferredOrientation = l_TooltipOrientation_0.Top
    };
    l_useEffectOnce_0(function()
        v25.fireEvent(l_EventNames_0.InvisibleStateSeen, {
            surface = v24.surface
        });
    end, v24.presenceType == l_PresenceType_0.Invisible);
    l_useEffectOnce_0(function()
        v25.fireEvent(l_EventNames_0.InvisibleModeTooltipSeen, {
            surface = v24.surface
        });
    end, v24.showTooltip == true);
    return l_withTooltip_0(v36, v37, function(v38)
        return l_React_0.createElement("Frame", {
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            LayoutOrder = v24.layoutOrder,
            Size = UDim2.fromOffset(v35, 0)
        }, {
            TooltipTriggerPoint = l_React_0.createElement("Frame", {
                AnchorPoint = Vector2.new(0.5, 0),
                BackgroundTransparency = 1,
                Position = UDim2.new(0.5, 0, 0, 12),
                Size = UDim2.fromOffset(0, 0),
                [l_React_0.Change.AbsolutePosition] = v38,
                [l_React_0.Change.AbsoluteSize] = v38
            }),
            PlayerContext = l_React_0.createElement(l_PlayerContext_0, {
                fontStyle = l_CaptionHeader_0,
                icon = v31,
                iconColor = l_Color_0,
                iconSize = UDim2.fromOffset(10, 10),
                iconTransparency = l_Transparency_0,
                onActivated = v24.onActivated,
                text = if not v34 then nil else l_online_0
            })
        });
    end);
end;


local l_Parent_0 = script.Parent.Parent;
local l_AppStorageService_0 = game:GetService("AppStorageService");
local v2 = require(l_Parent_0.dependencies);
local l_NetworkingPresence_0 = v2.NetworkingPresence;
local l_Otter_0 = v2.Otter;
local l_PresenceReducer_0 = v2.PresenceReducer;
local l_React_0 = v2.React;
local l_SocialLibraries_0 = v2.SocialLibraries;
local l_UIBlox_0 = v2.UIBlox;
local l_ContextualMenu_0 = l_UIBlox_0.App.Menu.ContextualMenu;
local l_Images_0 = l_UIBlox_0.App.ImageSet.Images;
local l_ImageSetLabel_0 = l_UIBlox_0.Core.ImageSet.ImageSetLabel;
local l_MenuDirection_0 = l_UIBlox_0.App.Menu.MenuDirection;
local l_getDeepValue_0 = l_SocialLibraries_0.Dictionary.getDeepValue;
local l_useDispatch_0 = v2.Hooks.useDispatch;
local l_useEffectOnce_0 = v2.Hooks.useEffectOnce;
local l_useLocalization_0 = v2.Hooks.useLocalization;
local l_useLocalUserId_0 = v2.Hooks.useLocalUserId;
local l_useScreenSize_0 = v2.Hooks.useScreenSize;
local l_useSelector_0 = v2.Hooks.useSelector;
local l_useStyle_0 = v2.Hooks.useStyle;
local l_useTopBarHeight_0 = v2.Hooks.useTopBarHeight;
local l_PresenceType_0 = l_PresenceReducer_0.Enums.PresenceType;
local v23 = require(l_Parent_0.Analytics);
local l_EventNames_0 = v23.EventNames;
local v25 = require(script.Parent.SelfPresenceStatusIndicator);
local l_useAnalytics_0 = v23.useAnalytics;
local l_FFlagInvisibleModeSetupEnabled_0 = require(l_Parent_0.Flags).FFlagInvisibleModeSetupEnabled;
local l_FIntInvisibleExpiryTimeHours_0 = require(l_Parent_0.Flags).FIntInvisibleExpiryTimeHours;
local v29 = l_Images_0["icons/actions/truncationCollapse_small"];
local v30 = l_Images_0["icons/actions/truncationExpand_small"];
local v31 = {
    motorCallback = l_Otter_0.instant,
    open = {
        targetValue = 1
    },
    close = {
        targetValue = 0
    }
};
local function _(v32)
    v32 = v32 or l_AppStorageService_0;
    assert(v32 ~= nil, "AppStorageService is not nil");
    local l_status_0, l_result_0 = pcall(function()
        return v32:GetItem("InvisibleModeTooltipShown");
    end);
    if not l_status_0 or l_result_0 == nil then
        return false;
    else
        return l_result_0 == "true";
    end;
end;
local function _(v36, v37)
    v36 = v36 or l_AppStorageService_0;
    assert(v36 ~= nil, "AppStorageService is not nil");
    pcall(function()
        v36:SetItem("InvisibleModeTooltipShown", (tostring(v37)));
        v36:Flush();
    end);
end;
return (v23.wrapWithAnalyticsProvider(function(v39)
    local v40 = l_useAnalytics_0();
    local v41 = l_useDispatch_0();
    local v42 = l_useLocalization_0({
        invisibleWithTimeout = {
            "Feature.Profile.Label.InvisibleWithTimeout";
            hours = l_FIntInvisibleExpiryTimeHours_0
        },
        online = "Common.Presence.Label.Online",
        somethingIsWrong = "Feature.Toast.NetworkingError.SomethingIsWrong"
    });
    local v43 = l_useScreenSize_0();
    local v44 = l_useTopBarHeight_0();
    assert(v40 ~= nil, "SelfPresenceStatusIndicatorContainer must be wrapped in AnalyticsProvider");
    if v43 == nil then
        v43 = Vector2.new(0, 0);
    end;
    local v45 = l_React_0.useCallback(function()
        if v39.showToast ~= nil then
            v39.showToast(v42.somethingIsWrong);
        end;
    end, {
        v39.showToast,
        v42.somethingIsWrong
    });
    local v46 = l_useLocalUserId_0();
    local v48 = l_useSelector_0(function(v47)
        if v46 == nil then
            return nil;
        elseif l_FFlagInvisibleModeSetupEnabled_0 or v47.InvisibleMode then
            return (l_getDeepValue_0(v47, string.format("InvisibleMode.Presence.byUserId.%s", v46)));
        else
            return nil;
        end;
    end);
    l_React_0.useEffect(function()
        if v46 and v48 == nil then
            v41(l_NetworkingPresence_0.GetPresencesFromUserIds.API({
                v46
            })):catch(v45);
        end;
    end, {
        v46,
        v48
    });
    local v49 = nil;
    local l_Online_0 = l_PresenceType_0.Online;
    if v48 then
        v49 = v48.invisibleModeExpiry;
        l_Online_0 = v48.userPresenceType;
    end;
    local function v52(v51)
        v41(l_NetworkingPresence_0.SetInvisibilityStatus.API(v51)):andThen(function()
            v41(l_NetworkingPresence_0.GetPresencesFromUserIds.API({
                v46
            }));
        end):catch(v45);
    end;
    local v53, v54 = l_React_0.useState(false);
    local v55 = l_useStyle_0();
    local v56 = if not v53 then v55.Theme.TextDefault else v55.Theme.TextEmphasis;
    local v57 = l_React_0.useCallback(function()
        v54(not v53);
    end, {
        v53,
        v54
    });
    local v58, v59 = l_React_0.useState(UDim2.fromScale(0, 0));
    local v60 = l_React_0.useCallback(function()
        v40.fireEvent(l_EventNames_0.InvisibleModeInteracted, {
            invisibleModeActivated = "true",
            surface = v39.surface
        });
        if l_Online_0 ~= l_PresenceType_0.Invisible then
            v52(true);
        end;
        v57();
    end, {
        v52,
        l_Online_0,
        v57
    });
    local v61 = l_React_0.useCallback(function()
        if l_Online_0 ~= l_PresenceType_0.Online then
            v40.fireEvent(l_EventNames_0.InvisibleModeInteracted, {
                invisibleModeActivated = "false",
                surface = v39.surface
            });
            v52(false);
        end;
        v57();
    end, {
        v52,
        l_Online_0,
        v57
    });
    local v66 = l_React_0.useCallback(function(v62)
        local l_AbsoluteSize_0 = v62.AbsoluteSize;
        local v64 = UDim.new(0, l_AbsoluteSize_0.Y);
        local v65 = UDim.new(0, l_AbsoluteSize_0.X);
        if v39.width then
            v65 = v39.width;
        end;
        v59(UDim2.new(v65, v64));
    end, {
        v39.width,
        v59
    });
    local v67, v68 = l_React_0.useState(0);
    local v71 = l_React_0.useCallback(function(v69)
        local v70 = math.floor(v69.AbsolutePosition.Y);
        if v70 ~= v67 then
            v68(v70);
            if v53 then
                v54(false);
            end;
        end;
    end, {
        v67,
        v68,
        v53,
        v54
    });
    local v72, v73 = l_React_0.useState(false);
    l_React_0.useEffect(function()
        if not (l_Online_0 == l_PresenceType_0.Invisible) or not v39.showText then
            v73(false);
            return ;
        else
            local v74 = v39.appStorageService or l_AppStorageService_0;
            assert(v74 ~= nil, "AppStorageService is not nil");
            local l_status_1, l_result_1 = pcall(function()
                return v74:GetItem("InvisibleModeTooltipShown");
            end);
            local v77;
            if not l_status_1 or l_result_1 == nil then
                v77 = false;
                --[[ close >= 1 ]]
            else
                v77 = l_result_1 == "true";
                --[[ close >= 1 ]]
            end;
            v73(not v77);
            return ;
        end;
    end, {
        l_Online_0,
        v39.showText
    });
    local v81 = l_React_0.useCallback(function()
        v40.fireEvent(l_EventNames_0.InvisibleModeTooltipInteracted, {
            surface = v39.surface
        });
        v73(false);
        local v78 = v39.appStorageService or l_AppStorageService_0;
        assert(v78 ~= nil, "AppStorageService is not nil");
        local l_pcall_0 = pcall;
        local v80 = true;
        l_pcall_0(function()
            v78:SetItem("InvisibleModeTooltipShown", (tostring(v80)));
            v78:Flush();
        end);
    end, {
        v73
    });
    local l_l_useEffectOnce_0_0 = l_useEffectOnce_0;
    local function v83()
        v40.fireEvent(l_EventNames_0.InvisibleModeViewed, {
            surface = v39.surface
        });
    end;
    local v84 = false;
    if v39.showText == true then
        v84 = v39.isInteractable == true;
    end;
    l_l_useEffectOnce_0_0(v83, v84);
    l_l_useEffectOnce_0_0 = l_MenuDirection_0.Up;
    v83 = 0;
    v84 = -2;
    if v67 <= v44 + 114 then
        l_l_useEffectOnce_0_0 = l_MenuDirection_0.Down;
        v83 = 1;
        v84 = 2;
    end;
    return l_React_0.createElement("Frame", {
        BackgroundTransparency = 1,
        LayoutOrder = v39.layoutOrder,
        Size = v58,
        ZIndex = v39.ZIndex,
        [l_React_0.Change.AbsolutePosition] = v71
    }, {
        ContextualMenuFrame = l_React_0.createElement("Frame", {
            BackgroundTransparency = 1,
            Position = UDim2.new(0, -24, v83, 0),
            Size = UDim2.fromScale(1, 0)
        }, {
            MaxWidthConstraint = l_React_0.createElement("UISizeConstraint", {
                MaxSize = Vector2.new(360, 0),
                MinSize = Vector2.new(250, 0)
            }),
            ContextMenu = l_React_0.createElement(l_ContextualMenu_0, {
                buttonProps = {
                    {
                        onActivated = v61,
                        selected = l_Online_0 ~= l_PresenceType_0.Invisible,
                        text = v42.online
                    },
                    {
                        onActivated = v60,
                        selected = l_Online_0 == l_PresenceType_0.Invisible,
                        text = v42.invisibleWithTimeout
                    }
                },
                closeBackgroundVisible = false,
                horizontalAlignment = Enum.HorizontalAlignment.Left,
                menuDirection = l_l_useEffectOnce_0_0,
                motorOverrideOptions = v31,
                onDismiss = v57,
                open = v53,
                openPositionY = UDim.new(1, -v84),
                screenSize = v43
            })
        }),
        InteractableArea = l_React_0.createElement("ImageButton", {
            AutomaticSize = Enum.AutomaticSize.XY,
            BackgroundTransparency = 1,
            Position = UDim2.fromScale(0, 0),
            Size = UDim2.fromScale(0, 0),
            [l_React_0.Change.AbsoluteSize] = v66,
            [l_React_0.Event.Activated] = if not v39.isInteractable then nil else v57
        }, {
            UIListLayout = l_React_0.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                HorizontalAlignment = Enum.HorizontalAlignment.Left,
                Padding = UDim.new(0, 4),
                SortOrder = Enum.SortOrder.LayoutOrder,
                VerticalAlignment = Enum.VerticalAlignment.Center
            }),
            StatusIndicator = l_React_0.createElement(v25, {
                invisibleModeExpiry = v49,
                layoutOrder = 1,
                onActivated = if not v53 then nil else v57,
                presenceType = l_Online_0,
                showText = v39.showText,
                showTooltip = v72,
                surface = v39.surface,
                tooltipActivated = v81
            }),
            InteractionIcon = if not v39.isInteractable then nil else l_React_0.createElement(l_ImageSetLabel_0, {
                BackgroundTransparency = 1,
                Image = if not v53 then v30 else v29,
                ImageColor3 = v56.Color,
                LayoutOrder = 2,
                Size = UDim2.fromOffset(16, 16)
            })
        })
    });
end));


return {
    SelfPresenceStatusIndicator = require(script.SelfPresenceStatusIndicator),
    SelfPresenceStatusIndicatorContainer = require(script.SelfPresenceStatusIndicatorContainer)
};


local l_useUserExperiment_0 = require(script:FindFirstAncestor("InvisibleMode").dependencies).RoactAppExperiment.useUserExperiment;
local v1 = game:DefineFastFlag("InvisibleModeEnabledForAll3", false);
local v2 = game:DefineFastFlag("InvisibleModeExperimentEnabled5", false);
local v3 = game:DefineFastString("InvisibleModeExperimentLayer", "Social.Friends");
local function v5(v4)
    if not v1 then
        if v2 then
            return ((v4 or {})[v3] or {}).invisibleModeAllowed == true;
        else
            return false;
        end;
    else
        return true;
    end;
end;
return {
    ExperimentLayer = v3,
    FFlagInvisibleModeEnabledForAll = v1,
    FFlagInvisibleModeExperimentEnabled = v2,
    isExperimentEnabled = v5,
    useIsExperimentEnabled = function()
        return l_useUserExperiment_0({
            v3
        }, v5);
    end
};


local v0 = require(script.InvisibleModeIXP);
local l_FFlagInvisibleModeEnabledForAll_0 = v0.FFlagInvisibleModeEnabledForAll;
local l_FFlagInvisibleModeExperimentEnabled_0 = v0.FFlagInvisibleModeExperimentEnabled;
return {
    FFlagInvisibleModeEnabledForAll = l_FFlagInvisibleModeEnabledForAll_0,
    FFlagInvisibleModeExperimentEnabled = l_FFlagInvisibleModeExperimentEnabled_0,
    FFlagInvisibleModeSetupEnabled = l_FFlagInvisibleModeEnabledForAll_0 or l_FFlagInvisibleModeExperimentEnabled_0,
    FIntInvisibleExpiryTimeHours = require(script.FIntInvisibleExpiryTimeHours),
    InvisibleModeIXP = v0
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("InvisibleMode");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.Dash);
local v3 = require(l_Parent_0.Dev.Roact);
local v4 = require(l_Parent_0.Dev.SocialTestHelpers);
local v5 = require(l_Parent_0.UIBlox);
local v6 = require(l_script_FirstAncestor_0.Analytics);
local v7 = require(l_Parent_0.Dev.RobloxAppUIBloxConfig);
local l_mockLocale_0 = v4.StoryHelpers.mockLocale;
v5.init(v7);
local l_AppStyleProvider_0 = v5.App.Style.AppStyleProvider;
v3.setGlobalConfig({
    elementTracing = true
});
local v10 = {
    Default = {
        themeName = "Light",
        fontName = "Gotham"
    },
    Light = {
        themeName = "Light",
        fontName = "Gotham"
    },
    Dark = {
        themeName = "Dark",
        fontName = "Gotham"
    }
};
local v11 = {
    language = "en-us"
};
return {
    name = "InvisibleMode",
    storyRoot = l_script_FirstAncestor_0,
    roact = v3,
    mapDefinition = function(v12)
        return v2.join(v12, {
            controls = v2.join(v11, v12.controls)
        });
    end,
    mapStory = function(v13)
        return function(v14)
            return v3.createElement(v6.Context.Provider, {
                value = {
                    fireEvent = function()
                    end
                }
            }, {
                Element = v3.createElement(l_AppStyleProvider_0, {
                    style = not not v14 and v10[v14.theme] or v10.Default
                }, {
                    Child = l_mockLocale_0(v13, v14)
                })
            });
        end;
    end
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.dependencies);
local v2 = require(l_Parent_0.devDependencies);
local l_Dash_0 = v1.Dash;
local l_LocalizationProvider_0 = v1.LocalizationProvider;
local l_Mock_0 = v2.Mock;
local l_React_0 = v1.React;
local l_Rodux_0 = v1.Rodux;
local l_createTreeWithProviders_0 = v2.UnitTestHelpers.createTreeWithProviders;
local l_UIBlox_0 = v1.UIBlox;
local l_withStyle_0 = l_UIBlox_0.Style.withStyle;
local v11 = require(l_Parent_0.Analytics);
local v12 = l_Rodux_0.Store.new(l_Rodux_0.combineReducers({
    InvisibleMode = require(l_Parent_0.installReducer)()
}), {}, {
    l_Rodux_0.thunkMiddleware
});
return function(v13, v14)
    local v15 = l_Mock_0.MagicMock.new({
        name = "Localization"
    });
    v15.Format = function(_, v17, _)
        return v17;
    end;
    local l_noop_0 = l_Dash_0.noop;
    local l_v12_0 = v12;
    if v14 then
        if v14.fireEvent then
            l_noop_0 = v14.fireEvent;
        end;
        if v14.store then
            l_v12_0 = v14.store;
        end;
    end;
    return l_createTreeWithProviders_0(function()
        return l_React_0.createElement(v11.Context.Provider, {
            value = {
                fireEvent = l_noop_0
            }
        }, {
            StyleProvider = l_withStyle_0(function(v21)
                return l_React_0.createElement(l_UIBlox_0.Style.Provider, {
                    style = l_Dash_0.join(v21, {
                        Theme = l_Dash_0.join(v21.Theme, {
                            OfflineStatus = {
                                Color = Color3.fromRGB(1, 1, 1)
                            },
                            OnlineStatus = {
                                Color = Color3.fromRGB(0, 255, 0)
                            }
                        })
                    })
                }, {
                    localizationProvider = l_React_0.createElement(l_LocalizationProvider_0, {
                        localization = v15
                    }, {
                        child = v13
                    })
                });
            end)
        });
    end, {
        store = l_v12_0
    });
end;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Analytics);
local v2 = require(l_Parent_0.AppCommonLib);
local v3 = require(l_Parent_0.Dash);
local l_Hooks_0 = require(l_Parent_0.RoactUtils).Hooks;
local v5 = require(l_Parent_0.Localization);
local v6 = require(l_Parent_0.LuaSocialLibrariesDeps);
local v7 = require(l_Parent_0.Otter);
local v8 = require(l_Parent_0.Promise);
local v9 = require(l_Parent_0.React);
local v10 = require(l_Parent_0.RoactAppExperiment);
local v11 = require(l_Parent_0.RoactRodux);
local v12 = require(l_Parent_0.RobloxAppHooks);
local v13 = require(l_Parent_0.Rodux);
local l_RoduxNetworking_0 = v6.RoduxNetworking;
local v15 = require(l_Parent_0.SocialLuaAnalytics);
local v16 = require(l_Parent_0.UIBlox);
local l_httpRequest_0 = v6.httpRequest;
local l_RoduxPresence_0 = v6.RoduxPresence;
local l_useDispatch_0 = l_Hooks_0.RoactRodux.useDispatch;
local l_useEffectOnce_0 = l_Hooks_0.useEffectOnce;
local l_useLocalization_0 = v5.Hooks.useLocalization;
local l_useSelector_0 = l_Hooks_0.RoactRodux.useSelector;
local l_useStyle_0 = v16.Core.Style.useStyle;
local v24 = l_RoduxPresence_0.config({
    keyPath = "InvisibleMode.Presence"
});
local v25 = l_RoduxNetworking_0.config({
    keyPath = "InvisibleMode.NetworkStatus",
    networkImpl = l_httpRequest_0.config({
        requestFunction = l_httpRequest_0.requestFunctions.HttpRbxApi
    })
});
return {
    Analytics = v1,
    Dash = v3,
    Hooks = {
        useDispatch = l_useDispatch_0,
        useEffectOnce = l_useEffectOnce_0,
        useLocalization = l_useLocalization_0,
        useLocalUserId = v12.useLocalUserId,
        useScreenSize = v12.useScreenSize,
        useSelector = l_useSelector_0,
        useStyle = l_useStyle_0,
        useTopBarHeight = v12.useTopBarHeight
    },
    LocalizationProvider = v5.LocalizationProvider,
    LuaSocialLibrariesDeps = v6,
    NetworkingPresence = v6.NetworkingPresence.config({
        roduxNetworking = v25
    }),
    Otter = v7,
    PresenceReducer = v24,
    Promise = v8,
    React = v9,
    RoactAppExperiment = v10,
    RoactRodux = v11,
    Rodux = v13,
    RoduxNetworking = v25,
    SocialLibraries = v6.SocialLibraries.config({}),
    SocialLuaAnalytics = v15,
    Text = v2.Text,
    UIBlox = v16
};


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Dev.JestGlobals);
return {
    Mock = require(l_Parent_0.LuaSocialLibrariesDeps).Mock,
    afterAll = v1.afterAll,
    beforeAll = v1.beforeAll,
    describe = v1.describe,
    expect = v1.expect,
    it = v1.it,
    jest = v1.jest,
    jestExpect = v1.expect,
    ReactRoblox = require(l_Parent_0.Dev.ReactRoblox),
    Rhodium = require(l_Parent_0.Dev.Rhodium),
    RhodiumHelpers = function()
        return require(l_Parent_0.Dev.RhodiumHelpers);
    end,
    Style = require(l_Parent_0.Dev.Style),
    UnitTestHelpers = require(l_Parent_0.Dev.SocialTestHelpers).TestHelpers
};


return {
    ["jest.config"] = script["jest.config"],
    Analytics = require(script.Analytics),
    Components = require(script.Components),
    Flags = require(script.Flags),
    installReducer = require(script.installReducer),
    RoduxKey = "InvisibleMode"
};


local v0 = require(script.Parent.Parent.dependencies);
local l_Rodux_0 = v0.Rodux;
return function()
    return l_Rodux_0.combineReducers({
        Presence = v0.PresenceReducer.installReducer(),
        NetworkStatus = v0.RoduxNetworking.installReducer()
    });
end;


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


local v0 = require(script.Parent.dependencies);
local l_Roact_0 = v0.Roact;
local l_RoduxShareLinks_0 = v0.RoduxShareLinks;
local l_UIBlox_0 = v0.UIBlox;
local l_t_0 = v0.t;
local l_withLocalization_0 = v0.withLocalization;
local l_ExperienceInviteStatus_0 = l_RoduxShareLinks_0.Enums.ExperienceInviteStatus;
local l_ButtonType_0 = l_UIBlox_0.App.Button.Enum.ButtonType;
local l_IconSize_0 = l_UIBlox_0.App.Constant.IconSize;
local l_InteractiveAlert_0 = l_UIBlox_0.App.Dialog.Alert.InteractiveAlert;
local l_LoadingSpinner_0 = l_UIBlox_0.App.Loading.LoadingSpinner;
local v11 = l_Roact_0.Component:extend("InviteLinkExpiredModal");
local _ = require(script.Parent.inviteLinkExpiredMapStateToProps);
v11.defaultProps = {
    closeModal = function()
    end,
    launchGame = function()
    end
};
v11.validateProps = l_t_0.interface({
    closeModal = l_t_0.callback,
    launchGame = l_t_0.callback,
    linkStatus = l_t_0.string,
    experienceName = l_t_0.string,
    isLoading = l_t_0.boolean,
    screenSize = l_t_0.Vector2
});
v11.render = function(v13)
    local l_props_0 = v13.props;
    local v15 = nil;
    local v16 = nil;
    if l_ExperienceInviteStatus_0.fromRawValue(l_props_0.linkStatus) == l_ExperienceInviteStatus_0.InviterNotInExperience then
        v15 = "Feature.SocialShare.Label.InviterNotHereError";
        v16 = "Feature.SocialShare.Description.InviterNotHereError";
    else
        v15 = "Feature.SocialShare.Label.InviteExpiredError";
        v16 = "Feature.SocialShare.Description.InviteExpiredError";
    end;
    return l_withLocalization_0({
        titleText = v15,
        bodyText = {
            v16;
            experienceName = l_props_0.experienceName
        },
        confirmButtonText = "Feature.Chat.Drawer.Join",
        cancelButtonText = "Feature.Friends.Label.Cancel"
    })(function(v17)
        return l_Roact_0.createElement(l_InteractiveAlert_0, {
            screenSize = l_props_0.screenSize,
            title = v17.titleText,
            bodyText = if l_props_0.isLoading then nil else v17.bodyText,
            middleContent = not not l_props_0.isLoading and function()
                return l_Roact_0.createElement("Frame", {
                    Size = UDim2.new(1, 0, 0, 48),
                    BackgroundTransparency = 1
                }, {
                    Spinner = l_Roact_0.createElement(l_LoadingSpinner_0, {
                        anchorPoint = Vector2.new(0.5, 0.5),
                        position = UDim2.fromScale(0.5, 0.5),
                        size = UDim2.fromOffset(l_IconSize_0.Large, l_IconSize_0.Large)
                    })
                });
            end or nil,
            buttonStackInfo = {
                buttons = {
                    {
                        buttonType = nil,
                        props = {
                            text = v17.cancelButtonText,
                            onActivated = function()
                                l_props_0.closeModal(false);
                            end
                        }
                    },
                    {
                        buttonType = l_ButtonType_0.PrimarySystem,
                        props = {
                            text = v17.confirmButtonText,
                            onActivated = function()
                                l_props_0.launchGame();
                                l_props_0.closeModal(true);
                            end
                        }
                    }
                }
            }
        });
    end);
end;
return v11;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("InviteLinkExpiredModal");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.UIBlox);
v2.init(require(l_Parent_0.Dev.RobloxAppUIBloxConfig));
local l_mockLocale_0 = require(l_Parent_0.Dev.SocialTestHelpers).StoryHelpers.mockLocale;
local v4 = require(l_script_FirstAncestor_0.dependencies);
local l_Roact_0 = v4.Roact;
local l_llama_0 = v4.llama;
local l_AppStyleProvider_0 = v2.App.Style.AppStyleProvider;
l_Roact_0.setGlobalConfig({
    propValidation = true,
    elementTracing = true
});
local v8 = {
    Default = {
        themeName = "Light",
        fontName = "Gotham"
    },
    Light = {
        themeName = "Light",
        fontName = "Gotham"
    },
    Dark = {
        themeName = "Dark",
        fontName = "Gotham"
    }
};
local v9 = {
    language = "en-us"
};
return {
    name = "InviteLinkExpiredModal",
    storyRoot = script,
    roact = l_Roact_0,
    mapDefinition = function(v10)
        return l_llama_0.Dictionary.join(v10, {
            controls = l_llama_0.Dictionary.join(v9, v10.controls or {})
        });
    end,
    mapStory = function(v11)
        return function(v12)
            return l_Roact_0.createElement(l_AppStyleProvider_0, {
                style = not not v12 and v8[v12.theme] or v8.Default
            }, {
                Child = l_mockLocale_0(v11, v12)
            });
        end;
    end
};


local v0 = require(script:FindFirstAncestor("InviteLinkExpiredModal").dependencies);
local l_Roact_0 = v0.Roact;
local l_RoactNavigation_0 = v0.RoactNavigation;
local l_RoactRodux_0 = v0.RoactRodux;
local l_Dash_0 = v0.Dash;
local l_NetworkingGames_0 = v0.NetworkingGames;
local l_t_0 = v0.t;
local v7 = require(script.Parent.InviteLinkExpiredModal);
local v8 = require(script.Parent.inviteLinkExpiredMapStateToProps);
local v9 = l_Roact_0.Component:extend("InviteLinkExpiredModalContainer");
v9.validateProps = l_t_0.interface({
    navigation = l_t_0.table,
    closeModal = l_t_0.callback,
    launchGame = l_t_0.callback,
    universeId = l_t_0.string
});
v9.init = function(v10)
    v10.closeModal = function(v11)
        local l_props_0 = v10.props;
        l_props_0.closeModal(v11);
        l_props_0.navigation.pop();
    end;
end;
v9.didMount = function(v13)
    if #v13.props.universeId > 0 then
        v13.props.getExperiencesDetails(v13.props.universeId);
    end;
end;
v9.render = function(v14)
    return l_Roact_0.createElement(v7, l_Dash_0.join(v14.props, {
        closeModal = v14.closeModal
    }));
end;
return l_RoactNavigation_0.withNavigation((l_RoactRodux_0.connect(v8, function(v15)
    return {
        getExperiencesDetails = function(v16)
            return v15(l_NetworkingGames_0.GetExperiencesDetails.API({
                v16
            }));
        end
    };
end)(v9)));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("InviteLinkExpiredModal");
local v1 = require(l_script_FirstAncestor_0.dependencies);
require(l_script_FirstAncestor_0.devDependencies).JestGlobals.beforeAll(function(_)
    v1.RoduxNetworking.setNetworkImpl(function(v3)
        error(string.format("Should have replaced network implementation for url: %s", (tostring(v3))));
    end);
end);


local l_Parent_0 = script:FindFirstAncestor("InviteLinkExpiredModal").Parent;
local v1 = require(l_Parent_0.LuaSocialLibrariesDeps);
local v2 = require(l_Parent_0.Lumberyak).Logger.new(nil, "InviteLinkExpiredModal"):new("InviteLinkExpiredModal Networking");
local v3 = game:DefineFastInt("InviteLinkExpiredModalHttpRetryCount", 3);
local l_httpRequest_0 = v1.httpRequest;
local v10 = v1.RoduxNetworking.config({
    keyPath = "InviteLinkExpiredModal.NetworkStatus",
    networkImpl = l_httpRequest_0.config({
        requestFunction = function(v5, v6, v7)
            v2:info("Fetching: {}", string.format("[ requestMethod = %q, url = %q ]", v6, v5));
            return l_httpRequest_0.requestFunctions.HttpRbxApi(v5, v6, v7);
        end,
        postRequestFunction = function(v8, v9)
            v2:debug("Returned: {}", string.format("[ requestMethod = %q, url = %q, statusCode = %s, body = %s ]", v9.requestMethod, v9.url, v8.StatusCode, v8.Body));
        end,
        maxRetryCount = v3
    })
});
return {
    Dash = require(l_Parent_0.Dash),
    Roact = require(l_Parent_0.Roact),
    RoactRodux = require(l_Parent_0.RoactRodux),
    RoactNavigation = require(l_Parent_0.RoactNavigation),
    Rodux = require(l_Parent_0.Rodux),
    t = require(l_Parent_0.t),
    UIBlox = require(l_Parent_0.UIBlox),
    LocalizationProvider = require(l_Parent_0.Localization).LocalizationProvider,
    withLocalization = require(l_Parent_0.Localization).withLocalization,
    llama = v1.llama,
    SocialLibraries = v1.SocialLibraries.config({}),
    RoduxGames = v1.RoduxGames.config({
        keyPath = "InviteLinkExpiredModal.Games"
    }),
    RoduxShareLinks = v1.RoduxShareLinks.config({
        keyPath = "InviteLinkExpiredModal.ShareLinks"
    }),
    RoduxNetworking = v10,
    NetworkingGames = v1.NetworkingGames.config({
        roduxNetworking = v10
    })
};


local l_Parent_0 = script:FindFirstAncestor("InviteLinkExpiredModal").Parent;
local v1 = require(l_Parent_0.LuaSocialLibrariesDeps);
local v2 = require(l_Parent_0.Dev.JestGlobals);
v2.expect.extend(v1.CollisionMatchers.Jest);
return {
    JestGlobals = v2,
    ReactRoblox = require(l_Parent_0.Dev.ReactRoblox),
    Mock = v1.Mock,
    UnitTestHelpers = require(l_Parent_0.Dev.SocialTestHelpers).TestHelpers,
    Rhodium = require(l_Parent_0.Dev.Rhodium),
    RhodiumHelpers = function()
        return require(l_Parent_0.Dev.RhodiumHelpers);
    end,
    createTreeWithProviders = require(l_Parent_0.Dev.SocialTestHelpers).TestHelpers.createTreeWithProviders,
    DeferredLuaHelpers = require(l_Parent_0.Dev.TestUtils).DeferredLuaHelpers
};


return {
    installReducer = require(script.installReducer),
    InviteLinkExpiredModal = require(script.InviteLinkExpiredModalContainer),
    ["jest.config"] = script["jest.config"]
};


local v0 = require(script:FindFirstAncestor("InviteLinkExpiredModal").dependencies);
local l_Rodux_0 = v0.Rodux;
local l_RoduxGames_0 = v0.RoduxGames;
local l_RoduxNetworking_0 = v0.RoduxNetworking;
return function()
    return l_Rodux_0.combineReducers({
        Games = l_RoduxGames_0.installReducer(),
        NetworkStatus = l_RoduxNetworking_0.installReducer()
    });
end;


local v0 = require(script:FindFirstAncestor("InviteLinkExpiredModal").dependencies);
local l_NetworkingGames_0 = v0.NetworkingGames;
local l_RoduxNetworking_0 = v0.RoduxNetworking;
local l_SocialLibraries_0 = v0.SocialLibraries;
local l_NetworkStatus_0 = l_RoduxNetworking_0.Enum.NetworkStatus;
local l_getDeepValue_0 = l_SocialLibraries_0.Dictionary.getDeepValue;
return function(v6, v7)
    local l_universeId_0 = v7.universeId;
    local v9 = l_getDeepValue_0(v6, string.format("InviteLinkExpiredModal.Games.byGameId.%s.name", l_universeId_0));
    local v10 = false;
    if #l_universeId_0 > 0 then
        v10 = l_NetworkingGames_0.GetExperiencesDetails.getStatus(v6, l_universeId_0) == l_NetworkStatus_0.Fetching;
    end;
    return {
        experienceName = v9,
        isLoading = v10,
        screenSize = v6.ScreenSize
    };
end;


local v0 = require(script:FindFirstAncestor("InviteLinkExpiredModal").Parent.Dev.JestConfigs);
return {
    displayName = "InviteLinkExpiredModal",
    testMatch = {
        "**/*.test"
    },
    setupFilesAfterEnv = {
        v0.setupFiles.LogHandler,
        v0.setupFiles.UIBloxInitializer,
        v0.setupFiles.createPromiseRejectionHandler(),
        script.Parent.NetworkImplHandler
    }
};


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local v2 = require(script.Parent.ItemInfoRow);
local v3 = require(l_CorePackages_0.Cryo);
return function(v4)
    local v5 = {
        layout = v1.createElement("UIListLayout", {
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Vertical
        })
    };
    for v6, v7 in v4.rowData, nil, nil do
        table.insert(v5, v1.createElement(v2, (v3.Dictionary.join(v7, {
            LayoutOrder = v6,
            hideDivider = next(v4.rowData, v6) == nil
        }))));
    end;
    return v1.createElement("Frame", {
        AutomaticSize = Enum.AutomaticSize.Y,
        Size = UDim2.fromScale(1, 0),
        BackgroundTransparency = 1,
        LayoutOrder = v4.LayoutOrder
    }, v5);
end;


local l_CorePackages_0 = game:GetService("CorePackages");
local v1 = require(l_CorePackages_0.Packages.React);
local l_Focusable_0 = require(l_CorePackages_0.Packages.RoactGamepad).Focusable;
local v3 = require(l_CorePackages_0.Workspace.Packages.VerifiedBadges);
local v4 = require(l_CorePackages_0.Packages.UIBlox);
local l_useStyle_0 = v4.Core.Style.useStyle;
local l_useSelectionCursor_0 = v4.App.SelectionImage.useSelectionCursor;
local l_CursorKind_0 = v4.App.SelectionImage.CursorKind;
local l_Images_0 = v4.App.ImageSet.Images;
local l_ShimmerPanel_0 = v4.App.Loading.ShimmerPanel;
local l_ImageSetLabel_0 = v4.Core.ImageSet.ImageSetLabel;
local v11 = l_Images_0["icons/navigation/pushRight_small"] or "LuaApp/icons/GameDetails/navigation/pushRight_small";
local v12 = Vector2.new(14, 14);
local v13 = UDim2.new(0.3, 0, 0.8, 0);
return (v1.forwardRef(function(v14, v15)
    local l_LayoutOrder_0 = v14.LayoutOrder;
    local l_infoName_0 = v14.infoName;
    local l_infoData_0 = v14.infoData;
    local l_onActivate_0 = v14.onActivate;
    local l_hasVerifiedBadge_0 = v14.hasVerifiedBadge;
    local l_isLoading_0 = v14.isLoading;
    local v22 = l_useStyle_0();
    local l_Theme_0 = v22.Theme;
    local l_Font_0 = v22.Font;
    local v25 = l_useSelectionCursor_0(l_CursorKind_0.RoundedRect);
    local l_Color_0 = l_Theme_0.TextEmphasis.Color;
    local v27 = l_Font_0.BaseSize * l_Font_0.Body.RelativeSize;
    local v28 = -11 - v12.X;
    local v29 = v15 ~= nil;
    return v1.createElement(not v29 and "ImageButton" or l_Focusable_0.ImageButton, {
        BackgroundTransparency = 1,
        BorderSizePixel = 0,
        LayoutOrder = l_LayoutOrder_0,
        Size = UDim2.new(1, 0, 0, not v14.hideDivider and 53 or 52),
        [v1.Event.Activated] = l_onActivate_0,
        NextSelectionUp = v14.NextSelectionUp,
        NextSelectionDown = v14.NextSelectionDown,
        NextSelectionLeft = v14.NextSelectionLeft,
        NextSelectionRight = v14.NextSelectionRight,
        ref = v15,
        SelectionImageObject = not not v29 and v25 or nil,
        Selectable = v14.Selectable
    }, {
        Container = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 1, not v14.hideDivider and -1 or 0)
        }, {
            InfoNameTextLabel = v1.createElement("TextLabel", {
                BackgroundTransparency = 1,
                Font = l_Font_0.Body.Font,
                Size = UDim2.new(0.5, 0, 1, 0),
                Text = l_infoName_0,
                TextColor3 = l_Theme_0.TextDefault.Color,
                TextSize = v27,
                TextTruncate = Enum.TextTruncate.AtEnd,
                TextXAlignment = Enum.TextXAlignment.Left,
                TextYAlignment = Enum.TextYAlignment.Center
            }),
            InfoDataWithEmoji = (not l_isLoading_0 and l_hasVerifiedBadge_0) and v1.createElement(v3.EmojiWrapper, {
                emoji = v3.emoji.verified,
                font = if not l_onActivate_0 then l_Font_0.Body.Font else l_Font_0.Header2.Font,
                anchorPoint = Vector2.new(1, 0),
                position = UDim2.new(1, not l_onActivate_0 and 0 or v28, 0, 0),
                size = UDim2.new(0.5, 0, 1, 0),
                automaticSize = Enum.AutomaticSize.None,
                horizontalAlignment = Enum.HorizontalAlignment.Right,
                verticalAlignment = Enum.VerticalAlignment.Center
            }, {
                InfoDataTextLabel = v1.createElement("TextLabel", {
                    BackgroundTransparency = 1,
                    Font = not not l_onActivate_0 and l_Font_0.Header2.Font or l_Font_0.Body.Font,
                    Size = UDim2.new(0, 0, 1, 0),
                    Text = l_infoData_0,
                    TextColor3 = if not l_onActivate_0 then l_Theme_0.TextDefault.Color else l_Theme_0.TextEmphasis.Color,
                    TextSize = v27,
                    TextTruncate = Enum.TextTruncate.AtEnd,
                    TextScaled = v14.TextScaled,
                    AutomaticSize = Enum.AutomaticSize.X,
                    TextXAlignment = Enum.TextXAlignment.Left
                })
            }),
            InfoDataTextLabel = (not l_isLoading_0 and not l_hasVerifiedBadge_0) and v1.createElement("TextLabel", {
                AnchorPoint = Vector2.new(1, 0),
                Position = UDim2.new(1, not l_onActivate_0 and 0 or v28, 0, 0),
                BackgroundTransparency = 1,
                Font = if not l_onActivate_0 then l_Font_0.Body.Font else l_Font_0.Header2.Font,
                Size = UDim2.new(0.5, 0, 1, 0),
                Text = l_infoData_0,
                TextColor3 = if not l_onActivate_0 then l_Theme_0.TextDefault.Color else l_Theme_0.TextEmphasis.Color,
                TextSize = v27,
                TextTruncate = Enum.TextTruncate.AtEnd,
                TextScaled = v14.TextScaled,
                TextXAlignment = Enum.TextXAlignment.Right,
                TextYAlignment = Enum.TextYAlignment.Center
            }, {
                TextSizeConstraint = v14.TextScaled and v1.createElement("UITextSizeConstraint", {
                    MaxTextSize = v27
                })
            }),
            LoadingShimmer = l_isLoading_0 and v1.createElement(l_ShimmerPanel_0, {
                AnchorPoint = Vector2.new(1, 0.5),
                Position = UDim2.new(1, 0, 0.5, 0),
                Size = v13
            }),
            LinkIcon = l_onActivate_0 and v1.createElement(l_ImageSetLabel_0, {
                AnchorPoint = Vector2.new(1, 0.5),
                Position = UDim2.new(1, 0, 0.5, 0),
                Size = UDim2.fromOffset(v12.X, v12.Y),
                Image = v11,
                ImageColor3 = l_Color_0,
                BorderSizePixel = 0,
                BackgroundTransparency = 1
            })
        }),
        Divider = not v14.hideDivider and v1.createElement("Frame", {
            BackgroundColor3 = l_Theme_0.Divider.Color,
            BackgroundTransparency = l_Theme_0.Divider.Transparency,
            BorderSizePixel = 0,
            Size = UDim2.new(1, 0, 0, 1),
            Position = UDim2.new(0, 0, 1, -1)
        })
    });
end));


return {
    ItemInfoRow = require(script.ItemInfoRow),
    ItemInfoList = require(script.ItemInfoList)
};


local l_Parent_0 = script:FindFirstAncestor("ItemsReceivedAlert").Parent;
local v1 = require(l_Parent_0.React);
local l_useDefaultFocusBehavior_0 = require(l_Parent_0.ReactFocusNavigation).useDefaultFocusBehavior;
local l_useDispatch_0 = require(l_Parent_0.RoactUtils).Hooks.RoactRodux.useDispatch;
local l_useScreenSize_0 = require(l_Parent_0.RobloxAppHooks).useScreenSize;
local v5 = require(l_Parent_0.UIBlox);
local l_InteractiveAlert_0 = v5.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v5.App.Button.Enum.ButtonType;
local l_StyledTextLabel_0 = v5.App.Text.StyledTextLabel;
local l_useDesignTokens_0 = require(l_Parent_0.Style).useDesignTokens;
return function(v10)
    local v11 = l_useScreenSize_0();
    local v12, v13 = l_useDefaultFocusBehavior_0();
    local v14 = l_useDispatch_0();
    local v16 = l_useDesignTokens_0(function(v15)
        return {
            listPadding = v15.Global.Space_200,
            thumbnailContainerTransparency = v15.Global.Opacity_8,
            thumbnailContainerRadius = v15.Semantic.Radius.Large,
            bodyTextFont = v15.Semantic.Typography.Body,
            bodyTextColor = v15.Semantic.Color.Text.Default,
            buttonStackSpacing = v15.Global.Space_150,
            buttonTextFont = v15.Semantic.Typography.Body
        };
    end);
    local v17 = v1.useCallback(function()
        return v1.createElement("Frame", {
            Size = UDim2.fromScale(1, 0),
            BackgroundTransparency = 1,
            AutomaticSize = Enum.AutomaticSize.Y
        }, {
            ListLayout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder,
                Padding = UDim.new(0, v16.listPadding)
            }),
            AvatarThumbnailContainer = v1.createElement("Frame", {
                LayoutOrder = 1,
                Size = UDim2.new(1, 0, 0, v10.avatarThumbnailDisplayHeight),
                BackgroundTransparency = v16.thumbnailContainerTransparency,
                BackgroundColor3 = Color3.fromRGB(0, 0, 0),
                BorderSizePixel = 0
            }, {
                UICorner = v1.createElement("UICorner", {
                    CornerRadius = UDim.new(0, v16.thumbnailContainerRadius)
                }),
                AvatarThumbnail = v1.createElement("ImageLabel", {
                    Image = v10.avatarThumbnail,
                    AnchorPoint = Vector2.new(0.5, 0.5),
                    Position = UDim2.fromScale(0.5, 0.5),
                    BackgroundTransparency = 1,
                    ScaleType = Enum.ScaleType.Fit,
                    Size = UDim2.fromScale(1, 1)
                })
            }),
            BodyText = if not v10.bodyText then nil else v1.createElement(l_StyledTextLabel_0, {
                layoutOrder = 2,
                automaticSize = Enum.AutomaticSize.XY,
                fontStyle = v16.bodyTextFont,
                colorStyle = v16.bodyTextColor,
                text = v10.bodyText,
                richText = true,
                textWrapped = true,
                textXAlignment = Enum.TextXAlignment.Center
            })
        });
    end, {
        v10.avatarThumbnail,
        v10.avatarThumbnailDisplayHeight,
        v10.bodyText,
        v16
    });
    local v18 = {
        buttonType = l_ButtonType_0.PrimarySystem,
        props = {
            onActivated = function()
                if not v10.onPrimaryButtonActivated then
                    if v10.closeCentralOverlayThunk then
                        v14(v10.closeCentralOverlayThunk());
                    end;
                    return ;
                else
                    v10.onPrimaryButtonActivated();
                    return ;
                end;
            end,
            text = v10.primaryButtonText,
            buttonRef = v12,
            fontStyle = v16.buttonTextFont
        }
    };
    return v1.createElement(l_InteractiveAlert_0, {
        defaultChildRef = v13,
        screenSize = v11,
        title = v10.titleText,
        middleContent = v17,
        buttonStackInfo = {
            disableGamepadRefs = true,
            marginBetween = v16.buttonStackSpacing,
            buttons = if not v10.secondaryButtonText then {
                v18
            } else {
                v10.secondaryButtonText and {
                    buttonType = l_ButtonType_0.Secondary,
                    props = {
                        onActivated = function()
                            if not v10.onSecondaryButtonActivated then
                                if v10.closeCentralOverlayThunk then
                                    v14(v10.closeCentralOverlayThunk());
                                end;
                                return ;
                            else
                                v10.onSecondaryButtonActivated();
                                return ;
                            end;
                        end,
                        text = v10.secondaryButtonText,
                        fontStyle = v16.buttonTextFont
                    }
                },
                v18
            }
        }
    });
end;


return {
    ItemsReceivedAlert = require(script.ItemsReceivedAlert),
    ["jest.config"] = script["jest.config"]
};


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


local l_RunService_0 = game:GetService("RunService");
local l_IXPService_0 = game:GetService("IXPService");
return {
    InitializeAsync = function(_, v3, v4)
        local l_status_0, l_result_0 = pcall(function()
            if l_RunService_0:IsStudio() then
                l_IXPService_0:ClearUserLayers();
            end;
            l_IXPService_0:RegisterUserLayers(v4);
            l_IXPService_0:InitializeUserLayers(v3);
            local l_l_IXPService_0_UserLayerLoadingStatus_0 = l_IXPService_0:GetUserLayerLoadingStatus();
            while not (l_l_IXPService_0_UserLayerLoadingStatus_0 ~= Enum.IXPLoadingStatus.None) or l_l_IXPService_0_UserLayerLoadingStatus_0 == Enum.IXPLoadingStatus.Pending do
                l_IXPService_0.OnUserLayerLoadingStatusChanged:Wait();
                l_l_IXPService_0_UserLayerLoadingStatus_0 = l_IXPService_0:GetUserLayerLoadingStatus();
            end;
            return l_l_IXPService_0_UserLayerLoadingStatus_0;
        end);
        return l_status_0, l_result_0;
    end,
    WaitForInitialization = function(_)
        local l_l_IXPService_0_UserLayerLoadingStatus_1 = l_IXPService_0:GetUserLayerLoadingStatus();
        while not (l_l_IXPService_0_UserLayerLoadingStatus_1 ~= Enum.IXPLoadingStatus.None) or l_l_IXPService_0_UserLayerLoadingStatus_1 == Enum.IXPLoadingStatus.Pending do
            l_IXPService_0.OnUserLayerLoadingStatusChanged:Wait();
            l_l_IXPService_0_UserLayerLoadingStatus_1 = l_IXPService_0:GetUserLayerLoadingStatus();
        end;
        return l_l_IXPService_0_UserLayerLoadingStatus_1;
    end,
    GetLayerData = function(_, v11)
        local l_status_1, l_result_1 = pcall(function()
            return l_IXPService_0:GetUserLayerVariables(v11);
        end);
        return not not l_status_1 and l_result_1 or nil;
    end,
    LogUserLayerExposure = function(_, v15)
        pcall(function()
            l_IXPService_0:LogUserLayerExposure(v15);
        end);
    end,
    LogBrowserTrackerLayerExposure = function(_, v17)
        pcall(function()
            l_IXPService_0:LogBrowserTrackerLayerExposure(v17);
        end);
    end
};


local l_LogService_0 = game:GetService("LogService");
local v1 = require(script:FindFirstAncestor("JestConfigs").Parent.JestGlobals);
local l_beforeAll_0 = v1.beforeAll;
local l_afterAll_0 = v1.afterAll;
local l_expect_0 = v1.expect;
local v5 = false;
local v6 = nil;
l_beforeAll_0(function()
    l_expect_0.extend({
        toHaveNoOutput = function(_, v8, v9)
            if not v8 then
                return {
                    pass = true,
                    message = function()
                        return "Expected an error or warning message";
                    end
                };
            else
                return {
                    pass = false,
                    message = function()
                        return (("Has hit an error or warning message: %*"):format(v9));
                    end
                };
            end;
        end
    });
    l_LogService_0.MessageOut:Connect(function(v10, v11)
        if not (v11 ~= Enum.MessageType.MessageError) or v11 == Enum.MessageType.MessageWarning then
            v5 = true;
            v6 = v10;
        end;
    end);
end);
l_afterAll_0(function()
    task.wait(0.2);
    l_expect_0(v5).toHaveNoOutput(v6);
end);


local l_Parent_0 = script:FindFirstAncestor("JestConfigs").Parent;
require(l_Parent_0.UIBlox).init(require(l_Parent_0.UIBloxRobloxAppConfig));


return function(v0, v1, v2)
    local l_ModuleScript_0 = Instance.new("ModuleScript");
    l_ModuleScript_0.Source = ("\tlocal Root = script:FindFirstAncestor(\"JestConfigs\")\n\tlocal Packages = Root.Parent\n\t\n\tlocal JestGlobals = require(Packages.JestGlobals)\n\tlocal beforeAll = JestGlobals.beforeAll\n\tlocal afterAll = JestGlobals.afterAll\n\tlocal expect = JestGlobals.expect\n\t\n\tlocal UnitTestHelpers = require(Packages.UnitTestHelpers)\n\tlocal createPromiseRejectionHandler = UnitTestHelpers.createPromiseRejectionHandler\n\n\tlocal RejectionHandler = createPromiseRejectionHandler()\n\t\n\tbeforeAll(function()\n\t\tRejectionHandler.inject()\n\tend)\n\t\n\tafterAll(function()\n\t\texpect(function()\n\t\t\tRejectionHandler.reportRejections(%s, %s, %s)\n\t\tend).never.toThrow()\n\tend)\n"):format(tostring(v0), tostring(v1), (tostring(v2)));
    l_ModuleScript_0.Parent = script.Parent;
    return l_ModuleScript_0;
end;


return {
    LogHandler = script.LogHandler,
    UIBloxInitializer = script.UIBloxInitializer,
    createPromiseRejectionHandler = require(script.createPromiseRejectionHandler)
};


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


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


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


return {
    FetchUserFriendsCompleted = require(script.FetchUserFriendsCompleted),
    FetchUserFriendsFailed = require(script.FetchUserFriendsFailed),
    FetchUserFriendsStarted = require(script.FetchUserFriendsStarted),
    SetFriendCount = require(script.SetFriendCount),
    UpdateFriendPresenceCounts = require(script.UpdateFriendPresenceCounts)
};


local l_SetFriendCount_0 = require(script:FindFirstAncestor("LegacyFriendsRodux").Actions).SetFriendCount;
return function(v1, v2)
    v1 = v1 or 0;
    if v2.type == l_SetFriendCount_0.name then
        v1 = v2.count;
    end;
    return v1;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("LegacyFriendsRodux");
local v1 = require(l_script_FirstAncestor_0.Parent.Cryo);
local l_UpdateFriendPresenceCounts_0 = require(l_script_FirstAncestor_0.Actions).UpdateFriendPresenceCounts;
return function(v3, v4)
    v3 = v3 or {};
    if v4.type == l_UpdateFriendPresenceCounts_0.name then
        v3 = v1.Dictionary.join({}, v4.presenceCounts);
    end;
    return v3;
end;


return {
    Friends = require(script.Friends),
    FriendCount = require(script.FriendCount),
    FriendPresenceCounts = require(script.FriendPresenceCounts)
};


local l_Parent_0 = script:FindFirstAncestor("LegacyFriendsRodux").Parent;
local l_Players_0 = game:GetService("Players");
local l_Url_0 = require(l_Parent_0.Http).Url;
local l_isNewFriendsEndpointsEnabled_0 = require(l_Parent_0.SharedFlags).isNewFriendsEndpointsEnabled;
return function(v4)
    local v5 = string.format("%s/user/get-friendship-count?%s", l_Url_0.API_URL, (tostring(l_Players_0.LocalPlayer.UserId)));
    if l_isNewFriendsEndpointsEnabled_0() then
        v5 = string.format("%s/my/friends/count", l_Url_0.FRIEND_URL);
    end;
    return v4(v5, "GET");
end;


return {
    ApiFetchUsersFriendCount = require(script.ApiFetchUsersFriendCount)
};


return {
    Actions = require(script.Actions),
    Reducers = require(script.Reducers),
    Requests = require(script.Requests),
    Thunks = require(script.Thunks),
    ["jest.config"] = script["jest.config"]
};


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


local v0 = require(script.Parent.Parent.Flags.getFFlagLuaLinkingSwitchToSettingsApp);
game:DefineFastFlag("EnableToSwitchToSettingsAppWithRouteLua", false);
return function()
    return game:GetFastFlag("EnableToSwitchToSettingsAppWithRouteLua") and v0();
end;


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


local l_Parent_0 = script.Parent;
local _ = require(l_Parent_0.Parent.MessageBus);
local _ = require(l_Parent_0.Enums.SettingsRoute);
return nil;


return {
    LinkingProtocol = require(script.LinkingProtocol),
    Enums = require(script.Enums)
};


return {
    useLocalization = require(script.useLocalization),
    useAbbreviatedNumberLocalization = require(script.useAbbreviatedNumberLocalization)
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Localization");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_LocalizationService_0 = game:GetService("LocalizationService");
local v3 = require(l_Parent_0.React);
local v4 = require(l_script_FirstAncestor_0.abbreviateCount);
local v5 = require(l_script_FirstAncestor_0.LocalizationRoactContext);
local l_useSignal_0 = require(l_Parent_0.RoactUtils).Hooks.useSignal;
local l_dependencyArray_0 = require(l_Parent_0.RoactUtils).Hooks.dependencyArray;
return function(v8)
    local v9 = v3.useContext(v5);
    local v10, v11 = v3.useState(l_LocalizationService_0.RobloxLocaleId);
    l_useSignal_0(v9.changed, (v3.useCallback(function(v12)
        v12 = v9:GetLocale();
        if v12 ~= v10 then
            v11(v12);
        end;
    end, {
        v9
    })));
    return v3.useMemo(function()
        if v8 == nil then
            return nil;
        else
            return v4(v8, v10);
        end;
    end, l_dependencyArray_0(v8, v10));
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("Localization");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_LocalizationService_0 = game:GetService("LocalizationService");
local v3 = require(l_Parent_0.React);
local v4 = require(l_Parent_0.ArgCheck);
local v5 = require(l_script_FirstAncestor_0.RobloxLocaleIdKey);
local v6 = require(l_script_FirstAncestor_0.LocalizationRoactContext);
local v7 = require(l_script_FirstAncestor_0.localizeStrings);
local l_useSignal_0 = require(l_Parent_0.RoactUtils).Hooks.useSignal;
return function(v9)
    local v10 = v3.useContext(v6);
    local v11, v12 = v3.useState(l_LocalizationService_0.RobloxLocaleId);
    l_useSignal_0(v10.changed, (v3.useCallback(function(v13)
        v13 = v10:GetLocale();
        if v13 ~= v11 then
            v12(v13);
        end;
    end, {
        v10
    })));
    v4.isType(v9, "table", "LocalizationConsumer.props.stringsToBeLocalized");
    local v14 = v7(v10, v9);
    v14[v5] = v11;
    return v14;
end;