local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Actions_0 = l_Parent_0.Src.Actions;
local v7 = require(l_Actions_0.SetView);
local v8 = require(l_Actions_0.ChangeCurrentEventName);
local l_VIEW_ID_0 = require(l_Parent_0.Src.Util.Constants).VIEW_ID;
local l_SelectInput_0 = v3.UI.SelectInput;
local v11 = v1.PureComponent:extend("Dropdown");
v11.init = function(v12)
    v12.selectItem = function(v13)
        v12.props.SetView(v13);
        v12.props.ChangeCurrentEventName(v13);
    end;
    v12.toggle = function()
        v12:setState({
            isOpen = not v12.state.isOpen
        });
    end;
    v12.Items = (function(_)
        local v15 = {};
        for _, v17 in pairs(l_VIEW_ID_0) do
            table.insert(v15, (tostring(v17)));
        end;
        return v15;
    end)(l_VIEW_ID_0);
end;
v11.render = function(v18)
    return v1.createElement(l_SelectInput_0, {
        OnItemActivated = v18.selectItem,
        PlaceholderText = v18.props.ActiveView,
        Items = v18.Items
    });
end;
return v2.connect(function(v19, _)
    return {
        ActiveView = v19.Status.ActiveView
    };
end, function(v21)
    return {
        SetView = function(v22)
            v21(v7(v22));
        end,
        ChangeCurrentEventName = function(v23)
            v21(v8(v23));
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v11)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v3.UI;
local l_Container_0 = l_UI_0.Container;
local l_Box_0 = l_UI_0.Box;
local l_Components_0 = l_Parent_0.Src.Components;
local v10 = require(l_Components_0.InputPane);
local v11 = require(l_Components_0.RepopulatableHistory);
local v12 = v1.PureComponent:extend("EventEmulator");
v12.render = function(v13)
    return v1.createElement(l_Container_0, {
        Size = UDim2.new(1, 0, 1, 0),
        Background = l_Box_0
    }, {
        Layout = v1.createElement("UIListLayout", v13.props.Stylizer.Layout.Vertical),
        InputPane = v1.createElement(v10),
        History = v1.createElement(v11)
    });
end;
return v2.connect(function(v14, _)
    return {
        ActiveView = v14.Status.ActiveView
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v12)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v3.UI;
local l_Container_0 = l_UI_0.Container;
local l_Box_0 = l_UI_0.Box;
local l_Components_0 = l_Parent_0.Src.Components;
local v10 = require(l_Components_0.NameBox);
local v11 = require(l_Components_0.Dropdown);
local v12 = require(l_Components_0.Views.RBXEventView);
local v13 = require(l_Components_0.Views.ThemeView);
local v14 = require(l_Components_0.Views.MemStorageEventView);
local v15 = require(l_Parent_0.Src.Util.Constants);
local l_VIEW_ID_0 = v15.VIEW_ID;
local l_INPUT_PANE_LAYOUT_0 = v15.INPUT_PANE_LAYOUT;
local v18 = v1.PureComponent:extend("InputPane");
v18.init = function(v19)
    v19.getView = function()
        local l_ActiveView_0 = v19.props.ActiveView;
        local v21 = "Frame";
        if l_ActiveView_0 == l_VIEW_ID_0.RBXEvent then
            v21 = v12;
        end;
        if l_ActiveView_0 == l_VIEW_ID_0.Theme then
            v21 = v13;
        end;
        if l_ActiveView_0 == l_VIEW_ID_0.MemStorage then
            v21 = v14;
        end;
        return v1.createElement(v21);
    end;
end;
v18.render = function(v22)
    local l_Stylizer_0 = v22.props.Stylizer;
    return v1.createElement(l_Container_0, {
        Size = UDim2.new(1, 0, 0, l_Stylizer_0.Sizes.InputPaneLength),
        Background = l_Box_0,
        LayoutOrder = l_INPUT_PANE_LAYOUT_0.InputPane
    }, {
        Layout = v1.createElement("UIListLayout", l_Stylizer_0.Layout.Vertical),
        Dropdown = v1.createElement(v11),
        Name = v1.createElement(v10),
        View = v22.getView()
    });
end;
return v2.connect(function(v24, _)
    return {
        ActiveView = v24.Status.ActiveView
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v18)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v5 = require(l_Parent_0.Src.Components.TextInput);
local v6 = require(l_Parent_0.Src.Actions.ChangeCurrentEventName);
local l_INPUT_PANE_LAYOUT_0 = require(l_Parent_0.Src.Util.Constants).INPUT_PANE_LAYOUT;
local v8 = v1.PureComponent:extend("NameBox");
v8.init = function(v9)
    v9.OnChange = function(v10)
        v9.props.ChangeCurrentEventName(v10);
    end;
end;
v8.render = function(v11)
    return v1.createElement(v5, {
        Label = "Name",
        Text = v11.props.CurrentEventName,
        LayoutOrder = l_INPUT_PANE_LAYOUT_0.NameBox,
        OnChange = v11.OnChange
    });
end;
return v2.connect(function(v12, _)
    return {
        CurrentEventName = v12.Status.CurrentEventName
    };
end, function(v14)
    return {
        ChangeCurrentEventName = function(v15)
            v14(v6(v15));
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v8)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v6 = require(l_Parent_0.Src.Components.RepopulatableHistoryItem);
local l_UI_0 = v3.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_ScrollingFrame_0 = l_UI_0.ScrollingFrame;
local v11 = v1.PureComponent:extend("RepopulatableHistory");
v11.init = function(v12)
    v12.createChildren = function()
        local l_props_0 = v12.props;
        local l_HistoryItems_0 = l_props_0.HistoryItems;
        local v15 = {
            Layout = v1.createElement("UIListLayout", l_props_0.Stylizer.Layout.Vertical.Vertical)
        };
        for _, v17 in pairs(l_HistoryItems_0) do
            table.insert(v15, 1, v1.createElement(v6, {
                View = v17.View,
                Name = v17.Name,
                Data = v17.Data
            }));
        end;
        return v15;
    end;
end;
v11.render = function(v18)
    return v1.createElement(l_Pane_0, {
        Style = "RoundBox",
        Layout = Enum.FillDirection.Vertical
    }, {
        Header = v1.createElement(l_TextLabel_0, {
            AutomaticSize = Enum.AutomaticSize.Y,
            TextXAlignment = Enum.TextXAlignment.Center,
            Style = "Bold",
            Text = "History"
        }),
        ScrollingContainer = v1.createElement(l_ScrollingFrame_0, {
            Size = UDim2.new(1, 0, 1, -v18.props.Stylizer.Text.BrightText.Size)
        }, v18.createChildren())
    });
end;
return v2.connect(function(v19, _)
    return {
        HistoryItems = v19.History.HistoryItems
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v11)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v3.UI;
local l_Container_0 = l_UI_0.Container;
local l_Box_0 = l_UI_0.Box;
local l_Button_0 = l_UI_0.Button;
local l_Actions_0 = l_Parent_0.Src.Actions;
local v11 = require(l_Actions_0.RemoveHistoryItem);
local v12 = require(l_Actions_0.SetMemStoragePair);
local v13 = require(l_Actions_0.SetRBXParameters);
local v14 = require(l_Actions_0.SetView);
local l_VIEW_ID_0 = require(l_Parent_0.Src.Util.Constants).VIEW_ID;
local v16 = v1.PureComponent:extend("RepopulatableHistoryItem");
v16.init = function(v17)
    v17.repopulateHistoryItem = function()
        local l_props_0 = v17.props;
        local l_CurrentView_0 = l_props_0.CurrentView;
        local l_View_0 = l_props_0.View;
        local l_Data_0 = l_props_0.Data;
        if l_CurrentView_0 ~= l_View_0 then
            v17.props.SetView(l_View_0);
        end;
        if l_View_0 == l_VIEW_ID_0.RBXEvent then
            v17.props.SetRBXParameters(l_Data_0);
        end;
        if l_View_0 == l_VIEW_ID_0.MemStorage then
            v17.props.SetMemStoragePair(l_Data_0);
        end;
    end;
    v17.deleteHistoryItem = function()
        v17.props.RemoveHistoryItem(v17.props.Name);
    end;
end;
v16.render = function(v22)
    local l_props_1 = v22.props;
    local l_Name_0 = l_props_1.Name;
    local l_View_1 = l_props_1.View;
    local l_Stylizer_0 = l_props_1.Stylizer;
    local l_Sizes_0 = l_Stylizer_0.Sizes;
    return v1.createElement(l_Container_0, {
        Background = l_Box_0,
        Size = UDim2.new(1, 0, 0, l_Sizes_0.HistoryButtonMinor)
    }, {
        Layout = v1.createElement("UIListLayout", l_Stylizer_0.Layout.HistoryItem),
        View = v1.createElement("TextLabel", {
            Size = UDim2.new(0, l_Sizes_0.HistoryButtonMajor, 0, l_Sizes_0.HistoryButtonMinor),
            Text = l_View_1,
            LayoutOrder = 2,
            TextColor3 = l_Stylizer_0.Text.BrightText.Color,
            BackgroundTransparency = 1,
            TextSize = 18,
            Font = Enum.Font.SourceSans
        }),
        Name = v1.createElement(l_Button_0, {
            Size = UDim2.new(0, l_Sizes_0.HistoryButtonMajor, 0, l_Sizes_0.HistoryButtonMinor),
            Text = l_Name_0,
            LayoutOrder = 3,
            OnClick = v22.repopulateHistoryItem
        }),
        DeleteButton = v1.createElement(l_Button_0, {
            Size = UDim2.new(0, l_Sizes_0.HistoryButtonMinor, 0, l_Sizes_0.HistoryButtonMinor),
            Text = " \240\159\151\145",
            LayoutOrder = 4,
            OnClick = v22.deleteHistoryItem
        })
    });
end;
return v2.connect(function(v28, _)
    return {
        CurrentView = v28.Status.CurrentView
    };
end, function(v30)
    return {
        RemoveHistoryItem = function(v31)
            v30(v11(v31));
        end,
        SetMemStoragePair = function(v32)
            v30(v12(v32));
        end,
        SetRBXParameters = function(v33)
            v30(v13(v33));
        end,
        SetView = function(v34)
            v30(v14(v34));
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v16)));


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v2.UI;
local l_TextInput_0 = l_UI_0.TextInput;
local l_TitledFrame_0 = l_UI_0.TitledFrame;
local v8 = v1.PureComponent:extend("TextInput");
v8.render = function(v9)
    local l_props_0 = v9.props;
    local l_Label_0 = l_props_0.Label;
    local v12 = l_props_0.Text or "";
    local l_LayoutOrder_0 = l_props_0.LayoutOrder;
    local l_OnChange_0 = l_props_0.OnChange;
    local l_Sizes_0 = l_props_0.Stylizer.Sizes;
    return v1.createElement(l_TitledFrame_0, {
        Title = l_Label_0,
        LayoutOrder = l_LayoutOrder_0
    }, {
        TextBox = v1.createElement(l_TextInput_0, {
            Size = UDim2.fromOffset(l_Sizes_0.TextBoxWidth, l_Sizes_0.ShortHeight),
            Position = UDim2.new(0.1, 0, 0, 0),
            Text = v12,
            OnTextChanged = l_OnChange_0
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v8));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_Components_0 = l_Parent_0.Src.Components;
local v7 = require(l_Components_0.ButtonArray);
local v8 = require(l_Components_0.TextInput);
local l_Actions_0 = l_Parent_0.Src.Actions;
local v10 = require(l_Actions_0.SetMemStoragePair);
local v11 = require(l_Actions_0.AddHistoryItem);
local v12 = require(l_Parent_0.Src.Util.Constants);
local l_MEM_STORAGE_ORDER_0 = v12.MEM_STORAGE_ORDER;
local l_INPUT_PANE_LAYOUT_0 = v12.INPUT_PANE_LAYOUT;
local l_MemStorage_0 = v12.ROUTES.MemStorage;
local l_OPERATION_SUCCESSFUL_0 = v12.OPERATION_SUCCESSFUL;
local l_MemStorage_1 = v12.VIEW_ID.MemStorage;
local l_UI_0 = v3.UI;
local l_RadioButtonList_0 = l_UI_0.RadioButtonList;
local l_Pane_0 = l_UI_0.Pane;
local v21 = require(l_Parent_0.Src.Operations.MemStorageEventRequest);
local v22 = v1.PureComponent:extend("MemStorageEventView");
v22.init = function(v23)
    v23.state = {
        SelectedRoute = l_MemStorage_0.GetValue
    };
    v23.createRoutes = function()
        local v24 = {};
        for _, v26 in pairs(l_MemStorage_0) do
            table.insert(v24, {
                Key = v26,
                Text = v26
            });
        end;
        return v24;
    end;
    v23.Router = function(v27)
        v23:setState({
            SelectedRoute = v27
        });
    end;
    v23.OnChange = function(v28, v29)
        v23.props.SetMemStoragePair({
            [v28] = v29
        });
    end;
    local v30 = {
        Key = "",
        Value = ""
    };
    v23.onClearClicked = function()
        v23.props.SetMemStoragePair(v30);
    end;
    v23.onSaveClicked = function()
        v23.props.AddHistoryItem(v23.props.CurrentEventName, v23.props.KeyValuePair);
    end;
    v23.onSendClicked = function()
        local l_Key_0 = v23.props.KeyValuePair.Key;
        local l_Value_0 = v23.props.KeyValuePair.Value;
        local v33 = v23.state.SelectedRoute or "";
        if v33 == l_MemStorage_0.GetValue then
            v21.GetValue(l_Key_0);
        end;
        if not (not (v33 == l_MemStorage_0.SetValue) or not v21.SetValue(l_Key_0, l_Value_0)) then
            print(l_OPERATION_SUCCESSFUL_0);
        end;
        if not (not (v33 == l_MemStorage_0.NewEntry) or not v21.SetValue(l_Key_0, l_Value_0)) then
            print(l_OPERATION_SUCCESSFUL_0);
        end;
    end;
end;
v22.render = function(v34)
    local l_props_0 = v34.props;
    local l_KeyValuePair_0 = l_props_0.KeyValuePair;
    return v1.createElement(l_Pane_0, {
        Size = UDim2.new(1, 0, 1, 0),
        LayoutOrder = l_INPUT_PANE_LAYOUT_0.View
    }, {
        Layout = v1.createElement("UIListLayout", l_props_0.Stylizer.Layout.Vertical),
        Switch = v1.createElement(l_RadioButtonList_0, {
            Buttons = v34.createRoutes(),
            OnClick = v34.Router,
            SelectedKey = l_MemStorage_0.GetValue,
            LayoutOrder = l_MEM_STORAGE_ORDER_0.Switch
        }),
        Key = v1.createElement(v8, {
            LayoutOrder = l_MEM_STORAGE_ORDER_0.Key,
            Label = "Key",
            Text = l_KeyValuePair_0.Key,
            OnChange = function(...)
                v34.OnChange("Key", ...);
            end
        }),
        Value = v1.createElement(v8, {
            LayoutOrder = l_MEM_STORAGE_ORDER_0.Value,
            Label = "Value",
            Text = l_KeyValuePair_0.Value,
            OnChange = function(...)
                v34.OnChange("Value", ...);
            end
        }),
        Activators = v1.createElement(v7, {
            OnClearClicked = v34.onClearClicked,
            OnSaveClicked = v34.onSaveClicked,
            OnSendClicked = v34.onSendClicked
        })
    });
end;
return v2.connect(function(v37, _)
    return {
        KeyValuePair = v37.Status.MemStoragePair,
        CurrentEventName = v37.Status.CurrentEventName
    };
end, function(v39)
    return {
        SetMemStoragePair = function(v40)
            v39(v10(v40));
        end,
        AddHistoryItem = function(v41, v42)
            v39(v11(l_MemStorage_1, v41, v42));
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v22)));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.RoactRodux);
local v3 = require(l_Parent_0.Packages.Cryo);
local v4 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v4.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v4.UI;
local l_Pane_0 = l_UI_0.Pane;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_Actions_0 = l_Parent_0.Src.Actions;
local v11 = require(l_Actions_0.SetRBXParameters);
local v12 = require(l_Actions_0.ClearRBXParameters);
local v13 = require(l_Actions_0.AddHistoryItem);
local v14 = require(l_Parent_0.Src.Util.Constants);
local l_INPUT_PANE_LAYOUT_0 = v14.INPUT_PANE_LAYOUT;
local l_RBXEVENT_ORDER_0 = v14.RBXEVENT_ORDER;
local l_RBXEvent_0 = v14.VIEW_ID.RBXEvent;
local l_Components_0 = l_Parent_0.Src.Components;
local v19 = require(l_Components_0.ButtonArray);
local v20 = require(l_Components_0.TextInput);
local v21 = require(l_Parent_0.Src.Operations.RBXEventRequest);
local l_HttpService_0 = game:GetService("HttpService");
local v23 = v1.PureComponent:extend("RBXEventView");
v23.init = function(v24)
    v24.state = {
        ValidJson = true
    };
    v24.IsCurrentJSONValid = function()
        local v25 = nil;
        if pcall(function()
            v25 = l_HttpService_0:JSONDecode(v24.props.Parameters.Detail);
        end) and v25 then
            return true;
        else
            return false;
        end;
    end;
    v24.onClearClicked = function()
        v24.props.ClearRBXParameters();
    end;
    v24.onSaveClicked = function()
        v24.props.AddHistoryItem(v24.props.CurrentEventName, v24.props.Parameters);
    end;
    v24.onSendClicked = function()
        v24:setState({
            ValidJson = v24.IsCurrentJSONValid()
        });
        v21(v24.props.Parameters);
    end;
    v24.focusLost = function(v26, v27)
        v24.props.SetRBXParameters(v3.Dictionary.join(v24.props.Parameters, {
            [v26] = v27
        }));
    end;
    v24.createChildren = function()
        local l_Parameters_0 = v24.props.Parameters;
        local v29 = {
            Warning = not v24.state.ValidJson and v1.createElement(l_TextLabel_0, {
                LayoutOrder = l_RBXEVENT_ORDER_0.Warning,
                AutomaticSize = Enum.AutomaticSize.Y,
                Style = "Warning"
            }),
            Activators = v1.createElement(v19, {
                OnClearClicked = v24.onClearClicked,
                OnSaveClicked = v24.onSaveClicked,
                OnSendClicked = v24.onSendClicked
            })
        };
        for v30, v31 in pairs(l_Parameters_0) do
            v29[v30] = v1.createElement(v20, {
                LayoutOrder = l_RBXEVENT_ORDER_0[v30],
                Label = v30,
                Text = v31,
                OnChange = function(...)
                    v24.focusLost(v30, ...);
                end
            });
        end;
        return v29;
    end;
end;
v23.render = function(v32)
    return v1.createElement(l_Pane_0, {
        Layout = Enum.FillDirection.Vertical,
        LayoutOrder = l_INPUT_PANE_LAYOUT_0.View
    }, v32.createChildren());
end;
return v2.connect(function(v33, _)
    return {
        Parameters = v33.Status.Parameters,
        CurrentEventName = v33.Status.CurrentEventName
    };
end, function(v35)
    return {
        SetRBXParameters = function(v36)
            v35(v11(v36));
        end,
        ClearRBXParameters = function()
            v35(v12());
        end,
        AddHistoryItem = function(v37, v38)
            v35(v13(l_RBXEvent_0, v37, v38));
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v23)));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v5 = require(l_Parent_0.Src.Components.TextInput);
local l_RadioButtonList_0 = v2.UI.RadioButtonList;
local l_INPUT_PANE_LAYOUT_0 = require(l_Parent_0.Src.Util.Constants).INPUT_PANE_LAYOUT;
local v8 = v1.PureComponent:extend("ThemeView");
local v9 = {
    Routes = {},
    SelectedKey = "",
    ThemeName = "",
    FocusLost = function()
    end
};
v8.init = function(v10)
    v10.state = {
        SelectedKey = nil
    };
    v10.OnClick = function(v11)
        v10:setState({
            SelectedKey = v11
        });
    end;
    v10.createRoutes = function()
        local v12 = {};
        for v13, v14 in pairs(v9.Routes) do
            table.insert(v12, {
                Key = v14,
                Text = "Use " .. v13
            });
        end;
        return v12;
    end;
end;
v8.render = function(v15)
    return v1.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        LayoutOrder = l_INPUT_PANE_LAYOUT_0.View,
        BackgroundTransparency = 1,
        ZIndex = -5
    }, {
        Layout = v1.createElement("UIListLayout", v15.props.Stylizer.Layout.Vertical),
        TextInput = v1.createElement(v5, {
            Label = "Theme Name",
            Text = v9.ThemeName,
            OnChange = v9.FocusLost,
            LayoutOrder = 1
        }),
        Switch = v1.createElement(l_RadioButtonList_0, {
            Buttons = v15.createRoutes(),
            OnClick = v15.OnClick,
            SelectedKey = v15.state.SelectedKey,
            LayoutOrder = 2
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v8));


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Rodux);
local v3 = require(l_Parent_0.Src.Reducers.MainReducer);
local v4 = require(l_Parent_0.Packages.Framework);
local l_ContextServices_0 = v4.ContextServices;
local l_UI_0 = v4.UI;
local l_DockWidget_0 = l_UI_0.DockWidget;
local _ = l_UI_0.PluginButton;
local _ = l_UI_0.PluginToolbar;
local l_Plugin_0 = l_ContextServices_0.Plugin;
local l_Mouse_0 = l_ContextServices_0.Mouse;
local l_Store_0 = l_ContextServices_0.Store;
local v13 = require(l_Parent_0.Src.Resources.MakeTheme);
local l_SourceStrings_0 = l_Parent_0.Src.Resources.Localization.SourceStrings;
local l_LocalizedStrings_0 = l_Parent_0.Src.Resources.Localization.LocalizedStrings;
local v16 = require(l_Parent_0.Src.Components.EventEmulator);
v1.setGlobalConfig({
    typeChecks = true,
    propValidation = true,
    elementTracing = true
});
local v17 = v1.PureComponent:extend("MainPlugin");
v17.init = function(v18, _)
    v18.state = {
        enabled = false
    };
    v18.toggleState = function()
        v18:setState({
            enabled = not v18.state.enabled
        });
    end;
    v18.onClose = function()
        v18:setState({
            enabled = false
        });
    end;
    v18.onRestore = function(v20)
        v18:setState({
            enabled = v20
        });
    end;
    v18.onDockWidgetCreated = function()
        v18.props.pluginLoaderContext.mainButtonClickedSignal:Connect(v18.toggleState);
    end;
    v18.onWidgetEnabledChanged = function(v21)
        v18:setState({
            enabled = v21.Enabled
        });
    end;
    v18.store = v2.Store.new(v3, {}, {
        v2.thunkMiddleware
    });
    v18.localization = l_ContextServices_0.Localization.new({
        stringResourceTable = l_SourceStrings_0,
        translationResourceTable = l_LocalizedStrings_0,
        pluginName = l_Parent_0.Name
    });
end;
v17.didUpdate = function(v22)
    v22.props.pluginLoaderContext.mainButton:SetActive(v22.state.enabled);
end;
v17.render = function(v23)
    local l_props_0 = v23.props;
    local l_state_0 = v23.state;
    local l_Plugin_1 = l_props_0.Plugin;
    local l_enabled_0 = l_state_0.enabled;
    return l_ContextServices_0.provide({
        l_Plugin_0.new(l_Plugin_1)
    }, {
        MainWidget = v1.createElement(l_DockWidget_0, {
            Enabled = l_enabled_0,
            Widget = l_props_0.pluginLoaderContext.mainDockWidget,
            Title = v23.localization:getText("Plugin", "Toolbar"),
            Id = l_Parent_0.Name,
            ZIndexBehavior = Enum.ZIndexBehavior.Sibling,
            InitialDockState = Enum.InitialDockState.Left,
            Size = Vector2.new(310, 225),
            MinSize = Vector2.new(310, 225),
            OnClose = v23.onClose,
            ShouldRestore = true,
            OnWidgetRestored = v23.onRestore,
            OnWidgetCreated = v23.onDockWidgetCreated,
            [v1.Change.Enabled] = v23.onWidgetEnabledChanged
        }, {
            MainProvider = l_enabled_0 and l_ContextServices_0.provide({
                l_Mouse_0.new(l_Plugin_1:getMouse()),
                v13(),
                l_Store_0.new(v23.store)
            }, {
                EventEmulator = v1.createElement(v16)
            })
        })
    });
end;
return v17;


local l_Parent_0 = script.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Packages.Rodux);
local v3 = require(l_Parent_0.Src.Reducers.MainReducer);
local l_ContextServices_0 = require(l_Parent_0.Packages.Framework).ContextServices;
local v5 = require(l_Parent_0.Src.Resources.MakeTheme);
local v6 = v1.PureComponent:extend("MockPlugin");
local function _()
    return Instance.new("ScreenGui");
end;
local function v17(v8)
    local v10 = {
        GetMouse = function(_)
            return {};
        end
    };
    local function _()
        local l_ScreenGui_0 = Instance.new("ScreenGui");
        l_ScreenGui_0.Name = "MockPluginGui";
        if v8 then
            l_ScreenGui_0.Parent = v8;
        end;
        return l_ScreenGui_0;
    end;
    v10.CreateQWidgetPluginGui = function(_)
        local l_ScreenGui_1 = Instance.new("ScreenGui");
        l_ScreenGui_1.Name = "MockPluginGui";
        if v8 then
            l_ScreenGui_1.Parent = v8;
        end;
        return l_ScreenGui_1;
    end;
    v10.CreateDockWidgetPluginGui = function(_)
        local l_ScreenGui_2 = Instance.new("ScreenGui");
        l_ScreenGui_2.Name = "MockPluginGui";
        if v8 then
            l_ScreenGui_2.Parent = v8;
        end;
        return l_ScreenGui_2;
    end;
    return v10;
end;
v6.init = function(v18, v19)
    v18.plugin = v17(v19.Container);
    v18.target = v19.FocusTarget or Instance.new("ScreenGui");
    v18.store = v2.Store.new(v3, nil, {
        v2.thunkMiddleware
    });
end;
v6.render = function(v20)
    return l_ContextServices_0.provide({
        l_ContextServices_0.Localization.mock(),
        l_ContextServices_0.Plugin.new(v20.plugin),
        l_ContextServices_0.Mouse.new({}),
        v5(),
        l_ContextServices_0.Focus.new(v20.target),
        l_ContextServices_0.Store.new(v20.store)
    }, v20.props[v1.Children]);
end;
return function(v21, v22)
    return v1.createElement(v6, v22, {
        Element = v21
    });
end;


local l_MemStorageService_0 = game:GetService("MemStorageService");
local v1 = {};
local function _(v2)
    if not v2 then
        warn("Operation Invalid: Must provide key");
        return false;
    else
        return true;
    end;
end;
v1.GetValue = function(v4)
    local v5;
    if not v4 then
        warn("Operation Invalid: Must provide key");
        v5 = false;
    else
        v5 = true;
    end;
    if not v5 then
        return ;
    else
        return l_MemStorageService_0:GetItem(v4);
    end;
end;
v1.SetValue = function(v6, v7)
    local v8;
    if not v6 then
        warn("Operation Invalid: Must provide key");
        v8 = false;
    else
        v8 = true;
    end;
    if not v8 then
        return false;
    else
        l_MemStorageService_0:SetItem(v6, v7);
        return true;
    end;
end;
return v1;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Cryo);
local l_Actions_0 = l_Parent_0.Src.Actions;
return v1.createReducer({
    HistoryItems = {}
}, {
    [require(l_Actions_0.AddHistoryItem).name] = function(v4, v5)
        return v2.Dictionary.join(v4, {
            HistoryItems = v2.Dictionary.join(v4.HistoryItems, {
                [v5.item.Name] = v5.item
            })
        });
    end,
    [require(l_Actions_0.RemoveHistoryItem).name] = function(v6, v7)
        return v2.Dictionary.join(v6, {
            HistoryItems = v2.Dictionary.join(v6.HistoryItems, {
                [v7.historyItem] = v2.None
            })
        });
    end
});


