local v0 = require(script:FindFirstAncestor("EditProfile").Parent.SocialLuaAnalytics);
local l_fireDiagCounter_0 = v0.Analytics.FireEvent.fireDiagCounter;
local l_fireEventStream_0 = v0.Analytics.FireEvent.fireEventStream;
local v3 = require(script.Parent.DiagActionList);
local v4 = require(script.Parent.EventStreamActionList);
local _ = require(script.Parent.Enums.EventNames);
return function(v6)
    local v7 = l_fireEventStream_0({
        eventStreamImpl = v6.analytics.EventStream,
        eventList = v4,
        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_Parent_0 = script:FindFirstAncestor("EditProfile").Parent;
local v1 = require(script.Parent.EditProfileAnalyticsContext);
local v2 = require(l_Parent_0.React);
return function()
    return v2.useContext(v1);
end;


return {
    RODUX_KEY = "EditProfile",
    ProfileScreens = "profileScreens",
    CloseUpdateUsernameModal = "CloseUpdateUsernameModal",
    UpdateUsernameModalSuccess = "UpdateUsernameModalSuccess",
    EditProfilePage = "EditProfilePage",
    EditDisplayNameModal = "EditDisplayNameModal",
    JavascriptHybrid = {
        Module = {
            Navigation = "Navigation"
        },
        Function = {
            navigateToFeature = "navigateToFeature"
        },
        Feature = {
            CloseUpdateUsernameModal = "CloseUpdateUsernameModal",
            UpdateUsernameModalSuccess = "UpdateUsernameModalSuccess"
        }
    },
    DisplayNameValidationErrorCodes = {
        InvalidCharacterSetCombination = 8
    }
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.LuaSocialLibrariesDeps);
local v3 = require(l_Parent_0.React);
local v4 = require(l_Parent_0.UIBlox);
local l_useStyle_0 = v4.Core.Style.useStyle;
local l_ImageSetLabel_0 = v4.Core.ImageSet.ImageSetLabel;
local l_Images_0 = v4.App.ImageSet.Images;
local l_InteractiveAlert_0 = v4.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v4.App.Button.Enum.ButtonType;
local l_CallbackInputBox_0 = v2.SocialLibraries.config({}).Components.CallbackInputBox;
local v11 = require(l_script_FirstAncestor_0.Flags.FFlagDescriptionModalThrottleError);
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local v13 = require(l_script_FirstAncestor_0.Common.TextKeys);
return function(v14)
    local v15 = v3.useRef(nil);
    local v16, v17 = v3.useState(v14.initialText);
    local v18 = string.len(v16);
    local v19 = l_useLocalization_0({
        cancelButtonText = v13.CancelButtonText,
        saveButtonText = v13.SaveButtonText,
        saySomething = v13.SaySomething,
        pinLocked = v13.PinLocked
    });
    local v20 = l_useStyle_0();
    local l_Font_0 = v20.Font;
    local l_Theme_0 = v20.Theme;
    local v23 = l_Font_0.BaseSize * l_Font_0.Body.RelativeSize;
    local function v26(v24)
        if string.len(v24) > 1000 then
            v24 = string.sub(v24, 1, 1000);
            local _ = 1000;
            if not (not v15 or not v15.current) then
                v15.current.Text = v24;
            end;
        end;
        v17(v24);
    end;
    return v3.createElement(l_InteractiveAlert_0, {
        title = v14.title,
        screenSize = v14.screenSize,
        anchorPoint = Vector2.new(0.5, 0),
        position = UDim2.new(0.5, 0, 0, 44),
        middleContent = function()
            return v3.createElement("Frame", {
                BackgroundTransparency = 1,
                AutomaticSize = Enum.AutomaticSize.XY
            }, {
                InputGroup = v3.createElement("Frame", {
                    BackgroundTransparency = 1,
                    Size = UDim2.fromScale(1, 1),
                    AutomaticSize = Enum.AutomaticSize.Y,
                    LayoutOrder = 1
                }, {
                    UIListLayout = v3.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Vertical,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center,
                        SortOrder = Enum.SortOrder.LayoutOrder
                    }),
                    Description = v3.createElement("TextLabel", {
                        LayoutOrder = 1,
                        BackgroundTransparency = 1,
                        TextXAlignment = Enum.TextXAlignment.Center,
                        TextWrapped = true,
                        Font = l_Font_0.Body.Font,
                        Text = v14.description,
                        TextSize = 14,
                        TextColor3 = l_Theme_0.TextDefault.Color,
                        AutomaticSize = Enum.AutomaticSize.XY,
                        RichText = true
                    }),
                    Padding = v3.createElement("Frame", {
                        BackgroundTransparency = 1,
                        Size = UDim2.new(1, 0, 0, 24),
                        LayoutOrder = 2
                    }),
                    InputBackground = v3.createElement(l_ImageSetLabel_0, {
                        Size = UDim2.new(1, 0, 0, 144),
                        BackgroundTransparency = 1,
                        LayoutOrder = 3,
                        Image = l_Images_0["component_assets/circle_21"],
                        ImageColor3 = l_Theme_0.UIMuted.Color,
                        ImageTransparency = l_Theme_0.UIMuted.Transparency,
                        ScaleType = Enum.ScaleType.Slice,
                        SliceCenter = Rect.new(8, 8, 9, 9)
                    }, {
                        InputBorder = v3.createElement(l_ImageSetLabel_0, {
                            Size = UDim2.new(1, 0, 0, 144),
                            BackgroundTransparency = 1,
                            LayoutOrder = 1,
                            Image = l_Images_0["component_assets/circle_21_stroke_1"],
                            ImageColor3 = l_Theme_0.Divider.Color,
                            ScaleType = Enum.ScaleType.Slice,
                            SliceCenter = Rect.new(8, 8, 9, 9)
                        }, {
                            Padding = v3.createElement("UIPadding", {
                                PaddingLeft = UDim.new(0, 12),
                                PaddingRight = UDim.new(0, 12),
                                PaddingTop = UDim.new(0, 7)
                            }),
                            Textbox = v3.createElement(l_CallbackInputBox_0, {
                                inputTextXAlignment = Enum.TextXAlignment.Left,
                                inputTextYAlignment = Enum.TextYAlignment.Top,
                                inputTextColor3 = l_Theme_0.TextDefault.Color,
                                inputTextTransparency = l_Theme_0.TextDefault.Transparency,
                                inputTextSize = v23,
                                initialInputText = v14.initialText,
                                placeholderText = v19.saySomething,
                                placeholderTextColor3 = l_Theme_0.TextDefault.Color,
                                captureFocusOnMount = true,
                                textChangedCallback = v26,
                                inputBoxRef = v15,
                                multiLine = true,
                                textWrapped = true,
                                clearButtonDisabled = true,
                                clearButtonSize = 0
                            })
                        })
                    }),
                    Counter = v3.createElement("Frame", {
                        BackgroundTransparency = 1,
                        Size = UDim2.new(1, 0, 0, 22),
                        LayoutOrder = 4
                    }, {
                        ThrottleError = if not not v11 and v14.throttleError then v3.createElement("TextLabel", {
                            Position = UDim2.fromScale(0, 0.4),
                            AutomaticSize = Enum.AutomaticSize.XY,
                            BackgroundTransparency = 1,
                            Font = l_Font_0.CaptionBody.Font,
                            Text = v14.throttleErrorText,
                            TextXAlignment = 0,
                            TextSize = (l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize) * 0.9,
                            TextColor3 = l_Theme_0.Alert.Color,
                            TextTransparency = l_Theme_0.Alert.Transparency
                        }) else nil;
                        v3.createElement("TextLabel", {
                            AutomaticSize = Enum.AutomaticSize.XY,
                            BackgroundTransparency = 1,
                            Font = l_Font_0.CaptionBody.Font,
                            Text = if not v14.textError then string.format("%d/%d", v18, 1000) else v19.pinLocked,
                            TextSize = l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize,
                            TextColor3 = if not (v18 ~= 1000) or v14.textError then l_Theme_0.Alert.Color else l_Theme_0.TextMuted.Color,
                            TextTransparency = if not (v18 ~= 1000) or v14.textError then l_Theme_0.Alert.Transparency else l_Theme_0.TextMuted.Transparency,
                            AnchorPoint = if not v14.textError then Vector2.new(1, 1) else Vector2.new(0, 1),
                            Position = if not v14.textError then UDim2.fromScale(1, 1) else UDim2.fromScale(0, 1),
                            TextWrapped = true
                        }, {
                            UISizeConstraint = v3.createElement("UISizeConstraint", {
                                MaxSize = Vector2.new(math.huge, (l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize) * 2)
                            })
                        })
                    })
                })
            });
        end,
        buttonStackInfo = {
            buttons = {
                {
                    buttonType = l_ButtonType_0.Secondary,
                    props = {
                        onActivated = v14.cancelOnActivated,
                        text = v19.cancelButtonText
                    }
                },
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = function()
                            v14.saveOnActivated(v16);
                        end,
                        text = v19.saveButtonText
                    }
                }
            },
            buttonHeight = 48,
            marginBetween = 6,
            forcedFillDirection = Enum.FillDirection.Horizontal
        }
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local l_useLocalUserId_0 = require(l_Parent_0.RobloxAppHooks).useLocalUserId;
local v4 = require(l_script_FirstAncestor_0.Flags.EditProfileIXP);
local v5 = require(l_script_FirstAncestor_0.Analytics);
local v6 = require(script.Parent.EditDescriptionModalContainer);
return function(v7)
    local v8 = l_useLocalUserId_0();
    if not v4.useIsExperimentEnabled() then
        return v2.createElement(v6, v7);
    else
        return v2.createElement(v5.Context.Provider, {
            value = {
                fireAnalyticsEvent = v5.setupFireAnalyticsEvents({
                    analytics = v5.AnalyticsService,
                    infoForAllEvents = {
                        uid = v8
                    }
                })
            }
        }, {
            v2.createElement(v6, v7)
        });
    end;
end;


