local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Util_0 = l_Parent_0.Core.Util;
local v2 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxFixInventoryGridSearch);
local v3 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxRemoveRobuxProductEntirely);
local v4 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxOpenAssetPreviewIfFiatCannotBeInserted);
local v5 = game:DefineFastFlag("ToolboxFixAbsolutePositionResizing", false);
local l_Packages_0 = l_Parent_0.Packages;
local v7 = require(l_Packages_0.Roact);
local v8 = require(l_Packages_0.RoactRodux);
local v9 = require(l_Util_0.Constants);
local v10 = require(l_Util_0.DebugFlags);
local v11 = require(l_Util_0.Images);
local v12 = require(l_Util_0.getTimeString);
local v13 = require(l_Util_0.Analytics.AssetAnalyticsContextItem);
local v14 = require(l_Util_0.AssetUtil);
local v15 = require(l_Util_0.FiatUtil);
local v16 = require(l_Parent_0.Core.Localization.getLocalizedAssetStatusMap);
local l_Components_0 = l_Parent_0.Core.Components;
local l_Asset_0 = l_Components_0.Asset;
local v19 = require(l_Components_0.DraggableButton);
local v20 = require(l_Components_0.DropShadow);
local v21 = require(l_Asset_0.AssetCreatorName);
local v22 = require(l_Asset_0.AssetIcon);
local v23 = require(l_Asset_0.AssetName);
local v24 = require(l_Asset_0.Voting.Voting);
local v25 = require(l_Parent_0.Core.Thunks.GetPageInfoAnalyticsContextInfo);
local v26 = require(l_Parent_0.Core.Thunks.TryCreateContextMenu);
local v27 = require(l_Parent_0.Core.Components.AssetConfiguration.Permissions.PermissionsConstants);
local v28 = require(l_Parent_0.Core.Networking.Requests.GetAssetMediaIdsRequest);
local v29 = require(l_Parent_0.Core.Networking.Requests.GetOwnsAssetRequest);
local v30 = require(l_Parent_0.Core.Networking.Requests.GetCanManageAssetRequest);
local v31 = require(l_Parent_0.Core.Networking.Requests.GetVoteRequest);
local v32 = require(l_Parent_0.Core.ContextServices.NavigationContext);
local v33 = require(l_Packages_0.Framework);
local l_ContextServices_0 = v33.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v36 = require(l_Parent_0.Core.ContextServices.NetworkContext);
local _ = v33.UI.TextLabel;
local l_Util_1 = v33.Util;
local l_formatVoteNumber_0 = l_Util_1.formatVoteNumber;
local l_GetTextSize_0 = l_Util_1.GetTextSize;
local l_disableRatings_0 = require(l_Parent_0.Core.Util.ToolboxUtilities).disableRatings;
local l_Types_0 = l_Parent_0.Core.Types;
local v43 = require(l_Types_0.Category);
local v44 = require(l_Types_0.AssetSubTypes);
local v45 = v7.PureComponent:extend("Asset");
v45.defaultProps = {
    parentSize = Vector2.new(),
    parentAbsolutePosition = Vector2.new(),
    logImpression = function()
    end,
    onAssetHovered = function()
    end,
    onAssetHoverEnded = function()
    end,
    shouldLogOnMount = true
};
v45.init = function(v46, v47)
    v46.wasAssetBoundsWithinScrollingBounds = false;
    v46.hasInitiated = false;
    v46.ref = v7.createRef();
    v46.state = {
        hoverPosition = nil
    };
    local _ = v47.canInsertAsset;
    v46.showVotes = false;
    v46.onMouseEntered = function(_, _, _)
        v46.props.onAssetHovered(v46.props.assetId);
        if v46.showVotes then
            v47.getVote(v46.props.Network.networkInterface, v46.props.assetId, v43.getAssetTypeByNumber(v43.getCategoryByName(v46.props.categoryName).assetType));
        end;
        local l_assetData_0 = v46.props.assetData;
        local l_Asset_1 = l_assetData_0.Asset;
        local v54 = false;
        if l_Asset_1.TypeId == Enum.AssetType.Plugin.Value then
            v54 = l_assetData_0.Creator.IsVerifiedCreator;
        end;
        if v54 then
            v47.getAssetMediaIds(v46.props.Network.networkInterface, v46.props.assetId);
        end;
    end;
    v46.onMouseLeave = function(_, _, _)
        v46.props.onAssetHoverEnded(v46.props.assetId);
    end;
    v46.onInputEnded = function(_, v59)
        if v59.UserInputType == Enum.UserInputType.Focus then
            v46.props.onAssetHoverEnded(v46.props.assetId);
        end;
    end;
    v46.onMouseMoved = function(_, _, _)
        v46.props.onAssetHovered(v46.props.assetId);
    end;
    v46.canInsertAsset = function()
        local l_props_0 = v46.props;
        local l_assetData_1 = l_props_0.assetData;
        local l_ownsAsset_0 = l_props_0.ownsAsset;
        if not l_assetData_1 then
            return l_props_0.canInsertAsset();
        else
            return l_props_0.canInsertAsset() and (v43.shouldShowPrices(l_props_0.categoryName) and l_ownsAsset_0 or if not not l_assetData_1.FiatProduct and l_assetData_1.FiatProduct.PurchasePrice then v15.isFree(l_assetData_1.FiatProduct.PurchasePrice) else (not not l_assetData_1.Product and l_assetData_1.Product.Price or 0) == 0);
        end;
    end;
    v46.onDragStart = function(_, _, _)
        if v46.canInsertAsset() then
            v46.props.tryInsert(v46.props.assetData, true, nil, v46.props.swimlaneCategory);
            return ;
        else
            return ;
        end;
    end;
    v46.onClick = function(_, _, _)
        if v46.canInsertAsset() then
            local l_assetData_2 = v46.props.assetData;
            local l_Asset_2 = l_assetData_2.Asset;
            local l_swimlaneCategory_0 = v46.props.swimlaneCategory;
            if l_Asset_2.TypeId == Enum.AssetType.Plugin.Value then
                v46.onAssetPreviewButtonClicked();
                return ;
            else
                v46.props.tryInsert(l_assetData_2, false, nil, l_swimlaneCategory_0);
                return ;
            end;
        else
            if v4() then
                v46.onAssetPreviewButtonClicked();
            end;
            return ;
        end;
    end;
    v46.onAssetPreviewButtonClicked = function()
        v46.props.onAssetPreviewButtonClicked(v46.props.assetData, v46.props.swimlaneCategory);
    end;
    v46.tryCreateContextMenu = function(v75)
        local l_props_1 = v46.props;
        v46.props.tryCreateContextMenu(l_props_1.assetData, v75, l_props_1.Plugin:get(), l_props_1.tryOpenAssetConfig, (v46.props.getPageInfoAnalyticsContextInfo()));
    end;
    v46.onAbsolutePositionChange = function(v77)
        local l_assetData_3 = v46.props.assetData;
        local l_AbsolutePosition_0 = v77.AbsolutePosition;
        local v80 = v14.getAssetSize(v46.props.categoryName);
        local v81 = false;
        if v77.AnchorPoint.X == 0 then
            v81 = v77.AnchorPoint.Y == 0;
        end;
        assert(v81, "self.onAbsolutePositionChange needs the asset AnchorPoint to be 0,0 to calculate the scrollingBounds.");
        local v82 = Vector2.new(v80.X.Offset, v80.Y.Offset);
        v81 = v46.props.parentSize;
        local l_parentAbsolutePosition_0 = v46.props.parentAbsolutePosition;
        local _ = nil;
        v46.wasAssetBoundsWithinScrollingBounds = v46.props.logImpression(l_assetData_3, v46.wasAssetBoundsWithinScrollingBounds, v82, l_AbsolutePosition_0, v81, l_parentAbsolutePosition_0, (v46.props.AssetAnalytics:get().getNavigationContext(v46.props.NavigationContext:get(), v46.props.swimlaneCategory)));
    end;
end;
v45.didMount = function(v85)
    local l_assetData_4 = v85.props.assetData;
    local l_assetId_0 = v85.props.assetId;
    v85.props.getOwnsAsset(v85.props.Network.networkInterface, l_assetId_0);
    v85.props.getCanManageAsset(v85.props.Network.networkInterface, l_assetId_0);
    if l_assetData_4 then
        local _ = v85.props.getPageInfoAnalyticsContextInfo();
        local _ = v85.props.AssetAnalytics:get().getNavigationContext(v85.props.NavigationContext:get(), v85.props.swimlaneCategory);
        if not (not v85.ref.current or not v85.props.shouldLogOnMount) then
            v85.onAbsolutePositionChange(v85.ref.current);
        end;
    end;
end;
v45.didUpdate = function(v90, v91, _)
    if not v5 then
        if v91.parentSize ~= v90.props.parentSize then
            v90.onAbsolutePositionChange(v90.ref.current);
        end;
    elseif v90.ref.current ~= nil and v91.parentSize ~= v90.props.parentSize then
        v90.onAbsolutePositionChange(v90.ref.current);
        return ;
    end;