local l_Parent_0 = script.Parent.Parent.Parent;
return require(l_Parent_0.Packages.Rodux).combineReducers({
    Status = require(l_Parent_0.Src.Reducers.Status),
    History = require(l_Parent_0.Src.Reducers.History)
});


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Framework);
local v2 = require(l_Parent_0.Packages.Cryo);
local l_Style_0 = v1.Style;
local l_StyleKey_0 = l_Style_0.StyleKey;
local l_BaseTheme_0 = l_Style_0.Themes.BaseTheme;
local l_StudioTheme_0 = l_Style_0.Themes.StudioTheme;
local l_ComponentSymbols_0 = l_Style_0.ComponentSymbols;
local v8 = {
    SmallPadding = 10,
    HistoryButtonMinor = 25,
    ShortHeight = 30,
    HorizontalPadding = 50,
    NavHeight = 50,
    ConfirmationButtonWidth = 50,
    HistoryButtonMajor = 100,
    InputPaneLength = 300,
    HistoryPaneLength = 300,
    DropdownWidth = 180,
    TextBoxWidth = 180
};
local v9 = {
    [l_StyleKey_0.BlueText] = Color3.fromRGB(0, 162, 255),
    Text = {
        BrightText = {
            Size = 20,
            Color = l_StyleKey_0.BrightText
        },
        DimmedText = {
            Size = 16,
            Color = l_StyleKey_0.DimmedText
        },
        Button = {
            Size = 18,
            Color = l_StyleKey_0.MainText,
            PrimaryColor = l_StyleKey_0.DialogMainButtonText
        },
        BlueText = {
            Size = 18,
            Color = l_StyleKey_0.BlueText
        }
    },
    Scrollbar = {
        Thickness = 5,
        Transparency = 0.5,
        Color = l_StyleKey_0.ScrollBar,
        TopImage = "rbxasset://textures/StudioToolbox/ScrollBarTop.png",
        MidImage = "rbxasset://textures/StudioToolbox/ScrollBarMiddle.png",
        BottomImage = "rbxasset://textures/StudioToolbox/ScrollBarBottom.png"
    },
    Sizes = v8,
    Layout = {
        Vertical = {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            Padding = UDim.new(0, v8.SmallPadding)
        },
        Horizontal = {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            Padding = UDim.new(0, v8.HorizontalPadding)
        },
        HistoryItem = {
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            Padding = UDim.new(0, v8.SmallPadding)
        }
    },
    [l_ComponentSymbols_0.Box] = v2.Dictionary.join(l_BaseTheme_0[l_ComponentSymbols_0.Box], {
        ["&__Item"] = {
            Color = l_StyleKey_0.CategoryItem
        }
    }),
    [l_ComponentSymbols_0.RoundBox] = v2.Dictionary.join(l_BaseTheme_0[l_ComponentSymbols_0.RoundBox], {
        ["&__Item"] = {
            Color = l_StyleKey_0.CategoryItem,
            BorderTransparency = 1
        },
        ["&__Example"] = {
            Color = l_StyleKey_0.Mid
        }
    }),
    [l_ComponentSymbols_0.Button] = v2.Dictionary.join(l_BaseTheme_0[l_ComponentSymbols_0.Button], {
        ["&__Item"] = {
            Color = l_StyleKey_0.Button,
            BorderSize = 1
        }
    })
};
return function(v10)
    local _ = nil;
    return (if not v10 then l_StudioTheme_0.new() else l_StudioTheme_0.mock()):extend(v9);