local l_HttpService_0 = game:GetService("HttpService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v3 = require(l_Parent_0.LuaSocialLibrariesDeps);
local v4 = require(l_Parent_0.React);
local v5 = require(l_Parent_0.UIBlox);
local l_useStyle_0 = v5.Core.Style.useStyle;
local l_ImageSetLabel_0 = v5.Core.ImageSet.ImageSetLabel;
local l_Images_0 = v5.App.ImageSet.Images;
local l_IconSize_0 = v5.App.Constant.IconSize;
local l_InteractiveAlert_0 = v5.App.Dialog.Alert.InteractiveAlert;
local l_ButtonType_0 = v5.App.Button.Enum.ButtonType;
local l_CallbackInputBox_0 = v3.SocialLibraries.config({}).Components.CallbackInputBox;
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local v14 = require(l_script_FirstAncestor_0.Common.Constants);
local v15 = require(l_script_FirstAncestor_0.Common.TextKeys);
local v16 = require(l_Parent_0.LuauPolyfill);
local l_clearTimeout_0 = v16.clearTimeout;
local l_setTimeout_0 = v16.setTimeout;
local v19 = require(l_script_FirstAncestor_0.Flags.EditProfileIXP);
local v20 = require(l_script_FirstAncestor_0.Flags.InternationalNamesIXP);
local v21 = require(l_script_FirstAncestor_0.Analytics);
local l_EventNames_0 = v21.EventNames;
local l_useAnalytics_0 = v21.useAnalytics;
local l_FFlagRealNamesInDisplayNameExperimentEnabled_0 = require(l_Parent_0.SharedFlags).FFlagRealNamesInDisplayNameExperimentEnabled;
local l_FFlagCountUTF8CharactersInAliasAndDisplayName_0 = require(l_Parent_0.SharedFlags).FFlagCountUTF8CharactersInAliasAndDisplayName;
local v26 = require(l_script_FirstAncestor_0.Hooks.useDisplayNameText);
local v27 = game:DefineFastInt("EditProfileModalNetworkDelay", 500);
return function(v28)
    local v29 = v4.useRef(nil);
    local v30 = nil;
    if l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then
        v30 = v26();
    end;
    local v31, v32 = v4.useState(v28.initialText);
    local v33 = if not l_FFlagCountUTF8CharactersInAliasAndDisplayName_0 then string.len(v31) else utf8.len(v31) or 0;
    local v34 = l_useLocalization_0({
        cancelButtonText = v15.CancelButtonText,
        saveButtonText = v15.SaveButtonText,
        displayNameFailed = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v15.DisplayNameError else nil,
        displayNameTooShort = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v15.DisplayNameTooShort else nil
    });
    local v35 = if not v19.useIsExperimentEnabled() then nil else l_useAnalytics_0();
    local v36 = l_useStyle_0();
    local l_Font_0 = v36.Font;
    local l_Theme_0 = v36.Theme;
    local v39 = l_Font_0.BaseSize * l_Font_0.Body.RelativeSize;
    local v40, v41 = v4.useState(true);
    local v42, v43 = v4.useState(false);
    local v44, v45 = v4.useState(if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v34.displayNameFailed else v30.displayNameChangeError);
    local v46 = v4.useRef(l_setTimeout_0(function()
    end, v27));
    local v47 = v4.useRef(false);
    local function _(v48)
        if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then
            return v34.displayNameFailed;
        elseif v48 == v14.DisplayNameValidationErrorCodes.InvalidCharacterSetCombination then
            return v30.displayNameChangeMixedCharactersError;
        else
            return v30.displayNameChangeError;
        end;
    end;
    local function v58(v50)
        if not (not (v20.FFlagIsSetupEnabled() and v50 ~= v28.initialText) or v47.current) then
            v47.current = true;
            v20.logExposure();
        end;
        l_clearTimeout_0(v46.current);
        v41(false);
        local v51 = if not l_FFlagCountUTF8CharactersInAliasAndDisplayName_0 then string.len(v50) else utf8.len(v50);
        if l_FFlagCountUTF8CharactersInAliasAndDisplayName_0 and v51 == nil then
            return ;
        elseif v51 < 3 then
            if v35 then
                v35.fireAnalyticsEvent(l_EventNames_0.DisplayNameTooShort, {
                    displayName = v50
                });
            end;
            v45(if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v34.displayNameTooShort else v30.displayNameTooShortError);
            v43(true);
            v32(v50);
            return ;
        elseif v51 > 20 then
            v50 = if not l_FFlagCountUTF8CharactersInAliasAndDisplayName_0 then string.sub(v50, 1, 20) else if v33 == 20 then v31 else string.sub(v50, 1, utf8.offset(v50, 21) - 1);
            v51 = 20;
            if not (not v29 or not v29.current) then
                v29.current.Text = v50;
            end;
            v32(v50);
            return ;
        else
            v32(v50);
            v46.current = l_setTimeout_0(function()
                v28.validateDisplayName(v50):andThen(function(_)
                    v43(false);
                    v41(true);
                end):catch(function(v53)
                    local v54 = nil;
                    if v20.FFlagIsSetupEnabled() then
                        local l_status_0, l_result_0 = pcall(function()
                            return l_HttpService_0:JSONDecode(v53.Body);
                        end);
                        local v57 = -1;
                        if l_status_0 then
                            v57 = ((not not l_result_0 and l_result_0.errors) and l_result_0.errors[1]) and l_result_0.errors[1].code or -1;
                        end;
                        v54 = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v34.displayNameFailed else if v57 == v14.DisplayNameValidationErrorCodes.InvalidCharacterSetCombination then v30.displayNameChangeMixedCharactersError else v30.displayNameChangeError;
                    end;
                    if v35 then
                        v35.fireAnalyticsEvent(l_EventNames_0.FilteredDisplayName, {
                            displayName = v50
                        });
                    end;
                    v45(if not v20.FFlagIsSetupEnabled() then if l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v30.displayNameChangeError else v34.displayNameFailed else v54);
                    v43(true);
                end);
            end, v27);
            return ;
        end;
    end;
    return v4.createElement(l_InteractiveAlert_0, {
        title = v28.title,
        screenSize = v28.screenSize,
        anchorPoint = Vector2.new(0.5, 0),
        position = UDim2.new(0.5, 0, 0, 117),
        middleContent = function()
            return v4.createElement("Frame", {
                BackgroundTransparency = 1,
                AutomaticSize = Enum.AutomaticSize.XY
            }, {
                InputGroup = v4.createElement("Frame", {
                    BackgroundTransparency = 1,
                    Size = UDim2.fromScale(1, 0),
                    AutomaticSize = Enum.AutomaticSize.Y,
                    LayoutOrder = 1
                }, {
                    UIListLayout = v4.createElement("UIListLayout", {
                        FillDirection = Enum.FillDirection.Vertical,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        HorizontalAlignment = Enum.HorizontalAlignment.Center,
                        SortOrder = Enum.SortOrder.LayoutOrder
                    }),
                    Description = v4.createElement("TextLabel", {
                        LayoutOrder = 1,
                        BackgroundTransparency = 1,
                        TextWrapped = true,
                        Font = l_Font_0.Body.Font,
                        Text = v28.description,
                        TextSize = 14,
                        TextColor3 = l_Theme_0.TextDefault.Color,
                        AutomaticSize = Enum.AutomaticSize.XY,
                        TextXAlignment = Enum.TextXAlignment.Center,
                        RichText = true
                    }),
                    Padding = v4.createElement("Frame", {
                        BackgroundTransparency = 1,
                        Size = UDim2.new(1, 0, 0, 24),
                        LayoutOrder = 2
                    }),
                    InputBackground = v4.createElement(l_ImageSetLabel_0, {
                        Size = UDim2.new(1, 0, 0, v39 + 20),
                        BackgroundTransparency = 1,
                        LayoutOrder = 3,
                        Image = l_Images_0["component_assets/circle_21"],
                        ImageColor3 = l_Theme_0.UIMuted.Color,
                        ImageTransparency = l_Theme_0.UIMuted.Transparency,
                        ScaleType = Enum.ScaleType.Slice,
                        SliceCenter = Rect.new(8, 8, 9, 9)
                    }, {
                        InputBorder = v4.createElement(l_ImageSetLabel_0, {
                            Size = UDim2.new(1, 0, 0, v39 + 20),
                            BackgroundTransparency = 1,
                            LayoutOrder = 1,
                            Image = l_Images_0["component_assets/circle_21_stroke_1"],
                            ImageColor3 = if not v42 then l_Theme_0.Divider.Color else l_Theme_0.Alert.Color,
                            ScaleType = Enum.ScaleType.Slice,
                            SliceCenter = Rect.new(8, 8, 9, 9)
                        }, {
                            Padding = v4.createElement("UIPadding", {
                                PaddingLeft = UDim.new(0, 12),
                                PaddingRight = UDim.new(0, 12)
                            }),
                            Textbox = v4.createElement(l_CallbackInputBox_0, {
                                inputTextXAlignment = Enum.TextXAlignment.Left,
                                inputTextColor3 = l_Theme_0.TextDefault.Color,
                                inputTextTransparency = l_Theme_0.TextDefault.Transparency,
                                inputTextSize = v39,
                                initialInputText = v28.initialText,
                                placeholderText = v28.initialText,
                                placeholderTextColor3 = l_Theme_0.TextDefault.Color,
                                captureFocusOnMount = true,
                                clearIcon = l_Images_0["icons/actions/edit/clear_small"],
                                clearIconColor3 = l_Theme_0.IconEmphasis.Color,
                                clearIconTransparency = l_Theme_0.IconEmphasis.Transparency,
                                clearButtonSize = l_IconSize_0.Small,
                                clearButtonDisabled = false,
                                textChangedCallback = v58,
                                inputBoxRef = v29
                            })
                        })
                    }),
                    AdditonalPadding = v4.createElement("Frame", {
                        BackgroundTransparency = 1,
                        Size = UDim2.new(1, 0, 0, 8),
                        LayoutOrder = 4
                    }),
                    Counter = v4.createElement("Frame", {
                        BackgroundTransparency = 1,
                        Size = UDim2.fromScale(1, 0),
                        AutomaticSize = Enum.AutomaticSize.Y,
                        LayoutOrder = 5
                    }, {
                        v4.createElement("TextLabel", {
                            BackgroundTransparency = 1,
                            Font = l_Font_0.CaptionBody.Font,
                            Text = if not v42 then string.format("%d/%d", v33, 20) else v44,
                            TextSize = l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize,
                            TextColor3 = if not (v33 ~= 20) or v42 then l_Theme_0.Alert.Color else l_Theme_0.TextMuted.Color,
                            TextTransparency = if not (v33 ~= 20) or v42 then l_Theme_0.Alert.Transparency else l_Theme_0.TextMuted.Transparency,
                            AnchorPoint = if not v42 then Vector2.new(1, 0) else nil,
                            Position = if not v42 then UDim2.fromScale(1, 0) else nil,
                            AutomaticSize = Enum.AutomaticSize.XY,
                            TextWrapped = true,
                            TextXAlignment = Enum.TextXAlignment.Left
                        }, {
                            UISizeConstraint = v4.createElement("UISizeConstraint", {
                                MaxSize = Vector2.new(math.huge, (l_Font_0.BaseSize * l_Font_0.CaptionBody.RelativeSize) * 2)
                            })
                        })
                    })
                })
            });
        end,
        buttonStackInfo = {
            buttons = {
                {
                    buttonType = l_ButtonType_0.Secondary,
                    props = {
                        onActivated = v28.cancelOnActivated,
                        text = v34.cancelButtonText
                    }
                },
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = function()
                            if v31 == v28.initialText then
                                v28.cancelOnActivated();
                                return ;
                            else
                                v28.saveOnActivated(v31);
                                return ;
                            end;
                        end,
                        text = v34.saveButtonText,
                        isDisabled = not v40
                    }
                }
            },
            buttonHeight = 48,
            marginBetween = 6,
            forcedFillDirection = Enum.FillDirection.Horizontal
        }
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local v1 = require(script.Parent.EditDisplayNameModal);
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v3 = require(l_Parent_0.React);
local v4 = require(l_Parent_0.UserProfiles);
local l_useLocalUserId_0 = require(l_Parent_0.RobloxAppHooks).useLocalUserId;
local l_writeNamesQuery_0 = v4.Mutations.writeNamesQuery;
local v7 = require(l_Parent_0.LuaSocialLibrariesDeps).SocialLibraries.config({});
local l_useDispatch_0 = require(l_Parent_0.RoactUtils).Hooks.RoactRodux.useDispatch;
local l_useScreenSize_0 = require(l_Parent_0.RobloxAppHooks).useScreenSize;
local l_getDeepValue_0 = v7.Dictionary.getDeepValue;
local l_useEffectOnMount_0 = require(l_Parent_0.RoactUtils).Hooks.useEffectOnMount;
local v12 = require(l_script_FirstAncestor_0.Networking.UsersNetworking);
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local v14 = require(l_script_FirstAncestor_0.Common.TextKeys);
local v15 = require(l_script_FirstAncestor_0.Flags.EditProfileIXP);
local v16 = require(l_script_FirstAncestor_0.Analytics);
local l_EventNames_0 = v16.EventNames;
local l_useAnalytics_0 = v16.useAnalytics;
local l_FFlagRealNamesInDisplayNameExperimentEnabled_0 = require(l_Parent_0.SharedFlags).FFlagRealNamesInDisplayNameExperimentEnabled;
local v20 = require(l_script_FirstAncestor_0.Flags.FFlagEditProfileFixLogging);
local v21 = game:DefineFastFlag("UpdateDisplayNameModalCopy", false);
local v22 = require(l_script_FirstAncestor_0.Hooks.useDisplayNameText);
return function(v23)
    local v24 = l_useDispatch_0();
    local v25 = l_useScreenSize_0();
    local v26 = v23.navigation.getParam("showToast");
    local v27 = v23.navigation.getParam("setDisplayNameAvailable");
    local v28 = nil;
    v28 = if not v20 then if v15.useIsExperimentEnabled() then l_useAnalytics_0() else nil else l_useAnalytics_0();
    l_useEffectOnMount_0(function()
        if not (not v20 and not v28) then
            v28.fireAnalyticsEvent(l_EventNames_0.DisplayNameModalLoaded);
        end;
    end);
    local v29 = nil;
    local v30 = nil;
    if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then
        v30 = l_useLocalization_0({
            DisplayNameModalCaption = v14.DisplayNameModalCaption,
            EditDisplayName = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v14.EditDisplayName else nil,
            Toast = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v14.DisplayNameUpdated else nil
        });
    else
        v29 = v22();
    end;
    local v31 = l_useLocalUserId_0();
    local v32 = v23.navigation.getParam("displayName");
    local v33 = nil;
    local v34 = v4.Hooks.useUserProfilesFetch({
        userIds = {
            v31
        },
        query = v4.Queries.userProfilesAllNamesByUserIds
    });
    if v34.data then
        v33 = v4.Selectors.getUserProfileFromId(v34.data, v31);
    end;
    return v3.createElement(v1, {
        screenSize = v25,
        title = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v30.EditDisplayName else v29.displayNameEditMessage,
        description = if not v21 then if l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v29.displayNameModalCaption else v30.DisplayNameModalCaption else if l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v29.displayNameCaption else v30.DisplayNameCaption,
        initialText = v32,
        localUserId = v31,
        cancelOnActivated = function()
            v23.navigation.goBack();
        end,
        saveOnActivated = function(v35)
            return v24(v12.SetDisplayName.API(v31, v35)):andThen(function(_)
                l_writeNamesQuery_0({
                    client = v34.client,
                    query = v4.Queries.userProfilesAllNamesByUserIds,
                    userId = v31,
                    names = {
                        alias = l_getDeepValue_0(v33, "names.alias"),
                        contactName = l_getDeepValue_0(v33, "names.contactName"),
                        displayName = v35,
                        username = l_getDeepValue_0(v33, "names.username")
                    }
                });
                if not (not v20 and not v28) then
                    v28.fireAnalyticsEvent(l_EventNames_0.DisplayNameSaved, {
                        displayName = v35
                    });
                end;
                v23.navigation.goBack();
                v26(if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v30.Toast else v29.displayNameUpdatedMessage);
                v27(false);
            end);
        end,
        validateDisplayName = function(v37)
            return v24(v12.GetDisplayNameValidation.API(v31, v37));
        end
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local l_useLocalUserId_0 = require(l_Parent_0.RobloxAppHooks).useLocalUserId;
local v4 = require(l_script_FirstAncestor_0.Flags.EditProfileIXP);
local v5 = require(l_script_FirstAncestor_0.Analytics);
local v6 = require(script.Parent.EditDisplayNameModalContainer);
return function(v7)
    local v8 = l_useLocalUserId_0();
    if not v4.useIsExperimentEnabled() then
        return v2.createElement(v6, v7);
    else
        return v2.createElement(v5.Context.Provider, {
            value = {
                fireAnalyticsEvent = v5.setupFireAnalyticsEvents({
                    analytics = v5.AnalyticsService,
                    infoForAllEvents = {
                        uid = v8
                    }
                })
            }
        }, {
            v2.createElement(v6, v7)
        });
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local l_useLocalUserId_0 = require(l_Parent_0.RobloxAppHooks).useLocalUserId;
local v4 = require(l_script_FirstAncestor_0.Flags.EditProfileIXP);
local v5 = require(l_script_FirstAncestor_0.Analytics);
local v6 = require(l_script_FirstAncestor_0.Flags.FFlagEditProfileFixLogging);
local v7 = require(script.Parent.EditProfileEntryPointContainer);
return function(v8)
    local v9 = l_useLocalUserId_0();
    local v10 = nil;
    v10 = if not v6 then v4.useIsExperimentEnabled() else nil;
    if not v6 and not v10 then
        return v2.createElement(v7, v8);
    else
        return v2.createElement(v5.Context.Provider, {
            value = {
                fireAnalyticsEvent = v5.setupFireAnalyticsEvents({
                    analytics = v5.AnalyticsService,
                    infoForAllEvents = {
                        uid = v9
                    }
                })
            }
        }, {
            v2.createElement(v7, v8)
        });
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local v3 = require(l_Parent_0.UIBlox);
local v4 = require(l_Parent_0.UserLib);
local l_LoadableImage_0 = v3.App.Loading.LoadableImage;
local l_ImageSetLabel_0 = v3.Core.ImageSet.ImageSetLabel;
local l_Images_0 = v3.App.ImageSet.Images;
local l_useStyle_0 = v3.Core.Style.useStyle;
local v9 = require(l_script_FirstAncestor_0.Components.EditProfileTopBar);
local v10 = require(l_script_FirstAncestor_0.Components.EditTextButton);
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local v12 = require(l_script_FirstAncestor_0.Common.TextKeys);
local v13 = require(l_script_FirstAncestor_0.Hooks.useDisplayNameText);
local l_getStandardSizeAvatarHeadShotRbxthumb_0 = v4.Utils.getStandardSizeAvatarHeadShotRbxthumb;
local l_useUserExperiment_0 = require(l_Parent_0.RoactAppExperiment).useUserExperiment;
local l_FFlagRealNamesInDisplayNameExperimentEnabled_0 = require(l_Parent_0.SharedFlags).FFlagRealNamesInDisplayNameExperimentEnabled;
local v17 = require(l_script_FirstAncestor_0.Flags.FFlagEditProfileNavigateToAvatar);
local v18 = require(l_script_FirstAncestor_0.Flags.FFlagEditProfileToAvatarIXPEnabled);
local v19 = require(l_script_FirstAncestor_0.Flags.FStringEditProfileToAvatarLayerName);
local v20 = utf8.char(57346);
return function(v21)
    local v22 = nil;
    if v18 then
        v22 = l_useUserExperiment_0({
            v19
        }, function(v23)
            return (v23[v19] or {}).profile_picture_on;
        end);
    end;
    local v24 = l_useStyle_0();
    local l_Theme_0 = v24.Theme;
    local v26 = l_useLocalization_0({
        About = v12.About,
        AboutModalCaption = v12.AboutModalCaption,
        DisplayName = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v12.DisplayName else nil,
        DisplayNameCaption = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v12.DisplayNameCaption else nil,
        AboutPlaceholder = v12.AboutPlaceholder,
        Username = v12.Username,
        UsernameCaption = {
            v12.UsernameDescription;
            icon = v20,
            price = l_useLocalization_0({
                thousand = v12.UsernamePrice
            }).thousand
        }
    });
    local v27 = nil;
    if l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then
        v27 = v13();
    end;
    return v2.createElement("Frame", {
        BackgroundColor3 = v24.Theme.BackgroundDefault.Color,
        BackgroundTransparency = v24.Theme.BackgroundDefault.Transparency,
        Size = UDim2.new(1, 0, 1, 0),
        Position = UDim2.fromScale(0.5, 0),
        AnchorPoint = Vector2.new(0.5, 0)
    }, {
        SizeConstraint = v2.createElement("UISizeConstraint", {
            MaxSize = Vector2.new(640, math.huge)
        }),
        Layout = v2.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            SortOrder = Enum.SortOrder.LayoutOrder,
            Padding = UDim.new(0, 24)
        }),
        TopPadding = v2.createElement("Frame", {
            Size = UDim2.new(1, 0, 0, 20),
            BackgroundTransparency = 1
        }),
        TopBar = v2.createElement(v9, {
            layoutOrder = 1,
            onClose = v21.onClose
        }),
        ProfilePicture = if v17 or v22 then v2.createElement("Frame", {
            AutomaticSize = Enum.AutomaticSize.X,
            Size = UDim2.new(1, 0, 0, 100),
            LayoutOrder = 2,
            BackgroundTransparency = 1
        }, {
            Picture = v2.createElement("ImageButton", {
                AnchorPoint = Vector2.new(0.5, 0.5),
                Position = UDim2.fromScale(0.5, 0.5),
                LayoutOrder = 1,
                Size = UDim2.new(0, 100, 0, 100),
                BackgroundTransparency = 1,
                BorderSizePixel = 10,
                [v2.Event.Activated] = v21.openEditProfilePicture
            }, {
                UICorner = v2.createElement("UICorner", {
                    CornerRadius = UDim.new(0.5, 0)
                }),
                UserAvatar = v2.createElement(l_LoadableImage_0, {
                    Size = UDim2.new(1, 0, 1, 0),
                    useShimmerAnimationWhileLoading = true,
                    cornerRadius = UDim.new(0.5, 0),
                    shouldHandleReloads = true,
                    Image = l_getStandardSizeAvatarHeadShotRbxthumb_0(v21.localUserId),
                    BackgroundColor3 = l_Theme_0.PlaceHolder.Color,
                    BackgroundTransparency = l_Theme_0.PlaceHolder.Transparency
                })
            }),
            Button = v2.createElement("ImageButton", {
                Size = UDim2.new(0, 36, 0, 36),
                AnchorPoint = Vector2.new(0.5, 1),
                Position = UDim2.new(0.5, 80, 1, 0),
                BackgroundTransparency = l_Theme_0.UIMuted.Transparency,
                BackgroundColor3 = l_Theme_0.UIMuted.Color,
                [v2.Event.Activated] = v21.openEditProfilePicture
            }, {
                UICorner = v2.createElement("UICorner", {
                    CornerRadius = UDim.new(0, 4)
                }),
                Icon = v2.createElement(l_ImageSetLabel_0, {
                    AnchorPoint = Vector2.new(0.5, 0.5),
                    Image = l_Images_0["icons/menu/profilepicture_large"],
                    ImageColor3 = l_Theme_0.IconEmphasis.Color,
                    BackgroundTransparency = 1,
                    Size = UDim2.new(0, 28, 0, 28),
                    Position = UDim2.fromScale(0.5, 0.5)
                })
            })
        }) else nil,
        Content = v2.createElement("Frame", {
            AutomaticSize = Enum.AutomaticSize.Y,
            BackgroundTransparency = 1,
            Size = UDim2.new(1, -48, 0, 0),
            BorderSizePixel = 0,
            LayoutOrder = 3
        }, {
            Layout = v2.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                SortOrder = Enum.SortOrder.LayoutOrder,
                Padding = UDim.new(0, 24)
            }),
            DisplayNameButton = v2.createElement(v10, {
                layoutOrder = 1,
                shouldShimmerName = v21.shouldShimmerName,
                title = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v26.DisplayName else v27.displayNameTitle,
                description = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v26.DisplayNameCaption else v27.displayNameCaption,
                placeHolderText = v21.displayName,
                localUserId = v21.localUserId,
                onActivated = v21.openDisplayNameModal,
                expandSizing = false,
                transparentText = false
            }),
            UsernameButton = v2.createElement(v10, {
                layoutOrder = 2,
                shouldShimmerName = v21.shouldShimmerName,
                title = v26.Username,
                description = v26.UsernameCaption,
                placeHolderText = "@" .. v21.username,
                localUserId = v21.localUserId,
                onActivated = v21.navigateToEditUsername,
                expandSizing = false,
                transparentText = false
            }),
            Divider = v2.createElement("Frame", {
                LayoutOrder = 3,
                BackgroundColor3 = v24.Theme.Divider.Color,
                BackgroundTransparency = v24.Theme.Divider.Transparency,
                BorderSizePixel = 0,
                Size = UDim2.new(1, 0, 0, 1)
            }),
            AboutMeButton = v2.createElement(v10, {
                layoutOrder = 4,
                title = v26.About,
                description = v26.AboutModalCaption,
                placeHolderText = if v21.description ~= nil and v21.description ~= "" then v21.description else v26.AboutPlaceholder,
                shouldShimmerName = false,
                localUserId = v21.localUserId,
                expandSizing = true,
                onActivated = v21.openEditDescription,
                transparentText = not v21.description and true or v21.description == ""
            })
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local l_NavigateToRoute_0 = require(l_Parent_0.NavigationRodux).Thunks.NavigateToRoute;
local l_AppPage_0 = require(l_Parent_0.RobloxAppEnums).AppPage;
local v4 = require(l_Parent_0.React);
local v5 = require(l_Parent_0.UserProfiles);
local v6 = require(l_Parent_0.RoactUtils);
local v7 = require(script.Parent.EditProfileEntryPoint);
local l_useLocalUserId_0 = require(l_Parent_0.RobloxAppHooks).useLocalUserId;
local l_useLocalRobuxBalance_0 = require(l_Parent_0.RobloxAppHooks).useLocalRobuxBalance;
local l_useSelector_0 = v6.Hooks.RoactRodux.useSelector;
local l_ProfileScreens_0 = require(l_script_FirstAncestor_0.Common.Constants).ProfileScreens;
local v12 = require(l_script_FirstAncestor_0.Networking.UsersNetworking);
local l_useDispatch_0 = v6.Hooks.RoactRodux.useDispatch;
local l_useEffectOnMount_0 = v6.Hooks.useEffectOnMount;
local l_Images_0 = require(l_Parent_0.UIBlox).App.ImageSet.Images;
local l_getDeepValue_0 = require(l_Parent_0.LuaSocialLibrariesDeps).SocialLibraries.config({}).Dictionary.getDeepValue;
local l_useUserExperiment_0 = require(l_Parent_0.RoactAppExperiment).useUserExperiment;
local v18 = require(l_script_FirstAncestor_0.Flags.FStringEditProfileToAvatarLayerName);
local v19 = require(l_script_FirstAncestor_0.Flags.EditProfileIXP);
local v20 = require(l_script_FirstAncestor_0.Flags.FFlagEditProfileNavigateToAvatar);
local v21 = require(l_script_FirstAncestor_0.Flags.FFlagEditProfileToAvatarIXPEnabled);
local v22 = require(l_script_FirstAncestor_0.Analytics);
local l_EventNames_0 = v22.EventNames;
local l_useAnalytics_0 = v22.useAnalytics;
local v25 = require(l_script_FirstAncestor_0.Flags.FFlagEditProfileFixLogging);
local v26 = require(l_script_FirstAncestor_0.Flags.FFlagEditProfileAddLoggingForEditAvatar);
return function(v27)
    local v28 = l_useDispatch_0();
    local v29 = l_useLocalUserId_0();
    local v30 = "";
    local v31 = "";
    local v32 = true;
    local v33 = v27.navigation.getParam(l_ProfileScreens_0);
    local v34, v35 = v4.useState(false);
    local v37 = l_useSelector_0(function(v36)
        return l_getDeepValue_0(v36, (("Profile.AdditionalUserFields.%*.description"):format(v29)));
    end);
    local v38 = l_useLocalRobuxBalance_0();
    local v39 = v27.navigation.getParam("navigateToEditUsername");
    local v40 = v27.navigation.getParam("navigateDownToPurchaseRobux");
    local v41, v42 = v4.useState(v37);
    local v43 = nil;
    v43 = if not v25 then if v19.useIsExperimentEnabled() then l_useAnalytics_0() else nil else l_useAnalytics_0();
    local v44 = nil;
    if v21 then
        v44 = l_useUserExperiment_0({
            v18
        }, function(v45)
            return (v45[v18] or {}).profile_picture_on;
        end);
    end;
    l_useEffectOnMount_0(function()
        if not (not v25 and not v43) then
            v43.fireAnalyticsEvent(l_EventNames_0.EditProfileOpened);
        end;
        v28(v12.GetDisplayNameValidation.API(v29, "Test")):andThen(function(_)
            v35(true);
        end):catch(function(_)
        end);
    end);
    local function v49(v48)
        v27.navigation.navigate(v33.GenericToast, {
            toastProps = {
                toastContent = {
                    toastTitle = v48,
                    iconImage = l_Images_0["icons/actions/accept"]
                }
            }
        });
    end;
    local v50 = v27.testProp_openEditProfilePicture or function()
        if v26 then
            v43.fireAnalyticsEvent(l_EventNames_0.OpenAvatarMarketplace);
        end;
        v28(l_NavigateToRoute_0({
            {
                name = l_AppPage_0.Catalog
            }
        }));
    end;
    local v51 = v5.Hooks.useUserProfilesFetch({
        userIds = {
            v29
        },
        query = v5.Queries.userProfilesDisplayNameAndUsernameByUserIds
    });
    if v51.data then
        v30 = v5.Selectors.getUsernameFromId(v51.data, v29);
        v31 = v5.Selectors.getDisplayNameFromId(v51.data, v29);
        v32 = false;
    end;
    return v4.createElement(v7, {
        shouldShimmerName = v32,
        username = v30,
        displayName = v31,
        description = v41,
        localUserId = v29,
        onClose = function()
            v27.navigation.pop();
        end,
        openDisplayNameModal = function()
            if v43 then
                v43.fireAnalyticsEvent(l_EventNames_0.DisplayNameModalOpened);
            end;
            if not v34 then
                v27.navigation.navigate(v33.EditDisplayNameErrorModal);
                return ;
            else
                v27.navigation.navigate(v33.EditDisplayNameModal, {
                    showToast = v49,
                    setDisplayNameAvailable = v35,
                    displayName = v31
                });
                return ;
            end;
        end,
        navigateToEditUsername = function()
            if not v25 then
                if v43 then
                    v43.fireAnalyticsEvent(l_EventNames_0.EditUsernameOpened);
                end;
            else
                v43.fireAnalyticsEvent(l_EventNames_0.EditUsernameOpened);
            end;
            if v38 >= 1000 then
                v39(v49);
                return ;
            else
                v27.navigation.navigate(v33.UsernameInsufficientFundsModal, {
                    robux = 1000 - v38,
                    navigateDownToPurchaseRobux = v40
                });
                return ;
            end;
        end,
        openEditDescription = function()
            v27.navigation.navigate(v33.EditDescriptionModal, {
                initialText = v41,
                setDescription = v42
            });
        end,
        openEditProfilePicture = if v20 or v44 then v50 else nil
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local l_HeaderBar_0 = require(l_Parent_0.UIBlox).App.Bar.HeaderBar;
local v4 = require(l_Parent_0.Localization);
local v5 = require(l_script_FirstAncestor_0.Common.TextKeys);
local l_useLocalization_0 = v4.Hooks.useLocalization;
local l_makeBackButton_0 = require(l_Parent_0.AppHeaderBar).makeBackButton;
local l_GetFFlagUIBloxUseNewHeaderBar_0 = require(l_Parent_0.SharedFlags).UIBlox.GetFFlagUIBloxUseNewHeaderBar;
return function(v9)
    return v2.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 0, 48),
        LayoutOrder = v9.layoutOrder,
        ZIndex = 2
    }, {
        headerBar = v2.createElement(l_HeaderBar_0, {
            isSecondary = true,
            title = l_useLocalization_0({
                title = v5.Title
            }).title,
            backgroundTransparency = 1,
            barHeight = 48,
            renderLeft = if not l_GetFFlagUIBloxUseNewHeaderBar_0() then l_HeaderBar_0.renderLeft.backButton(v9.onClose) else l_makeBackButton_0(v9.onClose)
        })
    });
end;


local l_Parent_0 = script:FindFirstAncestor("EditProfile").Parent;
local v1 = require(l_Parent_0.React);
local v2 = require(l_Parent_0.UIBlox);
local l_Images_0 = v2.App.ImageSet.Images;
local l_ImageSetLabel_0 = v2.Core.ImageSet.ImageSetLabel;
local l_useStyle_0 = v2.Core.Style.useStyle;
local l_StyledTextLabel_0 = v2.App.Text.StyledTextLabel;
local l_ShimmerPanel_0 = v2.App.Loading.ShimmerPanel;
return function(v8)
    local v9 = l_useStyle_0();
    local l_Font_0 = v9.Font;
    local l_Theme_0 = v9.Theme;
    return v1.createElement("Frame", {
        LayoutOrder = v8.layoutOrder,
        AutomaticSize = Enum.AutomaticSize.Y,
        BackgroundTransparency = 1,
        BackgroundColor3 = Color3.new(0, 1, 0),
        Size = UDim2.new(1, 0, 0, 0),
        BorderSizePixel = 0
    }, {
        Layout = v1.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            SortOrder = Enum.SortOrder.LayoutOrder,
            Padding = UDim.new(0, 12)
        }),
        Title = v1.createElement(l_StyledTextLabel_0, {
            layoutOrder = 1,
            text = v8.title,
            fontStyle = l_Font_0.Header2,
            colorStyle = l_Theme_0.TextEmphasis
        }),
        Description = v1.createElement(l_StyledTextLabel_0, {
            layoutOrder = 2,
            text = v8.description,
            fontStyle = l_Font_0.CaptionBody,
            colorStyle = l_Theme_0.TextDefault,
            automaticSize = Enum.AutomaticSize.Y,
            size = UDim2.new(1, 0, 0, 0),
            lineHeight = 1
        }),
        EditButton = if v8.shouldShimmerName then nil else v1.createElement("ImageButton", {
            AutomaticSize = if not v8.expandSizing then nil else Enum.AutomaticSize.Y,
            LayoutOrder = 3,
            BackgroundTransparency = 0,
            Size = UDim2.new(1, 0, 0, 52),
            BackgroundColor3 = l_Theme_0.BackgroundUIDefault.Color,
            [v1.Event.Activated] = v8.onActivated
        }, {
            UICorner = v1.createElement("UICorner", {
                CornerRadius = UDim.new(0, 8)
            }),
            InititialTextContainer = v1.createElement("Frame", {
                BackgroundTransparency = 1,
                Size = UDim2.new(1, -40, 0, 28),
                AutomaticSize = Enum.AutomaticSize.Y
            }, {
                InitialText = v1.createElement("TextLabel", {
                    Size = UDim2.new(1, 0, 1, 0),
                    BackgroundTransparency = 1,
                    TextYAlignment = Enum.TextYAlignment.Center,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    TextSize = l_Font_0.BaseSize * l_Font_0.Body.RelativeSize,
                    AutomaticSize = Enum.AutomaticSize.XY,
                    Text = v8.placeHolderText,
                    Font = l_Font_0.Body.Font,
                    TextColor3 = l_Theme_0.TextEmphasis.Color,
                    TextTruncate = Enum.TextTruncate.AtEnd,
                    TextWrapped = true,
                    TextTransparency = if not v8.transparentText then nil else 0.5
                }, {
                    UISizeConstraint = v1.createElement("UISizeConstraint", {
                        MaxSize = Vector2.new(math.huge, 60)
                    })
                })
            }),
            Padding = v1.createElement("UIPadding", {
                PaddingTop = UDim.new(0, 12),
                PaddingRight = UDim.new(0, 12),
                PaddingBottom = UDim.new(0, 12),
                PaddingLeft = UDim.new(0, 12)
            }),
            Icon = v1.createElement(l_ImageSetLabel_0, {
                AnchorPoint = Vector2.new(1, 0.5),
                Image = l_Images_0["icons/actions/edit/edit"],
                ImageColor3 = l_Theme_0.IconEmphasis.Color,
                BackgroundTransparency = 1,
                Size = UDim2.new(0, 28, 0, 28),
                Position = UDim2.new(1, 0, 0, 12)
            })
        }),
        ShimmerButton = if not v8.shouldShimmerName then nil else v1.createElement(l_ShimmerPanel_0, {
            LayoutOrder = 3,
            Size = UDim2.new(1, 0, 0, 52),
            cornerRadius = UDim.new(0, 8)
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local v3 = require(l_Parent_0.UIBlox);
local l_InteractiveAlert_0 = v3.App.Dialog.Alert.InteractiveAlert;
local l_useScreenSize_0 = require(l_Parent_0.RobloxAppHooks).useScreenSize;
local v6 = require(l_script_FirstAncestor_0.Common.TextKeys);
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local l_ButtonType_0 = v3.App.Button.Enum.ButtonType;
local l_FFlagRealNamesInDisplayNameExperimentEnabled_0 = require(l_Parent_0.SharedFlags).FFlagRealNamesInDisplayNameExperimentEnabled;
local v10 = require(l_script_FirstAncestor_0.Hooks.useDisplayNameText);
return function(v11)
    local v12 = l_useScreenSize_0();
    local v13 = nil;
    if l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then
        v13 = v10();
    end;
    local v14 = l_useLocalization_0({
        title = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v6.EditDisplayName else nil,
        description = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v6.DisplayNameRecently else nil,
        OK = v6.OK
    });
    return v2.createElement(l_InteractiveAlert_0, {
        screenSize = v12,
        title = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v14.title else v13.displayNameEditMessage,
        bodyText = if not l_FFlagRealNamesInDisplayNameExperimentEnabled_0 then v14.description else v13.displayNameCoolDownMessage,
        buttonStackInfo = {
            buttons = {
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = function()
                            v11.navigation.goBack();
                        end,
                        text = v14.OK
                    }
                }
            }
        }
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local v3 = require(l_Parent_0.UIBlox);
local l_InteractiveAlert_0 = v3.App.Dialog.Alert.InteractiveAlert;
local l_useScreenSize_0 = require(l_Parent_0.RobloxAppHooks).useScreenSize;
local v6 = require(l_script_FirstAncestor_0.Common.TextKeys);
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local l_ButtonType_0 = v3.App.Button.Enum.ButtonType;
local v9 = utf8.char(57346);
return function(v10)
    local v11 = l_useScreenSize_0();
    local v12 = l_useLocalization_0({
        cancelButtonText = v6.CancelButtonText,
        buy = v6.Buy,
        insufficientFunds = v6.InsufficientFunds,
        message = {
            v6.InsufficientFundsMessage;
            icon = v9,
            rbx = v10.navigation.getParam("robux")
        }
    });
    return v2.createElement(l_InteractiveAlert_0, {
        screenSize = v11,
        title = v12.insufficientFunds,
        bodyText = v12.message,
        buttonStackInfo = {
            buttons = {
                {
                    buttonType = l_ButtonType_0.Secondary,
                    props = {
                        onActivated = function()
                            v10.navigation.goBack();
                        end,
                        text = v12.cancelButtonText
                    }
                },
                {
                    buttonType = l_ButtonType_0.PrimarySystem,
                    props = {
                        onActivated = v10.navigation.getParam("navigateDownToPurchaseRobux"),
                        text = v12.buy
                    }
                }
            }
        }
    });
end;


return {
    EditDisplayNameErrorModal = require(script.EditDisplayNameErrorModal),
    UsernameInsufficientFundsModal = require(script.UsernameInsufficientFundsModal)
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.React);
local l_useLocalUserId_0 = require(l_Parent_0.RobloxAppHooks).useLocalUserId;
local v4 = require(l_script_FirstAncestor_0.Flags.EditProfileIXP);
local v5 = require(l_script_FirstAncestor_0.Analytics);
local v6 = require(script.Parent.EditUsernameWrapper);
return function(v7)
    local v8 = l_useLocalUserId_0();
    if not v4.useIsExperimentEnabled() then
        return v2.createElement(v6, v7);
    else
        return v2.createElement(v5.Context.Provider, {
            value = {
                fireAnalyticsEvent = v5.setupFireAnalyticsEvents({
                    analytics = v5.AnalyticsService,
                    infoForAllEvents = {
                        uid = v8
                    }
                })
            }
        }, {
            v2.createElement(v6, v7)
        });
    end;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_HttpService_0 = game:GetService("HttpService");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v3 = require(l_Parent_0.React);
local v4 = require(l_Parent_0.RoactNavigation);
local l_JavascriptHybrid_0 = require(l_script_FirstAncestor_0.Common.Constants).JavascriptHybrid;
local l_UrlBuilder_0 = require(l_Parent_0.UrlBuilder).UrlBuilder;
local v7 = require(l_Parent_0.UserProfiles);
local l_useLocalUserId_0 = require(l_Parent_0.RobloxAppHooks).useLocalUserId;
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local v10 = require(l_script_FirstAncestor_0.Common.TextKeys);
local v11 = require(l_script_FirstAncestor_0.Flags.EditProfileIXP);
local v12 = require(l_script_FirstAncestor_0.Analytics);
local l_EventNames_0 = v12.EventNames;
local l_useAnalytics_0 = v12.useAnalytics;
local v15 = require(l_script_FirstAncestor_0.Flags.FFlagEditProfileFixLogging);
return v4.withNavigation(function(v16)
    local v17 = v7.Hooks.useUserProfilesFetch({
        userIds = {
            (l_useLocalUserId_0())
        },
        query = v7.Queries.userProfilesAllNamesByUserIds
    });
    local v18 = l_useLocalization_0({
        updated = v10.UsernameUpdated
    });
    local v19 = nil;
    v19 = if not v15 then if v11.useIsExperimentEnabled() then l_useAnalytics_0() else nil else l_useAnalytics_0();
    local function _(v20)
        if (not (v20.moduleID == l_JavascriptHybrid_0.Module.Navigation and v20.functionName == l_JavascriptHybrid_0.Function.navigateToFeature) or not v20.params) or not v20.params.params then
            return nil;
        else
            return v20.params.params.feature;
        end;
    end;
    local function _(v22)
        return if ((v22.moduleID == l_JavascriptHybrid_0.Module.Navigation and v22.functionName == l_JavascriptHybrid_0.Function.navigateToFeature) and v22.params) and v22.params.params then v22.params.params.feature else nil == l_JavascriptHybrid_0.Feature.CloseUpdateUsernameModal;
    end;
    local function _(v24)
        return if ((v24.moduleID == l_JavascriptHybrid_0.Module.Navigation and v24.functionName == l_JavascriptHybrid_0.Function.navigateToFeature) and v24.params) and v24.params.params then v24.params.params.feature else nil == l_JavascriptHybrid_0.Feature.UpdateUsernameModalSuccess;
    end;
    local function _()
        v17.refetch();
        if not (not v15 and not v19) then
            v19.fireAnalyticsEvent(l_EventNames_0.UsernameSaved);
        end;
    end;
    return v3.createElement(v16.BrowserWrapperComponent, {
        isVisible = true,
        webViewVisible = true,
        modal = false,
        url = l_UrlBuilder_0.static.settings.account() .. "?changeusername",
        isGenericWebview = true,
        javaScriptCallback = function(v27)
            local v28 = l_HttpService_0:JSONDecode(v27);
            if not (if ((v28.moduleID == l_JavascriptHybrid_0.Module.Navigation and v28.functionName == l_JavascriptHybrid_0.Function.navigateToFeature) and v28.params) and v28.params.params then v28.params.params.feature else nil == l_JavascriptHybrid_0.Feature.UpdateUsernameModalSuccess) then
                if if ((v28.moduleID == l_JavascriptHybrid_0.Module.Navigation and v28.functionName == l_JavascriptHybrid_0.Function.navigateToFeature) and v28.params) and v28.params.params then v28.params.params.feature else nil == l_JavascriptHybrid_0.Feature.CloseUpdateUsernameModal then
                    v16.navigation.goBack();
                end;
                return ;
            else
                v17.refetch();
                if not (not v15 and not v19) then
                    v19.fireAnalyticsEvent(l_EventNames_0.UsernameSaved);
                end;
                v16.navigation.goBack();
                v16.showToast(v18.updated);
                return ;
            end;
        end
    });
end);


game:DefineFastFlag("EditProfileIXPEnabledV1", false);
local l_Parent_0 = script:FindFirstAncestor("EditProfile").Parent;
local v1 = require(l_Parent_0.RoactAppExperiment);
local l_getFStringSelfProfileView_0 = require(l_Parent_0.SharedFlags).getFStringSelfProfileView;
local l_useUserExperiment_0 = v1.useUserExperiment;
local v4 = require(script.Parent.FFlagEditProfileSetupNewExperimentFlow);
local v5 = game:DefineFastString("EditProfileExperimentKey", "can_view_edit_profile");
local function v6()
    return game:GetFastFlag("EditProfileIXPEnabledV1");
end;
local function v9(v7)
    local v8 = (v7 or {})[l_getFStringSelfProfileView_0()] or {};
    if not v4 then
        return game:GetFastFlag("EditProfileIXPEnabledV1") and v8.can_view_edit_profile == true;
    else
        return v8[v5] == true;
    end;
end;
return {
    isEditProfileExperimentEnabled = v6,
    isExperimentEnabled = v9,
    useIsExperimentEnabled = function(v10)
        return l_useUserExperiment_0({
            l_getFStringSelfProfileView_0()
        }, v9, if not v10 then nil else v10.isExposureEnabled);
    end
};


game:DefineFastFlag("InternationalNamesIXPSetupEnabled_v2", false);
game:DefineFastFlag("InternationalNamesIXPEnabled", false);
game:DefineFastFlag("InternationalNamesEnabledForAll", false);
local v0 = game:DefineFastString("InternationalNamesIXPLayer", "Social.InternationalDisplayName");
local v1 = game:DefineFastString("InternationalNamesIXPExperimentDefinition", "enableInternationalNames");
local l_IXPService_0 = game:GetService("IXPService");
local l_useUserExperiment_0 = require(script:FindFirstAncestor("EditProfile").Parent.RoactAppExperiment).useUserExperiment;
local function v4()
    return game:GetFastFlag("InternationalNamesIXPSetupEnabled_v2");
end;
local function _()
    return game:GetFastFlag("InternationalNamesIXPEnabled");
end;
local function _()
    return game:GetFastFlag("InternationalNamesEnabledForAll");
end;
local function v10(v7)
    local v8 = (v7 or {})[v0] or {};
    local v9;
    if game:GetFastFlag("InternationalNamesIXPEnabled") then
        v9 = true;
        if not (v8[v1] ~= true) then
            goto label0;
        end;
    end;
    v9 = game:GetFastFlag("InternationalNamesEnabledForAll");
    ::label0::;
    return v9;
end;
return {
    FFlagIsSetupEnabled = v4,
    FFlagIsExperimentEnabled = v10,
    useIsExperimentEnabled = function(v11)
        return l_useUserExperiment_0({
            v0
        }, v10, (v11 or {
            isExposureEnabled = false
        }).isExposureEnabled);
    end,
    logExposure = function()
        l_IXPService_0:LogUserLayerExposure(v0);
    end
};


local v0 = require(script:FindFirstAncestor("EditProfile").Parent.RoactAppExperiment);
local v1 = game:DefineFastString("RealNamesInDisplayNamesIXP_v1", "Social.DisplayNameSetting");
local v2 = game:DefineFastString("RealNamesInDisplayNamesExperimentDefinition", "can_see_real_names");
local v3 = game:DefineFastFlag("RealNamesInDisplayNamesEnabledForAll", false);
local l_useUserExperiment_0 = v0.useUserExperiment;
local function v6(v5)
    if not v3 then
        return ((v5 or {})[v1] or {})[v2] == true;
    else
        return true;
    end;
end;
return {
    isExperimentEnabled = v6,
    useIsExperimentEnabled = function(v7)
        return l_useUserExperiment_0({
            v1
        }, v6, v7.isExposureEnabled);
    end
};


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


return {
    FFlagEditProfileSetupNewExperimentFlow = require(script.FFlagEditProfileSetupNewExperimentFlow),
    RealNamesInDisplayNamesIXP = require(script.RealNamesInDisplayNamesIXP),
    InternationalNamesIXP = require(script.InternationalNamesIXP),
    getFFlagEditProfilePageEnabled = require(script.getFFlagEditProfilePageEnabled),
    EditProfileIXP = require(script.EditProfileIXP),
    FFlagEditProfileNavigateToAvatar = require(script.FFlagEditProfileNavigateToAvatar),
    FFlagEditProfileToAvatarIXPEnabled = require(script.FFlagEditProfileToAvatarIXPEnabled),
    FStringEditProfileToAvatarLayerName = require(script.FStringEditProfileToAvatarLayerName),
    FFlagEditProfileAddLoggingForEditAvatar = require(script.FFlagEditProfileAddLoggingForEditAvatar)
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_script_FirstAncestor_0.Common.TextKeys);
local v3 = require(l_script_FirstAncestor_0.Flags.RealNamesInDisplayNamesIXP);
local v4 = require(script.Parent.useRealNamesInDisplayNamesEnabled);
local l_useLocalization_0 = require(l_Parent_0.Localization).Hooks.useLocalization;
local v6 = {
    displayNameCaption = v2.DisplayNameCaption,
    displayNameChangeError = v2.DisplayNameError,
    displayNameChangeMixedCharactersError = v2.DisplayNameError,
    displayNameModalCaption = v2.DisplayNameModalCaption,
    displayNameCoolDownMessage = v2.DisplayNameRecently,
    displayNameTooShortError = v2.DisplayNameTooShort,
    displayNameUpdatedMessage = v2.DisplayNameUpdated,
    displayNameEditMessage = v2.EditDisplayName,
    displayNameTitle = v2.DisplayName
};
local v7 = {
    displayNameCaption = v2.AgedUpDisplayNameCaption,
    displayNameChangeError = v2.AgedUpDisplayNameError,
    displayNameChangeMixedCharactersError = v2.AgedUpDisplayNameMixedCharactersError,
    displayNameModalCaption = v2.AgedUpDisplayNameModalCaption,
    displayNameCoolDownMessage = v2.AgedUpDisplayNameRecently,
    displayNameTooShortError = v2.AgedUpDisplayNameTooShort,
    displayNameUpdatedMessage = v2.AgedUpDisplayNameUpdated,
    displayNameEditMessage = v2.EditAgedUpDisplayName,
    displayNameTitle = v2.AgedUpDisplayName
};
return function()
    return l_useLocalization_0(if not not v3.useIsExperimentEnabled({
        isExposureEnabled = true
    }) and v4() then v7 else v6);
end;


local l_useAppPolicy_0 = require(script:FindFirstAncestor("EditProfile").Parent.UniversalAppPolicy).useAppPolicy;
local v1 = game:DefineFastFlag("RealNamesInDisplayNameExperimentRunning", false);
return function()
    return l_useAppPolicy_0(function(v2)
        if not v1 then
            return v2.getRealNamesInDisplayNamesEnabled();
        else
            return true;
        end;
    end);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local l_Parent_0 = l_script_FirstAncestor_0.Parent;
local v2 = require(l_Parent_0.LuaSocialLibrariesDeps);
local v3 = require(l_Parent_0.RoduxNetworking);
local l_httpRequest_0 = v2.httpRequest;
return (v3.config({
    keyPath = require(l_script_FirstAncestor_0.Common.Constants).RODUX_KEY .. ".NetworkStatus",
    networkImpl = l_httpRequest_0.config({
        requestFunction = function(v5, v6, v7)
            return l_httpRequest_0.requestFunctions.RequestInternal(v5, v6, v7);
        end,
        maxRetryCount = game:DefineFastInt("EditProfileMaxHttpRetries", 5)
    })
}));


return (require(script:FindFirstAncestor("EditProfile").Parent.NetworkingUsers).config({
    roduxNetworking = require(script.Parent.ProfileRoduxNetworking)
}));


return {
    ProfileRoduxNetworking = require(script.ProfileRoduxNetworking),
    UsersNetworking = require(script.UsersNetworking)
};


local l_Parent_0 = script:FindFirstAncestor("EditProfile").Parent;
local l_createTreeWithProviders_0 = require(l_Parent_0.Dev.SocialTestHelpers).TestHelpers.createTreeWithProviders;
local v2 = require(l_Parent_0.React);
local v3 = require(l_Parent_0.RoactAppExperiment);
local l_MagicMock_0 = require(l_Parent_0.LuaSocialLibrariesDeps).Mock.MagicMock;
local l_mockPolicyProvider_0 = require(l_Parent_0.Dev.UnitTestHelpers).mockPolicyProvider;
return function(v6, v7)
    return v2.createElement(v3.Provider, {
        value = l_MagicMock_0.new()
    }, {
        Element = l_mockPolicyProvider_0(l_createTreeWithProviders_0(v6, v7), v7.mockPolicy)
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local v1 = require(l_script_FirstAncestor_0.Parent.Dev.SocialTestHelpers);
local l_findElementWithAssert_0 = v1.TestHelpers.findElementWithAssert;
return {
    findTopBarTitle = l_findElementWithAssert_0({
        Text = require(l_script_FirstAncestor_0.Common.TextKeys).Title
    }),
    findTopBar = l_findElementWithAssert_0({
        Name = "TopBar"
    }),
    findBackButton = l_findElementWithAssert_0(v1.TestHelpers.findImageSet("icons/navigation/pushBack"))
};


return {
    Analytics = require(script.Analytics),
    EditProfilePage = require(script.Components.EditProfileEntryPoint),
    EditDisplayNameModal = require(script.Components.EditDisplayNameModal),
    EditDescriptionModal = require(script.Components.EditDescriptionModal),
    EditDisplayNameErrorModal = require(script.Components.ErrorModals.EditDisplayNameErrorModal),
    UsernameInsufficientFundsModal = require(script.Components.ErrorModals.UsernameInsufficientFundsModal),
    Flags = require(script.Flags),
    ["jest.config"] = script["jest.config"],
    installReducer = require(script.installReducer),
    RoduxKey = require(script.Common.Constants).RODUX_KEY,
    EditUsernameWrapper = require(script.EditUsernameWrapper)
};


local l_script_FirstAncestor_0 = script:FindFirstAncestor("EditProfile");
local v1 = require(l_script_FirstAncestor_0.Parent.Rodux);
local v2 = require(l_script_FirstAncestor_0.Networking.ProfileRoduxNetworking);
return function()
    return v1.combineReducers({
        NetworkStatus = v2.installReducer()
    });
end;


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


local l_Parent_0 = script:FindFirstAncestor("ErrorReporters").Parent;
local l_HttpService_0 = game:GetService("HttpService");
local v2 = require(l_Parent_0.Cryo);
local v3 = require(l_Parent_0.t);
local v4 = require(script.Parent.ProcessErrorStack);
local v5 = require(script.Parent.Flags.GetFFlagBacktraceMainSourcePathEnabled);
local v6 = v3.strictInterface({
    name = v3.optional(v3.string),
    fault = v3.optional(v3.boolean),
    stack = v3.optional(v3.array((v3.strictInterface({
        guessed_frame = v3.optional(v3.boolean),
        funcName = v3.optional(v3.string),
        address = v3.optional(v3.string),
        line = v3.optional(v3.string),
        column = v3.optional(v3.string),
        sourceCode = v3.optional(v3.string),
        library = v3.optional(v3.string),
        debug_identifier = v3.optional(v3.string),
        faulted = v3.optional(v3.boolean),
        registers = v3.optional(v3.map(v3.string, v3.some(v3.string, v3.number)))
    }))))
});
local v7 = v3.strictInterface({
    name = v3.string,
    registers = v3.map(v3.string, v3.string)
});
local v8 = v3.strictInterface({
    text = v3.optional(v3.string),
    startLine = v3.optional(v3.number),
    startColumn = v3.optional(v3.number),
    startPos = v3.optional(v3.number),
    path = v3.optional(v3.string),
    tabWidth = v3.optional(v3.number)
});
local v9 = v3.strictInterface({
    start = v3.string,
    size = v3.optional(v3.number),
    data = v3.optional(v3.string),
    perms = v3.optional((v3.strictInterface({
        read = v3.boolean,
        write = v3.boolean,
        exec = v3.boolean
    })))
});
local v10 = v3.strictInterface({
    start = v3.string,
    size = v3.number,
    code_file = v3.optional(v3.string),
    version = v3.optional(v3.string),
    debug_file = v3.optional(v3.string),
    debug_identifier = v3.optional(v3.string),
    debug_file_exists = v3.optional(v3.boolean)
});
local v11 = v3.optional(v3.map(v3.string, v3.some(v3.string, v3.number, v3.boolean)));
local v19 = v3.optional(v3.map(v3.string, function(v12)
    local function v13(v14)
        if type(v14) == "table" then
            for v15, v16 in pairs(v14) do
                local v17, v18 = v13(v16);
                if not v17 then
                    return false, string.format("error when checking key: %s - %s", v15, v18);
                end;
            end;
            return true;
        else
            return v3.some(v3.string, v3.number, v3.boolean)(v14);
        end;
    end;
    return v13(v12);
end));
local v27 = v3.intersection(v3.strictInterface({
    uuid = v3.string,
    timestamp = v3.number,
    lang = v3.string,
    langVersion = v3.string,
    agent = v3.string,
    agentVersion = v3.string,
    threads = v3.map(v3.string, v6),
    mainThread = v3.string,
    attributes = v11,
    annotations = v19,
    symbolication = v3.optional(v3.literal("minidump")),
    entryThread = v3.optional(v3.string),
    arch = v3.optional(v7),
    fingerprint = v3.optional(v3.string),
    classifiers = v3.optional(v3.array(v3.string)),
    sourceCode = v3.optional(v3.map(v3.string, v8)),
    memory = v3.optional(v3.array(v9)),
    modules = v3.optional(v3.array(v10))
}), function(v20)
    local v21 = false;
    for _, v23 in pairs(v20.threads) do
        local l_stack_0 = v23.stack;
        if l_stack_0 ~= nil then
            for _, v26 in ipairs(l_stack_0) do
                if v26.registers ~= nil then
                    v21 = true;
                    break;
                end;
            end;
        end;
        if v21 then
            break;
        end;
    end;
    if v21 and v20.arch == nil then
        return false, "arch must exist if you want to have registers in the stack";
    else
        return true;
    end;
end);
local v28 = {
    IAttributes = v11,
    IAnnotations = v19
};
v28.__index = v28;
local function _(v29)
    if v29 and type(v29) == "table" then
        local v30 = v2.Dictionary.keys(v29);
        if #v30 > 0 then
            local v31 = v29[v30[1]];
            if v31 and v31.path ~= nil then
                return v31.path;
            end;
        end;
    end;
    return "";
end;
v28.validate = function(v33)
    return v27(v33);
end;
v28.new = function()
    local v34 = {
        uuid = l_HttpService_0:GenerateGUID(false):lower(),
        timestamp = os.time(),
        lang = "lua",
        langVersion = "Roblox",
        agent = "backtrace-Lua",
        agentVersion = "0.1.0",
        threads = {},
        mainThread = "default"
    };
    setmetatable(v34, v28);
    return v34;
end;
v28.addAttributes = function(v35, v36)
    if type(v36) ~= "table" then
        warn("Cannot add attributes of type: ", (type(v36)));
        return ;
    else
        v35.attributes = v2.Dictionary.join(v35.attributes or {}, v36);
        return ;
    end;
end;
v28.addAnnotations = function(v37, v38)
    if type(v38) ~= "table" then
        warn("Cannot add annotations of type: ", (type(v38)));
        return ;
    else
        v37.annotations = v2.Dictionary.join(v37.annotations or {}, v38);
        return ;
    end;
end;
v28.addStackToThread = function(v39, v40, v41)
    v39.threads = v2.Dictionary.join(v39.threads, {
        [v41] = {
            name = v41,
            stack = v40
        }
    });
end;
v28.addStackToMainThread = function(v42, v43)
    v42:addStackToThread(v43, v42.mainThread);
end;
v28.fromMessageAndStack = function(v44, v45)
    local v46 = v28.new();
    v46:addAttributes({
        ["error.message"] = v44
    });
    local v47, v48 = v4(v45);
    v46:addStackToMainThread(v47);
    v46.sourceCode = v48;
    if v5() then
        local v49 = {};
        local l_sourceCode_0 = v46.sourceCode;
        local v51;
        if l_sourceCode_0 and type(l_sourceCode_0) == "table" then
            local v52 = v2.Dictionary.keys(l_sourceCode_0);
            if #v52 > 0 then
                local v53 = l_sourceCode_0[v52[1]];
                if v53 and v53.path ~= nil then
                    v51 = v53.path;
                    goto label0 --[[  true, true  ]];
                end;
            end;
        end;
        v51 = "";
        ::label0::;
        v49.MainSourcePath = v51;
        v46:addAttributes(v49);
    end;
    return v46;
end;
v28.fromDetails = function(v54)
    local v55 = v28.new();
    v55:addAttributes({
        ["error.message"] = v54.message
    });
    v55.sourceCode = {};
    local v56 = 0;
    for v57, v58 in ipairs(v54.stacks) do
        local v59, v60, v61 = v4(v58, v56);
        if v57 == 1 then
            v55:addStackToMainThread(v59);
        else
            v55:addStackToThread(v59, "stack" .. v57);
        end;
        v55.sourceCode = v2.Dictionary.join(v55.sourceCode, v60);
        v56 = v61;
    end;
    v55:addAnnotations(v54.annotations);
    if v5() then
        local v62 = {};
        local l_sourceCode_1 = v55.sourceCode;
        local v64;
        if l_sourceCode_1 and type(l_sourceCode_1) == "table" then
            local v65 = v2.Dictionary.keys(l_sourceCode_1);
            if #v65 > 0 then
                local v66 = l_sourceCode_1[v65[1]];
                if v66 and v66.path ~= nil then
                    v64 = v66.path;
                    goto label1 --[[  true, true  ]];
                end;
            end;
        end;
        v64 = "";
        ::label1::;
        v62.MainSourcePath = v64;
        v55:addAttributes(v62);
    end;
    return v55;
end;
return v28;


local l_Parent_0 = script:FindFirstAncestor("ErrorReporters").Parent;
local l_RunService_0 = game:GetService("RunService");
local v2 = require(l_Parent_0.Cryo);
local v3 = require(l_Parent_0.t);
local v4 = require(script.Parent.BacktraceReport);
local v5 = require(script.Parent.Parent.ErrorQueue);
local v6 = l_RunService_0:IsStudio();
local v7 = game:DefineFastInt("OldestUAVersionToReportErrors", 0);
local v8 = {};
v8.__index = v8;
local v9 = v3.strictInterface({
    httpService = v3.some(v3.instanceOf("HttpService"), v3.interface({
        JSONEncode = v3.callback,
        JSONDecode = v3.callback,
        RequestInternal = v3.callback
    })),
    token = v3.string,
    processErrorReportMethod = v3.optional(v3.callback),
    queueOptions = v3.optional(v3.table),
    generateLogMethod = v3.optional(v3.callback),
    logIntervalInSeconds = v3.optional(v3.numberPositive)
});
v8.new = function(v10)
    local v11, v12 = v9(v10);
    local v13 = nil;
    if not v11 then
        if not v6 and not _G.__DEV__ then
            v13 = {
                _isEnabled = false
            };
        else
            error("invalid arguments for BacktraceReporter: " .. v12);
        end;
    else
        v13 = {
            _isEnabled = true,
            _httpService = v10.httpService,
            _errorQueue = nil,
            _reportUrl = game:GetFastString("ErrorUploadToBacktraceBaseUrl") .. "token=" .. v10.token,
            _processErrorReportMethod = v10.processErrorReportMethod,
            _sharedAttributes = {},
            _sharedAnnotations = {},
            _generateLogMethod = v10.generateLogMethod,
            _logIntervalInSeconds = v10.logIntervalInSeconds or 60,
            _lastLogTime = 0
        };
    end;
    setmetatable(v13, v8);
    if v13._isEnabled then
        v13._errorQueue = v5.new(function(...)
            v13:_reportErrorFromErrorQueue(...);
        end, v10.queueOptions);
        v13._errorQueue:startTimer();
    end;
    return v13;
end;
v8.isTooOldToReportErrors = function(_)
    local v15 = tonumber(string.match(l_RunService_0:GetRobloxVersion(), ".(%d+)."));
    if v15 then
        if v15 < v7 then
            return true;
        else
            return false;
        end;
    else
        return false;
    end;
end;
v8.sendErrorReport = function(v16, v17, v18)
    if v16._isEnabled then
        if not v16:isTooOldToReportErrors() then
            if not (not v6 and not _G.__DEV__) then
                assert(v17:validate());
            end;
            local l_status_0, l_result_0 = pcall(function()
                return v16._httpService:JSONEncode(v17);
            end);
            if l_status_0 then
                pcall(function()
                    v16._httpService:RequestInternal({
                        Url = v16._reportUrl .. "&format=json",
                        Method = "POST",
                        Headers = {
                            ["Content-Type"] = "application/json"
                        },
                        Body = l_result_0
                    }):Start(function(_, v22)
                        if v22.StatusCode == 200 and v18 ~= nil then
                            local l_status_1, l_result_1 = pcall(function()
                                return v16._httpService:JSONDecode(v22.Body);
                            end);
                            if l_status_1 and l_result_1._rxid ~= nil then
                                v16:_sendLogToReport(l_result_1._rxid, v18);
                            end;
                        end;
                    end);
                end);
                return ;
            else
                warn("Cannot convert report to Json");
                return ;
            end;
        else
            return ;
        end;
    else
        return ;
    end;
end;
v8._sendLogToReport = function(v25, v26, v27)
    if not (type(v27) == "string") or #v27 == 0 then
        return ;
    else
        pcall(function()
            v25._httpService:RequestInternal({
                Url = v25._reportUrl .. "&object=" .. v26 .. "&attachment_name=log.txt",
                Method = "POST",
                Headers = {
                    ["Content-Type"] = "text/plain"
                },
                Body = v27
            }):Start(function(_, _)
            end);
        end);
        return ;
    end;
end;
v8._generateLog = function(v30)
    if v30._generateLogMethod ~= nil and v30._logIntervalInSeconds < tick() - v30._lastLogTime then
        v30._lastLogTime = tick();
        local l_status_2, l_result_2 = pcall(function()
            return v30._generateLogMethod();
        end);
        if (l_status_2 and type(l_result_2) == "string") and #l_result_2 > 0 then
            return l_result_2;
        end;
    end;
    return nil;
end;
v8._generateErrorReport = function(v33, v34, v35, v36)
    local v37 = nil;
    v37 = if type(v36) == "table" then v4.fromDetails(v36) else v4.fromMessageAndStack(v34, v35);
    v37:addAttributes(v33._sharedAttributes);
    v37:addAnnotations(v33._sharedAnnotations);
    if type(v36) == "string" and v36 ~= "" then
        v37:addAnnotations({
            stackDetails = v36
        });
    end;
    return v37;
end;
v8.reportErrorImmediately = function(v38, v39, v40, v41)
    if v38._isEnabled then
        local v42 = v38:_generateErrorReport(v39, v40, v41);
        if v38._processErrorReportMethod ~= nil then
            v42 = v38._processErrorReportMethod(v42);
        end;
        v38:sendErrorReport(v42, (v38:_generateLog()));
        return ;
    else
        return ;
    end;
end;
v8.reportErrorDeferred = function(v43, v44, v45, v46)
    if v43._isEnabled then
        local v47 = string.format("%s | %s", v44, v45);
        local v48 = {};
        if not v43._errorQueue:hasError(v47) then
            local v49 = v43:_generateErrorReport(v44, v45, v46);
            if v43._processErrorReportMethod ~= nil then
                v49 = v43._processErrorReportMethod(v49);
            end;
            v48 = {
                backtraceReport = v49,
                log = v43:_generateLog()
            };
        end;
        v43._errorQueue:addError(v47, v48);
        return ;
    else
        return ;
    end;
end;
v8._reportErrorFromErrorQueue = function(v50, _, v52, v53)
    local l_backtraceReport_0 = v52.backtraceReport;
    local l_log_0 = v52.log;
    l_backtraceReport_0:addAttributes({
        ErrorCount = v53
    });
    v50:sendErrorReport(l_backtraceReport_0, l_log_0);
end;
local l_IAttributes_0 = v4.IAttributes;
v8.updateSharedAttributes = function(v57, v58)
    local v59 = v2.Dictionary.join(v57._sharedAttributes, v58);
    local v60, v61 = l_IAttributes_0(v59);
    if not v60 then
        if not v6 and not _G.__DEV__ then
            return ;
        else
            assert(v60, v61);
        end;
    end;
    v57._sharedAttributes = v59;
end;
local l_IAnnotations_0 = v4.IAnnotations;
v8.updateSharedAnnotations = function(v63, v64)
    local v65 = v2.Dictionary.join(v63._sharedAnnotations, v64);
    local v66, v67 = l_IAnnotations_0(v65);
    if not v66 then
        if not v6 and not _G.__DEV__ then
            return ;
        else
            assert(v66, v67);
        end;
    end;
    v63._sharedAnnotations = v65;
end;
v8.reportAllErrors = function(v68)
    if v68._errorQueue ~= nil then
        v68._errorQueue:reportAllErrors();
    end;
end;
v8.stop = function(v69)
    v69._isEnabled = false;
    if v69._errorQueue ~= nil then
        v69:reportAllErrors();
        v69._errorQueue:stopTimer();
    end;
end;
return v8;


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


local function v6(v0, v1)
    if not (type(v0) == "string") or type(v1) ~= "table" then
        return v0, "";
    else
        for _, v3 in ipairs(v1) do
            local v4, v5 = v0:find(v3, nil, true);
            if v4 ~= nil then
                return v0:sub(1, v4 - 1), (v0:sub(v5 + 1));
            end;
        end;
        return v0, "";
    end;
end;
local function _(v7)
    if type(v7) ~= "string" then
        return "";
    else
        return string.match(v7, "([^.]*)$");
    end;
end;
return function(v9, v10)
    local v11 = {};
    local v12 = {};
    if not v10 then
        v10 = 0;
    end;
    if type(v9) ~= "string" then
        return v11, v12;
    else
        for v13 in v9:gmatch("[^\r\n]+") do
            local _ = nil;
            local v15 = nil;
            local v16 = nil;
            local v17 = nil;
            local v18, v19 = v6(v13, {
                ", line ",
                ", Line ",
                ":"
            });
            v15 = v18;
            v18, v19 = v6(v19, {
                " - "
            });
            v17 = v18;
            v16 = v19;
            if v17 ~= "" and v15 ~= "" then
                local v20;
                v18, v19, v20 = string.find(v15, "Script '(.*)'");
                if v20 ~= nil then
                    v15 = v20;
                end;
                local v21 = v12[v15];
                if v21 == nil then
                    v10 = v10 + 1;
                    v21 = v10;
                    v12[v15] = v21;
                end;
                if v16 == "" then
                    local l_v15_0 = v15;
                    v16 = type(l_v15_0) ~= "string" and "" or string.match(l_v15_0, "([^.]*)$");
                end;
                table.insert(v11, {
                    line = v17,
                    funcName = v16,
                    sourceCode = tostring(v21)
                });
            end;
        end;
        local v23 = {};
        for v24, v25 in pairs(v12) do
            v23[tostring(v25)] = {
                path = v24
            };
        end;
        return v11, v23, v10;
    end;
end;


local l_Parent_0 = script.Parent.Parent;
local l_RunService_0 = game:GetService("RunService");
local v2 = require(l_Parent_0.Cryo);
local v3 = require(l_Parent_0.t);
local v4 = {};
v4.__index = v4;
local v5 = v3.tuple(v3.callback, v3.optional(v3.strictInterface({
    queueTimeLimit = v3.optional(v3.numberPositive),
    queueErrorLimit = v3.optional(v3.numberPositive),
    queueKeyLimit = v3.optional(v3.numberPositive)
})));
v4.new = function(v6, v7)
    assert(v5(v6, v7));
    v7 = v7 or {};
    local v8 = {
        _reportMethod = v6,
        _queueTimeLimit = v7.queueTimeLimit or 30,
        _queueErrorLimit = v7.queueErrorLimit or 30,
        _queueKeyLimit = v7.queueKeyLimit or 10,
        _errors = {},
        _totalErrorCount = 0,
        _totalKeyCount = 0,
        _runningTime = 0,
        _renderSteppedConnection = nil
    };
    setmetatable(v8, v4);
    return v8;
end;
v4.hasError = function(v9, v10)
    if not (type(v10) == "string") or v10 == "" then
        return false;
    else
        return v9._errors[v10] ~= nil;
    end;
end;
v4.addError = function(v11, v12, v13)
    if not (type(v12) == "string") or v12 == "" then
        return ;
    else
        if v11._errors[v12] then
            v11._errors[v12].count = v11._errors[v12].count + 1;
        else
            v11._errors[v12] = {
                data = v13,
                count = 1
            };
            v11._totalKeyCount = v11._totalKeyCount + 1;
        end;
        v11._totalErrorCount = v11._totalErrorCount + 1;
        if v11:isReadyToReport() then
            v11:reportAllErrors();
        end;
        return ;
    end;
end;
v4.isReadyToReport = function(v14)
    local v15 = true;
    if v14._queueKeyLimit > v14._totalKeyCount then
        v15 = true;
        if v14._queueErrorLimit > v14._totalErrorCount then
            v15 = false;
            if v14._totalErrorCount > 0 then
                v15 = v14._queueTimeLimit <= v14._runningTime;
            end;
        end;
    end;
    return v15;
end;
v4.reportAllErrors = function(v16)
    local v17 = v2.Dictionary.join(v16._errors, {});
    v16._errors = {};
    v16._totalErrorCount = 0;
    v16._totalKeyCount = 0;
    v16._runningTime = 0;
    for v18, v19 in pairs(v17) do
        v16._reportMethod(v18, v19.data, v19.count);
    end;
end;
v4._onRenderStep = function(v20, v21)
    v20._runningTime = v20._runningTime + v21;
    if v20:isReadyToReport() then
        v20:reportAllErrors();
    end;
end;
v4.startTimer = function(v22)
    if v22._renderSteppedConnection == nil then
        v22._runningTime = 0;
        v22._renderSteppedConnection = l_RunService_0.renderStepped:Connect(function(v23)
            v22:_onRenderStep(v23);
        end);
    end;
end;
v4.stopTimer = function(v24)
    if v24._renderSteppedConnection ~= nil then
        v24._renderSteppedConnection:Disconnect();
        v24._runningTime = 0;
        v24._renderSteppedConnection = nil;
    end;
end;
return v4;


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


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


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function(v0, v1, v2)
    return {
        userId = tostring(v0),
        character = v1,
        humanoid = v2
    };
end);


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


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function()
    return {};
end);


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


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


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


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


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function(v0, v1, v2)
    return {
        childName = v0,
        property = v1,
        value = v2
    };
end);


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        property = v0,
        value = v1
    };
end);


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


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


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


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


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


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


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


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        useTranslation = v0,
        messageId = v1
    };