end;
v45.render = function(v93)
    local l_props_2 = v93.props;
    local l_Stylizer_0 = l_props_2.Stylizer;
    local l_Localization_0 = l_props_2.Localization;
    local l_assetId_1 = l_props_2.assetId;
    local l_assetData_5 = l_props_2.assetData;
    local l_categoryName_0 = l_props_2.categoryName;
    local l_currentUserPackagePermissions_0 = l_props_2.currentUserPackagePermissions;
    local l_hideCreatorName_0 = l_props_2.hideCreatorName;
    local v102 = v43.categoryIsGroupPackages(l_categoryName_0);
    local v103 = true;
    if l_currentUserPackagePermissions_0[l_assetId_1] ~= v27.EditKey then
        v103 = l_currentUserPackagePermissions_0[l_assetId_1] == v27.OwnKey;
    end;
    local v104 = nil;
    v104 = not v102 and true or v103;
    if l_assetData_5 and v104 then
        local l_LayoutOrder_0 = l_props_2.LayoutOrder;
        local l_ownsAsset_1 = l_props_2.ownsAsset;
        local l_Asset_3 = l_assetData_5.Asset;
        l_assetId_1 = l_props_2.assetId;
        local l_TypeId_0 = l_Asset_3.TypeId;
        local l_IsEndorsed_0 = l_Asset_3.IsEndorsed;
        local l_IsVerifiedCreator_0 = l_assetData_5.Creator.IsVerifiedCreator;
        local l_HasScripts_0 = l_Asset_3.HasScripts;
        local v112 = if not l_Asset_3.AssetSubTypes then nil else v44.contains(l_Asset_3.AssetSubTypes, v44.Package);
        local v113 = false;
        if l_TypeId_0 == Enum.AssetType.Audio.Value then
            v113 = true;
        end;
        local l_Name_0 = l_Asset_3.Name;
        local l_Status_0 = l_Asset_3.Status;
        local v116 = v43.shouldShowPrices(l_props_2.categoryName);
        local v117 = nil;
        local v118 = nil;
        local v119 = nil;
        if v116 then
            v118 = false;
            local l_FiatProduct_0 = l_assetData_5.FiatProduct;
            if not l_FiatProduct_0 or not l_FiatProduct_0.PurchasePrice then
                if not v3() then
                    v118 = true;
                    local v121 = not not l_assetData_5.Product and l_assetData_5.Product.Price or 0;
                    v119 = v121 == 0;
                    v117 = if not v119 then v121 else l_Localization_0:getText("Purchase", "Free");
                else
                    v117 = "";
                    if v10.shouldDebugWarnings() then
                        warn(("AssetTile expected fiatProduct for categoryName %s, but found none for assetId %s"):format(l_props_2.categoryName, l_Asset_3.Id));
                    end;
                end;
            else
                v117 = v15.displayStringFromMoney(l_FiatProduct_0.PurchasePrice, l_Localization_0);
            end;
        end;
        local l_Creator_0 = l_assetData_5.Creator;
        local l_Name_1 = l_Creator_0.Name;
        local v124 = l_props_2.voting or {};
        local l_ShowVotes_0 = v124.ShowVotes;
        local v126 = v43.getTabForCategoryName(l_props_2.categoryName) == v43.CREATIONS;
        if not (not (not (v43.getTabForCategoryName(l_props_2.categoryName) == v43.MARKETPLACE) or v113) and not l_disableRatings_0()) then
            l_ShowVotes_0 = false;
        end;
        v93.showVotes = l_ShowVotes_0;
        local v127 = v126 and l_Status_0 ~= nil;
        local l_isHovered_0 = l_props_2.isHovered;
        local v129 = nil;
        local v130 = nil;
        local v131 = nil;
        local _ = nil;
        local v133 = nil;
        local _ = nil;
        local v135 = nil;
        local v136 = nil;
        local v137 = nil;
        local v138 = false;
        if v124 ~= nil then
            v138 = false;
            if v124.VoteCount ~= nil then
                v138 = l_formatVoteNumber_0.hasEnoughRatings(v124.VoteCount);
            end;
        end;
        v131 = (l_ShowVotes_0 and l_isHovered_0) and v138;
        v138 = l_ShowVotes_0;
        if v138 then
            v138 = false;
            if v124 ~= nil then
                v138 = v124.showVoteButtons;
            end;
        end;
        v130 = v138;
        v138 = l_ShowVotes_0;
        if v138 then
            v138 = l_isHovered_0;
            if v138 then
                v138 = false;
                if v124 ~= nil then
                    v138 = v124.VoteLoading;
                end;
            end;
        end;
        v137 = v138;
        v129 = if not v130 then if v131 or v137 then v9.ASSET_OUTLINE_EXTRA_HEIGHT_WITH_VOTING_COUNT else v9.ASSET_OUTLINE_EXTRA_HEIGHT else v9.ASSET_OUTLINE_EXTRA_HEIGHT_WITH_VOTE_BUTTONS_HOVERED;
        v135 = v9.ASSET_NAME_FONT_SIZE;
        v136 = v9.FONT;
        if not (not (l_GetTextSize_0(l_Name_0, v135, v136).X <= v9.ASSET_WIDTH_NO_PADDING) and not v130) then
            v133 = true;
            v129 = v129 - v9.ASSET_NAME_ONE_LINE_HEIGHT;
        end;
        if not (not v127 or l_hideCreatorName_0) then
            v129 = v129 + v9.ASSET_CREATOR_NAME_HEIGHT;
        end;
        if not (not l_HasScripts_0 and not v112) then
            v129 = v129 + v9.PRICE_HEIGHT;
        end;
        if not ((not v130 or not l_isHovered_0) or not l_HasScripts_0 and not v112) then
            v129 = v129 + v9.ASSET_VOTE_BUTTONS_SCRIPT_PADDING;
        end;
        if not (not v116 and not v113) then
            v129 = v129 + v9.ASSET_INNER_PADDING;
        end;
        local l_outline_0 = l_Stylizer_0.asset.outline;
        local v140 = not not l_isHovered_0 and v129 + 2 * v9.ASSET_OUTLINE_PADDING or 0;
        local l_ASSET_INNER_PADDING_0 = v9.ASSET_INNER_PADDING;
        if v113 then
            l_ASSET_INNER_PADDING_0 = 0;
        end;
        local l_packages_0 = l_Stylizer_0.asset.packages;
        local v143 = "";
        if v113 then
            v143 = l_Asset_3.Duration ~= nil and v12(l_Asset_3.Duration, 1) or "";
        end;
        local l_dropShadowSize_0 = l_Stylizer_0.asset.dropShadowSize;
        return (v7.createElement("Frame", {
            Position = UDim2.new(0, 0, 0, 0),
            Size = v14.getAssetSize(l_categoryName_0),
            LayoutOrder = l_LayoutOrder_0,
            BackgroundTransparency = 1,
            ZIndex = not l_isHovered_0 and 1 or 2,
            [v7.Change.AbsolutePosition] = v93.onAbsolutePositionChange,
            [v7.Ref] = v93.ref
        }, {
            DropShadow = l_isHovered_0 and v7.createElement(v20, {
                AnchorPoint = Vector2.new(0.5, 0),
                Position = UDim2.new(0.5, 0, 0, -(v9.ASSET_OUTLINE_PADDING + l_dropShadowSize_0)),
                Size = UDim2.new(1, 2 * (v9.ASSET_OUTLINE_PADDING + l_dropShadowSize_0), 1, v129 + 2 * l_dropShadowSize_0),
                ZIndex = -2
            }),
            Outline = v7.createElement("Frame", {
                AnchorPoint = Vector2.new(0.5, 0),
                BackgroundTransparency = if l_isHovered_0 or l_props_2.hasTutorialLimits then l_outline_0.transparency else 1,
                BackgroundColor3 = l_outline_0.backgroundColor,
                BorderColor3 = l_outline_0.borderColor,
                BorderSizePixel = 1,
                Position = UDim2.new(0.5, 0, 0, -v9.ASSET_OUTLINE_PADDING),
                Size = UDim2.new(1, 2 * v9.ASSET_OUTLINE_PADDING, 1, v129),
                ZIndex = -1,
                [v7.Event.MouseLeave] = v93.onMouseLeave,
                [v7.Event.InputEnded] = v93.onInputEnded
            }, {
                TutorialStroke = if not l_props_2.hasTutorialLimits then nil else v7.createElement("UIStroke", {
                    Thickness = l_Stylizer_0.asset.strokeThickness,
                    Color = l_Stylizer_0.asset.strokeColor
                })
            }),
            InnerFrame = v7.createElement(v19, {
                BackgroundTransparency = 1,
                Position = UDim2.new(0, 0, 0, 0),
                Size = UDim2.new(1, 0, 1, v140),
                [v7.Event.MouseEnter] = v93.onMouseEntered,
                [v7.Event.MouseButton2Click] = function()
                    v93.tryCreateContextMenu(l_Localization_0);
                end,
                onMouseMoved = v93.onMouseMoved,
                onDragStart = v93.onDragStart,
                onClick = v93.onClick
            }, {
                UIListLayout = v7.createElement("UIListLayout", {
                    Padding = UDim.new(0, l_ASSET_INNER_PADDING_0),
                    SortOrder = Enum.SortOrder.LayoutOrder,
                    HorizontalAlignment = Enum.HorizontalAlignment.Center,
                    VerticalAlignment = Enum.VerticalAlignment.Top
                }),
                AssetIcon = v7.createElement(v22, {
                    Size = UDim2.new(1, 0, 1, 0),
                    LayoutOrder = 0,
                    assetId = l_assetId_1,
                    assetName = l_Name_0,
                    assetTileLocation = l_props_2.assetTileLocation,
                    currentSoundId = l_props_2.currentSoundId,
                    isEndorsed = l_IsEndorsed_0,
                    isLoading = l_props_2.isLoading,
                    typeId = l_TypeId_0,
                    originalAssetId = l_props_2.originalAssetId,
                    voting = v124,
                    isHovered = l_isHovered_0,
                    isPackage = v112,
                    status = not not v127 and l_Status_0 or nil,
                    onAssetPreviewButtonClicked = v93.onAssetPreviewButtonClicked
                }),
                AssetName = v7.createElement(v23, {
                    Size = UDim2.new(1, 0, 0.45, 0),
                    LayoutOrder = 10,
                    NumberRows = if not v133 then nil else 1,
                    assetId = l_assetId_1,
                    assetName = l_Name_0,
                    TextSize = v135,
                    Font = v136
                }),
                Price = v116 and v7.createElement("Frame", {
                    BackgroundTransparency = 1,
                    LayoutOrder = 20,
                    Size = UDim2.new(1, 0, 0, v9.PRICE_HEIGHT)
                }, {
                    Layout = v7.createElement("UIListLayout", {
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        FillDirection = Enum.FillDirection.Horizontal,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        HorizontalAlignment = Enum.HorizontalAlignment.Left,
                        Padding = UDim.new(0, 4)
                    }),
                    RobuxIcon = ((v118 and not v119) and not l_ownsAsset_1) and v7.createElement("ImageLabel", {
                        LayoutOrder = 1,
                        Image = v11.ROBUX_SMALL,
                        Size = v9.Dialog.ROBUX_SIZE,
                        BackgroundTransparency = 1,
                        ImageColor3 = l_Stylizer_0.asset.textColor
                    }),
                    PriceText = not l_ownsAsset_1 and v7.createElement("TextLabel", {
                        BackgroundTransparency = 1,
                        LayoutOrder = 2,
                        Font = v9.FONT,
                        Size = UDim2.new(1, -20, 0, v9.PRICE_HEIGHT),
                        TextColor3 = l_Stylizer_0.asset.textColor,
                        TextSize = v9.PRICE_FONT_SIZE,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        Text = v117,
                        TextTruncate = Enum.TextTruncate.AtEnd
                    }),
                    OwnedIcon = l_ownsAsset_1 and v7.createElement("ImageLabel", {
                        LayoutOrder = 1,
                        Image = v11.OWNED_ICON,
                        Size = v9.Dialog.ROBUX_SIZE,
                        BackgroundTransparency = 1,
                        ImageColor3 = l_Stylizer_0.asset.textColor
                    })
                }),
                CreatorName = (l_isHovered_0 and not l_hideCreatorName_0) and v7.createElement(v21, {
                    Size = UDim2.new(1, 0, 0.15, 0),
                    LayoutOrder = 30,
                    assetId = l_assetId_1,
                    creator = if not v2() then nil else l_Creator_0,
                    creatorName = l_Name_1,
                    clickable = not v126,
                    isVerifiedCreator = l_IsVerifiedCreator_0,
                    onClick = if not v2() then nil else l_props_2.onSearchByCreator
                }),
                Voting = if (v131 or v130) or v137 then v7.createElement(v24, {
                    LayoutOrder = not v130 and 35 or 25,
                    assetId = l_assetId_1,
                    voting = v124,
                    showBackgroundBox = l_isHovered_0
                }) else if v131 or v130 then v7.createElement(v24, {
                    LayoutOrder = not v130 and 35 or 25,
                    assetId = l_assetId_1,
                    voting = v124,
                    showBackgroundBox = l_isHovered_0
                }) else nil,
                AudioLength = (l_isHovered_0 and v113) and v7.createElement("TextLabel", {
                    Size = UDim2.new(1, 0, 0, v9.AUDIO_LENGTH_HEIGHT),
                    LayoutOrder = 40,
                    Text = v143,
                    BackgroundTransparency = 1,
                    BorderSizePixel = 0,
                    TextXAlignment = Enum.TextXAlignment.Left,
                    Font = v9.FONT,
                    TextSize = v9.FONT_SIZE_SMALL,
                    TextColor3 = l_Stylizer_0.asset.textColor
                }),
                HasScripts = if not (not not l_isHovered_0 and l_HasScripts_0) or v112 then nil else v7.createElement("Frame", {
                    BackgroundTransparency = 1,
                    LayoutOrder = 50,
                    Size = UDim2.new(1, 0, 0, v9.PRICE_HEIGHT)
                }, {
                    Layout = v7.createElement("UIListLayout", {
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        FillDirection = Enum.FillDirection.Horizontal,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        HorizontalAlignment = Enum.HorizontalAlignment.Left,
                        Padding = UDim.new(0, 4)
                    }),
                    ScriptIcon = v7.createElement("ImageLabel", {
                        LayoutOrder = 1,
                        Image = v11.SCRIPT,
                        Size = v9.Dialog.SCRIPT_SIZE,
                        BackgroundTransparency = 1
                    }),
                    Text = v7.createElement("TextLabel", {
                        LayoutOrder = 2,
                        BackgroundTransparency = 1,
                        Size = UDim2.new(1, -20, 0, v9.PRICE_HEIGHT),
                        TextColor3 = l_Stylizer_0.asset.textColor,
                        Font = v9.FONT,
                        TextSize = v9.STATUS_NAME_FONT_SIZE,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        Text = l_Localization_0:getText("General", "HasScripts"),
                        TextTruncate = Enum.TextTruncate.None
                    })
                }),
                Package = if not not l_isHovered_0 and v112 then v7.createElement("Frame", {
                    BackgroundTransparency = 1,
                    LayoutOrder = 50,
                    Size = UDim2.new(1, 0, 0, v9.PRICE_HEIGHT)
                }, {
                    Layout = v7.createElement("UIListLayout", {
                        SortOrder = Enum.SortOrder.LayoutOrder,
                        FillDirection = Enum.FillDirection.Horizontal,
                        VerticalAlignment = Enum.VerticalAlignment.Center,
                        HorizontalAlignment = Enum.HorizontalAlignment.Left,
                        Padding = UDim.new(0, 4)
                    }),
                    PackageIcon = v7.createElement("ImageLabel", {
                        LayoutOrder = 1,
                        Image = l_packages_0.packageImage,
                        Size = v9.PACKAGE_DETAIL_SIZE,
                        BackgroundTransparency = 1
                    }),
                    Text = v7.createElement("TextLabel", {
                        LayoutOrder = 2,
                        BackgroundTransparency = 1,
                        Size = UDim2.new(1, -20, 0, v9.PRICE_HEIGHT),
                        TextColor3 = l_Stylizer_0.asset.textColor,
                        Font = v9.FONT,
                        TextSize = v9.STATUS_NAME_FONT_SIZE,
                        TextXAlignment = Enum.TextXAlignment.Left,
                        Text = l_Localization_0:getText("General", "PackagesUpdateable"),
                        TextTruncate = Enum.TextTruncate.None
                    })
                }) else nil,
                Status = (l_isHovered_0 and v127) and v7.createElement("TextLabel", {
                    BackgroundTransparency = 1,
                    LayoutOrder = 60,
                    Size = UDim2.new(1, 0, 0, v9.STATUS_NAME_HEIGHT),
                    Text = v16(l_Localization_0)[l_Status_0],
                    TextColor3 = l_Stylizer_0.asset.textColor,
                    Font = v9.FONT,
                    TextSize = v9.STATUS_NAME_FONT_SIZE,
                    TextXAlignment = Enum.TextXAlignment.Center,
                    TextYAlignment = Enum.TextYAlignment.Top,
                    ClipsDescendants = false,
                    TextTruncate = Enum.TextTruncate.None
                })
            })
        }));
    else
        return ;
    end;