end;


local l_Parent_0 = script.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Rodux);
local v2 = require(l_Parent_0.Packages.Framework);
local l_TestHelpers_0 = v2.TestHelpers;
local l_ContextServices_0 = v2.ContextServices;
local v5 = {
    l_ContextServices_0.Analytics.mock(),
    l_ContextServices_0.Localization.mock(),
    l_ContextServices_0.Store.new(v1.Store.new((require(l_Parent_0.Src.Reducers.MainReducer)))),
    require(l_Parent_0.Src.Resources.MakeTheme)(true)
};
return function(v6)
    assert(type(v6) == "table", "Expected story to be a table");
    return l_TestHelpers_0.provideMockContext(v5, v6);
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Src.Components.MainView);
local v2 = require(l_script_FirstAncestor_0.Src.Components.ServiceWrapper);
local v3 = require(l_script_FirstAncestor_0.Packages.React);
local v4 = require(l_script_FirstAncestor_0.Packages.ReactRoblox);
local v5 = require(l_script_FirstAncestor_0.Packages.Rodux);
local v6 = require(l_script_FirstAncestor_0.Src.Reducers.MainReducer);
local v7 = require(l_script_FirstAncestor_0.Src.Resources.Theme);
local l_SourceStrings_0 = l_script_FirstAncestor_0.Src.Resources.Localization.SourceStrings;
local l_LocalizedStrings_0 = l_script_FirstAncestor_0.Src.Resources.Localization.LocalizedStrings;
local l_ContextServices_0 = require(l_script_FirstAncestor_0.Packages.Framework).ContextServices;
local v11 = require(l_script_FirstAncestor_0.Src.Util.MakePluginActions);
local v12 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v13 = require(l_script_FirstAncestor_0.Packages.TestLoader);
v13.launch("FileSync", l_script_FirstAncestor_0.Src);
if not v13.isCli() then
    if plugin then
        if game:GetFastFlag("Collab4900") then
            local v14 = DockWidgetPluginGuiInfo.new(Enum.InitialDockState.Float, false, true, v12.BACKGROUND_WIDTH, 555, v12.BACKGROUND_WIDTH, 520);
            local v15 = v5.Store.new(v6, {}, nil);
            local l_plugin_DockWidgetPluginGui_0 = plugin:CreateDockWidgetPluginGui("FileSync", v14);
            l_plugin_DockWidgetPluginGui_0.Name = "FileSync";
            l_plugin_DockWidgetPluginGui_0.Title = "Script Sync";
            local v17 = l_ContextServices_0.Localization.new({
                stringResourceTable = l_SourceStrings_0,
                translationResourceTable = l_LocalizedStrings_0,
                pluginName = "FileSync"
            });
            v4.createRoot(l_plugin_DockWidgetPluginGui_0):render((v3.createElement(v2, {
                plugin = plugin,
                focusGui = l_plugin_DockWidgetPluginGui_0,
                store = v15,
                mouse = plugin:getMouse(),
                theme = v7(),
                localization = v17,
                pluginActions = l_ContextServices_0.PluginActions.new(plugin, v11(plugin, v17))
            }, {
                MainView = v3.createElement(v1, {})
            })));
            local function _()
                l_plugin_DockWidgetPluginGui_0.Enabled = not l_plugin_DockWidgetPluginGui_0.Enabled;
            end;
            local l_Parent_0 = script.Parent.Parent;
            (function()
                plugin.Name = l_Parent_0.Name;
                local l_Events_0 = l_Parent_0.Src.Events;
                local v21 = require(l_Events_0.onPluginOpened);
                local v22 = require(l_Events_0.onPluginClosed);
                local l_Button_0 = plugin:CreateToolbar("Script Sync"):CreateButton("Script Sync", "Toggles the Script Sync window.", "rbxasset://textures/GameSettings/ToolbarIcon.png");
                l_Button_0.ClickableWhenViewportHidden = true;
                local l_status_0, l_result_0 = pcall(function()
                    return game:GetService("RunService"):IsEdit();
                end);
                if l_status_0 and l_result_0 then
                    local v26 = false;
                    local function _(v27)
                        if v26 == v27 then
                            return ;
                        else
                            v26 = v27;
                            l_Button_0:SetActive(v26);
                            if not v26 then
                                v22(plugin, l_plugin_DockWidgetPluginGui_0);
                                return ;
                            else
                                plugin:Activate(false);
                                v21(plugin, l_plugin_DockWidgetPluginGui_0);
                                return ;
                            end;
                        end;
                    end;
                    l_Button_0.Click:Connect(function()
                        l_plugin_DockWidgetPluginGui_0.Enabled = not l_plugin_DockWidgetPluginGui_0.Enabled;
                    end);
                    l_plugin_DockWidgetPluginGui_0:GetPropertyChangedSignal("Enabled"):Connect(function()
                        l_Button_0:SetActive(l_plugin_DockWidgetPluginGui_0.Enabled);
                    end);
                    plugin.Deactivation:Connect(function()
                        if v26 == false then
                            return ;
                        else
                            v26 = false;
                            l_Button_0:SetActive(v26);
                            if not v26 then
                                v22(plugin, l_plugin_DockWidgetPluginGui_0);
                                return ;
                            else
                                plugin:Activate(false);
                                v21(plugin, l_plugin_DockWidgetPluginGui_0);
                                return ;
                            end;
                        end;
                    end);
                    return ;
                else
                    l_Button_0.Enabled = false;
                    return ;
                end;
            end)();
            return ;
        else
            return ;
        end;
    else
        return ;
    end;