end);


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        team = v0.team,
        isChatCoreGuiEnabled = v0.isChatCoreGuiEnabled == nil and true or v0.isChatCoreGuiEnabled,
        isTouchEnabled = v0.isTouchEnabled
    };
end);


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        value = {
            preferredTransparency = v0.preferredTransparency or 1
        }
    };
end);


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function(v0, v1, v2)
    return {
        name = v0,
        primaryAlias = v1,
        secondaryAlias = v2
    };
end);


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function(v0)
    return {
        bubbleChatSettings = v0.bubbleChatSettings or {},
        chatWindowSettings = v0.chatWindowSettings or {},
        chatInputBarSettings = v0.chatInputBarSettings or {}
    };
end);


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


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


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


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


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


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


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function(v0, v1)
    return {
        messageId = v0,
        newText = v1
    };
end);


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


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


return require(script:FindFirstAncestor("ExpChat").Parent.Rodux).makeActionCreator(script.Name, function(v0, v1, v2, v3)
    return {
        userId = tostring(v0),
        username = v1,
        displayName = v2,
        hasVerifiedBadge = v3
    };
end);


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


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


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


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


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


local l_RbxAnalyticsService_0 = game:GetService("RbxAnalyticsService");
local l_script_FirstAncestor_0 = script:FindFirstAncestor("ExpChat");
local l_Dictionary_0 = require(l_script_FirstAncestor_0.Parent.llama).Dictionary;
local v3 = require(l_script_FirstAncestor_0.Logger):new("ExpChat/" .. script.Name);
local v4 = {};
local l_l_RbxAnalyticsService_0_0 = l_RbxAnalyticsService_0;
local function v7(v6)
    return l_Dictionary_0.join(v6, {
        gameId = tostring(game.GameId),
        placeId = tostring(game.PlaceId)
    });
end;
local function v12(v8, v9, v10, v11)
    if l_l_RbxAnalyticsService_0_0 then
        v3:debug("Event: {}", v10);
        l_l_RbxAnalyticsService_0_0:SetRBXEventStream(v8, v9, v10, v7(v11 or {}));
    end;
end;
v4.with = function(v13)
    l_l_RbxAnalyticsService_0_0 = v13 or l_RbxAnalyticsService_0;
end;
v4.FireRccAnalyticsWithEventName = function(v14, v15)
    v12("rcc", "experienceChat", v14, v15);
end;
v4.FireClientAnalyticsWithEventName = function(v16, v17)
    v12("client", "experienceChat", v16, v17);
end;
v4.reportCounter = function(v18, v19)
    if l_l_RbxAnalyticsService_0_0 then
        v3:debug("Counter: {}", v18);
        l_l_RbxAnalyticsService_0_0:ReportCounter(v18, v19 or 1);
    end;
end;
return v4;