end;
return v8.connect(function(v145, v146)
    v145 = v145 or {};
    local v147 = v145.assets or {};
    local v148 = v145.voting or {};
    local v149 = v145.sound or {};
    local v150 = v147.idToAssetMap or {};
    local l_assetId_2 = v146.assetId;
    local v152 = v145.pageInfo or {};
    local v153 = v152.categoryName or v43.DEFAULT.name;
    local v154 = v152.searchTerm or "";
    local v155 = v145.purchase.cachedOwnedAssets[tostring(l_assetId_2)];
    local _ = (v147.manageableAssets or {})[tostring(l_assetId_2)];
    local _ = nil;
    return {
        assetData = if v146.assetData then v150[l_assetId_2] else v146.assetData,
        categoryName = v153,
        currentSoundId = v149.currentSoundId or 0,
        currentUserPackagePermissions = (v145.packages.permissionsTable or {}) or nil,
        searchTerm = v154,
        ownsAsset = v155,
        isLoading = v149.currentSoundId == l_assetId_2 and (v149.isLoading or false),
        voting = v148[l_assetId_2] or {},
        hasTutorialLimits = v145.tutorialLimits.assetIds ~= nil
    };
end, function(v158)
    return {
        getAssetMediaIds = function(v159, v160)
            v158(v28(v159, v160));
        end,
        getOwnsAsset = function(v161, v162)
            v158(v29(v161, v162));
        end,
        getCanManageAsset = function(v163, v164)
            v158(v30(v163, v164));
        end,
        getVote = function(v165, v166, v167)
            v158(v31(v165, v166, v167, true));
        end,
        tryCreateContextMenu = function(v168, v169, v170, v171, v172)
            v158(v26(v168, v169, v170, v171, v172));
        end,
        getPageInfoAnalyticsContextInfo = function()
            return v158(v25());
        end
    };
end)((l_withContext_0({
    AssetAnalytics = v13,
    Localization = l_ContextServices_0.Localization,
    Plugin = l_ContextServices_0.Plugin,
    NavigationContext = v32,
    Stylizer = l_ContextServices_0.Stylizer,
    Network = v36
})(v45)));


local l_Packages_0 = script.Parent.Parent.Parent.Parent.Packages;
local v1 = require(l_Packages_0.Roact);
local v2 = require(l_Packages_0.Cryo);
local l_ContextServices_0 = require(l_Packages_0.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v5 = v1.Component:extend("AssetBackground1");
v5.render = function(v6)
    local l_props_0 = v6.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_icon_0 = l_Stylizer_0.asset.icon;
    local _ = Color3.fromRGB(255, 255, 255);
    local _ = 0;
    return v1.createElement("ImageLabel", (v2.Dictionary.join(l_props_0, {
        BackgroundColor3 = l_Stylizer_0.asset.background.color,
        Image = "",
        BorderColor3 = l_icon_0.borderColor,
        BorderSizePixel = l_Stylizer_0.asset.background.borderSize,
        ScaleType = Enum.ScaleType.Tile,
        TileSize = UDim2.new(0.125, 0, 0.125, 0),
        backgroundIndex = v2.None,
        Stylizer = v2.None
    })));
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v5));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Roact);
local v3 = require(l_Packages_0.RoactRodux);
local l_Pane_0 = require(l_Packages_0.Framework).UI.Pane;
local l_Util_0 = l_Parent_0.Core.Util;
local v6 = require(l_Util_0.Constants);
local v7 = require(l_Util_0.ToolboxUtilities);
local l_ContextServices_0 = require(l_Packages_0.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v10 = require(l_Parent_0.Core.ContextServices.Settings);
local v11 = require(l_Parent_0.Core.ContextServices.ModalContext);
local v12 = require(l_Parent_0.Core.ContextServices.NetworkContext);
local v13 = require(l_Parent_0.Core.Networking.Requests.SearchWithOptions);
local v14 = require(l_Parent_0.Core.Components.TooltipWrapper);
local v15 = require(l_Parent_0.Core.Components.Asset.VerifiedCreatorBadge);
local v16 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxFixInventoryGridSearch);
local v17 = v2.PureComponent:extend("AssetCreatorName");
v17.init = function(v18, v19)
    v18.state = {
        isHovered = false
    };
    v18.textButtonRef = v2.createRef();
    v18.underLineWidth = 0;
    v18.onMouseEnter = function()
        v18:setState({
            isHovered = true
        });
        v19.Modal.onTooltipTriggered(v19.assetId, v6.TOOLTIP_TYPE.CREATOR_NAME);
    end;
    v18.onMouseLeave = function()
        v18:setState({
            isHovered = false
        });
    end;
    v18.onActivated = function()
        local l_props_0 = v18.props;
        local l_networkInterface_0 = l_props_0.Network.networkInterface;
        if l_props_0.clickable then
            local v22 = nil;
            v22 = {
                Creator = if not v16() then l_props_0.creatorName else nil,
                AudioSearch = l_props_0.audioSearchInfo,
                AdditionalAudioSearchInfo = l_props_0.additionalAudioSearchInfo
            };
            local v23 = v18.props.Settings:get("Plugin");
            if not v16() then
                l_props_0.searchWithOptions(l_networkInterface_0, v23, v22);
            else
                l_props_0.onClick(l_props_0.creator, v22);
                return ;
            end;
        end;
    end;
end;
v17.didMount = function(v24)
    local l_current_0 = v24.textButtonRef.current;
    if l_current_0 then
        v24.underLineWidth = l_current_0.TextBounds.X;
    end;
end;
v17.render = function(v26)
    local l_props_1 = v26.props;
    local v28 = not l_props_1.isVerifiedCreator and not v7.getShouldHideVerifiedCreatorBadges();
    local l_Stylizer_0 = l_props_1.Stylizer;
    local v30 = l_props_1.LayoutOrder or 0;
    local l_creatorName_0 = l_props_1.creatorName;
    local l_assetId_0 = l_props_1.assetId;
    local l_creatorName_1 = l_props_1.creatorName;
    local v34 = v26.props.Modal.modalStatus:canShowCurrentTooltip(l_assetId_0, v6.TOOLTIP_TYPE.CREATOR_NAME);
    local l_creatorName_2 = l_Stylizer_0.asset.creatorName;
    local l_isHovered_0 = v26.state.isHovered;
    return v2.createElement(l_Pane_0, {
        HorizontalAlignment = Enum.HorizontalAlignment.Left,
        Layout = Enum.FillDirection.Horizontal,
        LayoutOrder = v30,
        Size = UDim2.new(1, 0, 0, v6.ASSET_CREATOR_NAME_HEIGHT)
    }, {
        Text = v2.createElement("TextButton", {
            AutoButtonColor = false,
            BackgroundTransparency = 1,
            ClipsDescendants = false,
            LayoutOrder = 1,
            Font = v6.FONT,
            Size = UDim2.new(0, 60, 1, 0),
            TextSize = v6.ASSET_CREATOR_NAME_FONT_SIZE,
            TextXAlignment = Enum.TextXAlignment.Left,
            TextYAlignment = Enum.TextYAlignment.Top,
            TextTruncate = Enum.TextTruncate.AtEnd,
            Text = l_creatorName_0,
            TextColor3 = l_creatorName_2.textColor,
            [v2.Event.MouseEnter] = v26.onMouseEnter,
            [v2.Event.MouseLeave] = v26.onMouseLeave,
            [v2.Event.Activated] = v26.onActivated,
            [v2.Ref] = v26.textButtonRef
        }, {
            TooltipWrapper = l_isHovered_0 and v2.createElement(v14, {
                Text = l_creatorName_1,
                canShowCurrentTooltip = v34,
                isHovered = l_isHovered_0
            }),
            UnderLine = (l_isHovered_0 and (not (l_props_1.clickable ~= nil) or l_props_1.clickable)) and v2.createElement("Frame", {
                AnchorPoint = Vector2.new(0.5, 0.5),
                Position = UDim2.new(0.5, 0, 1, 1),
                Size = UDim2.new(0, v26.underLineWidth, 0, 1),
                BorderSizePixel = 0
            })
        }),
        CreatorBadge = v28 and v2.createElement(v15, {
            LayoutOrder = 2
        })
    });
end;
return v3.connect(function(v37, _)
    local v39 = (v37 or {}).pageInfo or {};
    return {
        audioSearchInfo = v39.audioSearchInfo,
        additionalAudioSearchInfo = v39.additionalAudioSearchInfo
    };
end, function(v40)
    return {
        searchWithOptions = not v16() and function(v41, v42, v43)
            v40(v13(v41, v42, v43));
        end or nil
    };
end)((l_withContext_0({
    Settings = v10,
    Stylizer = l_ContextServices_0.Stylizer,
    Modal = v11,
    Network = v12
})(v17)));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Roact);
local v3 = require(l_Packages_0.RoactRodux);
local v4 = require(l_Packages_0.Framework);
local v5 = require(l_Packages_0.Dash);
local l_Util_0 = l_Parent_0.Core.Util;
local v7 = require(l_Util_0.Analytics.AssetAnalyticsContextItem);
local v8 = require(l_Util_0.Constants);
local v9 = require(l_Util_0.Images);
local v10 = require(l_Util_0.Urls);
local v11 = require(l_Parent_0.Core.Types.Category);
local v12 = require(l_Parent_0.Core.Components.Asset.AssetIconBadge);
local v13 = require(l_Parent_0.Core.Components.Asset.AssetBackground);
local v14 = require(l_Parent_0.Core.Components.Audio.AudioPreviewButton);
local v15 = require(l_Parent_0.Core.Components.Audio.AudioProgressBar);
local v16 = require(l_Parent_0.Core.Components.ImageWithDefault);
local v17 = require(l_Parent_0.Core.Components.TooltipWrapper);
local v18 = require(l_Parent_0.Core.Components.Asset.Preview.PopUpWrapperButton);
local v19 = require(l_Parent_0.Core.ContextServices.ModalContext);
local l_ImageCarousel_0 = v4.UI.ImageCarousel;
local l_ContextServices_0 = v4.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v23 = v2.PureComponent:extend("AssetIcon");
local v24 = UDim2.new(1, -14, 0, 14);
local v25 = UDim2.new(0, 14, 0, 14);
local v26 = UDim2.new(0, 16, 0, 16);
v23._createImageDataForCarousel = function(v27, v28, v29)
    local v30 = v27.props or v29;
    local v31 = nil;
    local l_assetMediaIds_0 = v30.assetMediaIds;
    if type(l_assetMediaIds_0) == "table" and #l_assetMediaIds_0 > 0 then
        v31 = if not v28 then {
            v27.thumbnailUrl
        } else {
            v30.assetId
        };
        v5.forEach(l_assetMediaIds_0, function(v33)
            if not v28 then
                table.insert(v31, (v10.constructAssetThumbnailUrl(v33, v8.ASSET_THUMBNAIL_REQUESTED_IMAGE_SIZE, v8.ASSET_THUMBNAIL_REQUESTED_IMAGE_SIZE)));
                return ;
            else
                table.insert(v31, v33);
                return ;
            end;
        end);
    end;
    return v31;
end;
v23.init = function(v34, v35)
    v34.thumbnailUrl = v10.constructAssetThumbnailUrl(v35.assetId, v8.ASSET_THUMBNAIL_REQUESTED_IMAGE_SIZE, v8.ASSET_THUMBNAIL_REQUESTED_IMAGE_SIZE);
    v34.state = {
        isHovered = false,
        imageUrlsForCarousel = v34:_createImageDataForCarousel(false, v35),
        imageIdsForCarousel = v34:_createImageDataForCarousel(true, v35)
    };
    v34.onMouseEnter = function()
        v34:setState({
            isHovered = true
        });
        v35.Modal.onTooltipTriggered(v35.assetId, v8.TOOLTIP_TYPE.ASSET_ICON);
    end;
    v34.onMouseLeave = function()
        v34:setState({
            isHovered = false
        });
    end;
    v34.onAssetPreviewButtonClicked = function()
        v34.props.onAssetPreviewButtonClicked();
    end;
    v34.assetMediaLogged = {};
    v34.LogAssetMediaImpression = function(v36, _)
        local l_assetTileLocation_0 = v35.assetTileLocation;
        local v39 = l_assetTileLocation_0 == v8.ASSET_TILE_LOCATION.MORE_FROM;
        if not v34.assetMediaLogged[v36] then
            v34.assetMediaLogged[v36] = true;
            v34.props.AssetAnalytics:get():logAssetMediaImpression(v34.props.assetData, v34.state.imageIdsForCarousel[v36], v36, v34.props.searchId, if not v39 then if l_assetTileLocation_0 == v8.ASSET_TILE_LOCATION.BROWSE then v8.ASSET_MEDIA_IMPRESSION_SOURCE.ON_HOVER_BROWSE else "" else v8.ASSET_MEDIA_IMPRESSION_SOURCE.ON_HOVER_MORE_FROM, if not v39 then nil else v34.props.originalAssetId);
            return ;
        else
            return ;
        end;
    end;
    v34.OnImageCarouselChange = function(v40, v41)
        v34.LogAssetMediaImpression(v40, v41);
    end;
    v34.OnSetImageCarouselImages = function(v42)
        v34.LogAssetMediaImpression(v42, true);
    end;