else
    return ;
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local l_Action_0 = require(l_script_FirstAncestor_0.Packages.Framework).Util.Action;
local v2 = require(l_script_FirstAncestor_0.Packages.Cryo);
return l_Action_0(script.Name, function()
    return {
        warningText = v2.None
    };
end);


return require(script:FindFirstAncestor("FileSync").Packages.Framework).Util.Action(script.Name, function(v0)
    return {
        lastOperation = v0
    };
end);


return require(script:FindFirstAncestor("FileSync").Packages.Framework).Util.Action(script.Name, function(v0)
    return {
        lastOperationTime = v0
    };
end);


return require(script:FindFirstAncestor("FileSync").Packages.Framework).Util.Action(script.Name, function(v0)
    return {
        syncPath = v0
    };
end);


return require(script:FindFirstAncestor("FileSync").Packages.Framework).Util.Action(script.Name, function(v0)
    return {
        warningText = v0
    };
end);


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Src.Util.ModernIcons);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_Stylizer_0 = v3.ContextServices.Stylizer;
local l_TextLabel_0 = v3.UI.TextLabel;
return function(v6)
    local v7 = v6.Size or UDim2.fromOffset(100, 100);
    local v8, v9 = v1.useState(false);
    local v10 = l_Stylizer_0:use("ActionButton");
    return v1.createElement("ImageButton", {
        Size = v7,
        BackgroundTransparency = not v8 and 1 or 0.75,
        LayoutOrder = v6.LayoutOrder,
        [v1.Event.Activated] = v6.OnClick,
        [v1.Event.MouseEnter] = function()
            v9(true);
        end,
        [v1.Event.MouseLeave] = function()
            v9(false);
        end
    }, {
        UICorner = v1.createElement("UICorner", {
            CornerRadius = UDim.new(0, 8)
        }),
        UIStroke = v1.createElement("UIStroke", {
            Color = v10.FontColor,
            Transparency = 0,
            Thickness = 1
        }),
        UIAspectRatioConstraint = v1.createElement("UIAspectRatioConstraint", {
            AspectRatio = 1
        }),
        UIListLayout = v1.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Center,
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        ImageButton = v1.createElement("ImageLabel", {
            Size = UDim2.fromScale(0.5, 0.5),
            AnchorPoint = Vector2.new(0.5, 0.3),
            BackgroundTransparency = 1,
            LayoutOrder = 0
        }, {
            ImageButton = v1.createElement("ImageLabel", {
                Size = UDim2.fromScale(0.5, 0.5),
                Position = UDim2.fromScale(0.25, 0.25),
                BackgroundTransparency = 1,
                Image = v6.Image or ""
            }, {
                UICorner = v1.createElement("UICorner", {
                    CornerRadius = UDim.new(0, 50)
                })
            }),
            UICorner = v1.createElement("UICorner", {
                CornerRadius = UDim.new(0, 50)
            }),
            UIStroke = v1.createElement("UIStroke", {
                Color = v10.FontColor,
                Transparency = 0,
                Thickness = 1
            }),
            ModifiedDot = if not v6.HasChanges then nil else v1.createElement("ImageLabel", {
                Size = UDim2.fromOffset(10, 10),
                Position = UDim2.fromScale(0.85, 0.15),
                Image = v2.getIconForCurrentTheme(v2.IconEnums.Notification)
            }, {
                UICorner = v1.createElement("UICorner", {
                    CornerRadius = UDim.new(0, 5)
                })
            })
        }),
        Spacer = v1.createElement("Frame", {
            LayoutOrder = 1,
            Size = UDim2.new(1, 0, 0, 4),
            BackgroundTransparency = 1
        }),
        TextLabel = v1.createElement(l_TextLabel_0, {
            Size = UDim2.new(1, 0, 0.2, 0),
            BackgroundTransparency = 1,
            Text = v6.Text or "",
            Style = "Semibold",
            TextSize = 18,
            LayoutOrder = 2
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v3 = require(l_script_FirstAncestor_0.Src.Util.ModernIcons);
local v4 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_Localization_0 = v4.ContextServices.Localization;
local l_Stylizer_0 = v4.ContextServices.Stylizer;
local l_TextLabel_0 = v4.UI.TextLabel;
local l_LayoutOrderIterator_0 = v4.Util.LayoutOrderIterator;
return function(v9)
    local l_SyncPath_0 = v9.SyncPath;
    local v11 = v9.Size or UDim2.new(1, 20, 0, 20);
    local v12 = l_Stylizer_0:use("DirectoryInput");
    local v13 = l_Localization_0:use();
    local v14 = l_LayoutOrderIterator_0.new();
    return v1.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = v11,
        LayoutOrder = v9.LayoutOrder
    }, {
        ListLayout = v1.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            Padding = UDim.new(0, 2),
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        ButtonsUIPadding = v1.createElement("UIPadding", {
            PaddingRight = UDim.new(0, v2.SIDE_PADDING)
        }),
        LocalDirectoryLabel = v1.createElement(l_TextLabel_0, {
            Text = v13:getText("Labels", "LocalDirectory"),
            Style = "Basic",
            TextXAlignment = Enum.TextXAlignment.Left,
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, 20),
            LayoutOrder = v14:getNextOrder()
        }),
        SpacerDir = v1.createElement("Frame", {
            LayoutOrder = v14:getNextOrder(),
            Size = UDim2.new(1, 0, 0, 8),
            BackgroundTransparency = 1
        }),
        DirectoryFrame = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 20, 0, 20),
            LayoutOrder = v14:getNextOrder()
        }, {
            DirectoryInput = v1.createElement("TextButton", {
                Text = if not not l_SyncPath_0 and l_SyncPath_0 ~= "" then "  " .. l_SyncPath_0 else v13:getText("Labels", "SelectFolder"),
                TextXAlignment = Enum.TextXAlignment.Left,
                TextColor3 = v12.FontColor,
                BorderColor3 = v12.FontColor,
                Position = UDim2.new(0, 0, 0, 0),
                Size = UDim2.new(1, -25, 0, 25),
                BackgroundColor3 = v12.DirectoryBackgroundColor,
                BorderSizePixel = v12.DirectoryBorderSize,
                Font = v12.RegularFont,
                TextSize = 18,
                TextTruncate = Enum.TextTruncate.AtEnd,
                [v1.Event.Activated] = v9.Callback
            }),
            FolderImageLabel = v1.createElement("ImageLabel", {
                Image = v3.getIconForCurrentTheme(v3.IconEnums.Open),
                BackgroundTransparency = 1,
                Size = UDim2.new(0, 16, 0, 16),
                Position = UDim2.new(1, -50, 0, 4)
            })
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v3 = require(l_script_FirstAncestor_0.Src.Components.ActionButton);
local v4 = require(l_script_FirstAncestor_0.Src.Util.ModernIcons);
local v5 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_Localization_0 = v5.ContextServices.Localization;
local l_LayoutOrderIterator_0 = v5.Util.LayoutOrderIterator;
return function(v8)
    local v9 = v8.Size or UDim2.new(1, -v2.BUTTON_PADDING * 2, 0, v2.BUTTON_HEIGHT);
    local v10 = l_Localization_0:use();
    local v11 = l_LayoutOrderIterator_0.new();
    local l_ShowFileSyncStatus_0 = game:GetFastFlag("ShowFileSyncStatus");
    return v1.createElement("Frame", {
        BackgroundTransparency = 1,
        LayoutOrder = v8.LayoutOrder,
        Name = "Buttons",
        Size = v9
    }, {
        ButtonsListLayout = v1.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Horizontal,
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        ButtonsUIPadding = v1.createElement("UIPadding", {
            PaddingBottom = UDim.new(v2.BUTTON_PADDING_VERTICAL, 0),
            PaddingTop = UDim.new(v2.BUTTON_PADDING_VERTICAL, 0)
        }),
        Spacer1 = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            LayoutOrder = v11:getNextOrder(),
            Size = UDim2.new(v2.BUTTON_PADDING_HORIZONTAL, 0, 1, 0)
        }),
        ExportButton = v1.createElement(v3, {
            Size = UDim2.new(v2.BUTTON_SIZE, 0, 1, 0),
            Image = v4.getIconForCurrentTheme(v4.IconEnums.Export),
            OnClick = v8.OnExport,
            Text = v10:getText("Operations", "Export"),
            TextColor3 = Color3.new(0, 0, 0),
            TextSize = 14,
            Font = Enum.Font.SourceSans,
            LayoutOrder = v11:getNextOrder(),
            HasChanges = l_ShowFileSyncStatus_0 and v8.ChangesInStudio
        }),
        Spacer2 = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            LayoutOrder = v11:getNextOrder(),
            Size = UDim2.new(v2.BUTTON_PADDING_CENTER, 0, 1, 0)
        }),
        ImportButton = v1.createElement(v3, {
            Size = UDim2.new(v2.BUTTON_SIZE, 0, 1, 0),
            Image = v4.getIconForCurrentTheme(v4.IconEnums.Import),
            OnClick = v8.OnImport,
            Text = v10:getText("Operations", "Import"),
            LayoutOrder = v11:getNextOrder(),
            HasChanges = l_ShowFileSyncStatus_0 and v8.ChangesInDisk
        }),
        Spacer3 = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            LayoutOrder = v11:getNextOrder(),
            Size = UDim2.new(v2.BUTTON_PADDING_HORIZONTAL, 0, 1, 0)
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.RoactRodux);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_UI_0 = v3.UI;
local l_Separator_0 = l_UI_0.Separator;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_ScrollingFrame_0 = l_UI_0.ScrollingFrame;
local l_StyledDialog_0 = l_UI_0.StyledDialog;
local l_ContextServices_0 = v3.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v11 = require(l_script_FirstAncestor_0.Src.Actions.SetSyncPath);
local v12 = require(l_script_FirstAncestor_0.Src.Actions.SetLastOperation);
local v13 = require(l_script_FirstAncestor_0.Src.Actions.SetLastOperationTime);
local v14 = require(l_script_FirstAncestor_0.Src.Components.ImportExportFrame);
local v15 = require(l_script_FirstAncestor_0.Src.Components.SyncStatus);
local v16 = require(l_script_FirstAncestor_0.Src.Components.PlaceDetails);
local v17 = require(l_script_FirstAncestor_0.Src.Components.DirectoryInput);
local v18 = require(l_script_FirstAncestor_0.Src.Components.Settings);
local v19 = require(l_script_FirstAncestor_0.Src.Util.ShowDialog);
local l_TextService_0 = game:GetService("TextService");
local l_LayoutOrderIterator_0 = v3.Util.LayoutOrderIterator;
local v22 = v1.Component:extend("MainView");
local function v25(v23)
    local v24 = v23:getLocale();
    return DateTime.now():FormatLocalTime("LL", v24) .. v23:getText("DateTime", "At") .. DateTime.now():FormatLocalTime("LTS", v24);