end;
v23.didUpdate = function(v43, v44)
    local l_props_0 = v43.props;
    if v44.assetId ~= l_props_0.assetId then
        v43.thumbnailUrl = v10.constructAssetThumbnailUrl(l_props_0.assetId, v8.ASSET_THUMBNAIL_REQUESTED_IMAGE_SIZE, v8.ASSET_THUMBNAIL_REQUESTED_IMAGE_SIZE);
    end;
    if v44.assetMediaIds ~= l_props_0.assetMediaIds then
        v43:setState({
            imageUrlsForCarousel = v43:_createImageDataForCarousel(false, nil),
            imageIdsForCarousel = v43:_createImageDataForCarousel(true, nil)
        });
    end;
end;
v23.render = function(v46)
    local l_props_1 = v46.props;
    local l_assetId_0 = l_props_1.assetId;
    local l_assetName_0 = l_props_1.assetName;
    local v50 = l_props_1.LayoutOrder or 0;
    local l_backgroundIndex_0 = l_props_1.backgroundIndex;
    local l_isEndorsed_0 = l_props_1.isEndorsed;
    local l_typeId_0 = l_props_1.typeId;
    local l_isPackage_0 = l_props_1.isPackage;
    local l_currentSoundId_0 = l_props_1.currentSoundId;
    local l_isLoading_0 = l_props_1.isLoading;
    local l_onMouseEnter_0 = v46.onMouseEnter;
    local l_onMouseLeave_0 = v46.onMouseLeave;
    local l_isHovered_0 = v46.state.isHovered;
    local l_isHovered_1 = l_props_1.isHovered;
    local l_status_0 = l_props_1.status;
    local l_thumbnailUrl_0 = v46.thumbnailUrl;
    local v63 = l_props_1.Modal.modalStatus:canShowCurrentTooltip(l_assetId_0, v8.TOOLTIP_TYPE.ASSET_ICON);
    local v64 = l_typeId_0 == Enum.AssetType.Audio.Value;
    local v65 = l_status_0 and v9.AssetStatus[l_status_0];
    return v2.createElement(v13, {
        backgroundIndex = l_backgroundIndex_0,
        Size = UDim2.new(1, 0, 1, 0),
        SizeConstraint = Enum.SizeConstraint.RelativeXX,
        ZIndex = 1,
        LayoutOrder = v50,
        [v2.Event.MouseEnter] = l_onMouseEnter_0,
        [v2.Event.MouseLeave] = l_onMouseLeave_0
    }, {
        UICorner = v2.createElement("UICorner", {
            CornerRadius = UDim.new(0, v8.ASSET_CORNER_RADIUS)
        }),
        AssetImage = if v46.state.imageUrlsForCarousel ~= nil then v2.createElement(l_ImageCarousel_0, {
            AutoAdvanceTimer = v8.ASSET_TILE_IMAGE_CAROUSEL_AUTO_ADVANCE_TIMER,
            ImageScaleType = Enum.ScaleType.Crop,
            ImageCornerRadius = v8.ASSET_CORNER_RADIUS,
            ImageStrings = v46.state.imageUrlsForCarousel,
            OnImageChange = v46.OnImageCarouselChange,
            OnImageChangeTransparencyThreshold = v8.IMAGE_CAROUSEL_ON_IMAGE_CHANGE_TRANSPARENCY_THRESHOLD,
            OnSetImages = v46.OnSetImageCarouselImages,
            ResetWhenHoveredOff = true,
            Size = UDim2.new(1, 0, 1, 0)
        }) else v2.createElement(v16, {
            BackgroundTransparency = 1,
            Size = UDim2.new(1, 0, 1, 0),
            Image = l_thumbnailUrl_0,
            defaultImage = ""
        }, {
            UICorner = v2.createElement("UICorner", {
                CornerRadius = UDim.new(0, v8.ASSET_CORNER_RADIUS)
            })
        }),
        Badge = if l_isEndorsed_0 or l_isPackage_0 then v2.createElement(v12, {
            assetId = l_assetId_0,
            isPackage = l_isPackage_0,
            floatLeft = v64
        }) else nil,
        PreviewAudioButton = v64 and v2.createElement(v14, {
            ZIndex = 3,
            assetId = l_assetId_0,
            currentSoundId = l_currentSoundId_0,
            isLoading = l_isLoading_0
        }),
        AudioProgressBar = v64 and v2.createElement(v15, {
            AnchorPoint = Vector2.new(0, 1),
            assetId = l_assetId_0,
            currentSoundId = l_currentSoundId_0,
            BackgroundTransparency = 1,
            Position = UDim2.new(0, 0, 1, 0),
            Size = UDim2.new(1, 0, 0, 2)
        }),
        AssetPreviewTriggerButton = not (v11.getTabForCategoryName(l_props_1.categoryName) == v11.CREATIONS) and v2.createElement(v18, {
            position = v24,
            ShowIcon = l_isHovered_1,
            onClick = v46.onAssetPreviewButtonClicked,
            ZIndex = 2
        }),
        AssetStatus = (l_isHovered_1 and v65) and v2.createElement("ImageLabel", {
            Position = v25,
            AnchorPoint = Vector2.new(0.5, 0.5),
            Size = v26,
            Image = v65,
            BackgroundTransparency = 1
        }),
        TooltipWrapper = l_isHovered_0 and v2.createElement(v17, {
            Text = l_assetName_0,
            canShowCurrentTooltip = v63,
            isHovered = l_isHovered_0
        })
    });
end;
return v3.connect(function(v66, v67)
    v66 = v66 or {};
    local v68 = if v66.assets.idToAssetMap ~= nil then v66.assets.idToAssetMap[v67.assetId] else nil;
    local v69 = v66.sound or {};
    local v70 = v66.pageInfo or {};
    local v71 = v70.selectedBackgroundIndex or 1;
    local v72 = v70.hoveredBackgroundIndex or 0;
    return {
        assetData = v68,
        assetMediaIds = if not not v68 and v68.Asset then v68.Asset.AssetMediaIds else nil,
        backgroundIndex = v72 ~= 0 and v72 or v71,
        categoryName = v70.categoryName or v11.DEFAULT.name,
        elapsedTime = v69.elapsedTime or 0,
        searchId = v70.searchId,
        totalTime = v69.totalTime or 0
    };
end, nil)((l_withContext_0({
    AssetAnalytics = v7,
    Stylizer = l_ContextServices_0.Stylizer,
    Modal = v19
})(v23)));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Roact);
local l_ContextServices_0 = require(l_Packages_0.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v5 = require(l_Parent_0.Core.Util.Constants);
local v6 = require(l_Parent_0.Core.Util.Images);
local v7 = require(l_Parent_0.Core.ContextServices.ModalContext);
local v8 = require(l_Parent_0.Core.Components.TooltipWrapper);
local v9 = v2.PureComponent:extend("AssetIconBadge");
v9.init = function(v10, v11)
    v10.state = {
        isHovered = false
    };
    v10.onMouseEnter = function()
        v10:setState({
            isHovered = true
        });
        v10.props.Modal.onTooltipTriggered(v11.assetId, v5.TOOLTIP_TYPE.HIGH_QUALITY_BADGE);
    end;
    v10.onMouseLeave = function()
        v10:setState({
            isHovered = false
        });
    end;
end;
v9.render = function(v12)
    local l_props_0 = v12.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_Localization_0 = l_props_0.Localization;
    local l_assetId_0 = l_props_0.assetId;
    local l_isPackage_0 = l_props_0.isPackage;
    local l_floatLeft_0 = l_props_0.floatLeft;
    local l_onMouseEnter_0 = v12.onMouseEnter;
    local l_onMouseLeave_0 = v12.onMouseLeave;
    local l_isHovered_0 = v12.state.isHovered;
    local v22 = l_props_0.Modal.modalStatus:canShowCurrentTooltip(l_assetId_0, v5.TOOLTIP_TYPE.HIGH_QUALITY_BADGE);
    local l_packages_0 = l_Stylizer_0.asset.packages;
    if not l_isPackage_0 then
        return v2.createElement("ImageLabel", {
            AnchorPoint = Vector2.new(not l_floatLeft_0 and 1 or 0, 1),
            BackgroundTransparency = 1,
            Position = UDim2.new(not l_floatLeft_0 and 0.94 or 0.06, 0, 1.06, 0),
            Size = UDim2.new(0, v5.ASSET_ENDORSED_BADGE_ICON_SIZE, 0, v5.ASSET_ENDORSED_BADGE_ICON_SIZE),
            Image = v6.ENDORSED_BADGE_ICON,
            ZIndex = 2,
            [v2.Event.MouseEnter] = l_onMouseEnter_0,
            [v2.Event.MouseLeave] = l_onMouseLeave_0
        }, {
            TooltipWrapper = l_isHovered_0 and v2.createElement(v8, {
                Text = l_Localization_0:getText("General", "EndorseBadgeTooltipText"),
                canShowCurrentTooltip = v22,
                isHovered = l_isHovered_0
            })
        });
    else
        return v2.createElement("Frame", {
            AnchorPoint = Vector2.new(not l_floatLeft_0 and 1 or 0, 1),
            Position = UDim2.new(not l_floatLeft_0 and 0.94 or 0.06, 0, 0.94, 0),
            Size = v5.PACKAGE_BACKGROUND_SIZE,
            BackgroundColor3 = l_packages_0.backgroundColor,
            BackgroundTransparency = l_packages_0.backgroundTransparency
        }, {
            UICorner = v2.createElement("UICorner", {
                CornerRadius = UDim.new(0, v5.PACKAGE_BACKGROUND_CORNER_RADIUS)
            }),
            Image = v2.createElement("ImageLabel", {
                AnchorPoint = Vector2.new(0.5, 0.5),
                Position = UDim2.new(0.5, 0, 0.5, 0),
                Size = v5.PACKAGE_DETAIL_SIZE,
                Image = l_packages_0.packageImage,
                ZIndex = 2,
                BackgroundTransparency = 1,
                [v2.Event.MouseEnter] = l_onMouseEnter_0,
                [v2.Event.MouseLeave] = l_onMouseLeave_0
            })
        });
    end;
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization,
    Modal = v7
})(v9));