end;
local function _(v26)
    local v27 = v26:find("%.[^.]*$");
    if not v27 then
        return v26;
    else
        return v26:sub(1, v27 - 1) .. v26:sub(v27 + 1);
    end;
end;
local function _()
    if not (game.GameId ~= 0) then
        local l_LocalFilePath_0 = game:GetService("StudioPublishService"):GetLocalFilePath();
        local v30 = l_LocalFilePath_0:find("%.[^.]*$");
        if not v30 then
            return l_LocalFilePath_0;
        else
            return l_LocalFilePath_0:sub(1, v30 - 1) .. l_LocalFilePath_0:sub(v30 + 1);
        end;
    else
        return (tostring(game.PlaceId));
    end;
end;
local function _()
    local v32 = false;
    if game.GameId == 0 then
        v32 = game:GetService("StudioPublishService"):GetLocalFilePath() == "";
    end;
    return v32;
end;
v22.init = function(v34)
    local v35 = false;
    if game.GameId == 0 then
        v35 = game:GetService("StudioPublishService"):GetLocalFilePath() == "";
    end;
    if not v35 then
        v35 = v34.props.Plugin:get();
        local v36 = v35:GetSetting("FileSyncLastOperation") or {};
        local v37 = v35:GetSetting("FileSyncPreviewKey") or {};
        local v38;
        if not (game.GameId ~= 0) then
            local l_LocalFilePath_1 = game:GetService("StudioPublishService"):GetLocalFilePath();
            local v40 = l_LocalFilePath_1:find("%.[^.]*$");
            v38 = if not v40 then l_LocalFilePath_1 else l_LocalFilePath_1:sub(1, v40 - 1) .. l_LocalFilePath_1:sub(v40 + 1);
        else
            v38 = tostring(game.PlaceId);
        end;
        local v41 = v37[v38];
        local v42;
        if not (game.GameId ~= 0) then
            local l_LocalFilePath_2 = game:GetService("StudioPublishService"):GetLocalFilePath();
            local v44 = l_LocalFilePath_2:find("%.[^.]*$");
            v42 = if not v44 then l_LocalFilePath_2 else l_LocalFilePath_2:sub(1, v44 - 1) .. l_LocalFilePath_2:sub(v44 + 1);
        else
            v42 = tostring(game.PlaceId);
        end;
        v38 = v36[v42] or {};
        v42 = v38.LastOpString;
        local l_LastOpTime_0 = v38.LastOpTime;
        v34.props.SetLastOperation(v42);
        v34.props.SetLastOperationTime(l_LastOpTime_0);
        v34.props.SetSyncPath(v41);
    end;
    v34.scrollingFrameRef = v1.createRef();
    v34:setState({
        autoImportOnPlayEnabled = false,
        changesInStudio = false,
        changesInDisk = true
    });
    v34.onToggleAutoImport = function()
        v34:setState(function(v46)
            return {
                autoImportOnPlayEnabled = not v46.autoImportOnPlayEnabled
            };
        end);
    end;
end;
v22.syncFiles = function(v47, v48)
    local v49 = v47.props.Plugin:get();
    local v50 = v49:GetSetting("FileSyncLastOperation") or {};
    local l_syncPath_0 = v47.props.syncPath;
    local l_Stylizer_0 = v47.props.Stylizer;
    local l_Localization_0 = v47.props.Localization;
    local v54 = nil;
    local v55 = nil;
    if l_syncPath_0 then
        local l_status_0, l_result_0 = pcall(function()
            if not v48 then
                return game:GetService("ProjectFolderService"):ImportScripts(l_syncPath_0);
            else
                return game:GetService("ProjectFolderService"):ExportScripts(l_syncPath_0);
            end;
        end);
        if l_status_0 then
            v54 = if not v48 then l_Localization_0:getText("Successes", "ImportSuccess") else l_Localization_0:getText("Successes", "ExportSuccess");
            local v58 = false;
            if game.GameId == 0 then
                v58 = game:GetService("StudioPublishService"):GetLocalFilePath() == "";
            end;
            if not v58 then
                v58 = {
                    LastOpString = v54,
                    LastOpTime = v25(l_Localization_0)
                };
                local v59;
                if not (game.GameId ~= 0) then
                    local l_LocalFilePath_3 = game:GetService("StudioPublishService"):GetLocalFilePath();
                    local v61 = l_LocalFilePath_3:find("%.[^.]*$");
                    v59 = if not v61 then l_LocalFilePath_3 else l_LocalFilePath_3:sub(1, v61 - 1) .. l_LocalFilePath_3:sub(v61 + 1);
                else
                    v59 = tostring(game.PlaceId);
                end;
                v50[v59] = v58;
                v49:SetSetting("FileSyncLastOperation", v50);
            end;
            v47.props.SetLastOperation(v54);
            v47.props.SetLastOperationTime((v25(l_Localization_0)));
        else
            v55 = if not not l_result_0 and l_result_0 ~= "" then l_result_0 else if v48 then l_Localization_0:getText("Errors", "ExportFailure") else l_Localization_0:getText("Errors", "ImportFailure");
        end;
    else
        v55 = l_Localization_0:getText("Errors", "NoDirectory");
    end;
    if v55 then
        local v62 = {
            {
                Key = "OK",
                Text = l_Localization_0:getText("Buttons", "Ok")
            }
        };
        local l_l_TextService_0_TextSize_0 = l_TextService_0:GetTextSize(v55, 18, Enum.Font.SourceSans, Vector2.new(335, math.huge));
        local v64 = l_l_TextService_0_TextSize_0.Y > 65;
        local v65 = v1.createElement(l_TextLabel_0, {
            BackgroundTransparency = 1,
            TextWrapped = true,
            Text = v55,
            Style = "Basic",
            TextSelectable = true,
            TextFont = Enum.Font.SourceSans,
            TextYAlignment = Enum.TextYAlignment.Center,
            Size = if not v64 then nil else UDim2.new(1, 0, 0, l_l_TextService_0_TextSize_0.Y)
        });
        v19(v47.props.Plugin, v47.props.Localization, l_StyledDialog_0, {
            Style = "Alert",
            OnButtonPressed = function()
            end,
            OnClose = function()
            end,
            Title = l_Localization_0:getText("Errors", "FileSyncError"),
            Modal = true,
            MinContentSize = l_Stylizer_0.ErrorDialogSize,
            Buttons = v62
        }, {
            Contents = if not v64 then v65 else if not v64 then nil else v1.createElement(l_ScrollingFrame_0, {
                ref = v47.scrollingFrameRef,
                ScrollingEnabled = true,
                BackgroundTransparency = 1
            }, {
                v65
            })
        });
    end;