local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Roact);
local v3 = require(l_Parent_0.Core.Util.Constants);
local v4 = require(l_Parent_0.Core.ContextServices.ModalContext);
local l_ContextServices_0 = require(l_Packages_0.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v7 = require(l_Parent_0.Core.Components.TooltipWrapper);
local v8 = v2.PureComponent:extend("AssetName");
v8.init = function(v9, v10)
    v9.state = {
        isHovered = false
    };
    v9.onMouseEnter = function()
        v9:setState({
            isHovered = true
        });
        v9.props.Modal.onTooltipTriggered(v10.assetId, v3.TOOLTIP_TYPE.ASSET_NAME);
    end;
    v9.onMouseLeave = function()
        v9:setState({
            isHovered = false
        });
    end;
end;
v8.render = function(v11)
    local l_props_0 = v11.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_assetId_0 = l_props_0.assetId;
    local l_assetName_0 = l_props_0.assetName;
    local v16 = l_props_0.LayoutOrder or 0;
    local l_ASSET_NAME_HEIGHT_0 = v3.ASSET_NAME_HEIGHT;
    if l_props_0.NumberRows ~= nil then
        l_ASSET_NAME_HEIGHT_0 = v3.ASSET_NAME_ONE_LINE_HEIGHT * l_props_0.NumberRows;
    end;
    local v18 = l_props_0.Modal.modalStatus:canShowCurrentTooltip(l_assetId_0, v3.TOOLTIP_TYPE.ASSET_NAME);
    local l_assetName_1 = l_Stylizer_0.asset.assetName;
    local l_isHovered_0 = v11.state.isHovered;
    return v2.createElement("TextLabel", {
        BackgroundTransparency = 1,
        LayoutOrder = v16,
        Size = UDim2.new(1, 0, 0, l_ASSET_NAME_HEIGHT_0),
        Text = l_assetName_0,
        TextColor3 = l_assetName_1.textColor,
        Font = l_props_0.Font,
        TextSize = l_props_0.TextSize,
        TextXAlignment = Enum.TextXAlignment.Left,
        TextYAlignment = Enum.TextYAlignment.Top,
        TextWrapped = true,
        ClipsDescendants = true,
        TextTruncate = Enum.TextTruncate.AtEnd,
        [v2.Event.MouseEnter] = v11.onMouseEnter,
        [v2.Event.MouseLeave] = v11.onMouseLeave
    }, {
        TooltipWrapper = l_isHovered_0 and v2.createElement(v7, {
            Text = l_assetName_0,
            canShowCurrentTooltip = v18,
            isHovered = l_isHovered_0
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Modal = v4
})(v8));


local l_Packages_0 = script.Parent.Parent.Parent.Parent.Parent.Packages;
local v1 = require(l_Packages_0.Roact);
local v2 = require(l_Packages_0.Framework);
local l_ContextServices_0 = v2.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_UI_0 = v2.UI;
local l_TextLabel_0 = l_UI_0.TextLabel;
local _ = l_UI_0.Container;
local l_Pane_0 = l_UI_0.Pane;
local v9 = v1.PureComponent:extend("AssetPreviewFooter");
v9.render = function(v10)
    local l_props_0 = v10.props;
    local l_TypeId_0 = l_props_0.AssetData.Asset.TypeId;
    local l_Creator_0 = l_props_0.AssetData.Creator;
    local l_Localization_0 = l_props_0.Localization;
    local l_FitMaxWidth_0 = l_props_0.FitMaxWidth;
    local l_LayoutOrder_0 = l_props_0.LayoutOrder;
    local v17 = l_TypeId_0 == Enum.AssetType.Plugin.Value;
    local v18 = false;
    if l_Creator_0.Id == 1 then
        v18 = l_Creator_0.Type == Enum.CreatorType.User.Value;
    end;
    if not v18 and v17 then
        local _ = if not l_FitMaxWidth_0 then UDim2.fromScale(1, 0) else UDim2.fromOffset(l_FitMaxWidth_0, 0);
        return v1.createElement(l_Pane_0, {
            AutomaticSize = Enum.AutomaticSize.Y,
            LayoutOrder = l_LayoutOrder_0,
            Size = UDim2.fromScale(1, 0)
        }, {
            Text = v1.createElement(l_TextLabel_0, {
                AutomaticSize = Enum.AutomaticSize.Y,
                TextWrapped = true,
                Size = UDim2.fromScale(1, 0),
                Style = "Body",
                TextTransparency = 0.5,
                TextXAlignment = Enum.TextXAlignment.Center,
                Text = l_Localization_0:getText("AssetPreview", "PluginNotice")
            })
        });
    else
        return nil;
    end;
end;
return (l_withContext_0({
    Localization = l_ContextServices_0.Localization
})(v9));


local l_StudioService_0 = game:GetService("StudioService");
local l_GuiService_0 = game:GetService("GuiService");
local l_Parent_0 = script.Parent.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v4 = require(l_Packages_0.Roact);
local v5 = require(l_Packages_0.RoactRodux);
local v6 = require(l_Packages_0.Cryo);
local l_Util_0 = l_Parent_0.Core.Util;
local v8 = require(l_Util_0.Constants);
local _ = require(l_Util_0.InsertAsset);
local v10 = require(l_Util_0.Analytics.Analytics);
local v11 = require(l_Util_0.Analytics.AssetAnalyticsContextItem);
local _ = require(l_Parent_0.Core.Models.AssetInfo);
local v13 = require(l_Util_0.DebugFlags);
local v14 = require(l_Util_0.getUserId);
local l_AssetPreview_0 = require(l_Packages_0.Framework).UI.AssetPreview;
local v16 = require(l_Packages_0.Dash);
local l_ContextServices_0 = require(l_Packages_0.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v19 = require(l_Parent_0.Core.ContextServices.Settings);
local v20 = require(l_Parent_0.Core.ContextServices.IXPContext);
local v21 = require(l_Parent_0.Core.ContextServices.NavigationContext);
local v22 = require(l_Parent_0.Core.ContextServices.ModalContext);
local v23 = require(l_Parent_0.Core.ContextServices.NetworkContext);
local v24 = require(l_Parent_0.Core.Actions.ClearPreview);
local _ = require(l_Parent_0.Core.Actions.EnqueueSubsequentDialog);
local v26 = require(l_Parent_0.Core.Actions.PausePreviewSound);
local v27 = require(l_Parent_0.Core.Actions.SetAssetPreview);
local v28 = require(l_Parent_0.Core.Actions.SetPurchaseDialogVisibility);
local v29 = require(l_Parent_0.Core.Actions.SetPurchaseStatus);
local v30 = require(l_Parent_0.Core.Components.Asset.Preview.SuggestionsWrapper);
local _ = require(l_Parent_0.Core.Components.PurchaseFlow.PluginPurchaseFlow);
local _ = require(l_Parent_0.Core.Components.PurchaseFlow.PurchaseSuccessDialog);
local v33 = require(l_Parent_0.Core.Components.Asset.Preview.AssetPreviewFooter);
local l_Requests_0 = l_Parent_0.Core.Networking.Requests;
local v35 = require(l_Requests_0.GetPreviewInstanceRequest);
local v36 = require(l_Requests_0.GetCodeSummaryRequest);
local v37 = require(l_Requests_0.GetPluginInfoRequest);
local v38 = require(l_Requests_0.SearchWithOptions);
local v39 = require(l_Requests_0.PostUnvoteRequest);
local v40 = require(l_Requests_0.PostVoteRequest);
local v41 = require(l_Parent_0.Core.Networking.Requests.GetOwnsAssetRequest);
local v42 = require(l_Parent_0.Core.Actions.ClearPurchaseFlow);
local v43 = require(l_Requests_0.GetFavoriteCountsRequest);
local v44 = require(l_Requests_0.GetFavoritedRequest);
local v45 = require(l_Requests_0.ToggleFavoriteStatusRequest);
local v46 = require(l_Parent_0.Core.Thunks.TryCreateContextMenu);
local v47 = require(l_Parent_0.Core.Thunks.GetPageInfoAnalyticsContextInfo);
local v48 = require(l_Requests_0.GetAssetContentAttributionInfoRequest);
local v49 = require(l_Requests_0.GetBuyerStatusRequest);
local v50 = require(l_Parent_0.Core.Components.ResultsFetcher);
local v51 = require(l_Parent_0.Core.Types.AssetSubTypes);
local v52 = require(l_Parent_0.Core.Types.BuyerStatus);
local v53 = require(l_Parent_0.Core.Types.Category);
local v54 = require(l_Parent_0.Core.Types.PurchaseStatus);
local v55 = v4.PureComponent:extend("AssetPreviewWrapper");
local l_ToolboxAssetPreviewProtectAgainstNilAssetData_0 = game:GetFastFlag("ToolboxAssetPreviewProtectAgainstNilAssetData");
local v57 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxListviewAnalytics);
local v58 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxFixInventoryCreatorFilter);
local l_disableRatings_0 = require(l_Parent_0.Core.Util.ToolboxUtilities).disableRatings;
local v60 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxCodeUnderstandingSummary);
local v61 = require(l_Util_0.SharedFlags.getIsIXPEnabledForCodeUnderstanding);
local v62 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxAddBuyerStatus);
local v63 = require(l_Parent_0.Core.Util.SharedFlags.getFFlagToolboxRemoveRobuxProductEntirely);
local v64 = require(l_Util_0.FiatUtil);
local v65 = require(l_Util_0.getReportUrl);
local v66 = Color3.fromRGB(0, 0, 0);
v55.createPurchaseFlow = function(v67)
    local l_props_0 = v67.props;
    local l_assetData_0 = l_props_0.assetData;
    local l_Asset_0 = l_assetData_0.Asset;
    local l_Id_0 = l_Asset_0.Id;
    local l_Owned_0 = l_props_0.Owned;
    local v73 = l_assetData_0.Asset.TypeId or Enum.AssetType.Model.Value;
    local v74 = v73 == Enum.AssetType.Plugin.Value;
    local v75 = nil;
    local v76 = nil;
    local v77 = nil;
    local v78 = v53.shouldShowPrices(l_props_0.categoryName);
    if v78 then
        local l_FiatProduct_0 = l_assetData_0.FiatProduct;
        if not l_FiatProduct_0 or not l_FiatProduct_0.PurchasePrice then
            if not v63() then
                v77 = true;
                local v80 = not not l_assetData_0.Product and l_assetData_0.Product.Price or 0;
                v75 = v80 == 0;
                v76 = if not v75 then v80 else if v74 then l_props_0.Localization:getText("Common", "Install") else l_props_0.Localization:getText("Purchase", "Free");
            elseif v13.shouldDebugWarnings() then
                warn(("Expected fiatProduct for categoryName %s, but found none for assetId %s"):format(l_props_0.categoryName, l_Asset_0.Id));
            end;
        else
            v77 = false;
            v75 = v64.isFree(l_FiatProduct_0.Price);
            v76 = if not v75 then l_props_0.Localization:getText("Purchase", "BuyForPrice", {
                price = v64.displayStringFromMoney(l_FiatProduct_0.PurchasePrice, l_props_0.Localization)
            }) else if v74 then l_props_0.Localization:getText("Common", "Install") else l_props_0.Localization:getText("Purchase", "Free");
        end;
    end;
    local v81 = nil;
    local l_previewPluginData_0 = v67.props.previewPluginData;
    if l_previewPluginData_0 then
        v81 = l_previewPluginData_0.versionId;
    end;
    local v83 = nil;
    local v84 = nil;
    local v85 = nil;
    v83 = v74 and l_StudioService_0:IsPluginInstalled(l_Id_0);
    local v86 = v73 == Enum.AssetType.FontFamily.Value;
    local v87 = v74 or v86;
    local l_v74_0 = v74;
    if l_v74_0 then
        l_v74_0 = false;
        if v81 == nil then
            l_v74_0 = l_Owned_0 == nil;
        end;
    end;
    v84 = l_v74_0;
    v85 = ((v74 and not v84) and v81) and l_StudioService_0:IsPluginUpToDate(l_Id_0, v81);
    l_v74_0 = l_props_0.PurchaseStatus;
    if not (not (not (l_v74_0 ~= v54.Success) or l_v74_0 == v54.Waiting) or v83) then
        v84 = true;
    end;
    local v89 = v87 and v67.state.showInstallationBar;
    v84 = v84 or v89;
    local v90 = true;
    if v73 ~= Enum.AssetType.Model.Value then
        v90 = v74 or v67.state.overrideEnableVoting;
    end;
    local v91 = v74 and not v83;
    local v92;
    if v74 then
        v92 = v84;
        if not v92 then
            v92 = v85;
            if v92 then
                goto label0;
            end;
        else
            goto label0;
        end;
    end;
    if v74 then
        v92 = true;
        if not (v81 ~= nil) then
            goto label0;
        end;
    end;
    v92 = not not v86 and l_Owned_0 or v87 and l_Owned_0 == nil;
    ::label0::;
    v92 = v92 and l_v74_0 ~= v54.Failed;
    local v93 = if v78 or v87 then v67.tryInstall else v67.tryInsert;
    local v94 = nil;
    local v95 = l_props_0.Localization:getText("Common", "Insert");
    if not v74 then
        if not v78 or l_Owned_0 then
            if v84 then
                v95 = if not v75 then l_props_0.Localization:getText("Purchase", "PendingPurchase") else l_props_0.Localization:getText("General", "Installing");
            end;
        else
            v95 = v76 or v95;
        end;
    elseif v81 == nil then
        v95 = l_props_0.Localization:getText("Common", "Loading");
    elseif not v84 then
        if v83 then
            v95 = if v85 then l_props_0.Localization:getText("Common", "Installed") else l_props_0.Localization:getText("Common", "Update");
        elseif l_Owned_0 then
            v95 = l_props_0.Localization:getText("Common", "Install");
        else
            v95 = v76 or v95;
            v94 = v77;
        end;
    else
        v95 = if v75 or l_Owned_0 then l_props_0.Localization:getText("General", "Installing") else l_props_0.Localization:getText("Purchase", "PendingPurchase");
    end;
    if v86 then
        v95 = if not l_Owned_0 then if v78 then v76 or v95 else l_props_0.Localization:getText("Common", "Install") else l_props_0.Localization:getText("Common", "Installed");
    end;
    return {
        InstallDisabled = v92,
        ActionBarText = v95,
        ShowInstallationBar = v89,
        ShowRobuxIcon = v94,
        HasRating = v90,
        IsUninstalledPlugin = v91,
        TryInsert = v93
    };