end;
v22.didMount = function(v66)
    local l_PluginActions_0 = v66.props.PluginActions;
    local v68 = l_PluginActions_0:get("Export");
    local v69 = l_PluginActions_0:get("Import");
    if v68 then
        v68.Enabled = true;
        v66.exportHandle = v68.Triggered:Connect(function()
            v66:syncFiles(true);
        end);
    end;
    if v69 then
        v69.Enabled = true;
        v66.importHandle = v69.Triggered:Connect(function()
            v66:syncFiles(false);
        end);
    end;
end;
v22.willUnmount = function(v70)
    local l_PluginActions_1 = v70.props.PluginActions;
    local v72 = l_PluginActions_1:get("Export");
    local v73 = l_PluginActions_1:get("Import");
    if v72 then
        v72.Enabled = false;
    end;
    if v73 then
        v73.Enabled = false;
    end;
    if v70.exportHandle then
        v70.exportHandle:Disconnect();
    end;
    if v70.importHandle then
        v70.importHandle:Disconnect();
    end;
end;
v22.render = function(v74)
    local v75 = v74.props.Plugin:get();
    local l_Stylizer_1 = v74.props.Stylizer;
    local v77 = v75:GetSetting("FileSyncPreviewKey") or {};
    local l_syncPath_1 = v74.props.syncPath;
    local l_lastOperation_0 = v74.props.lastOperation;
    local l_lastOperationTime_0 = v74.props.lastOperationTime;
    local l_Localization_1 = v74.props.Localization;
    local v82 = l_LayoutOrderIterator_0.new();
    local v83 = l_LayoutOrderIterator_0.new();
    local l_StudioPublishService_0 = game:GetService("StudioPublishService");
    local l_ShowFileSyncStatus_0 = game:GetFastFlag("ShowFileSyncStatus");
    return v1.createElement("Frame", {
        Size = UDim2.new(1, 0, 1, 0),
        BackgroundColor3 = l_Stylizer_1.BackgroundColor,
        BackgroundTransparency = 1
    }, {
        Layout = v1.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            SortOrder = Enum.SortOrder.LayoutOrder,
            Padding = UDim.new(0, 8)
        }),
        ButtonsUIPadding = v1.createElement("UIPadding", {
            PaddingBottom = UDim.new(0, 8),
            PaddingTop = UDim.new(0, 8)
        }),
        LatestStatusFrame = if not l_lastOperation_0 then nil else v1.createElement(v15, {
            LayoutOrder = v82:getNextOrder(),
            LastOpTime = l_lastOperationTime_0,
            StatusText = if l_lastOperation_0 == l_Localization_1:getText("Successes", "ExportSuccess") then l_Localization_1:getText("Labels", "LastExport") else l_Localization_1:getText("Labels", "LastImport"),
            ChangesInDisk = l_ShowFileSyncStatus_0 and v74.state.changesInDisk,
            ChangesInStudio = l_ShowFileSyncStatus_0 and v74.state.changesInStudio
        }),
        Separator1 = v1.createElement(l_Separator_0, {
            LayoutOrder = v82:getNextOrder()
        }),
        ButtonsFrame = v1.createElement(v14, {
            Size = UDim2.new(1, 0, 0, 140),
            OnImport = function()
                v74:syncFiles(false);
            end,
            OnExport = function()
                v74:syncFiles(true);
            end,
            LayoutOrder = v82:getNextOrder(),
            ChangesInDisk = v74.state.changesInDisk,
            ChangesInStudio = v74.state.changesInStudio
        }),
        ConnectionsFrame = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, 170),
            LayoutOrder = v82:getNextOrder()
        }, {
            ListLayout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Vertical,
                Padding = UDim.new(0, 4),
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            ConnectionsLeftPadding = v1.createElement("UIPadding", {
                PaddingLeft = UDim.new(0, 8)
            }),
            ConnectionsLabel = v1.createElement(l_TextLabel_0, {
                Text = l_Localization_1:getText("Labels", "Connections"),
                Style = "Bold",
                Size = UDim2.new(1, 0, 0, 20),
                TextXAlignment = Enum.TextXAlignment.Left,
                BackgroundTransparency = 1,
                LayoutOrder = v83:getNextOrder()
            }),
            Separator2 = v1.createElement(l_Separator_0, {
                LayoutOrder = v83:getNextOrder()
            }),
            Spacer0 = v1.createElement("Frame", {
                LayoutOrder = v83:getNextOrder(),
                Size = UDim2.new(1, 0, 0, 8),
                BackgroundTransparency = 1
            }),
            LocalDirectoryFrame = v1.createElement(v17, {
                LayoutOrder = v83:getNextOrder(),
                SyncPath = l_syncPath_1,
                Size = UDim2.new(1, 0, 0, 50),
                Callback = function()
                    local l_status_1, l_result_1 = pcall(function()
                        return game:GetService("ProjectFolderService"):SelectFolder();
                    end);
                    if l_status_1 then
                        local v88 = false;
                        if game.GameId == 0 then
                            v88 = game:GetService("StudioPublishService"):GetLocalFilePath() == "";
                        end;
                        if not v88 then
                            v88 = v77;
                            local v89;
                            if not (game.GameId ~= 0) then
                                local l_LocalFilePath_4 = game:GetService("StudioPublishService"):GetLocalFilePath();
                                local v91 = l_LocalFilePath_4:find("%.[^.]*$");
                                v89 = if not v91 then l_LocalFilePath_4 else l_LocalFilePath_4:sub(1, v91 - 1) .. l_LocalFilePath_4:sub(v91 + 1);
                            else
                                v89 = tostring(game.PlaceId);
                            end;
                            v88[v89] = l_result_1;
                            v75:SetSetting("FileSyncPreviewKey", v77);
                        end;
                        v74.props.SetSyncPath(l_result_1);
                    end;
                end
            }),
            Spacer = v1.createElement("Frame", {
                LayoutOrder = v83:getNextOrder(),
                Size = UDim2.new(1, 0, 0, 8),
                BackgroundTransparency = 1
            }),
            PlaceFrame = v1.createElement(v16, {
                LayoutOrder = v83:getNextOrder(),
                Size = UDim2.new(1, 0, 0, 50),
                PlaceName = l_StudioPublishService_0:GetPlaceDisplayName()
            })
        }),
        SettingsFrame = v1.createElement(v18, {
            Size = UDim2.new(1, 0, 0, 50),
            LayoutOrder = v82:getNextOrder(),
            IsChecked = v74.state.autoImportOnPlayEnabled,
            OnClick = v74.onToggleAutoImport
        })
    });
end;
return v2.connect(function(v92, _)
    return {
        redrawSignal = v92.redrawSignal,
        syncPath = v92.syncPath,
        lastOperation = v92.lastOperation,
        lastOperationTime = v92.lastOperationTime
    };
end, function(v94)
    return {
        SetSyncPath = function(v95)
            v94(v11(v95));
        end,
        SetLastOperation = function(v96)
            v94(v12(v96));
        end,
        SetLastOperationTime = function(v97)
            v94(v13(v97));
        end
    };
end)((l_withContext_0({
    Plugin = l_ContextServices_0.Plugin,
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization,
    PluginActions = l_ContextServices_0.PluginActions
})(v22)));


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_Localization_0 = v3.ContextServices.Localization;
local l_TextLabel_0 = v3.UI.TextLabel;
local l_LayoutOrderIterator_0 = v3.Util.LayoutOrderIterator;
return function(v7)
    local v8 = v7.Size or UDim2.new(1, 0, 0, 20);
    local v9 = l_Localization_0:use();
    local v10 = l_LayoutOrderIterator_0.new();
    local l_PLACEHOLDER_ICON_URL_0 = v2.PLACEHOLDER_ICON_URL;
    if game.GameId and game.GameId ~= 0 then
        l_PLACEHOLDER_ICON_URL_0 = v2.GAME_ICON_URL:format(game.GameId);
    end;
    return v1.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = v8,
        LayoutOrder = v7.LayoutOrder
    }, {
        ListLayout = v1.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            Padding = UDim.new(0, 2),
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        PlaceLabel = v1.createElement(l_TextLabel_0, {
            Text = v9:getText("Labels", "Place"),
            Style = "Basic",
            AutomaticSize = Enum.AutomaticSize.XY,
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, 20),
            TextXAlignment = Enum.TextXAlignment.Left,
            LayoutOrder = v10:getNextOrder()
        }),
        SpacerPlace = v1.createElement("Frame", {
            LayoutOrder = v10:getNextOrder(),
            Size = UDim2.new(1, 0, 0, 8),
            BackgroundTransparency = 1
        }),
        PlaceFrame = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 20, 0, 20),
            LayoutOrder = v10:getNextOrder()
        }, {
            Layout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                SortOrder = Enum.SortOrder.LayoutOrder,
                VerticalAlignment = Enum.VerticalAlignment.Center,
                Padding = UDim.new(0, 8)
            }),
            GameIconImage = v1.createElement("ImageLabel", {
                BackgroundTransparency = 1,
                Image = l_PLACEHOLDER_ICON_URL_0,
                Size = UDim2.new(0, 25, 0, 25),
                ImageTransparency = 0,
                LayoutOrder = 0
            }, {
                Corner = v1.createElement("UICorner")
            }),
            PlaceName = v1.createElement(l_TextLabel_0, {
                Text = v7.PlaceName,
                Style = "Basic",
                AutomaticSize = Enum.AutomaticSize.XY,
                Size = UDim2.new(1, -25, 0, 25),
                TextXAlignment = Enum.TextXAlignment.Left,
                BackgroundTransparency = 1,
                LayoutOrder = 1
            })
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local l_ContextServices_0 = require(l_script_FirstAncestor_0.Packages.Framework).ContextServices;
local v3 = v1.PureComponent:extend("ServiceWrapper");
v3.render = function(v4)
    return l_ContextServices_0.provide({
        v4.props.analytics,
        l_ContextServices_0.Focus.new(v4.props.focusGui),
        l_ContextServices_0.Plugin.new(v4.props.plugin),
        v4.props.localization,
        v4.props.theme,
        l_ContextServices_0.Store.new(v4.props.store),
        l_ContextServices_0.API.new(),
        l_ContextServices_0.Mouse.new(v4.props.mouse),
        v4.props.calloutController,
        v4.props.insertAsset,
        v4.props.pluginActions
    }, v4.props.children);