end;
v55.init = function(v96, v97)
    v96.assetPreviewScrollingRef = v4.createRef();
    v96.state = {
        maxPreviewWidth = 0,
        maxPreviewHeight = 0,
        showInstallationBar = false,
        openAssetPreviewStartTime = nil
    };
    v96.ClickDetectorRef = v4.createRef();
    v96.openAssetPreview = function()
        local l_assetData_1 = v96.props.assetData;
        v96.props.Modal.onAssetPreviewToggled(true);
        v96:setState({
            previewAssetData = l_assetData_1,
            openAssetPreviewStartTime = tick()
        });
        if v96.props.isPlaying then
            v96.props.pauseASound();
        end;
        v10.onAssetPreviewSelected(l_assetData_1.Asset.Id);
        local v99 = v96.props.getPageInfoAnalyticsContextInfo();
        if not v62() then
            v96.props.AssetAnalytics:get():logPreview(l_assetData_1, v99);
            return ;
        else
            v96.props.getBuyerStatus(v96.props.Network.networkInterface):andThen(function(v100)
                v96.props.AssetAnalytics:get():logPreview(l_assetData_1, v99, v100);
            end);
            return ;
        end;
    end;
    v96.closeAssetPreview = function(v101)
        v96.props.Modal.onAssetPreviewToggled(false);
        v96.props.onPreviewToggled(false);
        v10.onAssetPreviewEnded(v101.Asset.Id, (tick() - (v96.state.openAssetPreviewStartTime or 0)) * 1000);
        v96.props.setPurchaseStatus(v54.None);
        v96:setState({
            previewAssetData = v4.None,
            openAssetPreviewStartTime = v4.None
        });
    end;
    v96.onCloseButtonClicked = function()
        v96.closeAssetPreview(v96.props.assetData);
        v96.props.clearPreview();
    end;
    v96.onDetectorABSSizeChange = function()
        local l_current_0 = v96.ClickDetectorRef.current;
        if l_current_0 then
            local l_AbsoluteSize_0 = l_current_0.AbsoluteSize;
            v96:setState({
                maxPreviewWidth = l_AbsoluteSize_0.x - 64,
                maxPreviewHeight = l_AbsoluteSize_0.y - 64
            });
            return ;
        else
            return ;
        end;
    end;
    v96.tryCreateContextMenu = function(v104)
        local l_props_1 = v96.props;
        v96.props.tryCreateContextMenu(l_props_1.assetData, v104, l_props_1.Plugin:get(), l_props_1.tryOpenAssetConfig, (v96.props.getPageInfoAnalyticsContextInfo()));
    end;
    v96.tryInsert = function()
        return v96.props.tryInsert(v96.props.assetData, false, "PreviewClickInsertButton", v96.props.previewSwimlaneName, v96.props.previewPluginData and v96.props.previewPluginData.versionId);
    end;
    v96.takePlugin = function(_)
        v96.props.Network.networkInterface:postTakePlugin();
    end;
    if not v58() then
        v96.searchByCreator = function(v107, v108)
            v96.props.searchWithOptions(v96.props.Network.networkInterface, v96.props.Settings:get("Plugin"), (v16.join({
                Creator = v107
            }, v108)));
            v96.closeAssetPreview(v96.props.assetData);
        end;
    else
        v96.searchByCreator = function(v109, v110)
            local l_props_2 = v96.props;
            if l_props_2.onSearchByCreator then
                l_props_2.onSearchByCreator(v109, v110);
            end;
            v96.closeAssetPreview(l_props_2.assetData);
        end;
    end;
    local l_onVoteRequested_0 = v96.props.onVoteRequested;
    local l_onUnvoteRequested_0 = v96.props.onUnvoteRequested;
    v96.onVoteUpButtonActivated = function(v114, v115)
        local l_networkInterface_0 = v96.props.Network.networkInterface;
        if not v115.HasVoted or not v115.UserVote then
            l_onVoteRequested_0(l_networkInterface_0, v114, true);
            return ;
        else
            l_onUnvoteRequested_0(l_networkInterface_0, v114);
            return ;
        end;
    end;
    v96.onVoteDownButtonActivated = function(v117, v118)
        local l_networkInterface_1 = v96.props.Network.networkInterface;
        if not v118.HasVoted or v118.UserVote then
            l_onVoteRequested_0(l_networkInterface_1, v117, false);
            return ;
        else
            l_onUnvoteRequested_0(l_networkInterface_1, v117);
            return ;
        end;
    end;
    v96.tryInstall = function()
        local l_assetData_2 = v96.props.assetData;
        local l_Asset_1 = l_assetData_2.Asset;
        local _ = l_Asset_1.Id;
        local _ = l_Asset_1.Name;
        local l_TypeId_0 = l_Asset_1.TypeId;
        local l_Owned_1 = v96.props.Owned;
        local v126 = nil;
        v126 = l_TypeId_0 == Enum.AssetType.Plugin.Value or l_TypeId_0 == Enum.AssetType.FontFamily.Value;
        if v126 then
            v96:setState({
                showInstallationBar = true
            });
        end;
        local _ = v96.props.Network.networkInterface;
        local l_previewPluginData_1 = v96.props.previewPluginData;
        local _ = if not l_previewPluginData_1 then nil else l_previewPluginData_1.versionId;
        local l_categoryName_0 = v96.props.categoryName;
        local _ = v96.props.layoutMode;
        local v132 = nil;
        local v133 = nil;
        v133 = v96.props.previewSwimlaneName;
        local v134 = v53.shouldShowPrices(l_categoryName_0);
        local v135 = v53.getTabForCategoryName(l_categoryName_0);
        local v136 = not l_Owned_1;
        if v136 then
            if not v134 then
                v136 = v126;
                if not v136 then
                    goto label1;
                end;
            end;
            v136 = false;
            if v135 ~= v53.CREATIONS then
                v136 = v135 ~= v53.INVENTORY;
            end;
        end;
        ::label1::;
        v132 = v136;
        v136 = l_assetData_2.FiatProduct;
        if v136 then
            v132 = v132 and v136.Purchasable;
        end;
        if not v132 then
            v96.props.setPurchaseDialogVisibility(false);
            local _ = v96.props.getPageInfoAnalyticsContextInfo();
            local v138 = v96.tryInsert();
            if v138 then
                v96:setState({
                    overrideEnableVoting = true
                });
                if l_TypeId_0 == Enum.AssetType.Plugin.Value then
                    l_StudioService_0:UpdatePluginManagement();
                end;
            end;
            v96:setState({
                showInstallationBar = false
            });
            return v138;
        else
            v96.props.setPurchaseDialogVisibility(true);
            v96:setState({
                showInstallationBar = false
            });
            return false;
        end;
    end;
    v96.tryInstallWithProgress = function()
        return v96.showInstallationBarUntilCompleted(v96.tryInstall);
    end;
    v96.toggleShowInstallationBar = function(v139)
        v96:setState({
            showInstallationBar = v139
        });
    end;
    v96.showInstallationBarUntilCompleted = function(v140)
        local v141 = tick();
        v96.toggleShowInstallationBar(true);
        local v142 = v140();
        local v143 = tick() - v141;
        if v143 < 1 then
            wait(1 - v143);
        end;
        v96.toggleShowInstallationBar(false);
        return v142;
    end;
    v96.requestFavoriteCounts = function()
        v96.props.getFavoriteCounts(v96.props.Network.networkInterface, v96.props.assetId);
    end;
    v96.checkFavorited = function()
        v96.props.getFavorited(v96.props.Network.networkInterface, v14(), v96.props.assetId);
    end;
    v96.onFavoritedActivated = function(_)
        v96.props.toggleFavoriteStatus(v96.props.Network.networkInterface, v14(), v96.props.assetId, v96.props.favorited);
    end;
    v96.requestAssetContentAttributionInfo = function()
        local l_networkInterface_3 = v96.props.Network.networkInterface;
        local l_assetData_3 = v96.props.assetData;
        v96.props.getAssetContentAttributionInfo(l_networkInterface_3, if not not l_assetData_3 and l_assetData_3.Asset then l_assetData_3.Asset.CreatingUniverseId else nil);
    end;
    if not l_ToolboxAssetPreviewProtectAgainstNilAssetData_0 then
        v96.props.clearPurchaseFlow(v97.assetData.Asset.Id);
    elseif v96.props.assetData then
        v96.props.clearPurchaseFlow(v97.assetData.Asset.Id);
    end;
    v96.onClickReport = function()
        local l_assetData_4 = v96.props.assetData;
        local l_assetId_0 = v96.props.assetId;
        local l_TypeId_1 = l_assetData_4.Asset.TypeId;
        local v150 = v65(l_assetId_0, l_TypeId_1);
        v10.reportAssetClicked(l_assetId_0, l_TypeId_1);
        l_GuiService_0:OpenBrowserWindow(v150);
    end;
    v96.renderFooter = function(v151)
        return v4.createElement(v33, v6.Dictionary.join(v151, {
            AssetData = v96.props.assetData
        }));
    end;
    v96.renderAndGetSuggestions = function(v152)
        local l_props_3 = v96.props;
        local l_networkInterface_4 = l_props_3.Network.networkInterface;
        local l_Creator_0 = l_props_3.assetData.Creator;
        local l_IsVerifiedCreator_0 = l_props_3.assetData.Creator.IsVerifiedCreator;
        local v157 = v53.ASSET_PREVIEW_SUGGESTIONS_ENABLED_FOR_ASSET_TYPE[l_props_3.categoryName];
        if l_IsVerifiedCreator_0 and v157 then
            local function v160(v158, v159)
                if v152 then
                    v152();
                end;
                l_props_3.clearPurchaseFlow(l_props_3.assetData.Asset.Id);
                l_props_3.onAssetPreviewButtonClicked(v158, v159);
                v96.initialize(v158);
            end;
            local l_current_1 = v96.assetPreviewScrollingRef.current;
            return v50.Generator({
                categoryName = l_props_3.categoryName,
                initialPageSize = 30,
                networkInterface = l_networkInterface_4,
                queryParams = {
                    creatorTargetId = l_Creator_0.Id
                },
                render = function(v162)
                    return v4.createElement(v30, {
                        Assets = v162.assets,
                        CategoryName = l_props_3.categoryName,
                        CanInsertAsset = l_props_3.canInsertAsset,
                        CreatorName = l_Creator_0.Name,
                        IsLoading = v162.loading,
                        LogAssetImpression = l_props_3.logAssetImpression,
                        OnAssetPreviewButtonClicked = v160,
                        OnClickSeeAll = function()
                            v96.searchByCreator(if not v58() then l_Creator_0.Name else l_Creator_0, {
                                includeUnverifiedCreators = false,
                                searchTerm = ""
                            });
                        end,
                        OriginalAssetId = l_props_3.assetData.Asset.Id,
                        ParentAbsoluteSize = if not l_current_1 then nil else l_current_1.AbsoluteSize,
                        ParentAbsolutePosition = if not l_current_1 then nil else l_current_1.AbsolutePosition,
                        TryOpenAssetConfig = l_props_3.tryOpenAssetConfig
                    });
                end
            });
        else
            return ;
        end;
    end;
    if v60() then
        v96.getCodeUnderstandingSummary = function(v163)
            local l_props_4 = v96.props;
            if not l_props_4.assetData.Asset.HasScripts then
                return ;
            else
                return l_props_4.getCodeUnderstandingSummary(l_props_4.Network.networkInterface, v163);
            end;
        end;
    end;
    v96.initialize = function(v165)
        v96.openAssetPreview(v165);
        if v165.Asset then
            if v165.Asset.TypeId == Enum.AssetType.Plugin.Value then
                v96.props.getPluginInfo(v96.props.Network.networkInterface, v165.Asset.Id);
            elseif not (v165.Asset.TypeId == Enum.AssetType.FontFamily.Value) then
                v96.props.getPreviewInstance(v165.Asset.Id, v165.Asset.TypeId);
            end;
            v96.props.getOwnsAsset(v96.props.Network.networkInterface, v165.Asset.Id);
            if v61(v96.props.IXP) then
                v96.getCodeUnderstandingSummary(v165.Asset.Id);
            end;
        end;
        v96.requestFavoriteCounts();
        v96.checkFavorited();
        v96.requestAssetContentAttributionInfo();
    end;
    if v97.assetData.Asset.AssetMediaIds then
        v96.carouselImageIds = v6.List.join({
            v97.assetData.Asset.Id
        }, v97.assetData.Asset.AssetMediaIds);
        v96.assetMediaLogged = {};
        v96.LogAssetMediaImpression = function(v166, v167)
            local v168 = if not v167 then v8.ASSET_MEDIA_IMPRESSION_SOURCE.IMAGE_PREVIEW_ACTIVE else v8.ASSET_MEDIA_IMPRESSION_SOURCE.IMAGE_PREVIEW_PASSIVE;
            if v168 ~= v8.ASSET_MEDIA_IMPRESSION_SOURCE.IMAGE_PREVIEW_ACTIVE then
                if not v96.assetMediaLogged[v166] then
                    v96.assetMediaLogged[v166] = true;
                else
                    return ;
                end;
            end;
            v96.props.AssetAnalytics:get():logAssetMediaImpression(v96.props.assetData, v96.carouselImageIds[v166], v166, v96.props.searchId, v168, nil);
        end;
        v96.OnImageCarouselChange = function(v169, v170)
            v96.LogAssetMediaImpression(v169, v170);
        end;
        v96.OnSetImageCarouselImages = function(v171)
            v96.LogAssetMediaImpression(v171, true);
        end;
    end;
    v96.onClickDescriptionLink = function(v172)
        local l_props_5 = v96.props;
        v96.props.AssetAnalytics:get():onAssetDescriptionLinkClicked(l_props_5.assetData, l_props_5.getPageInfoAnalyticsContextInfo(), l_props_5.searchId, v172);
    end;
end;
v55.didMount = function(v174)
    v174.initialize(v174.props.assetData);