end;
return v3;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_Localization_0 = v3.ContextServices.Localization;
local l_UI_0 = v3.UI;
local l_TextLabel_0 = l_UI_0.TextLabel;
local l_Separator_0 = l_UI_0.Separator;
local l_Checkbox_0 = l_UI_0.Checkbox;
local l_LayoutOrderIterator_0 = v3.Util.LayoutOrderIterator;
return function(v10)
    local v11 = v10.Size or UDim2.new(1, 20, 0, 50);
    local v12 = l_Localization_0:use();
    local v13 = l_LayoutOrderIterator_0.new();
    return v1.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = v11,
        LayoutOrder = v10.LayoutOrder
    }, {
        ListLayout = v1.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            Padding = UDim.new(0, 4),
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        LeftPadding = v1.createElement("UIPadding", {
            PaddingLeft = UDim.new(0, v2.SIDE_PADDING)
        }),
        SettingsLabel = v1.createElement(l_TextLabel_0, {
            Text = v12:getText("Labels", "Settings"),
            Style = "Bold",
            TextXAlignment = Enum.TextXAlignment.Left,
            Size = UDim2.new(1, 0, 0, 20),
            BackgroundTransparency = 1,
            LayoutOrder = v13:getNextOrder()
        }),
        Separator2 = v1.createElement(l_Separator_0, {
            LayoutOrder = v13:getNextOrder()
        }),
        AutoImportCheckBox = v1.createElement(l_Checkbox_0, {
            Text = v12:getText("Labels", "AutoImport"),
            Checked = v10.IsChecked,
            OnClick = v10.OnClick,
            Size = UDim2.new(1, 0, 0, 20),
            LayoutOrder = v13:getNextOrder()
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Src.Util.Constants);
local v3 = require(l_script_FirstAncestor_0.Src.Util.ModernIcons);
local v4 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_Localization_0 = v4.ContextServices.Localization;
local l_TextLabel_0 = v4.UI.TextLabel;
return function(v7)
    local l_LastOpTime_0 = v7.LastOpTime;
    local l_StatusText_0 = v7.StatusText;
    local l_ChangesInDisk_0 = v7.ChangesInDisk;
    local l_ChangesInStudio_0 = v7.ChangesInStudio;
    local v12 = not l_ChangesInDisk_0 and not l_ChangesInStudio_0;
    local v13 = l_Localization_0:use();
    local l_ShowFileSyncStatus_0 = game:GetFastFlag("ShowFileSyncStatus");
    local function v16(v15)
        if not l_ChangesInDisk_0 then
            if not l_ChangesInStudio_0 then
                return v13:getText("Status.NoChanges", v15);
            else
                return v13:getText("Status.StudioChanges", v15);
            end;
        elseif not l_ChangesInStudio_0 then
            return v13:getText("Status.LocalChanges", v15);
        else
            return v13:getText("Status.BothChanges", v15);
        end;
    end;
    return v1.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = if l_ShowFileSyncStatus_0 then if v12 then UDim2.new(1, 0, 0, 70) else UDim2.new(1, 0, 0, 95) else UDim2.new(1, 0, 0, 40),
        LayoutOrder = v7.LayoutOrder
    }, {
        ListLayout = v1.createElement("UIListLayout", {
            FillDirection = Enum.FillDirection.Vertical,
            Padding = UDim.new(0, 8),
            SortOrder = Enum.SortOrder.LayoutOrder
        }),
        ButtonsUIPadding = v1.createElement("UIPadding", {
            PaddingBottom = UDim.new(0, 8),
            PaddingTop = UDim.new(0, 8),
            PaddingLeft = UDim.new(0, v2.SIDE_PADDING),
            PaddingRight = UDim.new(0, v2.SIDE_PADDING)
        }),
        StatusFrame = if not l_ShowFileSyncStatus_0 then nil else v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = if not v12 then UDim2.new(1, 0, 0, 45) else UDim2.new(1, 0, 0, 20),
            LayoutOrder = 0
        }, {
            StatusIcon = v1.createElement("ImageLabel", {
                Image = if not v12 then v3.getIconForCurrentTheme(v3.IconEnums.Warning) else v3.getIconForCurrentTheme(v3.IconEnums.UptoDate),
                BackgroundTransparency = 1,
                Size = UDim2.new(0, 20, 0, 20)
            }),
            StatusLabel = v1.createElement(l_TextLabel_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                BorderSizePixel = 0,
                Text = v16("MainText"),
                TextXAlignment = Enum.TextXAlignment.Left,
                BackgroundTransparency = 1,
                Font = Enum.Font.SourceSansSemibold,
                Position = UDim2.new(0, 25, 0, 0)
            }),
            StatusSubText = if v12 then nil else v1.createElement(l_TextLabel_0, {
                AutomaticSize = Enum.AutomaticSize.XY,
                BorderSizePixel = 0,
                Text = v16("SubText"),
                TextXAlignment = Enum.TextXAlignment.Left,
                BackgroundTransparency = 1,
                Style = "SubText",
                Position = UDim2.new(0, 25, 0, 25)
            })
        }),
        TimeFrame = v1.createElement("Frame", {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 0, 20),
            LayoutOrder = 1
        }, {
            ListLayout = v1.createElement("UIListLayout", {
                FillDirection = Enum.FillDirection.Horizontal,
                Padding = UDim.new(0, 5),
                SortOrder = Enum.SortOrder.LayoutOrder
            }),
            RefreshImageLabel = v1.createElement("ImageLabel", {
                LayoutOrder = 0,
                Image = v3.getIconForCurrentTheme(v3.IconEnums.Recent),
                BackgroundTransparency = 1,
                Size = UDim2.new(0, 20, 0, 20)
            }),
            LatestStatusLabel = v1.createElement(l_TextLabel_0, {
                LayoutOrder = 1,
                Text = l_StatusText_0,
                Font = Enum.Font.SourceSansSemibold,
                AutomaticSize = Enum.AutomaticSize.XY,
                TextXAlignment = Enum.TextXAlignment.Left,
                BackgroundTransparency = 1
            }),
            TimeLabel = v1.createElement(l_TextLabel_0, {
                LayoutOrder = 2,
                AutomaticSize = Enum.AutomaticSize.XY,
                BorderSizePixel = 0,
                Text = l_LastOpTime_0,
                TextXAlignment = Enum.TextXAlignment.Left,
                BackgroundTransparency = 1,
                Style = "Basic"
            })
        })
    });
end;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.Rodux);
local v2 = require(l_script_FirstAncestor_0.Packages.Cryo);
local l_Actions_0 = l_script_FirstAncestor_0.Src.Actions;
local l_SetWarningText_0 = l_Actions_0.SetWarningText;
local l_ClearWarningText_0 = l_Actions_0.ClearWarningText;
local l_SetSyncPath_0 = l_Actions_0.SetSyncPath;
local l_SetLastOperation_0 = l_Actions_0.SetLastOperation;
local l_SetLastOperationTime_0 = l_Actions_0.SetLastOperationTime;
local function _()
    return {
        redrawSignal = false,
        warningText = nil,
        syncPath = nil,
        lastOperation = "",
        lastOperationTime = ""
    };
end;
return v1.createReducer({
    redrawSignal = false,
    warningText = nil,
    syncPath = nil,
    lastOperation = "",
    lastOperationTime = ""
}, {
    [l_SetWarningText_0.Name] = function(v10, v11)
        return v2.Dictionary.join(v10, {
            warningText = v11.warningText
        });
    end,
    [l_ClearWarningText_0.Name] = function(v12, v13)
        return v2.Dictionary.join(v12, {
            warningText = v13.warningText
        });
    end,
    [l_SetSyncPath_0.Name] = function(v14, v15)
        return v2.Dictionary.join(v14, {
            syncPath = v15.syncPath
        });
    end,
    [l_SetLastOperation_0.Name] = function(v16, v17)
        return v2.Dictionary.join(v16, {
            lastOperation = v17.lastOperation
        });
    end,
    [l_SetLastOperationTime_0.Name] = function(v18, v19)
        return v2.Dictionary.join(v18, {
            lastOperationTime = v19.lastOperationTime
        });
    end
});


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.Cryo);
local v2 = require(l_script_FirstAncestor_0.Packages.Framework);
local l_StyleKey_0 = v2.Style.StyleKey;
local l_StudioTheme_0 = v2.Style.Themes.StudioTheme;
local l_ComponentSymbols_0 = v2.Style.ComponentSymbols;
local l_UIData_0 = v2.UIData;
local _ = require(l_UIData_0.Separator.style);
local v8 = {
    BackgroundColor = l_StyleKey_0.MainBackground,
    [l_ComponentSymbols_0.TextLabel] = v1.Dictionary.join(require(l_UIData_0.TextLabel.style), {
        ["&Basic"] = {
            TextSize = 18
        }
    }),
    RegularFont = Enum.Font.SourceSans,
    BoldFont = Enum.Font.SourceSansSemibold,
    FontColor = l_StyleKey_0.SubText,
    DirectoryBackgroundColor = l_StyleKey_0.InputFieldBackground,
    DirectoryBorderSize = 1,
    ErrorDialogSize = Vector2.new(343, 65)
};
local v9 = {};
local v10 = {};
return function(v11)
    return ((if not v11 then l_StudioTheme_0.new(v9, v10) else l_StudioTheme_0.mock(v9, v10)):extend(v8));