end;
v55.render = function(v175)
    local v176 = v175:createPurchaseFlow();
    local l_props_6 = v175.props;
    local l_state_0 = v175.state;
    local l_Localization_0 = l_props_6.Localization;
    local l_modalTarget_0 = l_props_6.Modal.modalTarget;
    local l_assetData_5 = l_props_6.assetData;
    local l_Owned_2 = l_props_6.Owned;
    local v183 = math.min(l_state_0.maxPreviewWidth, v8.ASSET_PREVIEW_MAX_WIDTH);
    local l_maxPreviewHeight_0 = l_state_0.maxPreviewHeight;
    local l_previewModel_0 = l_props_6.previewModel;
    local v186 = not v176.InstallDisabled and not v175.state.showInstallationBar;
    local function v187()
        v175.tryCreateContextMenu(v175.props.Localization);
    end;
    local v188 = nil;
    local v189 = nil;
    local v190 = nil;
    if not l_disableRatings_0() then
        v188 = {
            OnClick = v175.onFavoritedActivated,
            Count = tonumber(v175.props.favoriteCounts),
            IsFavorited = v175.props.favorited
        };
        if v175.props.voting then
            v190 = v176.IsUninstalledPlugin;
        end;
        v189 = v176.HasRating and v175.props.voting;
    else
        v188 = nil;
        v189 = nil;
    end;
    local v191 = nil;
    if l_assetData_5.Asset.AssetSubTypes then
        v191 = v51.contains(l_assetData_5.Asset.AssetSubTypes, v51.Package);
    end;
    local v192 = nil;
    local l_FiatProduct_1 = l_assetData_5.FiatProduct;
    if not (((not l_FiatProduct_1 or not l_FiatProduct_1.PurchasePrice) or v64.isFree(l_FiatProduct_1.PurchasePrice)) or l_Owned_2) then
        if l_props_6.buyerStatus == v52.CountryRestricted then
            v186 = false;
            v192 = l_Localization_0:getText("AssetPreview", "CountryRestrictedPurchase");
        elseif l_props_6.isExcessiveTransaction then
            v186 = false;
            v192 = l_props_6.Localization:getText("AssetPreview", "ExcessiveTransactionsSubText");
        end;
    end;
    local v194 = false;
    if type(l_assetData_5.Asset.AssetMediaIds) == "table" then
        v194 = next(l_assetData_5.Asset.AssetMediaIds) ~= nil;
    end;
    local l_createElement_0 = v4.createElement;
    local l_l_AssetPreview_0_0 = l_AssetPreview_0;
    local v198 = {
        Position = UDim2.new(0.5, 0, 0.5, 0),
        AnchorPoint = Vector2.new(0.5, 0.5),
        Size = UDim2.fromOffset(v183, l_maxPreviewHeight_0),
        ZIndex = 2,
        AssetData = l_assetData_5,
        AssetInstance = l_previewModel_0,
        OnClickContext = v187,
        ActionEnabled = v186,
        ShowRobuxIcon = v176.ShowRobuxIcon,
        ActionSubText = v192,
        ActionText = tostring(v176.ActionBarText),
        OnClickAction = v176.TryInsert,
        Favorites = v188,
        Voting = v189,
        IsUninstalledPlugin = v190,
        OnVoteUp = v175.onVoteUpButtonActivated,
        OnVoteDown = v175.onVoteDownButtonActivated,
        OnClickCreator = if not v58() then v175.searchByCreator else function(_)
            return v175.searchByCreator(l_assetData_5.Creator, nil);
        end,
        OnClickReport = v175.onClickReport,
        OnClickDescriptionLink = v175.onClickDescriptionLink,
        RenderSuggestions = v175.renderAndGetSuggestions,
        RenderFooter = v175.renderFooter
    };
    local l_Creator_1 = l_assetData_5.Creator;
    if l_Creator_1 then
        l_Creator_1 = false;
        if l_assetData_5.Creator.Id ~= 1 then
            l_Creator_1 = l_assetData_5.Creator.Id ~= v14();
        end;
    end;
    v198.CanFlagAsset = l_Creator_1;
    v198.IsPackage = v191;
    v198.ImageCarouselAutoAdvanceTimer = if not v194 then nil else v8.ASSET_PREVIEW_IMAGE_CAROUSEL_AUTO_ADVANCE_TIMER;
    v198.OnImageCarouselImageChanged = v175.OnImageCarouselChange;
    v198.ImageCarouselTransparencyThreshold = v8.IMAGE_CAROUSEL_ON_IMAGE_CHANGE_TRANSPARENCY_THRESHOLD;
    v198.OnSetImageCarouselImages = v175.OnSetImageCarouselImages;
    v198.UseImageCarousel = v194;
    v198.UsageContext = Enum.UsageContext.Preview;
    v198.ShouldMuteModelSounds = true;
    v198.ScrollingRef = v175.assetPreviewScrollingRef;
    v198.CreatingUniverseId = l_props_6.creatingUniverseId;
    v198.CreatingUniverseName = l_props_6.creatingUniverseName;
    v198.CreatingUniverseRootPlaceId = l_props_6.creatingUniverseRootPlaceId;
    v198.CodeSummary = if not v61(l_props_6.IXP) then nil else l_props_6.codeSummary;
    return l_modalTarget_0 and v4.createElement(v4.Portal, {
        target = l_modalTarget_0
    }, {
        ScreenClickDetector = v4.createElement("TextButton", {
            Size = UDim2.new(1, 0, 1, 0),
            BackgroundTransparency = 0.25,
            BackgroundColor3 = v66,
            ZIndex = 1,
            AutoButtonColor = false,
            [v4.Event.Activated] = v175.onCloseButtonClicked,
            [v4.Ref] = v175.ClickDetectorRef,
            [v4.Change.AbsoluteSize] = v175.onDetectorABSSizeChange
        }),
        AssetPreview = l_createElement_0(l_l_AssetPreview_0_0, v198)
    });
end;
return v5.UNSTABLE_connect2(function(v200, v201)
    v200 = v200 or {};
    local v202 = v200.assets or {};
    local l_previewModel_1 = v202.previewModel;
    local v204 = v200.pageInfo or {};
    local l_previewAssetId_0 = v202.previewAssetId;
    local v206 = v200.purchase or {};
    local l_status_0 = v206.status;
    local v208 = v206.cachedOwnedAssets[tostring(l_previewAssetId_0)];
    local l_robuxBalance_0 = v206.robuxBalance;
    local v210 = if not v62() then nil else v206.buyerStatus;
    local v211 = v200.favorite or {};
    local v212 = v211.assetIdToCountsMap or {};
    local v213 = v211.assetIdToFavoritedMap or {};
    local v214 = v200.voting or {};
    local l_assetData_6 = v201.assetData;
    local v216 = v206.excessiveTransactionUserIds or {};
    local v217 = if not not l_assetData_6 and l_assetData_6.Creator then l_assetData_6.Creator.Id else nil;
    return {
        assetData = l_assetData_6,
        buyerStatus = v210,
        categories = nil,
        categoryName = v204.categoryName or v53.DEFAULT.name,
        codeSummary = if not v60() then nil else v202.codeSummaryMap[tostring(l_previewAssetId_0)],
        isExcessiveTransaction = v217 and v216[v217],
        layoutMode = if not v57() then nil else v204.layoutMode,
        previewModel = l_previewModel_1 or nil,
        previewPluginData = v202.previewPluginData,
        previewSwimlaneName = v202.previewSwimlaneName,
        assetId = l_previewAssetId_0,
        favoriteCounts = v212[l_previewAssetId_0] or 0,
        favorited = v213[l_previewAssetId_0] or false,
        voting = v214[l_previewAssetId_0],
        Owned = v208,
        PurchaseStatus = l_status_0,
        searchId = v204.searchId,
        Balance = l_robuxBalance_0,
        creatingUniverseName = if not not v202.creatingUniverseName and v202.creatingUniverseName ~= v6.None then v202.creatingUniverseName else nil,
        creatingUniverseRootPlaceId = if not not v202.creatingUniverseRootPlaceId and v202.creatingUniverseRootPlaceId ~= v6.None then v202.creatingUniverseRootPlaceId else nil
    };
end, function(v218)
    return {
        getPreviewInstance = function(v219, v220)
            v218(v35(v219, v220));
        end,
        clearPreview = function()
            v218(v24());
        end,
        getCodeUnderstandingSummary = if not v60() then nil else function(v221, v222)
            v218(v36(v221, v222));
        end,
        getPluginInfo = function(v223, v224)
            v218(v37(v223, v224));
        end,
        searchWithOptions = function(v225, v226, v227)
            v218(v38(v225, v226, v227));
        end,
        onVoteRequested = function(v228, v229, v230)
            v218(v40(v228, v229, v230));
        end,
        onUnvoteRequested = function(v231, v232)
            v218(v39(v231, v232));
        end,
        onPreviewToggled = function(v233)
            v218(v27(v233));
        end,
        pauseASound = function()
            v218(v26());
        end,
        tryCreateContextMenu = function(v234, v235, v236, v237, v238)
            v218(v46(v234, v235, v236, v237, v238));
        end,
        getOwnsAsset = function(v239, v240)
            v218(v41(v239, v240));
        end,
        clearPurchaseFlow = function(v241)
            v218(v42(v241));
        end,
        getFavorited = function(v242, v243, v244)
            v218(v44(v242, v243, v244));
        end,
        getFavoriteCounts = function(v245, v246)
            v218(v43(v245, v246));
        end,
        toggleFavoriteStatus = function(v247, v248, v249, v250)
            v218(v45(v247, v248, v249, v250));
        end,
        getPageInfoAnalyticsContextInfo = function()
            return v218(v47());
        end,
        getBuyerStatus = if not v62() then nil else function(v251)
            return v218(v49(v251));
        end,
        getAssetContentAttributionInfo = function(v252, v253)
            return v218(v48(v252, v253));
        end,
        setPurchaseStatus = function(v254)
            return v218(v29(v254));
        end,
        setPurchaseDialogVisibility = function(v255)
            return v218(v28(v255));
        end
    };
end)((l_withContext_0({
    Settings = v19,
    AssetAnalytics = v11,
    IXP = if not v60() then nil else v20,
    NavigationContext = v21,
    Plugin = l_ContextServices_0.Plugin,
    Stylizer = l_ContextServices_0.Stylizer,
    Modal = v22,
    Network = v23,
    Localization = l_ContextServices_0.Localization
})(v55)));


local l_Parent_0 = script.Parent.Parent.Parent.Parent.Parent;
local v1 = require(l_Parent_0.Packages.Roact);
local v2 = require(l_Parent_0.Core.Util.Images);
local v3 = v1.PureComponent:extend("PopUpWrapperButton");
local v4 = UDim2.new(0, 32, 0, 32);
local v5 = UDim2.new(0, 28, 0, 28);
v3.init = function(v6, _)
    v6.state = {
        hovering = false
    };
    v6.mouseEnter = function()
        v6:setState({
            hovering = true
        });
    end;
    v6.mouseLeave = function()
        v6:setState({
            hovering = false
        });
    end;
end;
v3.render = function(v8)
    local l_props_0 = v8.props;
    return v1.createElement("ImageButton", {
        Position = l_props_0.position,
        AnchorPoint = Vector2.new(0.5, 0.5),
        Size = not not v8.state.hovering and (l_props_0.HoverSize or v4) or (l_props_0.Size or v5),
        Image = v2.MAGNIFIER_PH,
        ImageTransparency = not l_props_0.ShowIcon and 1 or 0,
        BackgroundTransparency = 1,
        LayoutOrder = l_props_0.LayoutOrder,
        [v1.Event.Activated] = l_props_0.onClick,
        [v1.Event.MouseEnter] = v8.mouseEnter,
        [v1.Event.MouseLeave] = v8.mouseLeave,
        ZIndex = l_props_0.ZIndex
    });
end;
return v3;