end;


return {
    NAME = "LuaFileSync",
    BUTTON_WIDTH = 150,
    BUTTON_HEIGHT = 150,
    BUTTON_PADDING = 20,
    BUTTON_PADDING_VERTICAL = 0.05,
    BUTTON_PADDING_HORIZONTAL = 0.1,
    BUTTON_PADDING_CENTER = 0.1,
    BUTTON_SIZE = 0.35,
    PADDING_HORIZONTAL = 0.05,
    PADDING_VERTICAL = 0.05,
    SIDE_PADDING = 10,
    BACKGROUND_WIDTH = 350,
    BACKGROUND_HEIGHT = 400,
    GAME_ICON_URL = "rbxthumb://type=GameIcon&id=%d&w=50&h=50",
    PLACEHOLDER_ICON_URL = "rbxasset://textures/ui/GuiImagePlaceholder.png"
};


local l_Workspace_0 = game:GetService("Workspace");
local function _(v1, v2)
    v2 = v2 or false;
    return function()
        local l_FileSyncFlags_0 = l_Workspace_0:FindFirstChild("FileSyncFlags");
        if l_FileSyncFlags_0 and l_FileSyncFlags_0:FindFirstChild(v1) then
            return l_FileSyncFlags_0[v1].Value;
        else
            return v2;
        end;
    end;
end;
local v5 = {};
local v6 = nil or false;
local v7 = "RunningUnderCLI";
local l_v7_0 = v7 --[[ copy: 5 -> 6 ]];
local v9;
do
    local l_v6_0 = v6;
    v9 = function()
        local l_FileSyncFlags_1 = l_Workspace_0:FindFirstChild("FileSyncFlags");
        if l_FileSyncFlags_1 and l_FileSyncFlags_1:FindFirstChild(l_v7_0) then
            return l_FileSyncFlags_1[l_v7_0].Value;
        else
            return l_v6_0;
        end;
    end;
end;
v5.RunningUnderCLI = v9;
v6 = nil or false;
v7 = "RunTests";
local l_v7_1 = v7 --[[ copy: 5 -> 7 ]];
do
    local l_v6_1 = v6;
    v9 = function()
        local l_FileSyncFlags_2 = l_Workspace_0:FindFirstChild("FileSyncFlags");
        if l_FileSyncFlags_2 and l_FileSyncFlags_2:FindFirstChild(l_v7_1) then
            return l_FileSyncFlags_2[l_v7_1].Value;
        else
            return l_v6_1;
        end;
    end;
end;
v5.RunTests = v9;
v6 = nil or false;
v7 = "LogTestsQuiet";
local l_v7_2 = v7 --[[ copy: 5 -> 8 ]];
do
    local l_v6_2 = v6;
    v9 = function()
        local l_FileSyncFlags_3 = l_Workspace_0:FindFirstChild("FileSyncFlags");
        if l_FileSyncFlags_3 and l_FileSyncFlags_3:FindFirstChild(l_v7_2) then
            return l_FileSyncFlags_3[l_v7_2].Value;
        else
            return l_v6_2;
        end;
    end;
end;
v5.LogTestsQuiet = v9;
v6 = nil or false;
v7 = "RunDeveloperFrameworkTests";
local l_v7_3 = v7 --[[ copy: 5 -> 9 ]];
do
    local l_v6_3 = v6;
    v9 = function()
        local l_FileSyncFlags_4 = l_Workspace_0:FindFirstChild("FileSyncFlags");
        if l_FileSyncFlags_4 and l_FileSyncFlags_4:FindFirstChild(l_v7_3) then
            return l_FileSyncFlags_4[l_v7_3].Value;
        else
            return l_v6_3;
        end;
    end;
end;
v5.RunDeveloperFrameworkTests = v9;
v6 = nil or false;
v7 = "LogAnalytics";
do
    local l_v6_4 = v6;
    v9 = function()
        local l_FileSyncFlags_5 = l_Workspace_0:FindFirstChild("FileSyncFlags");
        if l_FileSyncFlags_5 and l_FileSyncFlags_5:FindFirstChild(v7) then
            return l_FileSyncFlags_5[v7].Value;
        else
            return l_v6_4;
        end;
    end;
end;
v5.LogAnalytics = v9;
return v5;


local v0 = {
    Export = "Ctrl+Alt+E",
    Import = "Ctrl+Alt+I"
};
local _ = function(_, _, v3, v4)
    return {
        id = v3,
        text = v3 .. " Scripts",
        defaultShortcut = v4 ~= "" and v4 or nil,
        allowBinding = true
    };
end;
return function(_, _)
    local v8 = {};
    for v9, v10 in pairs(v0) do
        local l_v10_0 = v10;
        v8[v9] = {
            id = v9,
            text = v9 .. " Scripts",
            defaultShortcut = l_v10_0 ~= "" and l_v10_0 or nil,
            allowBinding = true
        };
    end;
    return v8;
end;


local v0 = {
    IconEnums = {
        Export = "Export",
        Import = "Import",
        Info = "Info",
        Open = "Open",
        Recent = "Recent",
        ServerScriptService = "ServerScriptService",
        UptoDate = "Success",
        Warning = "Warning",
        Notification = "NotificationBadgeUnread"
    }
};
v0.FileSyncIcons = {
    [v0.IconEnums.Export] = "rbxasset://studio_svg_textures/Lua/FileSync/%s/Large/" .. v0.IconEnums.Export .. ".png",
    [v0.IconEnums.Info] = "rbxasset://studio_svg_textures/Lua/FileSync/%s/Standard/" .. v0.IconEnums.Info .. ".png",
    [v0.IconEnums.Import] = "rbxasset://studio_svg_textures/Lua/FileSync/%s/Large/" .. v0.IconEnums.Import .. ".png",
    [v0.IconEnums.Recent] = "rbxasset://studio_svg_textures/Shared/Utility/%s/Standard/" .. v0.IconEnums.Recent .. ".png",
    [v0.IconEnums.Open] = "rbxasset://studio_svg_textures/Lua/FileSync/%s/Standard/" .. v0.IconEnums.Open .. ".png",
    [v0.IconEnums.Info] = "rbxasset://studio_svg_textures/Lua/FileSync/%s/Standard/" .. v0.IconEnums.Info .. ".png",
    [v0.IconEnums.ServerScriptService] = "rbxasset://studio_svg_textures/Lua/FileSync/%s/Standard/" .. v0.IconEnums.ServerScriptService .. ".png",
    [v0.IconEnums.UptoDate] = "rbxasset://studio_svg_textures/Shared/Alerts/%s/Standard/" .. v0.IconEnums.UptoDate .. ".png",
    [v0.IconEnums.Warning] = "rbxasset://studio_svg_textures/Lua/FileSync/%s/Large/" .. v0.IconEnums.Warning .. ".png",
    [v0.IconEnums.Notification] = "rbxasset://studio_svg_textures/Lua/FileSync/%s/Standard/" .. v0.IconEnums.Notification .. ".png"
};
v0.getIconForCurrentTheme = function(v1)
    return string.format(v0.FileSyncIcons[v1], settings().Studio.Theme.Name);
end;
return v0;


local l_script_FirstAncestor_0 = script:FindFirstAncestor("FileSync");
local v1 = require(l_script_FirstAncestor_0.Packages.React);
local v2 = require(l_script_FirstAncestor_0.Packages.ReactRoblox);
local v3 = require(l_script_FirstAncestor_0.Packages.Framework);
local v4 = require(l_script_FirstAncestor_0.Src.Resources.Theme);
local v5 = require(l_script_FirstAncestor_0.Packages.Cryo);
local l_ContextServices_0 = v3.ContextServices;
return function(v7, v8, v9, v10, v11)
    local v12 = nil;
    local function v14(v13)
        if v12 then
            v12:render(nil);
        end;
        if v13.OnClose then
            v13.OnClose();
        end;
    end;
    local v18 = l_ContextServices_0.provide({
        v8,
        v4(),
        v7
    }, {
        v1.createElement(v9, v5.Dictionary.join(v10, {
            OnClose = function()
                local l_v10_0 = v10;
                if v12 then
                    v12:render(nil);
                end;
                if l_v10_0.OnClose then
                    l_v10_0.OnClose();
                end;
            end,
            OnButtonPressed = function(v16)
                v10.OnButtonPressed(v16);
                local l_v10_1 = v10;
                if v12 then
                    v12:render(nil);
                end;
                if l_v10_1.OnClose then
                    l_v10_1.OnClose();
                end;
            end
        }), v11)
    });
    v12 = v2.createRoot(Instance.new("Folder"));
    v12:render(v18);
    return v14;
end;


local v0 = false;
return function()
    if not v0 then
        v0 = true;
        local l_Parent_0 = script.Parent.Parent;
        local v2 = require(l_Parent_0.Packages.Roact);
        if require(l_Parent_0.Src.Util.DebugFlags).EnableRoactConfigs() then
            v2.setGlobalConfig({
                elementTracing = true,
                propValidation = true,
                typeChecks = true
            });
        end;
        return ;
    else
        return ;
    end;
end;


local l_Parent_0 = script.Parent.Parent;
require(script.Parent.commonInit)();
local v1 = require(l_Parent_0.Src.Util.DebugFlags);
if not (not v1.RunningUnderCLI() and not v1.RunTests()) then
    local v2 = require(l_Parent_0.Packages.Dev.TestEZ);
    local l_TestBootstrap_0 = v2.TestBootstrap;
    local v4 = not not _G.TEAMCITY and v2.Reporters.TeamCityReporter or v2.Reporters.TextReporter;
    local l_Src_0 = l_Parent_0.Src;
    print("----- All " .. l_Parent_0.Name .. " Tests ------");
    require(script.Parent.defineLuaFlags);
    l_TestBootstrap_0:run({
        l_Src_0
    }, v4);
    print("----------------------------------");
end;
if v1.RunningUnderCLI() then
    pcall(function()
        game:GetService("ProcessService"):ExitAsync(0);
    end);
end;


return require(script.Parent.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0)
    return {
        rulesData = v0
    };
end);


local l_Parent_0 = script.Parent.Parent;
local l_Action_0 = require(script.Parent.Parent.Parent.Parent.Packages.Framework).Util.Action;
local v2 = require(l_Parent_0.Util.StateModelTemplate);
return l_Action_0(script.Name, function()
    return {
        templatesArrayToAdd = {
            v2.new()
        }
    };
end);


return require(script.Parent.Parent.Parent.Parent.Packages.Framework).Util.Action(script.Name, function(v0, v1)
    return {
        templateToClobber = v0,
        newTemplateModel = v1
    };
end);