local l_GuiService_0 = game:GetService("GuiService");
local l_Parent_0 = script.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v3 = require(l_Packages_0.Roact);
local l_ContextServices_0 = require(l_Packages_0.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v6 = require(l_Parent_0.Core.Util.Analytics.Analytics);
local v7 = require(l_Parent_0.Core.Util.Constants);
local v8 = require(l_Parent_0.Core.Util.Images);
local v9 = require(l_Parent_0.Core.Util.ToolboxUtilities);
local v10 = require(l_Parent_0.Core.ContextServices.ModalContext);
local v11 = require(l_Parent_0.Core.Components.TooltipWrapper);
local v12 = v3.PureComponent:extend("VerifiedCreatorBadge");
v12.init = function(v13, v14)
    v13.state = {
        isHovered = false
    };
    v13.onMouseEnter = function()
        v13:setState({
            isHovered = true
        });
        v13.props.Modal.onTooltipTriggered(v14.assetId, v7.TOOLTIP_TYPE.HIGH_QUALITY_BADGE);
    end;
    v13.onMouseLeave = function()
        v13:setState({
            isHovered = false
        });
    end;
    v13.onActivated = function()
        v6.onIdVerificationIconClicked(v13.props.assetId);
        l_GuiService_0:OpenBrowserWindow(v9.getVerificationDocumentationUrl());
    end;
end;
v12.render = function(v15)
    local l_props_0 = v15.props;
    local l_assetId_0 = l_props_0.assetId;
    local l_onMouseEnter_0 = v15.onMouseEnter;
    local l_onMouseLeave_0 = v15.onMouseLeave;
    local l_isHovered_0 = v15.state.isHovered;
    return v3.createElement("ImageButton", {
        AnchorPoint = l_props_0.AnchorPoint,
        Position = l_props_0.Position,
        LayoutOrder = l_props_0.LayoutOrder,
        BackgroundTransparency = 1,
        Size = UDim2.fromOffset(13, 13),
        Image = v8.WARNING_ICON_SMALL,
        ImageColor3 = l_props_0.Stylizer.asset.icon.warningColor,
        ZIndex = 2,
        [v3.Event.Activated] = v15.onActivated,
        [v3.Event.MouseEnter] = l_onMouseEnter_0,
        [v3.Event.MouseLeave] = l_onMouseLeave_0
    }, {
        TooltipWrapper = l_isHovered_0 and v3.createElement(v11, {
            Text = l_props_0.Localization:getText("General", "UnverifiedCreatorBadgeTooltipText"),
            canShowCurrentTooltip = l_props_0.Modal.modalStatus:canShowCurrentTooltip(l_assetId_0, v7.TOOLTIP_TYPE.HIGH_QUALITY_BADGE),
            isHovered = l_isHovered_0
        })
    });
end;
return (l_withContext_0({
    Localization = l_ContextServices_0.Localization,
    Stylizer = l_ContextServices_0.Stylizer,
    Modal = v10
})(v12));


local l_Parent_0 = script.Parent.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Roact);
local v3 = require(l_Packages_0.Framework);
local v4 = require(l_Parent_0.Core.Util.Constants);
local l_Votes_0 = v3.UI.Votes;
local l_ContextServices_0 = require(l_Packages_0.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v8 = v2.PureComponent:extend("VoteBar");
v8.render = function(v9)
    local l_props_0 = v9.props;
    local _ = l_props_0.Stylizer;
    return v2.createElement("Frame", {
        BackgroundTransparency = 1,
        Size = UDim2.new(1, 0, 1, 0) or UDim2.new(1, 0, 0, v4.ASSET_VOTING_HEIGHT)
    }, {
        UIListLayout = v2.createElement("UIListLayout", {
            SortOrder = Enum.SortOrder.LayoutOrder,
            HorizontalAlignment = Enum.HorizontalAlignment.Left,
            FillDirection = Enum.FillDirection.Horizontal,
            Padding = UDim.new(0, v4.ASSET_INNER_PADDING)
        }),
        Votes = v2.createElement(l_Votes_0, {
            Voting = {
                UpVotes = l_props_0.voting.UpVotes,
                DownVotes = l_props_0.voting.DownVotes,
                VoteCount = l_props_0.voting.VoteCount,
                UpVotePercent = l_props_0.voting.UpVotePercent
            },
            TextSize = v4.ASSET_VOTE_COUNT_FONT_SIZE,
            AutomaticSize = Enum.AutomaticSize.X,
            Font = v4.FONT,
            Size = UDim2.new(0, 0, 0, 0),
            VerticalAlignment = Enum.VerticalAlignment.Center,
            Padding = v4.ASSET_VOTE_COUNT_HORIZONTAL_PADDING,
            IncludeVoteCount = true,
            VoteCountHeight = v4.ASSET_VOTE_COUNT_HEIGHT
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v8));


local l_Parent_0 = script.Parent.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Roact);
local v3 = require(l_Parent_0.Core.Util.Constants);
local v4 = require(l_Parent_0.Core.Util.Images);
local l_ContextServices_0 = require(l_Packages_0.Framework).ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local v7 = v2.PureComponent:extend("VoteButton");
v7.init = function(v8, _)
    v8.state = {
        isHovered = false,
        voteDownButtonHovered = false
    };
    v8.onMouseEntered = function(_, _, _)
        v8:setState({
            isHovered = true
        });
    end;
    v8.onMouseLeft = function(_, _, _)
        v8:setState({
            isHovered = false
        });
    end;
end;
v7.render = function(v16)
    local l_props_0 = v16.props;
    local l_state_0 = v16.state;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local _ = l_Stylizer_0.asset.voting;
    local l_hasVoted_0 = l_props_0.hasVoted;
    local l_userVote_0 = l_props_0.userVote;
    local l_isVoteUp_0 = l_props_0.isVoteUp;
    if not l_isVoteUp_0 then
        l_userVote_0 = not l_userVote_0;
    end;
    local l_isHovered_0 = l_state_0.isHovered;
    local l_onClicked_0 = l_props_0.onClicked;
    local l_voting_1 = l_Stylizer_0.asset.voting;
    local l_votingButtonImage_0 = l_voting_1.votingButtonImage;
    local l_voteThumb_0 = l_voting_1.voteThumb;
    local v29 = 0;
    local v30 = UDim2.new(1, -2, 1, -2);
    if not (not l_hasVoted_0 or not l_userVote_0) then
        if not l_isVoteUp_0 then
            l_voteThumb_0 = l_voting_1.votedDownThumb;
            l_votingButtonImage_0 = v4.THUMB_UP_RED;
        else
            l_voteThumb_0 = l_voting_1.votedUpThumb;
            l_votingButtonImage_0 = v4.THUMB_UP_GREEN;
        end;
    end;
    if not l_isVoteUp_0 then
        v29 = 180;
    end;
    return v2.createElement("ImageButton", {
        BackgroundTransparency = 1,
        LayoutOrder = not l_isVoteUp_0 and 2 or 1,
        Size = UDim2.new(0, v3.THUMB_ICON_WIDTH, 0, v3.THUMB_ICON_HEIGHT),
        AutoButtonColor = false,
        [v2.Event.MouseEnter] = v16.onMouseEntered,
        [v2.Event.MouseLeave] = v16.onMouseLeft,
        [v2.Event.MouseButton1Click] = l_onClicked_0
    }, {
        Thumb = v2.createElement("ImageLabel", {
            AnchorPoint = Vector2.new(0.5, 0.5),
            Position = UDim2.new(0.5, 0, 0.5, 0),
            Size = v30,
            Rotation = v29,
            BackgroundTransparency = 1,
            Image = l_votingButtonImage_0,
            ImageTransparency = not l_isHovered_0 and 0.2 or 0
        })
    });
end;
return (l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer
})(v7));


local l_Parent_0 = script.Parent.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Roact);
local v3 = require(l_Packages_0.RoactRodux);
local v4 = require(l_Packages_0.Framework);
local l_ContextServices_0 = v4.ContextServices;
local l_withContext_0 = l_ContextServices_0.withContext;
local l_LOCALIZATION_PROJECT_NAME_0 = v4.Resources.LOCALIZATION_PROJECT_NAME;
local v8 = require(l_Parent_0.Core.Util.Constants);
local v9 = require(l_Parent_0.Core.Components.Asset.Voting.VoteButton);
local v10 = require(l_Parent_0.Core.Networking.Requests.PostUnvoteRequest);
local v11 = require(l_Parent_0.Core.Networking.Requests.PostVoteRequest);
local v12 = require(l_Parent_0.Core.ContextServices.NetworkContext);
local v13 = v2.PureComponent:extend("VoteButtons");
v13.init = function(v14, _)
    local l_assetId_0 = v14.props.assetId;
    local l_onVoteRequested_0 = v14.props.onVoteRequested;
    local l_onUnvoteRequested_0 = v14.props.onUnvoteRequested;
    v14.onVoteUpClicked = function(_, _, _)
        local l_networkInterface_0 = v14.props.Network.networkInterface;
        local l_voting_0 = v14.props.voting;
        if not l_voting_0.HasVoted or not l_voting_0.UserVote then
            l_onVoteRequested_0(l_networkInterface_0, l_assetId_0, true);
            return ;
        else
            l_onUnvoteRequested_0(l_networkInterface_0, l_assetId_0);
            return ;
        end;
    end;
    v14.onVoteDownClicked = function(_, _, _)
        local l_networkInterface_1 = v14.props.Network.networkInterface;
        local l_voting_1 = v14.props.voting;
        if not l_voting_1.HasVoted or l_voting_1.UserVote then
            l_onVoteRequested_0(l_networkInterface_1, l_assetId_0, false);
            return ;
        else
            l_onUnvoteRequested_0(l_networkInterface_1, l_assetId_0);
            return ;
        end;
    end;
end;
v13.render = function(v29)
    local l_props_0 = v29.props;
    local l_Stylizer_0 = l_props_0.Stylizer;
    local l_voting_2 = l_Stylizer_0.asset.voting;
    local l_Localization_0 = l_props_0.Localization;
    local l_showBackgroundBox_0 = l_props_0.showBackgroundBox;
    return v2.createElement("Frame", {
        BackgroundTransparency = not l_showBackgroundBox_0 and 1 or 0.95,
        BackgroundColor3 = if not l_showBackgroundBox_0 then nil else l_voting_2.votingButtonsBackgroundBoxColor,
        LayoutOrder = nil,
        Size = UDim2.new(1, 0, 0, v8.ASSET_VOTING_BUTTONS_HEIGHT)
    }, {
        UIListLayout = v2.createElement("UIListLayout", {
            Padding = UDim.new(0, v8.ASSET_VOTE_BUTTONS_HORIZONTAL_PADDING),
            SortOrder = Enum.SortOrder.LayoutOrder,
            FillDirection = Enum.FillDirection.Horizontal,
            HorizontalAlignment = Enum.HorizontalAlignment.Center,
            VerticalAlignment = Enum.VerticalAlignment.Center
        }),
        UICorner = if not l_showBackgroundBox_0 then nil else v2.createElement("UICorner", {
            CornerRadius = UDim.new(0, v8.ASSET_VOTING_BUTTONS_BACKGROUND_BOX_CORNER_RADIUS)
        }),
        RateText = v2.createElement("TextLabel", {
            AutomaticSize = Enum.AutomaticSize.XY,
            LayoutOrder = 0,
            Text = l_Localization_0:getProjectText(l_LOCALIZATION_PROJECT_NAME_0, "VoteButons", "Rate"),
            BackgroundTransparency = 1,
            TextXAlignment = Enum.TextXAlignment.Left,
            Font = v8.FONT,
            TextSize = v8.FONT_SIZE_SMALL,
            TextColor3 = l_Stylizer_0.asset.voting.rateTextColor
        }, {
            UIPadding = v2.createElement("UIPadding", {
                PaddingRight = UDim.new(0, v8.ASSET_VOTE_BUTTONS_TEXT_PADDING)
            })
        }),
        VoteUpButton = v2.createElement(v9, {
            isVoteUp = true,
            hasVoted = l_props_0.voting.HasVoted,
            userVote = l_props_0.voting.UserVote,
            onClicked = v29.onVoteUpClicked
        }),
        VoteDownButton = v2.createElement(v9, {
            isVoteUp = false,
            hasVoted = l_props_0.voting.HasVoted,
            userVote = l_props_0.voting.UserVote,
            onClicked = v29.onVoteDownClicked
        })
    });
end;
return v3.connect(nil, function(v35)
    return {
        onVoteRequested = function(v36, v37, v38)
            v35(v11(v36, v37, v38));
        end,
        onUnvoteRequested = function(v39, v40)
            v35(v10(v39, v40));
        end
    };
end)((l_withContext_0({
    Stylizer = l_ContextServices_0.Stylizer,
    Localization = l_ContextServices_0.Localization,
    Network = v12
})(v13)));


local l_Parent_0 = script.Parent.Parent.Parent.Parent.Parent;
local l_Packages_0 = l_Parent_0.Packages;
local v2 = require(l_Packages_0.Framework);
local v3 = require(l_Packages_0.Roact);
local v4 = require(l_Parent_0.Core.Util.Constants);
local v5 = require(l_Parent_0.Core.Components.Asset.Voting.VoteBar);
local v6 = require(l_Parent_0.Core.Components.Asset.Voting.VoteButtons);
local l_LoadingIndicator_0 = v2.UI.LoadingIndicator;
return function(v8)
    local v9 = v8.LayoutOrder or 0;
    local l_ShowVotes_0 = v8.voting.ShowVotes;
    local v11 = v8.voting.showVoteButtons or false;
    local l_VoteLoading_0 = v8.voting.VoteLoading;
    local v13 = {};
    if l_ShowVotes_0 then
        if not l_VoteLoading_0 then
            if not v11 then
                v13.VoteBar = v3.createElement(v5, v8);
            else
                v13.VoteButtons = v3.createElement(v6, v8);
            end;
        else
            v13.VoteLoading = v3.createElement(l_LoadingIndicator_0, {
                Size = UDim2.new(0.333, 0, 0.333, 0)
            });
            v13.UIListLayout = v3.createElement("UIListLayout", {
                HorizontalAlignment = Enum.HorizontalAlignment.Center,
                VerticalAlignment = Enum.VerticalAlignment.Center
            });
        end;
    end;
    return v3.createElement("Frame", {
        BackgroundTransparency = 1,
        LayoutOrder = v9,
        Size = UDim2.new(1, 0, 0, if not v11 then v4.ASSET_VOTE_COUNT_HEIGHT else v4.ASSET_VOTING_BUTTONS_HEIGHT)
    }, v13);
end;