/**** (c) Valve Corporation. Use is governed by the terms of the Steam Subscriber Agreement http://store.steampowered.com/subscriber_agreement/.
 ****/
(self.webpackChunkappmgmt_storeadmin =
  self.webpackChunkappmgmt_storeadmin || []).push([
  [2012],
  {
    33645: (e) => {
      e.exports = {
        Bold: "_3cln317VYhwhE1fSeMCG48",
        Italic: "_3TPGDj4kc0QGKvO8FJmGz8",
        Paragraph: "_3lnqGBzYap-Z2T81XBiBUU",
        Header1: "_2LYsFAwy8wdRJQTNJOUcsT",
        Header2: "_6-VR2WCBCDupCcUN5INQM",
        Header3: "_1sGnlGwCeaGUp63h4Lx-pU",
        Header4: "_3VHY5vmO07MFpoOgTB9eOi",
        Header5: "_1Vk-9-C_y-lBA5ucPl6t8X",
        CenterSpan: "zCnp-VELUMybbfxOD-ze9",
        SmallText: "WBzrd438Bd8Z3J-j_iglW",
        Underline: "GrhFWtBdrSZP611s1UqqT",
        Strike: "_3pK7sh9FYdigMXxcUVI4DY",
        Spoiler: "_3kRr4bh8twnlt_7wcEFZr3",
        Revealed: "_3g1-8c9NBcNDwW4-6x1pM6",
        SpoilerText: "_3r66KOH_Vckmfps3XUOVrY",
        DisabledMouseEvents: "_1O62-3Y03GsnA0709QyJ_O",
        BlockQuote: "_3MQ0Cuf_h-nZ81xIubg8rh",
        QuoteAuthor: "_1MzmaZcQPMRfrTHs3k0fIZ",
        PullQuote: "_2kA0eAmv8ifh0zphoq4ntM",
        Code: "_2ODaX8lO7DKLKke76c2Wya",
        CodeBlock: "_1I3OP84ayrCIMuBrCrkosi",
        List: "_3Y-LRoi5aeZ9-3ujWjXuG3",
        OrderedList: "DojPxwyYpx3hwuPIaJPCq",
        ListItem: "_1iXxYKOlzzXiVr02E7n2Fe",
        HR: "-xPK0REpludHjRG8xQfih",
        Table: "_2CAsiFd9UHbUOqzd0e7ioe",
        NoBorder: "_1rO4D9vLxJRWz9sW4-ahSY",
        TableRow: "_3FJk0y6E6I8nSYfCIqGP8",
        TableCell: "_3rLIt0O8F7iG6B2RmC3cYa",
        EqualCells: "_1CtoyG6UPAlYp7PCGLXx8L",
        ExpandSectionBlock: "_2cmZMzZlRrszDBF97Di0cD",
        ExpandSectionHeader: "uAvfe31kBh5TZrse069d1",
        EmbedArrow: "_3tVf4GSoWxEOZrxL_PQ4iA",
        ExpandSectionBody: "_33CTl_a7XYxFIng-fm4A5K",
        ExpandSection_WithTitle: "_1dfVJUq9KmDOuhyOZ7lcXv",
        LinkButton: "_3TN0uESBGJ-kUDPWWX2YWz",
        Image: "_3K0NuxYUYncdQ-cNK7udMn",
        PreservedUnsupportedTag: "_3YMzBRWJTOo7eai1uFGV7i",
        Tag: "_3SEDw4GZynd3ZmTQWlyOcS",
        CalendarEventContainer: "S-ElBHomDkV0L3K4XChxt",
        CalendarEventLink: "_106tp5gLWBvoekGEC8HXQ",
      };
    },
    54599: (e) => {
      e.exports = {
        GotSteamDialog: "_2Qusm1gosCAtAqLKo5hioQ",
        DownloadSteamUrl: "_10lP7BWsYbhm_AclLUpjRi",
        GameName: "_1_uzwF-1oILlCEkcaApC-n",
        Buttons: "_2_Obm3_emYUZKMgT1bdKgG",
        Button: "_2nVaF4foORFEq78yZ3A7yA",
        LeftButton: "_3WYyumzIcbu_0Zysgbr4_h",
        AnswerText: "hCqVo4reICITJSgSg8g6t",
        ActionText: "_2s5NsgqEDdI6nKvz-9YFa4",
        Footer: "_3OKQsxzgQZkt2GtKz9679g",
        Logo: "_2AEA_k1tEcjAtTL7-Bnitk",
      };
    },
    73662: (e) => {
      e.exports = {
        DynamicLinkBox: "_1IGURymjmwZOxJLS-9BWKA",
        DynamicLink_Preview: "_3ZK9RP26kmOzqRdQKxWxsM",
        DynamicLink_Author: "_3z0n0rpIPJRdV1QY5n0KaR",
        DynamicLink_Description: "eMdGA7SU6zikUSu6rf7Pr",
        DynamicLink_Content: "_2FhVXotuJg4O0NN4qA07vU",
        DynamicLink_Name: "_1R7Ngck7T0RkTPGRUaq6Gr",
        DynamicLink_YoutubeViews: "_3clz2a9swd9PcLG0xSDhHt",
        Dynamiclink_Content: "_1EYgVQdGSl6VonVuGGfDuy",
        DynamicLink_URL: "_3otyzgmxRyTsMj5ALOf07p",
        DynamicLink_AuthorName: "_2DML9COLsaSXjOzYcbtFXP",
        DynamicLink_Date: "_281DhmZR9c9ZDwpNqPc5_3",
        PreviewYouTubeVideo: "rUASsQgg0rvqoACIDRygZ",
        sizeThumb: "_3dy3KtMG10uNhU2HRfwx3A",
        sizeFull: "_14CxWorQ1RNkZvdhXYWAh-",
        PlaceholderImg: "LILNdsmSgG52f0MP1f2O3",
        floatLeft: "_2OWxr5tZIjB4gTfA3vE2Gc",
        floatRight: "om0Rs75g2ScLGnDWC76IQ",
      };
    },
    82080: (e) => {
      e.exports = {
        AddToCartAnchorCtn: "_2ZqO4e00c6-Fr4hJvTJsAu",
        Action: "yoe6d_43t3I6-mjbZGkLs",
        ActionOutOfStock: "_3XwnF5hpyOwvxFT_v7PMhS",
      };
    },
    34542: (e) => {
      e.exports = {
        Ctn: "ZXluexXJ1Y_muqBcBgGU-",
        CtnRegistered: "_3PeTrgTLLyRMIUb_pRn4rO",
        SessionTitle: "_3vGq3WcmmGaYbbqYkD9Ysp",
        SessionDesc: "_24r8E1kKzw_9iIVhmvEZ3T",
        SessionOptions: "_3KAHxFNUEscoxtvBzwWKvs",
        SessionColumnCtn: "iUmtJvs3v_bmv-tu43tpL",
        SessionInstance: "_1igTM-TlnNkIhWxl95pTyB",
        Button: "_2qgSQSN_hv-UncznBRb42v",
        Title: "_3iF42Uos8JELw32j386Kco",
        TimeFrame: "_3HLk01gOqM10DYThBCLuUx",
        Max: "_1-LTOHwZqSK67eUyq4qscx",
        InstanceDivider: "_2IUfDPL02-oni7NXCV_ipu",
        Day: "_2Zkbwdhs4WPVI1ZyUHtHUG",
        Time: "_8oQG_Wbl2-Eamq1WKMAoo",
        Registering: "td3x9QaINc75mi2ppkGoF",
        Registered: "_1D1F4nOnNKanKGRqRk3pWr",
        Unregistering: "twKyIz0VYgtl76vlWI0Xn",
        CompleteRegistrationCtn: "_6ykmNnOs_SfkGOYurJogH",
        Visible: "_3WTs5L7ce_Du4_KNac_sXd",
        "confirm-panel-intro": "_1zMMdC3loRunAeI72QvaDX",
      };
    },
    56524: (e) => {
      e.exports = {
        DevSummaryCtn: "_1k0S-tUF_ENycLJ7PWqbzS",
        LargeFormat: "_1090TwnnSh07Rya_5ss37E",
        CreatorDescCtn: "_3nKoQbWM1xYxsCfDoImGQ-",
        SmallFormat: "_18tLexJfL4tGNabZ9Ywvlm",
        DevSummaryWidgetCtn: "A2B2VZqisd8LEU7zknWqk",
        DevSummaryBackground: "_1TsqAyLSPMv7JrgVI6Jpnv",
        DevSummaryContent: "_23xa4AVp7kYtbslOOB8xly",
        Avatar: "_3JepbxeEa0I4l8TnG9DeT5",
        CreatorTitleCtn: "_2T8Ub04W0G2L6_3692y23L",
        CreatorNameName: "_8196lUGpYeVntSAwJq-64",
        CreatorTagline: "NX5WeT2qHbZGaVykMxMA2",
        Title: "_37vyVYzsOKNDlPWnQ5zcMF",
        Followers: "_2ZpFi_vScMetinFMtGp2WE",
        SocialFollowersCtn: "BT3Bjo-dSXZV11Cqy_Awo",
        FollowBtnCtn: "_2artmqqQS2Rl8YMsi1nV-U",
        FollowButton: "_1HwWXjF06mJ9sG_9KXlgA-",
        FollowBtnText: "_1a5djsChaeoZViyFSGNom5",
        SocialContainer: "_1o1Ds-OdAZcjo18bw9QiEH",
        SocialImg: "_2v_K1-p6KHigjcjV3HlHsV",
        SocialLink: "_3eCVbMRawBIqtu1HpE7qJR",
        CuratorHoverCtn: "_30j_Rriv37jV9sEvTdi8Kw",
        AvatarLink: "_1N0rYLgFmHTfQng24QRoEh",
        MembersListLink: "_3DO0NUX-db2kVZWScbJetR",
      };
    },
    99559: (e) => {
      e.exports = {
        DemoButton: "_3euSFGmYfTklNAvMisNvU6",
        DisabledButton: "_3Fsf5iKYd0GPYaKswndPl5",
      };
    },
    6878: (e) => {
      e.exports = {
        Header1: "SPYFj8pCLpNmnuQJEDobC",
        Header2: "QuKtTJ4LCPUlQeWYfLNyX",
        Header3: "_3s7cUqglDds9wzcWb7OLz6",
        Link: "_29bMZB6BOQfTQ_3za-w60I",
        LinkHost: "_16eO9LHnJuheylkB3Fdrpn",
        LinkButton: "_2HnDgHQT_3ehcs4WgskKG5",
        UnorderedList: "_2FoSxA1yCqpvxdOJnu8N8Z",
        OrderedList: "vV4IwOV-RuzelptiRQ_ZS",
        StoreWidget: "_36Y-loIMvxDKY9RIVxecCp",
        MedalTVWidget: "_1j2vixiqbbe8GqxA-cmlhA",
        LoyaltyRewardCtn: "_14p7R6qC1Kkyg4Qal1UJZu",
        SaleSectionCtn: "_39HWXhhjsbML7K9sme9ItV",
        SaleTextCtn: "_2Tqq0UDtuHw6otaE2Ww46g",
        ReminderCtn: "_25AZkxZYa3ROp8PHchCq-k",
        BlockQuote: "_2cY7bYMGmnuPPhM3aMQMfa",
        SocialLink: "_2LAnc-M7XILk5D72Qy7V6q",
        SocialIcon: "dDjYNUHT-jcb_B0VGK6CP",
        LocalizeBlock: "_1oBceu_yGnJHhqsA8fmA7P",
        CheckMark: "_24AtTon5otxGQGBY3P6ATR",
        ScreenshotCarousel: "_3uA0hv9La9Do6XtRycM0RX",
      };
    },
    1078: (e) => {
      e.exports = {
        FlexColumnContainer: "_15ufNax9QUSW3N7J3t5TmY",
        FullStartTime: "_1YLHWZHuAxRYOyv0nq0a3Z",
        ReminderDialog: "_3YUEYUcuh0PTxYsV6Fecqq",
        ReminderOptions: "_1Tp8K4gynWBOBpC9tS_xXV",
        ReminderBackground: "TNf9_B9OYDQXSleTS1gAS",
        ReminderExpandsLeft: "_38Xly-p-GTyBu1lVv1KF79",
        ReminderOption: "_26nnhy-kEQVG1EJvwt-YOG",
        Unverified: "_1dcmAZnqCMpEs3PXIajJIN",
        CheckboxWrapper: "_1xuKEdr0rNMBRK_vYraObm",
        ReminderCheckBox: "vPo2jxLA9iAVrt49Ic3c1",
        IconMode: "_1YjsRp8XbwoXVWYYvWD7iv",
        RemindBell: "_3-_M2IUSKHovaZaejfEH3E",
        RemindCheck: "_2qaPrk1hI1cvMDPYnXO-kj",
        ReminderDefault: "_19p2Qdr48bduJICtjBoXVv",
        TextMode: "_553rCUt4qxX8_S5jBNMrv",
        ReminderCheck: "_3fMhCIg2SQlEWyw9rHKGCe",
        ReminderOpennedOptions: "vBuhkIZJzVjB-gDKqhho8",
        ReminderOptionsHeader: "_2oOZCpUHJOjdt7D5zkx0Ed",
        ReminderCalendarOptions: "VO6FStOkQjIXr-aZW1JBx",
        ReminderSettings: "_2Pn59J0keCBE-RnAuaUUVx",
        ReminderNotes: "_3qE0wUvpzn1HTPrT3R_wOv",
        RpcThrobber: "_3F3aByA4Tw1mRbNiiVtXP-",
      };
    },
    83284: (e) => {
      e.exports = {
        "duration-app-launch": "800ms",
        HoverContentTransition: "_3-pnCQRItoLzipK50ezpB4",
        Opening: "_3A24vhGb2SY4MDBId85Ggr",
        Open: "_1rWYaL3EE7Odir0uM1R9SH",
        ItemHoverSource: "_2ByoTNxZVuR0nzg_XXWXBV",
        Selectable: "HvshcO0_xlagk-lVVN9D0",
        GameHoverCapsuleCtn: "_2jsr3PEq2iin7lU8wSO8X9",
        UseHidingBottomHalf: "_5hPHCcezVQnBs7fofA7py",
        TrailerAnchorStoreLink: "OxANHUmAP0XzkWgufeWFg",
        TrailerCtn: "_1I27KVlWtKyGn2CPX9N1E1",
        FullDivImage: "_2jpCsyBPApIKbMMORoLk5B",
        Transparent: "AZ9GLyMnk0Pdq3iOFo_0p",
        Midline: "Xwe3c0LwQGRjmLBfrpFu6",
        Price: "_2Eh6GLqUSZ5Vd_8eoYz9Z3",
        CapsuleImageAnchorPoint: "_1OMasH6HMfWdJfC-XkZlHF",
        CapsuleImageCtn: "wm-2TrfQqrfbj8zWlFAHN",
        WithCornerShine: "_2kRKAxuWdNiBTrvygyi_uH",
        DemoButton: "_2V6ciljF89DBfAppW4Ftr4",
        WishlistButton: "_3notzMjxQtogi11XHZMYXI",
        WishlistButtonText: "VI5mZtnq0CL7fw_2mxhfm",
        WishlistLoadingText: "_7-s8T3gdbCrmXoLzhnC5p",
        WishlistButtonNotTop: "_3VcyYP_egkOaX_rJ1e_SQk",
        BottomShelf: "oAqlZTgPU37Nb8gBT5eAM",
        BottomShelfOffScreen: "_36zpRzyxmtd8eBgf7p9Ewi",
        TextContent: "_2VvFLg2irh9gPAhhxE4Kpo",
        GameTitle: "_405wj1BgSyf8l06uMjNBV",
        TagRow: "_2SWQMqXxu7mJMIuNemYJq8",
        Tags: "fTGViHKZf0UCl6es5T4KP",
        Tag: "_1wO-t97gvSClMW2PGtV5-w",
        PlatformDisplay: "_2UG4_YQb5mXCshA1U2MgpJ",
        ReviewsAndRelease: "_1HFUCM8Np78V7DkzDIZp6z",
        ReleaseDate: "_35ByaFjy9tZD1dLFAeHccQ",
        ReleasePrefix: "_2ZKEXfGYdeKVoScjDnq814",
        ReviewScore: "_3qvppfM_u0yn2jrpoUo8RM",
        ReviewScoreHeader: "_2t-0jlGgIN_VM7R47pRKfF",
        ReviewScoreCount: "_1wXL_MfRpdKQ3wZiNP5lrH",
        ReviewScoreValue: "_3ZWs0kB-1tuqQtie9KK-E7",
        ReviewScoreDivider: "RjCBtV3NpIbC6XUT9ioNK",
        ReviewScoreNone: "_3TKyM7kpo9how33Pgw47_Q",
        ReviewScoreLow: "_3nU5IeDnKKFQIHt8jU2TmG",
        ReviewScoreMixed: "_11Q2_X4_JfqoRwRqmzQakb",
        ReviewScoreHigh: "_3wXHCs-9DWCgZO2nS1_Ib2",
        ReviewScorePercentage: "_38dPaeqXJsBbnlLDtNr-of",
        ReviewScoreLabel: "_2nuoOi5kC2aUI12z85PneA",
        GameHoverCreatorFollowButtonCtn: "_1mQuBR72WbbtI6QBCoYcYG",
      };
    },
    52393: (e) => {
      e.exports = {
        "duration-app-launch": "800ms",
        SaleSection: "_1cOoCFwafBlSkwllIMf3XM",
        CarouselDisplay: "mntHD0WiARnsfz_kMYssq",
        SaleSectionCtn: "i2PTzRNXOK1OXvXb9-wzd",
        SaleHeaderContainer: "W4mvnnQ0uYKKoCfVm8QgX",
        SaleSectionTabs: "_1FPIVJTLsw1nvAN24BGGKg",
        SaleViewAll: "_1bsBzvGKJui5_QaWVRBFDo",
        SaleSectionLoginPrompt: "_2-dSBTJ6PQzCGvK48gjCCf",
        LoginButton: "_3h6sHYHa8EFm2_xoGiVAnh",
        SaleOverlayCtn: "_3GTIcdmGdFdIHRLd5vgEDq",
        SaleOverlay: "_1sZo8rydBtEGprct3pN_1a",
        CarouselCapsuleBordered: "_31OAy5ksRg6RGhCGnDqRr3",
        CarouselCapsuleAnimated: "_3V1O5NH39Eec7m68CKLMDQ",
        AppSummaryWidgetCtn: "_2H8BmYvTdIYKMgG-XiCkc-",
        CarouselSalePageCapsule: "_3r4Ny9tQdQZc50XDM5B2q2",
        SaleBroadcastCtn: "_1SFMhugeWIHJIHrHl6ZQvD",
        SaleOuterContainer: "_150kddWk8JgylTvh_eC20b",
        CustomStyle_together: "_1lAygDKkL4NolLsYyh0b_x",
        SalePageLogoSet: "JxIGHUxdTjFyWl1KO_tkn",
        SaleNewSizing: "_1v-BVc2xZoBmJV2CPwNpq0",
        SaleBackground: "_2N8SepiLeBUusG1vbHCgiY",
        SaleSectionTitleCtn: "bE2EA4JB9SDa1PZ7HSFL-",
        SaleSectionSubtext: "_17Fnl-wNZIrLjca5rOwwlT",
        SaleSectionContainer: "W9_WAYXgEe-t-7aqqC4Jp",
        vr_supported: "_1BDSJfdkuBN1tCLPLLopYW",
        vr_required: "_1P__hyqsgd049GH0Bn007_",
        preview_placeholder_section: "_3QLsjvek1OeH0pVbeOTBJj",
        LinkCapsule: "_2zVSaxkr0mGLlJ4ivF37dx",
        fullscreen_bg: "j2ykTCJIixZLTJZbDR4Tp",
        fullscreen_bg_video: "_3BU-yduiJJKNkd7_HrsZOY",
        SalePageBroadcastContextHover: "hbVdlTqhylKeYY8mtvLqP",
        AlbumCoverImage: "_2JfUA1GR2GBllJws5Gspq-",
        AlbumTitle: "keaMw-O2oHvRxLDK6gqEG",
        DesktopTabs: "_2utXvAVvZJb3Wlt5jGxCs",
        SaleSectionTabsTab: "_3BgHmwox82MCNAE15H28dc",
        SaleSectionTabContainer: "_1Svj0QB6CvcmNGjDP2woOu",
        SaleSectionTabsRow: "_30oGTu0O4sTp8P_fq0usKF",
        SaleTab: "gc-rqvG6ITYgP26WGwJZz",
        SaleTabLabel: "_2mYMQE06Py3h0CfEokpNiM",
        SaleSectionTabListContainer: "_2VZtqrDRVSIicZZHPUY9SY",
        MobileTabSelector: "_2fm5TVukvQanOpOSUahWeX",
        Visible: "_2Jmo5M2wPydPpQXUh8BQt3",
        MobileTabSelectorButton: "_1t4-3uyyq_jmSjRl6tRVef",
        MobileTabSelectorShortcut: "_1P5tcXycY4v5y9lSKeW2bG",
        MobileTabSelectorDropDown: "_3KO7Yj0s2ECNBrnZ3x6jIy",
        MobileTabSelectorOption: "GiTJlPmmuQyCr-OSCN08c",
        TabContentsContainer: "_2xJbuKOjgnmynp-q7384DI",
        HorizontalScrollInDragForceCursor: "nemO6I3-P1dWDt4lymNBD",
        SaleBroadcastSection: "_1u0IZcPxb5nhSDdfCHHBY9",
        CarouselPage: "HlkukqE4fB5si76sBJzKX",
        TabButtonsCtn: "_21-6tYOa1oCDYC9YCj1Vur",
        TabButton: "_1Gz4sRWceGeI3Si8NI3ZNk",
        DefaultCreatorCtn: "_3KzJ1sfvwr94TVth1tZA9",
        EventSectionViewAllCtn: "_1B6gV2QA_GwFQvK3wA5qWs",
        SaleSectionBackgroundImageGroupEdit: "_2a4meRP6BAw2re4BFrrwtA",
      };
    },
    18654: (e) => {
      e.exports = {
        "duration-app-launch": "800ms",
        headerCapsuleImgWidth: "460",
        headerCapsuleImgHeight: "215",
        mainCapsuleImgWidth: "616",
        mainCapsuleImgHeight: "353",
        libraryAssetImgWidth: "300",
        libraryAssetImgHeight: "450",
        heroCapsuleImgWidth: "374",
        heroCapsuleImgHeight: "448",
        StoreSaleWidgetContainer: "_2hhNOdcC6yLwL_rugP3YLf",
        LibraryAssetExpandedDisplay: "PZY_7wH_NY7OgzH9MBiB8",
        SaleItemDefaultCapsuleDisplay: "_37iggltdgh0RtNIECJCfOj",
        MarketingMessage: "_3_q87LhuWitbYSEHOVKYlM",
        StoreSaleWidgetRight: "v9uRg57bwOaPsvAnkXESO",
        StoreSaleWidgetHalfLeft: "_111nfdz8Xyg7lDjTWv_OmK",
        StoreSaleWidgetTitle: "_2ekpT6PjwtcFaT4jLQehUK",
        StoreSaleDiscountBox: "cnkoFkzVCby40gJ0jGGS4",
        StoreSaleWidgetLibraryAssetExtendedTop: "_1uLNByMlXsYSmrGPWyDNhE",
        StoreSaleWidgetImage: "yvqq8z2k4i7-Mzx-JHeNC",
        CapsuleMicroTrailer: "_1M7n5f3gWCHv1wN1smoxWg",
        CapsulePlatform: "_2bCf9u4rlC8De687HY6wnh",
        StoreSaleWidgetContents: "AgwfelHhJjcEq6ZQ9ohVr",
        StoreMetaDataCtn: "_2W2g30XYcaT1E3_IWsyVMK",
        StoreSaleItemRelease: "vCEpeeiHJkcIDdtTkRfjT",
        StoreSaleItemDev: "_3tIbO7JWeYXTD8fDol5_-f",
        StoreSaleItemReview: "Kx5NfQxifS6Xw2JxtcV31",
        StoreSaleWidgetLeft: "_3DkfNrtTOLjNYd3yZliMzy",
        TitleCtn: "_3rrH9dPdtHVRMzAEw82AId",
        StoreSaleWidgetCrossCenterRight: "oW0H1sBVE8K8u0qbq_Tm5",
        CapsuleBottomBar: "_3lmdEmwrmqe-kicNCZ9v-I",
        PlayNowButton: "_38ePadMVKPpN2BnpideoQw",
        AddToLibraryButton: "_1DrDh5P3SNgRdVAaUyel3G",
        StoreActionWidgetContainer: "kW6m4Sjqacp5hykrj5LEo",
        StoreSalePriceWidgetContainer: "_2s-O5T3qJJYR2AUq4b9jIN",
        StoreSaleWidgetBgTint: "MvLJDXjfbme8Uw3OERaCb",
        LibraryFallbackAssetImageContainer: "_1APLSpJeTPfN76xzyzVSfx",
        FallbackBackground: "_3chRZTd1smybX8C-swWcAm",
        SaleTagBlockCtn: "_1ZqQL1ugqx5VZZK7e7nZuc",
        StoreSaleWidgetCenter: "_2asUTzZuAkj9cDRKsLvwRE",
        StoreSaleWidgetReleaseAndTags: "_3wryhCRrTuMULeq_YjNk-s",
        Bundle: "_2GbhLyknhFLhpEOlbBXC3z",
        WidgetReleaseDateAndPlatformCtn: "_3a6HRK-P6LK0-pxRKXYgyP",
        SaleItemBrowserRow: "gASJ2lL_xmVNuZkWGvrWg",
        StoreSaleWidgetRelease: "_1qvTFgmehUzbdYM9cw0eS7",
        StoreSaleWidgetTags: "_2bkP-3b7dvr0a_qPdZEfHY",
        AppTag: "_3FJnZuxmPA_MjxsF8BQQ5L",
        StoreSaleWidgetShortDesc: "_3AsE5JhqLAiICKUYvZLpap",
        TagTitle: "v1i4WK3tk4FpXSJ5wC60U",
        TagBox: "_1lqaDGTzuprpWRYk4_2JrN",
        SaleItemFullCapsuleDisplay: "_2sVvRzH7oPUUIVDDVO0MJj",
        Tag: "_33yqka47vWurNqhnhLJb_m",
        BundleContentPreview: "jQ5GanUKBEe7hhgCh6b5z",
        StoreSaleBroadcastWidgetRight: "_9VjYX3CYMn2y-wWpAn00Y",
        StoreSalePriceActionWidgetContainer: "_1JuIpzMtS7-xZrnUmEQ4my",
        Discounted: "_1g0B-RjwkUV0_MDURgy3Bi",
        WishList: "_1djkdp7OAd0mF3a90RKf27",
        Action: "_2zssEuiPfY5YdQlnihDfVD",
        SingleLineMode: "_1ZlGJxv-xQaABSvaVvMlNq",
        StoreSaleDiscountedPriceCtn: "_3NhLu7mTdty7JufpSpz6Re",
        StoreSalePriceBox: "_3j4dI1yA7cRfCvK8h406OB",
        StoreSaleNewItem: "_2_KY_e11FV0ftXR2_7TMmP",
        StoreOriginalPrice: "_3fFFsvII7Y2KXNLDk_krOW",
        PrePurchase: "_2f7BMv_bJMTrHmaOF8B3Ws",
        NewItem: "_2xCT1pUf2c9TICHoMcQE0d",
        PurchaseOptionDetails: "_17_ynHC8fq9_LghcLrJYmW",
        InGameHover: "axjdi0dhiB17GHjL5FRCr",
        StoreSalePrepurchaseLabel: "_1Fru-E7WQMr8G_aR2sMg5F",
        SingleLineOriginalPrice: "t7Gt8aeopD7JPlhcNTqGV",
        BaseDiscount: "_3mInDnGL3LlUC7uPs1CfOP",
        StoreSalePriceButton: "_1BejQFnnmkHMi9stswiJzf",
        OuterCapsuleContainer: "_1dKR2IPNQSHs1MAIXBvt_R",
        BottomBarPriceInfo: "_1X3j2g29SBtsrFMgNiKi_Y",
        CapsuleContainer: "_22AcxR1RBDH6i-gjKRHYk0",
        EventRow: "_1UMFnczt69Ka8nOWKMzKJR",
        Muted: "_1HVwzvj5dyBMgn_KprOcNN",
        BottomCreatorRow: "_1JrUubE3c7FdJsMxYYxbt",
        CreatorLogo: "_3Krfug3wchu0qwGYQbbsHL",
        CreatorName: "Fmi-agZ0W7_4TkZ7CNquC",
        AddToCartButton: "_2iWMRE6knpPZLgHWASy5BH",
        AddToWishlistButton: "_2YfaLBUZmFkJ3NpkieGzS3",
        HeaderCapsuleImageContainer: "_2oW_y7Mm3ihf1XQ0C1VWhx",
        MainCapsuleImageContainer: "_1vpxH37o7mJotC0IoqWbqy",
        HeroCapsuleImageContainer: "vnhlb8EFU45PU6qG2GBDW",
        DiscoveryQueueCtn: "_2uX2GFSEk3nkWxRsaBXaeG",
        VerticalCapsule: "_3sy8XcvOMnFJv1_Edwpzqv",
        ForceLibrarySizing: "_25KI3ndwISqbgBdtNxpujP",
        CapsuleImage: "_2eQ4mkpf4IzUp1e9NnM2Wr",
        LinkCapsuleImage: "_2xO8H8kHMGocbbjupWJ7Nt",
        CapsuleParentInfo: "_2erfWpFrn1tZTPEbq97SuW",
        ParentType: "_3FCPPT5eoSXF0nNcICVdP6",
        Banner: "_2gxv9cF-4n9wq4yxruOTNl",
        Blue: "_2o-5t6bgEJxfbWVSmxT88V",
        LinesImg: "_3LecBjgbnwvS6bCFqxs6SC",
        CapsuleDecorators: "_1xNQcxU9_OtQ-_PrMbviS4",
        BundleContentsCtnTransition: "_24KNcWMI5Yvb_AnPAb23Fm",
        Expanding: "_38KIqxQJ2UZxWKjh4XFZrh",
        Expanded: "hPc1lu4wYeTfpyzGPwPIa",
        Collapsing: "_2NmI1RTJL46CD1bmy9p7U7",
        BundleContentsCtn: "_34acuCI4lsvrR8ezmi7K1E",
        BundleContentsTitle: "hhdk89lN3EL3ieRxGPbyl",
        BundleShowButton: "_2Vu78ZkZCgLm-FV4KStixO",
        ShowContentsButton: "-VlK4AN84fDgapWwCDax2",
        ShowContentsSection: "fsPeLo8K4uDXedwKw4_sG",
        BundleContentItem: "_2sdNOCzaF2AIAuenP19tA6",
        StoreSaleWidgetOuterContainer: "_1_P15GG6AKyF_NMX2j4-Mu",
        ContentsCount: "_353LzpA83V-kiAWaKcQAFg",
        PreviewCtn: "_1NM531LjOd5QmDktUetCOm",
        PreviewItem: "_2yhQb4aKtskchqwmpCVbMq",
        DeckCompatIcon: "_1Nju8xukRGXgeu2mN0nVjT",
        PreviewImg: "_1jx70oYOJWzNj7A5gNRxhg",
        DemoLayoutPopup: "_2tmp27YgSoUCJSBJA4t5yt",
        FreeWeekendBar: "_2SCofLY66uBY_jjrTzNjBN",
        FreeWeekendLabel: "_21B6LWEBK8rKCmK8COTVRq",
        RecommendationReason: "_3Q_taCjMHNZqbKEr1-r2GQ",
        LocalizationSpan: "_3bCSmg_cQ3aTa3waFLT6o7",
        CapsuleName: "_31P1R5vTMyJ5RwWAfVoKYG",
        DiscountIconCtn: "_3Qt9S4lxTBuJqoY2PidC5h",
        MaxActionButtonWidth: "_3GOwBXz8cR_9njnfMGlp7b",
      };
    },
    35050: (e) => {
      e.exports = { bordered_live_stream_icon: "_2R1rYdwKuMFLsEb4WvJYdD" };
    },
    39256: (e) => {
      e.exports = { ErrorDiv: "XeZExtCZ_zIcbkPRCqsnV" };
    },
    39449: (e) => {
      e.exports = {
        PopupScreenshotModal: "yloqxGhIEzvGIwbQbo6KP",
        PopupScreenshotContainer: "_1wwvw8QMJqug_-ioZdRJTC",
        PopupScreenshot: "_31XZuVC3l846TjPDScscaS",
        ButtonCtn: "_3MyspS-H5SnsUnKa3yhdtJ",
        ButtonIcon: "_1tCO1rmBfntUI0TlpTly1F",
        Disabled: "_1a_f8VY56CtjgePDRTaC-W",
      };
    },
    58855: (e) => {
      e.exports = { CompatIcon: "_3cEK5JKL6FSqY5FgD_4hFA" };
    },
    67523: (e) => {
      e.exports = { ErrorDiv: "_2FXMECiK-1oag3HieTiKJW" };
    },
    21038: (e) => {
      e.exports = {
        PreviewCtn: "_16SknI_KfMn45zQAvi-Xrs",
        SVG: "_3Mns5ZEBThi10kv9zwdCRr",
      };
    },
    37999: (e) => {
      e.exports = {
        Loading: "_24C5lxFpKz_kHyuT-8GJKK",
        LoadingSpinnerAmin: "_15h2OLuARlaaeboZ5TbsTx",
        Small: "_2FPxEVbkMdVDAw1TLfl_B5",
        Medium: "_2FfWbZHeiT3_nRXH-pI7av",
        Large: "_30IMocjbXd0leP4E5U2Yrx",
      };
    },
    55351: (e) => {
      e.exports = {
        DateAndTime: "_2V6GLdiU4guy4ND3n4Usgg",
        DateAndTimeInline: "HZ6b2d4r4EFnT_1BeU5vo",
        At: "Fn5EUtWkwSAw_gbbiySKN",
        ActiveEvent: "rT7EkJjqw27KBB7HxAAWk",
        ActiveEventCallOut: "_2pJftSRjT_UngZZ4BJimwg",
        RightSideTitles: "_4LAnPYKRPeF-QDReu_VGm",
        DateToolTip: "_2E5LHvnVEF3dSVV3wrDflm",
        ShortDateAndTime: "MBkkhT4wei3tWetnWbiqn",
        ShortDateRange: "_3CN6I3krBRNzD7kCuKQ_w7",
      };
    },
    45387: (e) => {
      e.exports = { strMaxMobileWidth: "700px" };
    },
    79821: (e, t, r) => {
      "use strict";
      r.d(t, { Kl: () => a, Yj: () => l, iH: () => n, zV: () => c });
      const a = [
          "p",
          "h1",
          "h2",
          "h3",
          "h4",
          "h5",
          "smalltext",
          "b",
          "u",
          "hr",
          "i",
          "img",
          "strike",
          "spoiler",
          "noparse",
          "url",
          "list",
          "olist",
          "*",
          "quote",
          "pullquote",
          "code",
          "table",
          "tr",
          "td",
          "th",
          "previewyoutube",
          "looping_media",
          "roomeffect",
          "sticker",
          "price",
          "pricesavings",
          "trailer",
          "speaker",
          "doclink",
          "video",
          "vod",
          "youtubeorvideo",
          "giveawayeligible",
          "claimitem",
          "packagepurchaseable",
          "actiondialog",
          "uploadfilebutton",
          "docimg",
          "meetsteamsessiongroup",
        ],
        n = [
          "h1",
          "h2",
          "h3",
          "b",
          "u",
          "i",
          "strike",
          "spoiler",
          "noparse",
          "url",
        ],
        i = [
          "img",
          "previewyoutube",
          "looping_media",
          "roomeffect",
          "video",
          "vod",
          "trailer",
          "youtubeorvideo",
          "docimg",
        ];
      a.filter((e) => !i.includes(e));
      let s;
      function o(e) {
        return e
          ? e.map((e) => ("*" == e ? "\\*" : e)).join("|")
          : (s || (s = o(a)), s);
      }
      function l(e, t = null, r = " ") {
        const a = new RegExp(
          "\\[(" + o(t) + ")\\b[^\\]]*\\].*?\\[/\\1\\]",
          "gi",
        );
        return e.replace(a, r);
      }
      function c(e, t = null, r = "") {
        const a = "\\[\\/?(?:" + o(t) + "){1,}.*?]";
        return e.replace(new RegExp(a, "gi"), r);
      }
    },
    81886: (e, t, r) => {
      "use strict";
      function a(e) {
        return (
          "game" === e ||
          "dlc" === e ||
          "software" === e ||
          "music" === e ||
          "application" === e ||
          "demo" === e ||
          "hardware" === e ||
          "mod" === e ||
          "video" == e ||
          "beta" === e ||
          "advertising" === e
        );
      }
      r.d(t, { f: () => a });
    },
    26205: (e, t, r) => {
      "use strict";
      r.d(t, { O: () => a, S: () => i });
      const a =
          /((?:(?:https?:)|(?:www[.,])|(?:[!#-;=?-Z\\\^-~]+[\.,](?:(?:[a-zA-Z]{2,4}[\.?]*[\/\\\?#])|(?:(?:biz|com|gallery|in|name|net|online|org|tech|trade|xyz)(?=\W|$)))))(?:[^ː\s"<>\[\]]*[^\\s"<>\[\],.ː:])?)/,
        n = /^(steam|ftp|https?):\/\//;
      function i(e) {
        return n.test(e) ? e : "https://" + e;
      }
    },
    85737: (e, t, r) => {
      "use strict";
      r.d(t, {
        Ku: () => o,
        VI: () => y,
        Vj: () => c,
        ZK: () => f,
        q3: () => u,
      });
      var a = r(80613),
        n = r(89068),
        i = r(56545);
      const s = a.Message;
      class o extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            o.prototype.clan_event_gid || n.Sg(o.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            o.sm_m ||
              (o.sm_m = {
                proto: o,
                fields: {
                  clan_event_gid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  steamid: {
                    n: 2,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  registration_group_id: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  registration_session_id: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  guest_count: {
                    n: 5,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  jsondata: { n: 7, br: n.qM.readString, bw: n.gp.writeString },
                },
              }),
            o.sm_m
          );
        }
        static MBF() {
          return o.sm_mbf || (o.sm_mbf = n.w0(o.M())), o.sm_mbf;
        }
        toObject(e = !1) {
          return o.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(o.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(o.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new o();
          return o.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(o.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return o.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(o.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return o.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPartnerMeetSteam_UpdateRegistration_Request";
        }
      }
      class l extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(), s.initialize(this, e, 0, -1, void 0, null);
        }
        toObject(e = !1) {
          return l.toObject(e, this);
        }
        static toObject(e, t) {
          return e ? { $jspbMessageInstance: t } : {};
        }
        static fromObject(e) {
          return new l();
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new l();
          return l.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return e;
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return l.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {}
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return l.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPartnerMeetSteam_UpdateRegistration_Response";
        }
      }
      class c extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            c.prototype.clan_event_gid || n.Sg(c.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            c.sm_m ||
              (c.sm_m = {
                proto: c,
                fields: {
                  clan_event_gid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                },
              }),
            c.sm_m
          );
        }
        static MBF() {
          return c.sm_mbf || (c.sm_mbf = n.w0(c.M())), c.sm_mbf;
        }
        toObject(e = !1) {
          return c.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(c.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(c.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new c();
          return c.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(c.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return c.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(c.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return c.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPartnerMeetSteam_GetAvailability_Request";
        }
      }
      class m extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            m.prototype.availability || n.Sg(m.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            m.sm_m ||
              (m.sm_m = {
                proto: m,
                fields: { availability: { n: 1, c: d, r: !0, q: !0 } },
              }),
            m.sm_m
          );
        }
        static MBF() {
          return m.sm_mbf || (m.sm_mbf = n.w0(m.M())), m.sm_mbf;
        }
        toObject(e = !1) {
          return m.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(m.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(m.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new m();
          return m.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(m.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return m.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(m.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return m.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPartnerMeetSteam_GetAvailability_Response";
        }
      }
      class d extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            d.prototype.group_id || n.Sg(d.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            d.sm_m ||
              (d.sm_m = {
                proto: d,
                fields: {
                  group_id: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  session_id: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  guest_count: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            d.sm_m
          );
        }
        static MBF() {
          return d.sm_mbf || (d.sm_mbf = n.w0(d.M())), d.sm_mbf;
        }
        toObject(e = !1) {
          return d.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(d.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(d.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new d();
          return d.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(d.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return d.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(d.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return d.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPartnerMeetSteam_GetAvailability_Response_Session";
        }
      }
      class u extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            u.prototype.clan_event_gid || n.Sg(u.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            u.sm_m ||
              (u.sm_m = {
                proto: u,
                fields: {
                  clan_event_gid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  steamid: {
                    n: 2,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                },
              }),
            u.sm_m
          );
        }
        static MBF() {
          return u.sm_mbf || (u.sm_mbf = n.w0(u.M())), u.sm_mbf;
        }
        toObject(e = !1) {
          return u.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(u.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(u.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new u();
          return u.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(u.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return u.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(u.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return u.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPartnerMeetSteam_GetRegistrations_Request";
        }
      }
      class p extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            p.prototype.registrations || n.Sg(p.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            p.sm_m ||
              (p.sm_m = {
                proto: p,
                fields: { registrations: { n: 1, c: _, r: !0, q: !0 } },
              }),
            p.sm_m
          );
        }
        static MBF() {
          return p.sm_mbf || (p.sm_mbf = n.w0(p.M())), p.sm_mbf;
        }
        toObject(e = !1) {
          return p.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(p.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(p.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new p();
          return p.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(p.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return p.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(p.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return p.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPartnerMeetSteam_GetRegistrations_Response";
        }
      }
      class _ extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            _.prototype.group_id || n.Sg(_.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            _.sm_m ||
              (_.sm_m = {
                proto: _,
                fields: {
                  group_id: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  session_id: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  steamid: {
                    n: 3,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  guests_registered: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  jsondata: { n: 5, br: n.qM.readString, bw: n.gp.writeString },
                },
              }),
            _.sm_m
          );
        }
        static MBF() {
          return _.sm_mbf || (_.sm_mbf = n.w0(_.M())), _.sm_mbf;
        }
        toObject(e = !1) {
          return _.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(_.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(_.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new _();
          return _.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(_.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return _.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(_.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return _.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPartnerMeetSteam_GetRegistrations_Response_Registration";
        }
      }
      class h extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            h.prototype.clan_event_gid || n.Sg(h.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            h.sm_m ||
              (h.sm_m = {
                proto: h,
                fields: {
                  clan_event_gid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  steamid: {
                    n: 2,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                },
              }),
            h.sm_m
          );
        }
        static MBF() {
          return h.sm_mbf || (h.sm_mbf = n.w0(h.M())), h.sm_mbf;
        }
        toObject(e = !1) {
          return h.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(h.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(h.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new h();
          return h.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(h.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(h.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPartnerMeetSteam_EmailInvitees_Request";
        }
      }
      class g extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            g.prototype.num_emailed || n.Sg(g.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            g.sm_m ||
              (g.sm_m = {
                proto: g,
                fields: {
                  num_emailed: {
                    n: 1,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  num_skipped: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            g.sm_m
          );
        }
        static MBF() {
          return g.sm_mbf || (g.sm_mbf = n.w0(g.M())), g.sm_mbf;
        }
        toObject(e = !1) {
          return g.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(g.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(g.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new g();
          return g.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(g.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(g.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPartnerMeetSteam_EmailInvitees_Response";
        }
      }
      class y extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            y.prototype.clan_event_gid || n.Sg(y.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            y.sm_m ||
              (y.sm_m = {
                proto: y,
                fields: {
                  clan_event_gid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  steamid: {
                    n: 2,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                },
              }),
            y.sm_m
          );
        }
        static MBF() {
          return y.sm_mbf || (y.sm_mbf = n.w0(y.M())), y.sm_mbf;
        }
        toObject(e = !1) {
          return y.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(y.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(y.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new y();
          return y.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(y.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(y.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CParterMeetSteam_TestFireEmails_Request";
        }
      }
      class S extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            S.prototype.sessionids || n.Sg(S.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            S.sm_m ||
              (S.sm_m = {
                proto: S,
                fields: {
                  sessionids: {
                    n: 1,
                    r: !0,
                    q: !0,
                    br: n.qM.readUint32,
                    pbr: n.qM.readPackedUint32,
                    bw: n.gp.writeRepeatedUint32,
                  },
                },
              }),
            S.sm_m
          );
        }
        static MBF() {
          return S.sm_mbf || (S.sm_mbf = n.w0(S.M())), S.sm_mbf;
        }
        toObject(e = !1) {
          return S.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(S.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(S.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new S();
          return S.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(S.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return S.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(S.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return S.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CParterMeetSteam_TestFireEmails_Response";
        }
      }
      var f;
      !(function (e) {
        (e.UpdateRegistration = function (e, t) {
          return e.SendMsg(
            "PartnerMeetSteam.UpdateRegistration#1",
            (0, i.I8)(o, t),
            l,
            { bConstMethod: !0, ePrivilege: 1 },
          );
        }),
          (e.GetAvailability = function (e, t) {
            return e.SendMsg(
              "PartnerMeetSteam.GetAvailability#1",
              (0, i.I8)(c, t),
              m,
              { bConstMethod: !0, ePrivilege: 1 },
            );
          }),
          (e.GetRegistrations = function (e, t) {
            return e.SendMsg(
              "PartnerMeetSteam.GetRegistrations#1",
              (0, i.I8)(u, t),
              p,
              { bConstMethod: !0, ePrivilege: 1 },
            );
          }),
          (e.EmailInvitees = function (e, t) {
            return e.SendMsg(
              "PartnerMeetSteam.EmailInvitees#1",
              (0, i.I8)(h, t),
              g,
              { ePrivilege: 4 },
            );
          }),
          (e.TestFireEmails = function (e, t) {
            return e.SendMsg(
              "PartnerMeetSteam.TestFireEmails#1",
              (0, i.I8)(y, t),
              S,
              { ePrivilege: 4 },
            );
          });
      })(f || (f = {}));
    },
    65689: (e, t, r) => {
      "use strict";
      r.d(t, { Nl: () => te, V4: () => H, j3: () => x });
      var a = r(80613),
        n = r(89068),
        i = r(56545);
      const s = a.Message;
      class o extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            o.prototype.total_playtime_seconds || n.Sg(o.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            o.sm_m ||
              (o.sm_m = {
                proto: o,
                fields: {
                  total_playtime_seconds: {
                    n: 1,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  total_sessions: {
                    n: 20,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  vr_sessions: {
                    n: 21,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  deck_sessions: {
                    n: 22,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  controller_sessions: {
                    n: 23,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  linux_sessions: {
                    n: 24,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  macos_sessions: {
                    n: 25,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  windows_sessions: {
                    n: 26,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  total_playtime_percentagex100: {
                    n: 27,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  vr_playtime_percentagex100: {
                    n: 28,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  deck_playtime_percentagex100: {
                    n: 29,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  controller_playtime_percentagex100: {
                    n: 30,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  linux_playtime_percentagex100: {
                    n: 31,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  macos_playtime_percentagex100: {
                    n: 32,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  windows_playtime_percentagex100: {
                    n: 33,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            o.sm_m
          );
        }
        static MBF() {
          return o.sm_mbf || (o.sm_mbf = n.w0(o.M())), o.sm_mbf;
        }
        toObject(e = !1) {
          return o.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(o.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(o.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new o();
          return o.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(o.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return o.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(o.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return o.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPlaytimeStats";
        }
      }
      class l extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            l.prototype.appid || n.Sg(l.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            l.sm_m ||
              (l.sm_m = {
                proto: l,
                fields: {
                  appid: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                },
              }),
            l.sm_m
          );
        }
        static MBF() {
          return l.sm_mbf || (l.sm_mbf = n.w0(l.M())), l.sm_mbf;
        }
        toObject(e = !1) {
          return l.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(l.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(l.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new l();
          return l.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(l.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return l.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(l.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return l.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPlaytimeStreakGame";
        }
      }
      class c extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            c.prototype.longest_consecutive_days || n.Sg(c.M()),
            s.initialize(this, e, 0, -1, [3], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            c.sm_m ||
              (c.sm_m = {
                proto: c,
                fields: {
                  longest_consecutive_days: {
                    n: 1,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  rtime_start: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  streak_games: { n: 3, c: l, r: !0, q: !0 },
                },
              }),
            c.sm_m
          );
        }
        static MBF() {
          return c.sm_mbf || (c.sm_mbf = n.w0(c.M())), c.sm_mbf;
        }
        toObject(e = !1) {
          return c.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(c.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(c.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new c();
          return c.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(c.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return c.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(c.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return c.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPlaytimeStreak";
        }
      }
      class m extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            m.prototype.overall_rank || n.Sg(m.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            m.sm_m ||
              (m.sm_m = {
                proto: m,
                fields: {
                  overall_rank: {
                    n: 1,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  vr_rank: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  deck_rank: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  controller_rank: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  linux_rank: {
                    n: 5,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  mac_rank: { n: 6, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  windows_rank: {
                    n: 7,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            m.sm_m
          );
        }
        static MBF() {
          return m.sm_mbf || (m.sm_mbf = n.w0(m.M())), m.sm_mbf;
        }
        toObject(e = !1) {
          return m.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(m.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(m.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new m();
          return m.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(m.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return m.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(m.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return m.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPlaytimeRanks";
        }
      }
      class d extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            d.prototype.appid || n.Sg(d.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            d.sm_m ||
              (d.sm_m = {
                proto: d,
                fields: {
                  appid: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  stats: { n: 2, c: o },
                  playtime_streak: { n: 3, c },
                  playtime_ranks: { n: 4, c: m },
                  rtime_first_played: {
                    n: 5,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  relative_game_stats: { n: 6, c: o },
                },
              }),
            d.sm_m
          );
        }
        static MBF() {
          return d.sm_mbf || (d.sm_mbf = n.w0(d.M())), d.sm_mbf;
        }
        toObject(e = !1) {
          return d.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(d.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(d.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new d();
          return d.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(d.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return d.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(d.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return d.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CGamePlaytimeStats";
        }
      }
      class u extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            u.prototype.appid || n.Sg(u.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            u.sm_m ||
              (u.sm_m = {
                proto: u,
                fields: {
                  appid: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  new_this_year: {
                    n: 2,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                  rtime_first_played_lifetime: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  demo: { n: 4, br: n.qM.readBool, bw: n.gp.writeBool },
                  playtest: { n: 5, br: n.qM.readBool, bw: n.gp.writeBool },
                  played_during_early_access: {
                    n: 6,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                  played_vr: { n: 7, br: n.qM.readBool, bw: n.gp.writeBool },
                  played_deck: { n: 8, br: n.qM.readBool, bw: n.gp.writeBool },
                  played_controller: {
                    n: 9,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                  played_linux: {
                    n: 10,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                  played_mac: { n: 11, br: n.qM.readBool, bw: n.gp.writeBool },
                  played_windows: {
                    n: 12,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                  total_playtime_percentagex100: {
                    n: 13,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  total_sessions: {
                    n: 14,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  rtime_release_date: {
                    n: 15,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  parent_appid: {
                    n: 16,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            u.sm_m
          );
        }
        static MBF() {
          return u.sm_mbf || (u.sm_mbf = n.w0(u.M())), u.sm_mbf;
        }
        toObject(e = !1) {
          return u.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(u.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(u.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new u();
          return u.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(u.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return u.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(u.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return u.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CGameSummary";
        }
      }
      class p extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            p.prototype.appid || n.Sg(p.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            p.sm_m ||
              (p.sm_m = {
                proto: p,
                fields: {
                  appid: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  total_playtime_percentagex100: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  relative_playtime_percentagex100: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            p.sm_m
          );
        }
        static MBF() {
          return p.sm_mbf || (p.sm_mbf = n.w0(p.M())), p.sm_mbf;
        }
        toObject(e = !1) {
          return p.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(p.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(p.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new p();
          return p.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(p.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return p.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(p.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return p.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSimpleGameSummary";
        }
      }
      class _ extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            _.prototype.appid || n.Sg(_.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            _.sm_m ||
              (_.sm_m = {
                proto: _,
                fields: {
                  appid: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  rank: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  relative_playtime_percentagex100: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            _.sm_m
          );
        }
        static MBF() {
          return _.sm_mbf || (_.sm_mbf = n.w0(_.M())), _.sm_mbf;
        }
        toObject(e = !1) {
          return _.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(_.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(_.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new _();
          return _.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(_.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return _.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(_.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return _.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CGameRank";
        }
      }
      class h extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            h.prototype.category || n.Sg(h.M()),
            s.initialize(this, e, 0, -1, [2], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            h.sm_m ||
              (h.sm_m = {
                proto: h,
                fields: {
                  category: { n: 1, br: n.qM.readString, bw: n.gp.writeString },
                  rankings: { n: 2, c: _, r: !0, q: !0 },
                },
              }),
            h.sm_m
          );
        }
        static MBF() {
          return h.sm_mbf || (h.sm_mbf = n.w0(h.M())), h.sm_mbf;
        }
        toObject(e = !1) {
          return h.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(h.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(h.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new h();
          return h.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(h.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(h.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CRankingCategory";
        }
      }
      class g extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            g.prototype.overall_ranking || n.Sg(g.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            g.sm_m ||
              (g.sm_m = {
                proto: g,
                fields: {
                  overall_ranking: { n: 1, c: h },
                  vr_ranking: { n: 2, c: h },
                  deck_ranking: { n: 3, c: h },
                  controller_ranking: { n: 4, c: h },
                  linux_ranking: { n: 5, c: h },
                  mac_ranking: { n: 6, c: h },
                  windows_ranking: { n: 7, c: h },
                },
              }),
            g.sm_m
          );
        }
        static MBF() {
          return g.sm_mbf || (g.sm_mbf = n.w0(g.M())), g.sm_mbf;
        }
        toObject(e = !1) {
          return g.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(g.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(g.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new g();
          return g.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(g.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(g.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CGameRankings";
        }
      }
      class y extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            y.prototype.total_achievements || n.Sg(y.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            y.sm_m ||
              (y.sm_m = {
                proto: y,
                fields: {
                  total_achievements: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  total_games_with_achievements: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  total_rare_achievements: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            y.sm_m
          );
        }
        static MBF() {
          return y.sm_mbf || (y.sm_mbf = n.w0(y.M())), y.sm_mbf;
        }
        toObject(e = !1) {
          return y.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(y.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(y.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new y();
          return y.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(y.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(y.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CUserPlaytimeSummaryStats";
        }
      }
      class S extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            S.prototype.stats || n.Sg(S.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            S.sm_m ||
              (S.sm_m = {
                proto: S,
                fields: { stats: { n: 1, c: f, r: !0, q: !0 } },
              }),
            S.sm_m
          );
        }
        static MBF() {
          return S.sm_mbf || (S.sm_mbf = n.w0(S.M())), S.sm_mbf;
        }
        toObject(e = !1) {
          return S.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(S.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(S.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new S();
          return S.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(S.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return S.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(S.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return S.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CUserTagStats";
        }
      }
      class f extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            f.prototype.tag_id || n.Sg(f.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            f.sm_m ||
              (f.sm_m = {
                proto: f,
                fields: {
                  tag_id: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  tag_weight: { n: 2, br: n.qM.readFloat, bw: n.gp.writeFloat },
                  tag_weight_pre_selection: {
                    n: 3,
                    br: n.qM.readFloat,
                    bw: n.gp.writeFloat,
                  },
                },
              }),
            f.sm_m
          );
        }
        static MBF() {
          return f.sm_mbf || (f.sm_mbf = n.w0(f.M())), f.sm_mbf;
        }
        toObject(e = !1) {
          return f.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(f.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(f.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new f();
          return f.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(f.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return f.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(f.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return f.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CUserTagStats_Tag";
        }
      }
      class b extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            b.prototype.screenshots_shared || n.Sg(b.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            b.sm_m ||
              (b.sm_m = {
                proto: b,
                fields: {
                  screenshots_shared: {
                    n: 1,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  gifts_sent: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  loyalty_reactions: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  written_reviews: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  guides_submitted: {
                    n: 5,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  workshop_contributions: {
                    n: 6,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  badges_earned: {
                    n: 7,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  friends_added: {
                    n: 8,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  forum_posts: {
                    n: 9,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  workshop_subscriptions: {
                    n: 10,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  guide_subscribers: {
                    n: 11,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  workshop_subscribers: {
                    n: 12,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  games_played_pct: {
                    n: 13,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  achievements_pct: {
                    n: 14,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  game_streak_pct: {
                    n: 15,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  games_played_avg: {
                    n: 16,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  achievements_avg: {
                    n: 17,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  game_streak_avg: {
                    n: 18,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            b.sm_m
          );
        }
        static MBF() {
          return b.sm_mbf || (b.sm_mbf = n.w0(b.M())), b.sm_mbf;
        }
        toObject(e = !1) {
          return b.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(b.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(b.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new b();
          return b.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(b.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return b.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(b.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return b.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPlaytimeByNumbers";
        }
      }
      class w extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            w.prototype.total_stats || n.Sg(w.M()),
            s.initialize(this, e, 0, -1, [2, 5, 6], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            w.sm_m ||
              (w.sm_m = {
                proto: w,
                fields: {
                  total_stats: { n: 1, c: o },
                  games: { n: 2, c: d, r: !0, q: !0 },
                  playtime_streak: { n: 3, c },
                  months: { n: 5, c: v, r: !0, q: !0 },
                  game_summary: { n: 6, c: u, r: !0, q: !0 },
                  demos_played: {
                    n: 7,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  game_rankings: { n: 8, c: g },
                  playtests_played: {
                    n: 9,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  summary_stats: { n: 10, c: y },
                  substantial: {
                    n: 11,
                    d: !0,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                  tag_stats: { n: 12, c: S },
                  by_numbers: { n: 13, c: b },
                },
              }),
            w.sm_m
          );
        }
        static MBF() {
          return w.sm_mbf || (w.sm_mbf = n.w0(w.M())), w.sm_mbf;
        }
        toObject(e = !1) {
          return w.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(w.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(w.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new w();
          return w.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(w.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return w.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(w.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return w.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CUserPlaytimeStats";
        }
      }
      class v extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            v.prototype.rtime_month || n.Sg(v.M()),
            s.initialize(this, e, 0, -1, [4, 6], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            v.sm_m ||
              (v.sm_m = {
                proto: v,
                fields: {
                  rtime_month: {
                    n: 1,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  stats: { n: 2, c: o },
                  appid: { n: 4, c: d, r: !0, q: !0 },
                  relative_monthly_stats: { n: 5, c: o },
                  game_summary: { n: 6, c: p, r: !0, q: !0 },
                },
              }),
            v.sm_m
          );
        }
        static MBF() {
          return v.sm_mbf || (v.sm_mbf = n.w0(v.M())), v.sm_mbf;
        }
        toObject(e = !1) {
          return v.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(v.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(v.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new v();
          return v.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(v.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return v.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(v.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return v.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CMonthlyPlaytimeStats";
        }
      }
      class I extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            I.prototype.account_id || n.Sg(I.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            I.sm_m ||
              (I.sm_m = {
                proto: I,
                fields: {
                  account_id: {
                    n: 1,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  year: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  playtime_stats: { n: 3, c: w },
                  privacy_state: {
                    n: 4,
                    br: n.qM.readEnum,
                    bw: n.gp.writeEnum,
                  },
                },
              }),
            I.sm_m
          );
        }
        static MBF() {
          return I.sm_mbf || (I.sm_mbf = n.w0(I.M())), I.sm_mbf;
        }
        toObject(e = !1) {
          return I.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(I.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(I.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new I();
          return I.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(I.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return I.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(I.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return I.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CUserYearInReviewStats";
        }
      }
      class B extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            B.prototype.from_dbo || n.Sg(B.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            B.sm_m ||
              (B.sm_m = {
                proto: B,
                fields: {
                  from_dbo: { n: 1, br: n.qM.readBool, bw: n.gp.writeBool },
                  overall_time_ms: {
                    n: 2,
                    br: n.qM.readUint64String,
                    bw: n.gp.writeUint64String,
                  },
                  dbo_load_ms: {
                    n: 3,
                    br: n.qM.readUint64String,
                    bw: n.gp.writeUint64String,
                  },
                  query_execution_ms: {
                    n: 4,
                    br: n.qM.readUint64String,
                    bw: n.gp.writeUint64String,
                  },
                  message_population_ms: {
                    n: 5,
                    br: n.qM.readUint64String,
                    bw: n.gp.writeUint64String,
                  },
                  dbo_lock_load_ms: {
                    n: 6,
                    br: n.qM.readUint64String,
                    bw: n.gp.writeUint64String,
                  },
                },
              }),
            B.sm_m
          );
        }
        static MBF() {
          return B.sm_mbf || (B.sm_mbf = n.w0(B.M())), B.sm_mbf;
        }
        toObject(e = !1) {
          return B.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(B.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(B.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new B();
          return B.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(B.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return B.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(B.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return B.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CYearInReviewPerformanceStats";
        }
      }
      class C extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            C.prototype.statid || n.Sg(C.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            C.sm_m ||
              (C.sm_m = {
                proto: C,
                fields: {
                  statid: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  fieldid: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  achievement_name_internal: {
                    n: 3,
                    br: n.qM.readString,
                    bw: n.gp.writeString,
                  },
                  rtime_unlocked: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            C.sm_m
          );
        }
        static MBF() {
          return C.sm_mbf || (C.sm_mbf = n.w0(C.M())), C.sm_mbf;
        }
        toObject(e = !1) {
          return C.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(C.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(C.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new C();
          return C.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(C.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return C.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(C.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return C.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CAchievementDetails";
        }
      }
      class E extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            E.prototype.appid || n.Sg(E.M()),
            s.initialize(this, e, 0, -1, [2], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            E.sm_m ||
              (E.sm_m = {
                proto: E,
                fields: {
                  appid: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  achievements: { n: 2, c: C, r: !0, q: !0 },
                  all_time_unlocked_achievements: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  unlocked_more_in_future: {
                    n: 4,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                },
              }),
            E.sm_m
          );
        }
        static MBF() {
          return E.sm_mbf || (E.sm_mbf = n.w0(E.M())), E.sm_mbf;
        }
        toObject(e = !1) {
          return E.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(E.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(E.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new E();
          return E.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(E.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return E.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(E.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return E.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CGameAchievements";
        }
      }
      class T extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            T.prototype.median_achievements || n.Sg(T.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            T.sm_m ||
              (T.sm_m = {
                proto: T,
                fields: {
                  median_achievements: {
                    n: 1,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  median_games: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  median_streak: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            T.sm_m
          );
        }
        static MBF() {
          return T.sm_mbf || (T.sm_mbf = n.w0(T.M())), T.sm_mbf;
        }
        toObject(e = !1) {
          return T.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(T.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(T.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new T();
          return T.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(T.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return T.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(T.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return T.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CGlobalPercentiles";
        }
      }
      class A extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            A.prototype.new_releases || n.Sg(A.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            A.sm_m ||
              (A.sm_m = {
                proto: A,
                fields: {
                  new_releases: {
                    n: 1,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  recent_releases: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  classic_releases: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  recent_cutoff_year: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            A.sm_m
          );
        }
        static MBF() {
          return A.sm_mbf || (A.sm_mbf = n.w0(A.M())), A.sm_mbf;
        }
        toObject(e = !1) {
          return A.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(A.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(A.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new A();
          return A.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(A.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return A.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(A.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return A.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CGlobalPlaytimeDistribution";
        }
      }
      class G extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            G.prototype.games_played || n.Sg(G.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            G.sm_m ||
              (G.sm_m = {
                proto: G,
                fields: {
                  games_played: {
                    n: 1,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  unlocked_achievements: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  longest_streak: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            G.sm_m
          );
        }
        static MBF() {
          return G.sm_mbf || (G.sm_mbf = n.w0(G.M())), G.sm_mbf;
        }
        toObject(e = !1) {
          return G.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(G.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(G.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new G();
          return G.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(G.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return G.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(G.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return G.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPreviousYIRSummaryData";
        }
      }
      class D extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            D.prototype.steamid || n.Sg(D.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            D.sm_m ||
              (D.sm_m = {
                proto: D,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  year: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  force_regenerate: {
                    n: 3,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                  access_source: {
                    n: 4,
                    br: n.qM.readInt32,
                    bw: n.gp.writeInt32,
                  },
                  fetch_previous_year_summary: {
                    n: 5,
                    d: !1,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                },
              }),
            D.sm_m
          );
        }
        static MBF() {
          return D.sm_mbf || (D.sm_mbf = n.w0(D.M())), D.sm_mbf;
        }
        toObject(e = !1) {
          return D.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(D.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(D.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new D();
          return D.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(D.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return D.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(D.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return D.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearInReview_Request";
        }
      }
      class M extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            M.prototype.stats || n.Sg(M.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            M.sm_m ||
              (M.sm_m = {
                proto: M,
                fields: {
                  stats: { n: 1, c: I },
                  performance_stats: { n: 2, c: B },
                  percentiles: { n: 3, c: T },
                  distribution: { n: 4, c: A },
                  previous_year_summary: { n: 5, c: G },
                },
              }),
            M.sm_m
          );
        }
        static MBF() {
          return M.sm_mbf || (M.sm_mbf = n.w0(M.M())), M.sm_mbf;
        }
        toObject(e = !1) {
          return M.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(M.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(M.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new M();
          return M.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(M.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return M.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(M.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return M.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearInReview_Response";
        }
      }
      class R extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            R.prototype.steamid || n.Sg(R.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            R.sm_m ||
              (R.sm_m = {
                proto: R,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  year: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  privacy_state: {
                    n: 3,
                    br: n.qM.readEnum,
                    bw: n.gp.writeEnum,
                  },
                },
              }),
            R.sm_m
          );
        }
        static MBF() {
          return R.sm_mbf || (R.sm_mbf = n.w0(R.M())), R.sm_mbf;
        }
        toObject(e = !1) {
          return R.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(R.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(R.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new R();
          return R.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(R.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return R.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(R.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return R.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_SetUserSharingPermissions_Request";
        }
      }
      class k extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            k.prototype.privacy_state || n.Sg(k.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            k.sm_m ||
              (k.sm_m = {
                proto: k,
                fields: {
                  privacy_state: {
                    n: 1,
                    br: n.qM.readEnum,
                    bw: n.gp.writeEnum,
                  },
                },
              }),
            k.sm_m
          );
        }
        static MBF() {
          return k.sm_mbf || (k.sm_mbf = n.w0(k.M())), k.sm_mbf;
        }
        toObject(e = !1) {
          return k.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(k.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(k.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new k();
          return k.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(k.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return k.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(k.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return k.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_SetUserSharingPermissions_Response";
        }
      }
      class F extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            F.prototype.steamid || n.Sg(F.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            F.sm_m ||
              (F.sm_m = {
                proto: F,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  year: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                },
              }),
            F.sm_m
          );
        }
        static MBF() {
          return F.sm_mbf || (F.sm_mbf = n.w0(F.M())), F.sm_mbf;
        }
        toObject(e = !1) {
          return F.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(F.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(F.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new F();
          return F.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(F.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return F.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(F.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return F.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserSharingPermissions_Request";
        }
      }
      class U extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            U.prototype.privacy_state || n.Sg(U.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            U.sm_m ||
              (U.sm_m = {
                proto: U,
                fields: {
                  privacy_state: {
                    n: 1,
                    br: n.qM.readEnum,
                    bw: n.gp.writeEnum,
                  },
                  generated_value: {
                    n: 2,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                  steamid: {
                    n: 3,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  rt_privacy_updated: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            U.sm_m
          );
        }
        static MBF() {
          return U.sm_mbf || (U.sm_mbf = n.w0(U.M())), U.sm_mbf;
        }
        toObject(e = !1) {
          return U.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(U.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(U.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new U();
          return U.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(U.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return U.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(U.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return U.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserSharingPermissions_Response";
        }
      }
      class L extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            L.prototype.steamid || n.Sg(L.M()),
            s.initialize(this, e, 0, -1, [3], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            L.sm_m ||
              (L.sm_m = {
                proto: L,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  year: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  appids: {
                    n: 3,
                    r: !0,
                    q: !0,
                    br: n.qM.readUint32,
                    pbr: n.qM.readPackedUint32,
                    bw: n.gp.writeRepeatedUint32,
                  },
                  total_only: { n: 4, br: n.qM.readBool, bw: n.gp.writeBool },
                },
              }),
            L.sm_m
          );
        }
        static MBF() {
          return L.sm_mbf || (L.sm_mbf = n.w0(L.M())), L.sm_mbf;
        }
        toObject(e = !1) {
          return L.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(L.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(L.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new L();
          return L.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(L.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return L.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(L.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return L.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearAchievements_Request";
        }
      }
      class P extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            P.prototype.game_achievements || n.Sg(P.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            P.sm_m ||
              (P.sm_m = {
                proto: P,
                fields: {
                  game_achievements: { n: 1, c: E, r: !0, q: !0 },
                  total_achievements: {
                    n: 2,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  total_rare_achievements: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  total_games_with_achievements: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            P.sm_m
          );
        }
        static MBF() {
          return P.sm_mbf || (P.sm_mbf = n.w0(P.M())), P.sm_mbf;
        }
        toObject(e = !1) {
          return P.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(P.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(P.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new P();
          return P.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(P.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return P.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(P.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return P.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearAchievements_Response";
        }
      }
      class O extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            O.prototype.steamid || n.Sg(O.M()),
            s.initialize(this, e, 0, -1, [3], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            O.sm_m ||
              (O.sm_m = {
                proto: O,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  year: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  appids: {
                    n: 3,
                    r: !0,
                    q: !0,
                    br: n.qM.readUint32,
                    pbr: n.qM.readPackedUint32,
                    bw: n.gp.writeRepeatedUint32,
                  },
                },
              }),
            O.sm_m
          );
        }
        static MBF() {
          return O.sm_mbf || (O.sm_mbf = n.w0(O.M())), O.sm_mbf;
        }
        toObject(e = !1) {
          return O.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(O.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(O.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new O();
          return O.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(O.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return O.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(O.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return O.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearScreenshots_Request";
        }
      }
      class z extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            z.prototype.apps || n.Sg(z.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            z.sm_m ||
              (z.sm_m = {
                proto: z,
                fields: { apps: { n: 1, c: W, r: !0, q: !0 } },
              }),
            z.sm_m
          );
        }
        static MBF() {
          return z.sm_mbf || (z.sm_mbf = n.w0(z.M())), z.sm_mbf;
        }
        toObject(e = !1) {
          return z.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(z.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(z.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new z();
          return z.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(z.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return z.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(z.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return z.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearScreenshots_Response";
        }
      }
      class N extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            N.prototype.image_url || n.Sg(N.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            N.sm_m ||
              (N.sm_m = {
                proto: N,
                fields: {
                  image_url: {
                    n: 1,
                    br: n.qM.readString,
                    bw: n.gp.writeString,
                  },
                  preview_url: {
                    n: 2,
                    br: n.qM.readString,
                    bw: n.gp.writeString,
                  },
                  image_width: {
                    n: 3,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  image_height: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  maybe_inappropriate_sex: {
                    n: 5,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                  maybe_inappropriate_violence: {
                    n: 6,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                  visibility: {
                    n: 7,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  spoiler_tag: { n: 8, br: n.qM.readBool, bw: n.gp.writeBool },
                },
              }),
            N.sm_m
          );
        }
        static MBF() {
          return N.sm_mbf || (N.sm_mbf = n.w0(N.M())), N.sm_mbf;
        }
        toObject(e = !1) {
          return N.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(N.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(N.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new N();
          return N.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(N.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return N.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(N.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return N.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearScreenshots_Response_Screenshot";
        }
      }
      class W extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            W.prototype.appid || n.Sg(W.M()),
            s.initialize(this, e, 0, -1, [2], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            W.sm_m ||
              (W.sm_m = {
                proto: W,
                fields: {
                  appid: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  screenshots: { n: 2, c: N, r: !0, q: !0 },
                },
              }),
            W.sm_m
          );
        }
        static MBF() {
          return W.sm_mbf || (W.sm_mbf = n.w0(W.M())), W.sm_mbf;
        }
        toObject(e = !1) {
          return W.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(W.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(W.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new W();
          return W.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(W.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return W.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(W.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return W.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearScreenshots_Response_ScreenshotsByApp";
        }
      }
      class H extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            H.prototype.steamid || n.Sg(H.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            H.sm_m ||
              (H.sm_m = {
                proto: H,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  gid: {
                    n: 2,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  type: { n: 3, br: n.qM.readEnum, bw: n.gp.writeEnum },
                },
              }),
            H.sm_m
          );
        }
        static MBF() {
          return H.sm_mbf || (H.sm_mbf = n.w0(H.M())), H.sm_mbf;
        }
        toObject(e = !1) {
          return H.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(H.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(H.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new H();
          return H.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(H.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return H.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(H.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return H.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserActionData_Request";
        }
      }
      class j extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            j.prototype.jsondata || n.Sg(j.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            j.sm_m ||
              (j.sm_m = {
                proto: j,
                fields: {
                  jsondata: { n: 1, br: n.qM.readString, bw: n.gp.writeString },
                },
              }),
            j.sm_m
          );
        }
        static MBF() {
          return j.sm_mbf || (j.sm_mbf = n.w0(j.M())), j.sm_mbf;
        }
        toObject(e = !1) {
          return j.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(j.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(j.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new j();
          return j.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(j.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return j.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(j.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return j.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserActionData_Response";
        }
      }
      class x extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            x.prototype.steamid || n.Sg(x.M()),
            s.initialize(this, e, 0, -1, [2], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            x.sm_m ||
              (x.sm_m = {
                proto: x,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  gids: {
                    n: 2,
                    r: !0,
                    q: !0,
                    br: n.qM.readFixed64String,
                    pbr: n.qM.readPackedFixed64String,
                    bw: n.gp.writeRepeatedFixed64String,
                  },
                  type: { n: 3, br: n.qM.readEnum, bw: n.gp.writeEnum },
                },
              }),
            x.sm_m
          );
        }
        static MBF() {
          return x.sm_mbf || (x.sm_mbf = n.w0(x.M())), x.sm_mbf;
        }
        toObject(e = !1) {
          return x.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(x.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(x.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new x();
          return x.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(x.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return x.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(x.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return x.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetMultipleUserActionData_Request";
        }
      }
      class V extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            V.prototype.entries || n.Sg(V.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            V.sm_m ||
              (V.sm_m = {
                proto: V,
                fields: { entries: { n: 1, c: q, r: !0, q: !0 } },
              }),
            V.sm_m
          );
        }
        static MBF() {
          return V.sm_mbf || (V.sm_mbf = n.w0(V.M())), V.sm_mbf;
        }
        toObject(e = !1) {
          return V.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(V.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(V.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new V();
          return V.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(V.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return V.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(V.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return V.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetMultipleUserActionData_Response";
        }
      }
      class q extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            q.prototype.gid || n.Sg(q.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            q.sm_m ||
              (q.sm_m = {
                proto: q,
                fields: {
                  gid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  jsondata: { n: 2, br: n.qM.readString, bw: n.gp.writeString },
                  steamid: {
                    n: 3,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                },
              }),
            q.sm_m
          );
        }
        static MBF() {
          return q.sm_mbf || (q.sm_mbf = n.w0(q.M())), q.sm_mbf;
        }
        toObject(e = !1) {
          return q.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(q.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(q.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new q();
          return q.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(q.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return q.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(q.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return q.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetMultipleUserActionData_Response_Entry";
        }
      }
      class Y extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            Y.prototype.steamid || n.Sg(Y.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            Y.sm_m ||
              (Y.sm_m = {
                proto: Y,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  year: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  return_private: {
                    n: 3,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                },
              }),
            Y.sm_m
          );
        }
        static MBF() {
          return Y.sm_mbf || (Y.sm_mbf = n.w0(Y.M())), Y.sm_mbf;
        }
        toObject(e = !1) {
          return Y.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(Y.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(Y.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new Y();
          return Y.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(Y.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return Y.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(Y.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return Y.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetFriendsSharedYearInReview_Request";
        }
      }
      class K extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            K.prototype.steamid || n.Sg(K.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            K.sm_m ||
              (K.sm_m = {
                proto: K,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  privacy_state: {
                    n: 3,
                    br: n.qM.readEnum,
                    bw: n.gp.writeEnum,
                  },
                  rt_privacy_updated: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  privacy_override: {
                    n: 5,
                    br: n.qM.readBool,
                    bw: n.gp.writeBool,
                  },
                },
              }),
            K.sm_m
          );
        }
        static MBF() {
          return K.sm_mbf || (K.sm_mbf = n.w0(K.M())), K.sm_mbf;
        }
        toObject(e = !1) {
          return K.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(K.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(K.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new K();
          return K.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(K.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return K.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(K.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return K.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFriendSharedYearInView";
        }
      }
      class J extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            J.prototype.friend_shares || n.Sg(J.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            J.sm_m ||
              (J.sm_m = {
                proto: J,
                fields: {
                  friend_shares: { n: 1, c: K, r: !0, q: !0 },
                  year: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                },
              }),
            J.sm_m
          );
        }
        static MBF() {
          return J.sm_mbf || (J.sm_mbf = n.w0(J.M())), J.sm_mbf;
        }
        toObject(e = !1) {
          return J.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(J.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(J.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new J();
          return J.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(J.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return J.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(J.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return J.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetFriendsSharedYearInReview_Response";
        }
      }
      class Q extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            Q.prototype.steamid || n.Sg(Q.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            Q.sm_m ||
              (Q.sm_m = {
                proto: Q,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                  year: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  language: { n: 3, br: n.qM.readString, bw: n.gp.writeString },
                },
              }),
            Q.sm_m
          );
        }
        static MBF() {
          return Q.sm_mbf || (Q.sm_mbf = n.w0(Q.M())), Q.sm_mbf;
        }
        toObject(e = !1) {
          return Q.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(Q.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(Q.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new Q();
          return Q.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(Q.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return Q.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(Q.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return Q.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearInReviewShareImage_Request";
        }
      }
      class Z extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            Z.prototype.images || n.Sg(Z.M()),
            s.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            Z.sm_m ||
              (Z.sm_m = {
                proto: Z,
                fields: { images: { n: 1, c: X, r: !0, q: !0 } },
              }),
            Z.sm_m
          );
        }
        static MBF() {
          return Z.sm_mbf || (Z.sm_mbf = n.w0(Z.M())), Z.sm_mbf;
        }
        toObject(e = !1) {
          return Z.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(Z.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(Z.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new Z();
          return Z.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(Z.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return Z.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(Z.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return Z.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearInReviewShareImage_Response";
        }
      }
      class X extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            X.prototype.name || n.Sg(X.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            X.sm_m ||
              (X.sm_m = {
                proto: X,
                fields: {
                  name: { n: 1, br: n.qM.readString, bw: n.gp.writeString },
                  url_path: { n: 2, br: n.qM.readString, bw: n.gp.writeString },
                },
              }),
            X.sm_m
          );
        }
        static MBF() {
          return X.sm_mbf || (X.sm_mbf = n.w0(X.M())), X.sm_mbf;
        }
        toObject(e = !1) {
          return X.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(X.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(X.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new X();
          return X.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(X.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return X.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(X.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return X.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetUserYearInReviewShareImage_Response_Image";
        }
      }
      class $ extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            $.prototype.steamid || n.Sg($.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            $.sm_m ||
              ($.sm_m = {
                proto: $,
                fields: {
                  steamid: {
                    n: 1,
                    br: n.qM.readFixed64String,
                    bw: n.gp.writeFixed64String,
                  },
                },
              }),
            $.sm_m
          );
        }
        static MBF() {
          return $.sm_mbf || ($.sm_mbf = n.w0($.M())), $.sm_mbf;
        }
        toObject(e = !1) {
          return $.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT($.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq($.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new $();
          return $.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj($.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return $.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0($.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return $.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetYIRCurrentMonthlySummary_Request";
        }
      }
      class ee extends s {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            ee.prototype.year || n.Sg(ee.M()),
            s.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            ee.sm_m ||
              (ee.sm_m = {
                proto: ee,
                fields: {
                  year: { n: 1, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  month: { n: 2, br: n.qM.readUint32, bw: n.gp.writeUint32 },
                  games_played: {
                    n: 4,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  top_played_appid: {
                    n: 5,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  longest_streak_days: {
                    n: 6,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  rt_streak_start: {
                    n: 7,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  achievements: {
                    n: 8,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                  screenshots: {
                    n: 9,
                    br: n.qM.readUint32,
                    bw: n.gp.writeUint32,
                  },
                },
              }),
            ee.sm_m
          );
        }
        static MBF() {
          return ee.sm_mbf || (ee.sm_mbf = n.w0(ee.M())), ee.sm_mbf;
        }
        toObject(e = !1) {
          return ee.toObject(e, this);
        }
        static toObject(e, t) {
          return n.BT(ee.M(), e, t);
        }
        static fromObject(e) {
          return n.Uq(ee.M(), e);
        }
        static deserializeBinary(e) {
          let t = new a.BinaryReader(e),
            r = new ee();
          return ee.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return n.zj(ee.MBF(), e, t);
        }
        serializeBinary() {
          var e = new a.BinaryWriter();
          return ee.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          n.i0(ee.M(), e, t);
        }
        serializeBase64String() {
          var e = new a.BinaryWriter();
          return ee.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CSaleFeature_GetYIRCurrentMonthlySummary_Response";
        }
      }
      var te;
      !(function (e) {
        (e.GetUserYearInReview = function (e, t) {
          return e.SendMsg(
            "SaleFeature.GetUserYearInReview#1",
            (0, i.I8)(D, t),
            M,
            { bConstMethod: !0, ePrivilege: 2, eWebAPIKeyRequirement: 1 },
          );
        }),
          (e.GetUserSharingPermissions = function (e, t) {
            return e.SendMsg(
              "SaleFeature.GetUserSharingPermissions#1",
              (0, i.I8)(F, t),
              U,
              { ePrivilege: 1, eWebAPIKeyRequirement: 2 },
            );
          }),
          (e.SetUserSharingPermissions = function (e, t) {
            return e.SendMsg(
              "SaleFeature.SetUserSharingPermissions#1",
              (0, i.I8)(R, t),
              k,
              { ePrivilege: 1, eWebAPIKeyRequirement: 2 },
            );
          }),
          (e.GetUserYearAchievements = function (e, t) {
            return e.SendMsg(
              "SaleFeature.GetUserYearAchievements#1",
              (0, i.I8)(L, t),
              P,
              { bConstMethod: !0, ePrivilege: 2, eWebAPIKeyRequirement: 1 },
            );
          }),
          (e.GetUserYearScreenshots = function (e, t) {
            return e.SendMsg(
              "SaleFeature.GetUserYearScreenshots#1",
              (0, i.I8)(O, t),
              z,
              { bConstMethod: !0, ePrivilege: 2, eWebAPIKeyRequirement: 1 },
            );
          }),
          (e.GetUserActionData = function (e, t) {
            return e.SendMsg(
              "SaleFeature.GetUserActionData#1",
              (0, i.I8)(H, t),
              j,
              { bConstMethod: !0, ePrivilege: 1, eWebAPIKeyRequirement: 2 },
            );
          }),
          (e.GetMultipleUserActionData = function (e, t) {
            return e.SendMsg(
              "SaleFeature.GetMultipleUserActionData#1",
              (0, i.I8)(x, t),
              V,
              { bConstMethod: !0, ePrivilege: 1, eWebAPIKeyRequirement: 2 },
            );
          }),
          (e.GetFriendsSharedYearInReview = function (e, t) {
            return e.SendMsg(
              "SaleFeature.GetFriendsSharedYearInReview#1",
              (0, i.I8)(Y, t),
              J,
              { bConstMethod: !0, ePrivilege: 1, eWebAPIKeyRequirement: 2 },
            );
          }),
          (e.GetUserYearInReviewShareImage = function (e, t) {
            return e.SendMsg(
              "SaleFeature.GetUserYearInReviewShareImage#1",
              (0, i.I8)(Q, t),
              Z,
              { bConstMethod: !0, ePrivilege: 2, eWebAPIKeyRequirement: 1 },
            );
          }),
          (e.GetYIRCurrentMonthlySummary = function (e, t) {
            return e.SendMsg(
              "SaleFeature.GetYIRCurrentMonthlySummary#1",
              (0, i.I8)($, t),
              ee,
              { bConstMethod: !0, ePrivilege: 1, eWebAPIKeyRequirement: 2 },
            );
          });
      })(te || (te = {}));
    },
    3578: (e, t, r) => {
      "use strict";
      r.d(t, { A: () => i });
      var a = r(26205);
      const n = JSON.parse(
        '{"unknown":0,"store.steampowered.com":1,"steamcommunity.com":2,"global":3,"default":4,"application":5,"subscription":6,"search":7,"cart":8,"app":9,"global-nav":10,"global-account":11,"storemenu":12,"search-suggestion":13,"about":14,"suggest":15,"dlc":16,"storemenu-recommendedtags":17,"creator":18,"footer-genre-dropdown":20,"footer-category-dropdown":21,"footer-about-dropdown":22,"footer-help-dropdown":23,"footer-publisher-catalogs":24,"wishlist":25,"spotlight":40,"message":41,"marketing-message":42,"daily-deal":43,"footer":44,"header":45,"name":46,"more-details":47,"notification":48,"category":49,"steamdeck":50,"login":60,"prompt":61,"join-steam":62,"successful-login":63,"successful-joinsteam":64,"main-cluster":100,"featured-win-games":101,"featured-mac-games":102,"tab-NewReleases":103,"tab-TopSellers":104,"tab-ComingSoon":105,"tab-Discounts":106,"smallcap-videos":107,"smallcap-demos":108,"home-headlines":109,"community-activity":110,"home-underten":111,"home-specials":112,"home-partners":113,"home-steam-install":114,"community-activity-recentlyplayed":115,"community-activity-recentlybought":116,"promo-banner":117,"promo-takeover":118,"featured-linux-games":119,"updated-games":120,"featured-updated-games":121,"discovery-queue":122,"new-on-steam":123,"curated-app":124,"home-gutter":125,"upcoming-queue":126,"home-specials-under10":127,"main-cluster-recommended":128,"main-cluster-topseller":129,"main-cluster-newonsteam":130,"recommended-spotlight":131,"hardware-promo":132,"popular-new-on-steam":133,"main-cluster-recommended-byfriends":134,"main-cluster-recommended-bycurators":135,"main-cluster-recenttopseller":136,"home-under10":137,"friends-trending":138,"spotlight-specials":139,"curator-recommended":140,"best-selling-vr":141,"creator-recommendations":142,"live-broadcast":143,"main-cluster-followed-creator":144,"tab-PopularNewReleases":145,"home-big-blue-buttons":146,"home-banner":147,"top-new-releases":148,"curated-main-app":149,"search-results":150,"query":151,"search-share":152,"genre":200,"large-cluster":201,"find-more":202,"friend-activity":203,"specials":2300,"breadcrumbs":205,"freestuff":220,"demos":1900,"tab-NewDemos":222,"tab-TopDemos":223,"browse-demos":224,"videos":100002,"popular-videos":226,"tab-NewVideos":227,"browse":230,"mac":231,"under10":232,"under5":233,"publisher":234,"publishers":235,"publisher-listing":236,"tag":237,"gettaggames":238,"explore":239,"browse-tags":240,"tags":241,"content-hub-carousel":242,"Action":250,"Adventure":251,"Strategy":252,"RPG":253,"Indie":254,"Massively Multiplayer":255,"Casual":256,"Family":257,"Simulation":258,"Racing":259,"Sports":260,"recommended":300,"recommendation-main":301,"friend-recommendations":302,"recommended-friendplaytime":303,"recommended-recentlyviewed":304,"recommended-morerecentlyviewed":305,"recommended-genrehighlights":306,"morelike":307,"morelike-mainitem":308,"friendactivity.js":309,"friendactivity-wishlist-spotlight":310,"friendactivity-purchases":311,"friendactivity-playedandwanted":312,"byafriend":313,"friend-recommendation":314,"ajaxgetfriendactivity":315,"recommend-franchise":316,"more-from-franchise":317,"wishlist-capsule":318,"game-highlights":400,"recommend-game":401,"view-own-recommendation":402,"game-purchase":403,"game-purchase-guide":404,"game-purchase-dlc":405,"game-friend-recommendations":406,"game-add-to-wishlist":407,"game-details":408,"game-highlight-tags":409,"game-tags-dialog":410,"game-tags-yours":411,"bundle-component-preview":412,"dlc-parent-app-link":413,"similar-recent-apps":414,"package-purchase":420,"package-contents":421,"package-details":422,"category-list":423,"bundle":430,"bundle-contents":431,"cart-remove-item":500,"cart-items":501,"cart-continue-shopping":502,"cart-purchase":503,"checkout-logo-abandon":504,"checkout-success":505,"checkout":506,"gift":507,"self":508,"checkout-complete-return":509,"checkout-complete-logo":510,"purchaserequest":511,"display":512,"initial":513,"gifts":514,"upsell-recommended":520,"upsell-specials":521,"external-site":550,"facebook":551,"twitter":552,"referral":553,"summersale":600,"prizebooth":610,"activity-game-link":611,"activity-game-discount":612,"prize-info":613,"promotion":614,"sale":615,"sale-item":616,"sale-dailydeals":617,"sale-publishers":618,"sale-genres":619,"email":620,"cart-icon":621,"sale-category-links":622,"sale-notification-callout":623,"sale-yesterdaydeals":624,"sale-flashsales":625,"sale-fromyourwishlist":626,"closed-beta-access":627,"sale-tag-bucket":628,"sale-hero":629,"sale-franchises":630,"sale-dlcforyou":631,"sale-recommended-by-steam-labs":632,"sale-recommended-by-deep-dive":633,"sale-dailydeals-tier2":634,"sale-deep-discounts":635,"sale-deck-mostplayed":636,"home-chart-deckmostplayed":637,"home-deck-banner":638,"sale-tag-bucket-top":639,"sale-dailydeals-none":640,"sale-dailydeals-tags":641,"sale-dailydeals-ir":642,"sale-dailydeals-tier2-none":645,"sale-dailydeals-tier2-tags":646,"sale-dailydeals-tier2-ir":647,"sale-hero-none":650,"sale-hero-tags":651,"sale-hero-ir":652,"autumnsale":660,"wintersale":661,"yearinreview":662,"springsale":663,"mobileapp":700,"summary":701,"mobilestorefront":702,"home":703,"winter2012-today-square":800,"winter2012-today-square-button":801,"winter2012-hires":802,"winter2012-hires-button":803,"winter2012-yesterday-square":804,"winter2012-yesterday-square-button":805,"winter2012-flash":806,"winter2012-flash-button":807,"winter2012-pack":808,"winter2012-pack-button":809,"winter2012-topsellers":810,"winter2012-topsellers-button":811,"winter2012-vote-winner":812,"winter2012-vote-winner-button":821,"winter2012-vote-option-voting":813,"winter2012-vote-option-voted":814,"winter2012-nav":815,"winter2012-500-callout":816,"winter2012-500-callout-button":820,"winter2012-featured":817,"winter2012-lower-nav":822,"winter2012-vote-option-vote-results":823,"fall2014-48":850,"fall2014-24":851,"fall2014-TopSellers":852,"fall2014-Upcoming":853,"fall2014-Under10":854,"fall2014-Under5":855,"fall2014-PopularNewReleases":856,"fall2014-specials-more":857,"fall2014-recommend-wishlist":858,"fall2014-recommend-contentforyourgames":859,"renderspecials":860,"recommend":861,"recommended-ranked-played":862,"redeem-wallet-complete-return":900,"redeem-wallet-complete-return-app":901,"updated":1000,"curators":1050,"curatorrecommendations":1051,"ajaxgetcuratorrecommendations":1052,"curatorscombinedrecommendations":1053,"ajaxgetcombinedrecommendations":1054,"curatorlist":1055,"curator":1056,"curatorfeaturedlist":1057,"curator_featured_list":1057,"mycuratorsreviewing":1058,"creatorfeaturedrecs":1059,"new_dlc":1060,"browse-dlc":1061,"curatorlistcapsule":1062,"widget":1100,"appvisibilitystats":1101,"render":1200,"recommendationfeed-single-friends":1210,"recommendationfeed-single-curators":1211,"recommendationfeed-single-recent":1212,"recommendationfeed-single-wishlist":1213,"recommendationfeed-single-played":1214,"recommendationfeed-two":1250,"recommendationfeed-four":1251,"winter2014-featured":1300,"winter2014-yesterday":1301,"winter2014-flash":1302,"winter2014-flash2":1303,"winter2014-vote":1304,"winter2014-specials-more":1305,"winter2014-recommend-wishlist":1306,"winter2014-frontpage-wishlist":1307,"winter2014-TopSellers":1308,"winter2014-Upcoming":1309,"winter2014-Under10":1310,"winter2014-Under5":1311,"winter2014-PopularNewReleases":1312,"winter2017-FeaturedBanner":1313,"summer2018-standardview-curated":1314,"summer2018-standardview-recommend-basic":1315,"summer2018-standardview-recommend-neural":1316,"summer2018-mergedview-curated":1317,"summer2018-mergedview-recommend-neural":1318,"summer2018-salien-giveaway":1319,"summer2018-creator-recommend":1320,"summer2018-live-stream":1321,"sale-vr":1322,"sale-moddable":1323,"discovery-queue-0":1324,"wishlist-onsale":1400,"wishlist-newrelease":1401,"greenlight-newrelease":1402,"sales-event-enhanced":1403,"creator-newrelease":1404,"generic-onsale":1405,"topsellers-onsale":1406,"recommended-onsale":1407,"demo-newrelease":1408,"Free to Play":1420,"tab-mostplayednewreleases":1421,"tab-mostplayed":1422,"tab-comingsoon":1423,"tab-discounts":1424,"tab-ConcurrentUsers":1454,"vr":1453,"hub-vr-recommended":1455,"hub-vr-specials":1459,"hub-vr-featured":1463,"hub-vr-takeover":1467,"games":1452,"hub-games-recommended":1456,"hub-games-specials":1460,"hub-games-featured":1464,"hub-games-takeover":1468,"software":1451,"hub-software-recommended":1457,"hub-software-specials":1461,"hub-software-featured":1465,"hub-software-takeover":1469,"hub-videos-recommended":1458,"hub-videos-specials":1462,"hub-videos-featured":1466,"hub-videos-takeover":1470,"macos":1480,"hub-macos-recommended":1481,"hub-macos-specials":1482,"hub-macos-featured":1483,"hub-macos-takeover":1484,"linux":1490,"hub-linux-recommended":1491,"hub-linux-specials":1492,"hub-linux-featured":1493,"hub-linux-takeover":1494,"controller":1500,"hub-controller-recommended":1501,"hub-controller-specials":1502,"hub-controller-featured":1503,"hub-controller-takeover":1504,"freetoplay":1510,"hub-freetoplay-recommended":1511,"hub-freetoplay-specials":1512,"hub-freetoplay-featured":1513,"hub-freetoplay-takeover":1514,"earlyaccess":1520,"hub-earlyaccess-recommended":1521,"hub-earlyaccess-specials":1522,"hub-earlyaccess-featured":1523,"hub-earlyaccess-takeover":1524,"pccafe":1530,"hub-pccafe-recommended":1531,"hub-pccafe-specials":1532,"hub-pccafe-featured":1533,"hub-pccafe-takeover":1534,"remoteplayphone":1540,"hub-remoteplayphone-recommended":1541,"hub-remoteplayphone-specials":1542,"hub-remoteplayphone-featured":1543,"hub-remoteplayphone-takeover":1544,"remoteplaytablet":1550,"hub-remoteplaytablet-recommended":1551,"hub-remoteplaytablet-specials":1552,"hub-remoteplaytablet-featured":1553,"hub-remoteplaytablet-takeover":1554,"remoteplaytv":1560,"hub-remoteplaytv-recommended":1561,"hub-remoteplaytv-specials":1562,"hub-remoteplaytv-featured":1563,"hub-remoteplaytv-takeover":1564,"remoteplaytogether":1570,"hub-remoteplaytogether-recommended":1571,"hub-remoteplaytogether-specials":1572,"hub-remoteplaytogether-featured":1573,"hub-remoteplaytogether-takeover":1574,"remote-play-about":1580,"remoteplay":1581,"turnbasedrpg":1582,"arcaderhythm":1583,"greatondeck":1584,"remoteplaylanding":1585,"fightingmartialarts":1586,"actionfps":1587,"hackandslash":1588,"actionrunjump":1589,"shmup":1590,"adventure":1591,"action":1592,"adventurerpg":1593,"hiddenobject":1594,"metroidvania":1595,"puzzlematching":1596,"storyrich":1597,"visualnovel":1598,"casual":1559,"querypaginated":1600,"n_section":1601,"rpgjrpg":1602,"rpgpartybased":1603,"roguelikeroguelite":1604,"rpgaction":1605,"rpg":1606,"rpgstrategytactics":1607,"rpgturnbased":1608,"simulation":1609,"simbuildingautomation":1610,"simdating":1611,"simfarmingcrafting":1612,"simhobbysim":1613,"simlife":1614,"simphysicssandbox":1615,"simspaceflight":1616,"strategy":1617,"strategycardboard":1618,"strategycitiessettlements":1619,"soundtracks":1620,"hub-soundtracks-recommended":1621,"hub-soundtracks-specials":1622,"hub-soundtracks-featured":1623,"hub-soundtracks-takeover":1624,"strategygrand4x":1625,"strategymilitary":1626,"strategyrealtime":1627,"towerdefense":1628,"strategyturnbased":1629,"sportsandracing":1630,"sports":1631,"sportsfishinghunting":1632,"sportsindividual":1633,"racing":1634,"racingsim":1635,"sportssim":1636,"sportsteam":1637,"anime":1638,"horror":1639,"mysterydetective":1640,"explorationopenworld":1641,"sciencefiction":1642,"space":1643,"survival":1644,"multiplayercoop":1645,"multiplayerlan":1646,"multiplayerlocalparty":1647,"multiplayermmo":1648,"multiplayer":1649,"multiplayeronlinecompetitive":1650,"singleplayer":1651,"upcoming":1700,"comingsoon-recommendedcomingsoon":1701,"comingsoon-popularwishlist":1702,"comingsoon-newdlc":1703,"comingsoon-followedcreator":1704,"comingsoon-mywishlist":1705,"comingsoon-largecap":1706,"tab-PopularUpcoming":1707,"tab-AllUpcoming":1708,"in-library-game-event-update":1800,"on-wishlist-game-event-update":1801,"in-library-game-remind-me":1802,"hub-demos-recommended":1901,"hub-demos-specials":1902,"hub-demos-featured":1903,"hub-demos-takeover":1904,"creator-home-product-page":2000,"franchise-home-link":2001,"ajaxgetappinfoforcap":2100,"partner-events":2101,"library-partner-events":2102,"store-partner-events":2103,"steamtv-partner-events":2104,"community-partner-events":2105,"partnerweb-partner-events":2106,"store-calendar-partner-events":2107,"events":2108,"subscriptions":2109,"ea":2110,"subscriptionplansea":2111,"download_event":2112,"reminder":2113,"steamtv":2200,"hub-specials-recommended":2301,"hub-specials-specials":2302,"hub-specials-featured":2303,"hub-specials-takeover":2304,"recommender":2400,"recommended-by-steam-labs":2401,"labs":2500,"automaticshow":2501,"microtrailers":2502,"now-playing":2503,"deepdive":2504,"game-add-to-wishlist-deepdive":2505,"dbdetailsmulti":2506,"dbgetlinkparam":2507,"recommended-by-deep-dive":2508,"recommended-by-deep-dive-carousel":2509,"recommended-by-deep-dive-carousel_default":2510,"recommended-by-deep-dive-carousel_cluster_recent":2511,"recommended-by-deep-dive-carousel_cluster_games":2512,"recommended-by-deep-dive-carousel_cluster_playtime":2513,"recommended-by-deep-dive-carousel-default":2514,"recommended-by-deep-dive-carousel-cluster-recent":2515,"recommended-by-deep-dive-carousel-cluster-games":2516,"recommended-by-deep-dive-carousel-cluster-playtime":2517,"trendingreviews":2600,"ajaxgetrecentreviews":2601,"community-recommendations":2602,"lunarnewyear2020":2700,"lunarnewyear":2701,"lunarnewyearmarket":2702,"steam-logo":2750,"sale-banner":2751,"sale-button-top":2752,"sale-button-bottom":2753,"wishlist-button-bottom":2754,"footer-steam-logo":2755,"steamclient":5000,"library":5100,"friendsui":5200,"friendcontextmenu":5201,"nextfest":6000,"topsellers":7000,"steamcharts":7001,"weeklytopsellers":7002,"topchartlist":7003,"overview":7004,"mostplayed":7005,"salesmartdailyactiveuserdemo":7006,"salesmartmostplayeddemo":7007,"salesmartdecktopplayed":7008,"salesmartcategory":7009,"vrhardwarelanding":7010,"apphome":100000,"images":100001,"allnews":100003,"news":100004,"announcements":100005,"discussions":100006,"reporteddiscussions":100007,"tradingforum":100008,"guides":100009,"reviews":100010,"positivereviews":100011,"negativereviews":100012,"workshop":100013,"broadcasts":100014,"eventcomments":100015,"sharedfiles":100100,"filedetails":100101,"screenshot":100102,"workshopitem":100103,"mtxitem":100104,"collection":100105,"guide":100106,"integratedguide":100107,"merch":100108,"artwork":100109,"video":100110,"topicsearch":100201,"singletopic":100202,"profiles":100300,"review":100301,"profileshowcase":100302,"broadcast":100400,"watch":100401,"friendactivityfeed":100500,"announcement":100501,"curatorreview":100502,"friendpurchase":100503,"workshopitempublished":100504,"artworkpublished":100505,"screenshotpublished":100506,"guidepublished":100507,"collectionpublished":100508,"itemfavorited":100509,"userreviewpublished":100510,"partner.steamgames.com":100600,"help.steampowered.com":100601,"salecreatorhome":100700,"saleitembrowse":100701,"salefacetbrowse":100702,"salesection":100703,"saletabsection":100704,"salebroadcast":100705,"salecuratorrec":100706,"saleeventsched":100707,"salesubscription":100708,"saleitemsearch":100709,"salesmartwishlist":100710,"salesmartir":100711,"salesmartdlc":100712,"salesmarttagrec":100713,"salebrowsetopwishlisted":100714,"salebrowsetrendingwishlisted":100715,"salebrowsepopularcomingsoon":100716,"salebrowsemostplayeddemo":100717,"salebrowsedailyactiveuserdemo":100718,"salebrowseplayednowdemo":100719,"salebrowserecentlyreleased":100720,"salebrowsepopularpurchased":100721,"salebrowsepopularpurchaseddiscounted":100722,"salebrowsediscounted":100723,"salebrowseprice":100724,"salebrowsenewandtrending":100725,"salebrowsetopsellers":100726,"salebrowsetoprated":100727,"discoveryqueue2022":100728,"saleeventsection":100729,"salesectionlinks":100730,"salesectionrewards":100731,"salesectiontext":100732,"salesectioneventschedule":100733,"salesmartpersonalizedcarousel":100734,"promo-takeunder":100735,"salesmartwr":100736,"salesmartwishlist_allsale":100737,"salesmartir_allsale":100738,"autopopulatetag":100739,"autopopulatecategory":100740,"salesmartrecentevents":100741,"seasonpassproductpage":100742,"itemcollections":100743,"crosspromotesalepage":100744}',
      );
      class i {
        static InstrumentLink(e, t, r = null) {
          const a = i.GetLinkParam(t, r);
          return i.AddNavParamToURL(e, a);
        }
        static ParseSNR(e) {
          const t = e.split("_") || [];
          return {
            domain: i.DecodeEventComponent(t[0]),
            controller: i.DecodeEventComponent(t[1]),
            method: i.DecodeEventComponent(t[2]),
            submethod: i.DecodeEventComponent(t[3]),
            feature: i.DecodeEventComponent(t[4]),
            depth: t[5] ? Number(t[5]) : void 0,
          };
        }
        static GetLinkParam(e, t = null) {
          let r = i.ComputeLinkPrefix(
            e.domain,
            e.controller,
            e.method,
            e.submethod,
          );
          t = t ?? e.depth ?? null;
          const a = i.EncodeEventComponent(e.feature);
          return a && ((r += "_" + a), t && (r += "_" + t)), r;
        }
        static AddNavParamToURL(e, t) {
          try {
            const r = new URL((0, a.S)(e)),
              n = new URLSearchParams(r.search);
            return (
              n.set("snr", encodeURIComponent(t ?? "")),
              r.origin + r.pathname + "?" + n.toString() + r.hash
            );
          } catch (t) {
            return console.error(e, t), e;
          }
        }
        static ComputeLinkPrefix(e, t, r, a) {
          let n = "";
          return (
            (n += i.EncodeEventComponent(e)),
            (n += "_"),
            (n += i.EncodeEventComponent(t)),
            (n += "_"),
            (n += i.EncodeEventComponent(r)),
            (n += "_"),
            (n += i.EncodeEventComponent(a)),
            n
          );
        }
        static EncodeEventComponent(e) {
          return e
            ? e in n
              ? "" + n[e]
              : (e.match(/^[0-9]+$/) || (e = e.replace(/^[0-9]+/, "")),
                e.replace(/[^a-zA-Z0-9\- ]+/g, ""))
            : "";
        }
        static DecodeEventComponent(e) {
          const t = e && parseInt(e);
          if (t && n) for (const e in n) if (n[e] == t) return e;
          return i.SanitizeEventComponent(e);
        }
        static SanitizeEventComponent(e) {
          return e && e.match(/^[a-zA-Z0-9\-.]*$/) ? e : "";
        }
      }
    },
    60014: (e, t, r) => {
      "use strict";
      r.d(t, { n9: () => l, nn: () => o, pn: () => c, ru: () => m });
      var a = r(90626),
        n = r(3578),
        i = r(8527);
      const s = a.createContext({});
      a.createContext(void 0);
      function o(e) {
        const { children: t, ...r } = e,
          n = l(),
          i = a.useMemo(
            () => ({ ...n, ...r }),
            [
              n,
              r.domain,
              r.controller,
              r.method,
              r.submethod,
              r.feature,
              r.depth,
            ],
          );
        return a.createElement(s.Provider, { value: i }, t);
      }
      function l() {
        return a.useContext(s);
      }
      function c(e, t, r) {
        return {
          ...e,
          feature: t || e.feature,
          depth: r || e.depth,
          countrycode: i.TS.COUNTRY,
          is_client: i.TS.IN_CLIENT,
        };
      }
      function m(e, t) {
        const r = l();
        return a.useMemo(
          () => n.A.GetLinkParam({ ...r, feature: e || r.feature }, t),
          [r, e, t],
        );
      }
    },
    59952: (e, t, r) => {
      "use strict";
      r.d(t, {
        $A: () => N,
        B8: () => U,
        Pk: () => F,
        Sz: () => M,
        Tu: () => A,
        UT: () => W,
        W4: () => C,
        ZS: () => R,
        Zb: () => D,
        _D: () => E,
        _J: () => L,
        ck: () => P,
        j$: () => T,
      });
      var a = r(33645),
        n = r.n(a),
        i = r(22837),
        s = r(45699),
        o = r(76217),
        l = r(60014),
        c = r(71944),
        m = r(90626),
        d = r(15759),
        u = r(55963),
        p = r(27666),
        _ = r(86355),
        h = r(74410),
        g = r(43667),
        y = r(93267),
        S = r(12155),
        f = r(32754),
        b = r(52038),
        w = r(61859),
        v = r(61336),
        I = r(30470),
        B = r(12611);
      const C = new Map([
        [
          "b",
          {
            Constructor: function (e) {
              return m.createElement("b", { className: n().Bold }, e.children);
            },
            autocloses: !1,
          },
        ],
        [
          "i",
          {
            Constructor: function (e) {
              return m.createElement(
                "i",
                { className: (0, b.A)(n().Italic, "BB_Italic") },
                e.children,
              );
            },
            autocloses: !1,
          },
        ],
        ["h1", { Constructor: D, autocloses: !1, skipFollowingNewline: !0 }],
        ["h2", { Constructor: M, autocloses: !1, skipFollowingNewline: !0 }],
        ["h3", { Constructor: R, autocloses: !1, skipFollowingNewline: !0 }],
        [
          "h4",
          {
            Constructor: function (e) {
              return G("h4", e, (0, b.A)(n().Header4, "BB_Header4"));
            },
            autocloses: !1,
            skipFollowingNewline: !0,
          },
        ],
        [
          "h5",
          {
            Constructor: function (e) {
              return G("h5", e, (0, b.A)(n().Header5, "BB_Header5"));
            },
            autocloses: !1,
            skipFollowingNewline: !0,
          },
        ],
        [
          "center",
          {
            Constructor: function (e) {
              let t = T(e.args, "id");
              t &&
                "string" == typeof t &&
                t.length > 0 &&
                "#" === t[0] &&
                (t = t.substring(1));
              return m.createElement(
                "span",
                {
                  id: t || void 0,
                  className: (0, b.A)(n().CenterSpan, "BB_Center"),
                },
                e.children,
              );
            },
            autocloses: !1,
          },
        ],
        [
          "smalltext",
          {
            Constructor: function (e) {
              return G("div", e, (0, b.A)(n().SmallText, "BB_SmallText"));
            },
            autocloses: !1,
            skipFollowingNewline: !0,
          },
        ],
        [
          "u",
          {
            Constructor: function (e) {
              return m.createElement(
                "u",
                { className: n().Underline },
                e.children,
              );
            },
            autocloses: !1,
          },
        ],
        [
          "strike",
          {
            Constructor: function (e) {
              return m.createElement(
                "s",
                { className: n().Strike },
                e.children,
              );
            },
            autocloses: !1,
          },
        ],
        [
          "spoiler",
          {
            Constructor: function (e) {
              let [t, r] = m.useState(!1),
                a = m.useCallback(() => {
                  r(!t);
                }, [t]);
              return m.createElement(
                o.Z,
                {
                  className: (0, b.A)(n().Spoiler, t && n().Revealed),
                  focusable: !0,
                  onActivate: a,
                  onOKActionDescription: (0, w.we)(
                    t ? "#Bbcode_Spoiler_Hide" : "#Bbcode_Spoiler_Show",
                  ),
                },
                m.createElement(
                  "span",
                  { className: n().SpoilerText },
                  e.children,
                ),
              );
            },
            autocloses: !1,
          },
        ],
        [
          "hr",
          {
            Constructor: function (e) {
              return m.createElement("hr", { className: n().HR });
            },
            autocloses: !1,
          },
        ],
        [
          "noparse",
          {
            Constructor: function (e) {
              return e.children;
            },
            autocloses: !1,
          },
        ],
        [
          "url",
          {
            Constructor: function (e) {
              let t = T(e.args);
              if (!t) {
                const r = e.children;
                "string" == typeof r &&
                  (r.startsWith("http://") || r.startsWith("https://")) &&
                  (t = r);
              }
              const r = "button" == T(e.args, "style") ? n().LinkButton : null;
              let a = T(e.args, "id");
              a &&
                "string" == typeof a &&
                a.length > 0 &&
                "#" === a[0] &&
                (a = a.substring(1));
              if (void 0 === t && !a) return e.children || "";
              if (
                void 0 === t ||
                ("string" == typeof t && t.length > 0 && "#" == t[0])
              )
                return m.createElement(
                  "a",
                  { href: t ?? null, id: a },
                  e.children,
                );
              return m.createElement(
                k,
                { className: r, href: t, id: a },
                e.children,
              );
            },
            autocloses: !1,
          },
        ],
        ["quote", { Constructor: F, autocloses: !1 }],
        [
          "pullquote",
          {
            Constructor: function (e) {
              return m.createElement(
                "div",
                { className: n().PullQuote },
                e.children,
              );
            },
            autocloses: !1,
          },
        ],
        [
          "code",
          {
            Constructor: function (e) {
              return m.createElement(
                "code",
                { className: n().CodeBlock },
                e.children,
              );
            },
            autocloses: !1,
          },
        ],
        [
          "c",
          {
            Constructor: function (e) {
              return m.createElement(
                "code",
                { className: n().Code },
                e.children,
              );
            },
            autocloses: !1,
          },
        ],
        ["list", { Constructor: U, autocloses: !1, skipInternalNewline: !0 }],
        ["olist", { Constructor: L, autocloses: !1, skipInternalNewline: !0 }],
        ["*", { Constructor: P, autocloses: !0, skipInternalNewline: !0 }],
        [
          "table",
          {
            Constructor: function (e) {
              const t = T(e.args, "noborder"),
                r = T(e.args, "equalcells"),
                a = T(e.args, "colwidth");
              return m.createElement(
                "table",
                {
                  className: (0, b.A)(
                    n().Table,
                    "BB_Table",
                    t && n().NoBorder,
                    r && n().EqualCells,
                  ),
                },
                a &&
                  m.createElement(
                    "colgroup",
                    null,
                    a
                      .split(",")
                      .map((e, t) =>
                        m.createElement("col", {
                          key: t,
                          style: e ? { width: `${e}px` } : void 0,
                        }),
                      ),
                  ),
                m.createElement("tbody", null, e.children),
              );
            },
            autocloses: !1,
            skipInternalNewline: !0,
          },
        ],
        [
          "tr",
          {
            Constructor: function (e) {
              return m.createElement(
                "tr",
                { className: (0, b.A)(n().TableRow, "BB_TableRow") },
                e.children,
              );
            },
            autocloses: !1,
            skipInternalNewline: !0,
            skipFollowingNewline: !0,
          },
        ],
        [
          "th",
          {
            Constructor: function (e) {
              return O("th", e);
            },
            autocloses: !1,
            skipInternalNewline: !0,
            skipFollowingNewline: !0,
          },
        ],
        [
          "td",
          {
            Constructor: function (e) {
              return O("td", e);
            },
            autocloses: !1,
            skipInternalNewline: !0,
            skipFollowingNewline: !0,
          },
        ],
        [
          "expand",
          {
            Constructor: function (e) {
              const t = Boolean(T(e.args, "expanded")),
                [r, a] = m.useState(t),
                i = T(e.args, "title"),
                s = T(e.args, "collapsed_str"),
                o = T(e.args, "expanded_str"),
                l = (function (e, t, r, a) {
                  switch (e) {
                    case "details":
                      return {
                        collapsed: "#Bbcode_Expand_Details_Collapsed",
                        expanded: "#Bbcode_Expand_Details_Expanded",
                        style: n().ExpandSection_Details,
                      };
                    case "spoiler":
                      return {
                        collapsed: "#Bbcode_Expand_Spoiler_Collapsed",
                        expanded: "#Bbcode_Expand_Spoiler_Expanded",
                        style: n().ExpandSection_Spoiler,
                      };
                    case "title":
                      return {
                        collapsed:
                          t || r || "#Bbcode_Expand_ShowMore_Collapsed",
                        expanded: t || a || "#Bbcode_Expand_ShowMore_Expanded",
                        style: n().ExpandSection_WithTitle,
                      };
                    default:
                      return {
                        collapsed: "#Bbcode_Expand_ShowMore_Collapsed",
                        expanded: "#Bbcode_Expand_ShowMore_Expanded",
                        style: n().ExpandSection_ShowMore,
                      };
                  }
                })(T(e.args, "type"), i, s, o);
              return m.createElement(
                "div",
                {
                  className: (0, b.A)({
                    [n().ExpandSectionBlock]: !0,
                    [l.style]: !0,
                    [n().ExpandSectionExpanded]: r,
                    [n().ExpandSectionCollapsed]: !r,
                    BBCodeExpanded: r,
                    BBCodeCollapsed: !r,
                  }),
                },
                m.createElement(
                  "div",
                  { className: n().ExpandSectionHeader, onClick: () => a(!r) },
                  (0, w.we)(r ? l.expanded : l.collapsed),
                  m.createElement(
                    "div",
                    { className: n().EmbedArrow },
                    m.createElement(S.DK4, { angle: r ? 180 : 0 }),
                  ),
                ),
                r &&
                  m.createElement(
                    "div",
                    { className: n().ExpandSectionBody },
                    e.children,
                  ),
              );
            },
            autocloses: !1,
            skipInternalNewline: !0,
            allowWrapTextForCopying: !0,
          },
        ],
        [
          "remindme",
          {
            Constructor: function (e) {
              const { event: t, showErrorInfo: r } = e.context,
                a = T(e.args);
              if (a)
                return m.createElement(g.y, { eventGID: a, bPreviewMode: r });
              if (t) {
                const e = (0, i.sf)(I.TS.LANGUAGE);
                return m.createElement(g.j, { eventModel: t, lang: e });
              }
              return null;
            },
            autocloses: !1,
          },
        ],
        [
          "calendarevent",
          {
            Constructor: function (e) {
              const t = T(e.args, "title"),
                r = T(e.args, "start") ?? T(e.args, "datetime"),
                a = T(e.args, "end") ?? T(e.args, "datetime"),
                i = T(e.args, "body") ?? null,
                s = T(e.args, "location") ?? null,
                o = T(e.args, "id") ?? "",
                l = new Date(r),
                d = l.getUTCFullYear(),
                u = ("0" + (l.getUTCMonth() + 1)).slice(-2),
                p = ("0" + l.getUTCDate()).slice(-2),
                _ = ("0" + l.getUTCHours()).slice(-2),
                h = ("0" + l.getUTCMinutes()).slice(-2),
                g = `${d}${u}${p}T${_}${h}00Z`,
                y = new Date(a),
                S = y.getUTCFullYear(),
                f = ("0" + (y.getUTCMonth() + 1)).slice(-2),
                w = ("0" + y.getUTCDate()).slice(-2),
                v = ("0" + y.getUTCHours()).slice(-2),
                I = ("0" + y.getUTCMinutes()).slice(-2),
                B = `${S}${f}${w}T${v}${I}00Z`;
              let C;
              try {
                let e = "BEGIN:VCALENDAR\r\n";
                (e += "VERSION:2.0\r\n"),
                  (e += "BEGIN:VEVENT\r\n"),
                  (e += `DTSTART:${g}\r\n`),
                  (e += `DTEND:${B}\r\n`),
                  (e += `SUMMARY:${t.replace("\n", "\\n")}\r\n`),
                  i && (e += `DESCRIPTION:${i.replace("\n", "\\n")}\r\n`),
                  s && (e += `LOCATION:${s.replace("\n", "\\n")}\r\n`),
                  (e += "END:VEVENT\r\n"),
                  (e += "END:VCALENDAR\r\n"),
                  (C = `data:text/calendar;charset=utf-8;base64,${c.fromByteArray(new TextEncoder().encode(e))}`);
              } catch (e) {
                console.error(e);
              }
              let E =
                "https://calendar.google.com/calendar/render?action=TEMPLATE";
              (E += `&text=${encodeURI(t)}`),
                (E += `&details=${encodeURI(i)}`),
                (E += `&dates=${encodeURI(g + "/" + B)}`);
              const A = (e) => {
                if ("ReactNativeWebView" in window) {
                  const r = window.ReactNativeWebView,
                    a = {
                      event_name: "addcalendarevent",
                      tsStart: l.getTime(),
                      tsEnd: y.getTime(),
                      strTitle: t,
                      strNotes: i,
                      strLocation: s,
                    };
                  r.postMessage(JSON.stringify(a)), e.preventDefault();
                }
              };
              return m.createElement(
                "div",
                {
                  className: (0, b.A)(
                    "SaleSectionCalendarEventContainer",
                    n().CalendarEventContainer,
                  ),
                  id: o,
                },
                C &&
                  m.createElement(
                    "a",
                    {
                      className: (0, b.A)(
                        "SaleSectionCalendarEventLink",
                        n().CalendarEventLink,
                      ),
                      href: C,
                      onClick: A,
                      download: "steam_deck_white_release.ics",
                    },
                    "Apple",
                  ),
                m.createElement(
                  "a",
                  {
                    className: (0, b.A)(
                      "SaleSectionCalendarEventLink",
                      n().CalendarEventLink,
                    ),
                    href: E,
                  },
                  "Google",
                ),
                C &&
                  m.createElement(
                    "a",
                    {
                      className: (0, b.A)(
                        "SaleSectionCalendarEventLink",
                        n().CalendarEventLink,
                      ),
                      href: C,
                      onClick: A,
                      download: "steam_deck_white_release.ics",
                    },
                    "Outlook",
                  ),
              );
            },
            autocloses: !0,
          },
        ],
        [
          "doclink",
          {
            Constructor: function (e) {
              const t = T(e.args),
                r = "button" == T(e.args, "style") ? n().LinkButton : null;
              return m.createElement(
                k,
                { className: r, href: `${I.TS.PARTNER_BASE_URL}doc/${t}` },
                e.children,
              );
            },
            autocloses: !1,
          },
        ],
        [
          "color",
          {
            Constructor: function (e) {
              const t = T(e.args);
              return m.createElement(
                "span",
                { style: { color: t } },
                e.children,
              );
            },
            autocloses: !1,
          },
        ],
        [
          "p",
          {
            Constructor: function (e) {
              return m.createElement(
                "p",
                { className: n().Paragraph },
                e.children,
                m.createElement("wbr", null),
              );
            },
            autocloses: !1,
            skipFollowingNewline: !0,
          },
        ],
      ]);
      new Map([
        ["looping_media", { Constructor: N, autocloses: !1 }],
        ["video", { Constructor: W, autocloses: !1 }],
        ["youtubeorvideo", { Constructor: h.Eo, autocloses: !1 }],
        ["previewyoutube", { Constructor: h.gH, autocloses: !1 }],
      ]);
      function E(e, t, r = 0) {
        if (e?.startsWith(B.lw)) return (0, p.v6)(e);
        if (e?.startsWith(B.eg)) {
          const a = new Array(),
            n = (0, p.mJ)(),
            s = e.substring(B.eg.length + 1),
            o = _.i6.GetHashFromHashAndExt(s),
            l = _.i6.GetExtensionStringFromHashAndExt(s);
          if (null != t) {
            let e = (0, i.Lg)(t);
            a.push(n + o + "/" + e + l + "?t=" + r),
              4 == t &&
                ((e = (0, i.x6)((0, i.Lg)(t))),
                a.push(n + o + "/" + e + l + "?t=" + r));
          }
          return a.push(n + s), a;
        }
        return e;
      }
      function T(e, t) {
        return void 0 === t ? e[""] : e[t];
      }
      function A(e, t) {
        return (r) => e({ ...r, className: (0, b.A)(r.className, t) });
      }
      function G(e, t, r) {
        let a = T(t.args, "id");
        return (
          a || (a = T(t.args)),
          a &&
            "string" == typeof a &&
            a.length > 0 &&
            "#" === a[0] &&
            (a = a.substring(1)),
          m.createElement(
            e,
            { id: a || void 0, className: (0, b.A)(r, t.className) },
            t.children,
          )
        );
      }
      function D(e) {
        return G("h1", e, (0, b.A)(n().Header1, "BB_Header1"));
      }
      function M(e) {
        return G("h2", e, (0, b.A)(n().Header2, "BB_Header2"));
      }
      function R(e) {
        return G("h3", e, (0, b.A)(n().Header3, "BB_Header3"));
      }
      const k = (e) => {
        const { href: t, ...r } = e,
          a = (0, l.n9)();
        let n,
          i = (0, u.VZ)(t, a);
        (0, d.p)(i)
          ? ((i =
              (I.TS.IN_CLIENT ? "steam://openurl_external/" : "") +
              (0, d.E)(i)),
            (n = "noopener nofollow"))
          : (i = (0, v.NT)(i));
        const o =
          "string" == typeof e.children &&
          e.children.length > 0 &&
          t &&
          !t.startsWith("steam://")
            ? (0, v.Qz)(t)
            : void 0;
        return m.createElement(
          f.Gq,
          { toolTipContent: o, direction: "top" },
          m.createElement(s.Ii, { ...r, href: i, rel: n }, e.children),
        );
      };
      function F(e) {
        const t = T(e.args, "author");
        return m.createElement(
          "blockquote",
          { className: (0, b.A)(n().BlockQuote, e.className) },
          !!t &&
            m.createElement(
              "div",
              { className: n().QuoteAuthor },
              (0, w.we)("#Bbcode_Originally_Posted_By") + " ",
              " ",
              m.createElement("b", null, t + ":"),
            ),
          e.children,
        );
      }
      function U(e) {
        return m.createElement(
          "ul",
          { className: (0, b.A)(n().List, "bullets") },
          e.children,
        );
      }
      function L(e) {
        return m.createElement(
          "ol",
          { className: n().OrderedList },
          e.children,
        );
      }
      function P(e) {
        let t = T(e.args, "id");
        return (
          t &&
            "string" == typeof t &&
            t.length > 0 &&
            "#" === t[0] &&
            (t = t.substring(1)),
          m.createElement(
            "li",
            { className: n().ListItem, id: t || void 0 },
            e.children,
          )
        );
      }
      function O(e, t) {
        const r = T(t.args, "width"),
          a = T(t.args, "colspan"),
          i = T(t.args, "rowspan"),
          s = {};
        return (
          a && parseInt(a) > 1 && (s.colSpan = parseInt(a)),
          i && parseInt(i) > 1 && (s.rowSpan = parseInt(i)),
          m.createElement(
            e,
            {
              className: (0, b.A)(n().TableCell, "td" == e && "BB_TableData"),
              ...s,
              style: r && { width: r },
            },
            t.children,
          )
        );
      }
      function z(e) {
        let t = T(e.args, "poster");
        t && (t = (0, v.L$)(t));
        const r = new Array();
        {
          const t = T(e.args, "mp4");
          t && r.push({ sURL: (0, v.L$)(t), sFormat: "video/mp4" });
          const a = T(e.args, "webm");
          a && r.push({ sURL: (0, v.L$)(a), sFormat: "video/webm" });
        }
        const a = (0, i.sf)(I.TS.LANGUAGE),
          n = 0 != a,
          s = new Array();
        for (let t = 0; t < 31; t++) {
          const r = T(e.args, "sub_" + (0, i.ww)(t));
          r &&
            s.push({
              sURL: (0, v.L$)(r),
              eLanguage: t,
              sKind: "subtitles",
              bDefault: n && t == a,
            });
          const o = T(e.args, "cap_" + (0, i.ww)(t));
          o &&
            s.push({
              sURL: (0, v.L$)(o),
              eLanguage: t,
              sKind: "captions",
              bDefault: n && t == a,
            });
        }
        return { sPoster: t, rgVideoSources: r, rgVideoTracks: s };
      }
      function N(e) {
        const t = z(e);
        return m.createElement(y.L, {
          video: t,
          bAutoPlay: !0,
          bControls: !1,
          bLoop: !0,
        });
      }
      function W(e) {
        const t = z(e),
          r = e.children ? e.children.toString() : void 0;
        r &&
          r.startsWith("http") &&
          t.rgVideoSources.push({ sURL: (0, v.L$)(r), sFormat: "video/webm" });
        const a = T(e.args, "autoplay"),
          n = "0" !== a && "off" !== a && "false" !== a,
          i = T(e.args, "controls"),
          s = "0" !== i && "off" !== i && "false" !== i,
          o = T(e.args, "loop"),
          l = "0" !== i && "off" !== i && "false" !== i;
        return m.createElement(y.L, {
          video: t,
          bAutoPlay: n,
          bControls: s,
          bLoop: o ? l : n,
        });
      }
    },
    6866: (e, t, r) => {
      "use strict";
      r.d(t, { Pm: () => d, d$: () => u, tB: () => m });
      var a = r(90626),
        n = r(55963),
        i = r(61336),
        s = r(78327),
        o = r(15759),
        l = r(32754);
      function c(e, t) {
        return (0, o.p)(
          e,
          (function (e) {
            return [
              e?.jsondata?.read_more_link
                ? (0, i.wm)(e.jsondata.read_more_link).toLocaleLowerCase()
                : void 0,
            ];
          })(t),
        );
      }
      function m(e, t) {
        return (e = c(e, t)
          ? (s.TS.IN_CLIENT ? "steam://openurl_external/" : "") + (0, o.E)(e)
          : (0, i.NT)(e));
      }
      function d(e, t, r) {
        let n = e;
        return (
          n.toLowerCase().startsWith("http") || (n = "http://" + n),
          a.createElement(u, { url: n, event: t }, r || e)
        );
      }
      const u = (e) => {
        const { url: t, event: r, className: s } = e;
        let c,
          d = (0, n.VZ)(t);
        (d = m(d, r)), (0, o.p)(d) && (c = "noopener nofollow");
        const u =
          "string" == typeof e.children &&
          e.children.length > 0 &&
          t &&
          !t.startsWith("steam://")
            ? (0, i.Qz)(t)
            : void 0;
        return a.createElement(
          l.Gq,
          { toolTipContent: u, direction: "top" },
          a.createElement(
            "a",
            { className: s, href: d, rel: c, id: e.id },
            e.children,
          ),
        );
      };
    },
    3067: (e, t, r) => {
      "use strict";
      r.d(t, { td: () => o });
      var a = r(34629),
        n = r(14947),
        i = r(78327);
      i.TS.CHAT_BASE_URL, i.TS.CHAT_BASE_URL;
      class s {
        bValid = !1;
        stream = { 0: "#Broadcast_EnglishMain" };
        name = "";
        appName = "";
        appID = 0;
        link = "";
        linkName = "";
        tabIcon = "";
        offlineImage = "";
        gidEvent = "";
        constructor(e) {
          (0, n.Gn)(this), this.init(e);
        }
        init(e) {
          (this.bValid = e.bValid),
            (this.stream = e.stream),
            (this.name = e.name),
            (this.appName = e.appName),
            (this.appID = e.appID),
            (this.link = e.link),
            (this.linkName = e.linkName),
            (this.tabIcon = e.tabIcon),
            (this.offlineImage = e.offlineImage),
            (this.gidEvent = e.gidEvent);
        }
      }
      (0, a.Cg)([n.sH], s.prototype, "bValid", void 0),
        (0, a.Cg)([n.sH], s.prototype, "stream", void 0),
        (0, a.Cg)([n.sH], s.prototype, "name", void 0),
        (0, a.Cg)([n.sH], s.prototype, "appName", void 0),
        (0, a.Cg)([n.sH], s.prototype, "appID", void 0),
        (0, a.Cg)([n.sH], s.prototype, "link", void 0),
        (0, a.Cg)([n.sH], s.prototype, "linkName", void 0),
        (0, a.Cg)([n.sH], s.prototype, "tabIcon", void 0),
        (0, a.Cg)([n.sH], s.prototype, "offlineImage", void 0),
        (0, a.Cg)([n.sH], s.prototype, "gidEvent", void 0);
      let o = new s({
        bValid: !1,
        stream: { 0: "#Broadcast_EnglishMain" },
        name: "",
        appName: "",
        appID: 0,
        link: "",
        linkName: "",
        tabIcon: "",
        offlineImage: "",
      });
    },
    4299: (e, t, r) => {
      "use strict";
      var a, n;
      r.d(t, { J8: () => i, X8: () => n }),
        (function (e) {
          (e[(e.Hover = 0)] = "Hover"),
            (e[(e.ClickPopup = 1)] = "ClickPopup"),
            (e[(e.ClickSurroundingRegion = 2)] = "ClickSurroundingRegion");
        })(a || (a = {})),
        (function (e) {
          (e[(e.Chat = 0)] = "Chat"),
            (e[(e.Notification = 1)] = "Notification"),
            (e[(e.Error = 2)] = "Error");
        })(n || (n = {}));
      class i {}
    },
    57876: (e, t, r) => {
      "use strict";
      r.d(t, { Jw: () => n, Xh: () => a });
      r(30894), r(82097), r(62792), r(78327);
      const a = {
        include_assets: !0,
        include_release: !0,
        include_platforms: !0,
        include_tag_count: 20,
        include_basic_info: !0,
        include_trailers: !0,
        include_reviews: !0,
        include_screenshots: !0,
        include_supported_languages: !0,
      };
      function n() {
        return { width: 231, height: 87 };
      }
    },
    73744: (e, t, r) => {
      "use strict";
      r.d(t, {
        FZ: () => n,
        Fj: () => h,
        Hj: () => s,
        Ho: () => p,
        N_: () => b,
        PL: () => c,
        XY: () => S,
        Yw: () => a,
        _d: () => o,
        cV: () => m,
        on: () => l,
        s4: () => y,
        tW: () => i,
        vz: () => f,
        x: () => _,
        yu: () => g,
      });
      const a = ["app_header_capsule", "app_main_capsule"],
        n = [
          "sale_header",
          "sale_logo",
          "capsule",
          "product_banner",
          "product_mobile_banner",
          "localized_title_image",
        ],
        i = ["takeunder_art", "takeunder_mobile_art"],
        s = [
          "takeover_art",
          "takeover_mobile_art",
          "takeover_webm_art",
          "takeover_mp4_art",
          "takeover_webm_mobile_art",
          "takeover_mp4_mobile_art",
        ],
        o = ["marketingmessage_art", "marketingmessage_art_2"],
        l = [
          "marketingmessage_art_eventcapsule",
          "marketingmessage_art_2_eventcapsule",
        ],
        c = ["spotlight_art"],
        m = [...a, ...n, ...i, ...s, ...o, ...l, ...c],
        d = [1, 3, 2],
        u = [1, 3],
        p = [5, 4],
        _ = [7, 6],
        h = {
          capsule: { width: 800, height: 450, rgAcceptableTypes: u },
          marketingmessage_art_2_eventcapsule: {
            width: 800,
            height: 450,
            rgAcceptableTypes: u,
          },
          marketingmessage_art_eventcapsule: {
            width: 800,
            height: 450,
            rgAcceptableTypes: u,
          },
          spotlight: { width: 2108, height: 460, rgAcceptableTypes: u },
          localized_store_app_spotlight: {
            width: 1100,
            height: 240,
            rgAcceptableTypes: u,
          },
          localized_store_app_spotlight_mobile: {
            width: 500,
            height: 160,
            rgAcceptableTypes: u,
          },
          localized_title_image: {
            width: 1920,
            height: 622,
            rgAcceptableTypes: u,
          },
          background: { width: 1920, height: 622, rgAcceptableTypes: u },
          hero: {
            width: 0,
            height: 0,
            bDisableEnforceDimensions: !0,
            rgAcceptableTypes: u,
          },
          email_full: { width: 800, height: 300, rgAcceptableTypes: u },
          email_centered: { width: 644, height: 300, rgAcceptableTypes: u },
          broadcast_left: { width: 155, height: 337, rgAcceptableTypes: u },
          broadcast_right: { width: 155, height: 337, rgAcceptableTypes: u },
          sale_header: {
            width: 0,
            height: 0,
            bDisableEnforceDimensions: !0,
            rgAcceptableTypes: d,
          },
          sale_overlay: {
            width: 0,
            height: 0,
            bDisableEnforceDimensions: !0,
            rgAcceptableTypes: d,
          },
          localized_image_group: {
            width: 0,
            height: 0,
            bDisableEnforceDimensions: !0,
            rgAcceptableTypes: u,
          },
          localized_background_art: {
            width: 0,
            height: 0,
            bDisableEnforceDimensions: !0,
            rgAcceptableTypes: u,
          },
          sale_section_background: {
            width: 0,
            height: 0,
            bDisableEnforceDimensions: !0,
            rgAcceptableTypes: d,
          },
          sale_section_title: {
            width: 0,
            height: 0,
            bDisableEnforceDimensions: !0,
            rgAcceptableTypes: d,
          },
          link_capsule: {
            width: 0,
            height: 0,
            bDisableEnforceDimensions: !0,
            rgAcceptableTypes: u,
          },
          product_banner: { width: 1100, height: 160, rgAcceptableTypes: u },
          product_mobile_banner: {
            width: 500,
            height: 160,
            rgAcceptableTypes: u,
          },
          product_banner_override: {
            width: 1100,
            height: 160,
            rgAcceptableTypes: u,
          },
          product_mobile_banner_override: {
            width: 500,
            height: 160,
            rgAcceptableTypes: u,
          },
          schedule_track_art: { width: 196, height: 92, rgAcceptableTypes: u },
          tab_bar_background: {
            width: 1500,
            height: 100,
            rgAcceptableTypes: u,
          },
          sale_logo: { width: 940, height: 460, rgAcceptableTypes: u },
          bestofyear_banner: { width: 1100, height: 160, rgAcceptableTypes: d },
          bestofyear_banner_mobile: {
            width: 500,
            height: 160,
            rgAcceptableTypes: d,
          },
          localized_marketing_message: {
            width: 570,
            height: 600,
            rgAcceptableTypes: [1, 3, 2, 10],
          },
          localized_optin_banner: {
            width: 1e3,
            height: 150,
            rgAcceptableTypes: u,
          },
          localized_marketingmessage_webm: {
            width: 570,
            height: 600,
            rgAcceptableTypes: [5],
          },
          localized_marketingmessage_mp4: {
            width: 570,
            height: 600,
            rgAcceptableTypes: [4],
          },
          localized_partnerevent_webm: {
            width: 800,
            height: 450,
            rgAcceptableTypes: [5],
          },
          localized_partnerevent_mp4: {
            width: 800,
            height: 450,
            rgAcceptableTypes: [4],
          },
          localized_subtitles: {
            width: 0,
            height: 0,
            bDisableEnforceDimensions: !0,
            rgAcceptableTypes: [6, 7],
          },
          localized_marketingmessage_poster: {
            width: 528,
            height: 297,
            rgAcceptableTypes: [1, 3],
          },
          localized_marketingmessage_background: {
            width: 570,
            height: 600,
            rgAcceptableTypes: u,
          },
          localized_email_image: {
            width: 0,
            height: 0,
            bDisableEnforceDimensions: !0,
            rgAcceptableTypes: u,
          },
          spotlight_art: { width: 306, height: 260, rgAcceptableTypes: d },
          old_spotlight_art: { width: 306, height: 350, rgAcceptableTypes: d },
          marketingmessage_art: {
            width: 570,
            height: 600,
            rgAcceptableTypes: d,
          },
          marketingmessage_art_2: {
            width: 570,
            height: 600,
            rgAcceptableTypes: d,
          },
          takeover_art: { width: 1850, height: 450, rgAcceptableTypes: d },
          takeover_webm_art: {
            width: 1850,
            height: 450,
            rgAcceptableTypes: [5],
          },
          takeover_mp4_art: {
            width: 1850,
            height: 450,
            rgAcceptableTypes: [4],
          },
          takeover_mobile_art: {
            width: 500,
            height: 350,
            rgAcceptableTypes: d,
          },
          takeover_webm_mobile_art: {
            width: 500,
            height: 350,
            rgAcceptableTypes: [5],
          },
          takeover_mp4_mobile_art: {
            width: 500,
            height: 350,
            rgAcceptableTypes: [4],
          },
          takeunder_art: { width: 940, height: 150, rgAcceptableTypes: d },
          takeunder_mobile_art: {
            width: 500,
            height: 160,
            rgAcceptableTypes: d,
          },
          app_header_capsule: { width: 920, height: 430, rgAcceptableTypes: u },
          app_main_capsule: { width: 1232, height: 706, rgAcceptableTypes: u },
        };
      function g(e, t, r) {
        const a = h[r];
        return (
          !!a && !a.bDisableEnforceDimensions && e === a.width && t === a.height
        );
      }
      function y(e, t, r) {
        const a = h[r];
        return (
          !!a &&
          (!!a.bDisableEnforceDimensions || !(e < a.width || t < a.height))
        );
      }
      function S(e) {
        const t = h[e];
        return (
          t.rgAcceptableTypes.includes(6) || t.rgAcceptableTypes.includes(7)
        );
      }
      function f(e, t) {
        return t.filter((t) => b(e, t));
      }
      function b(e, t) {
        return h[t].rgAcceptableTypes.includes(e);
      }
    },
    47822: (e, t, r) => {
      "use strict";
      r.d(t, { NK: () => o, bK: () => a, dF: () => l, w2: () => c });
      var a,
        n = r(82097),
        i = r(4796),
        s = r(61859);
      !(function (e) {
        (e[(e.k_eLibrary = 1)] = "k_eLibrary"),
          (e[(e.k_eWishlist = 2)] = "k_eWishlist"),
          (e[(e.k_eFollowing = 4)] = "k_eFollowing"),
          (e[(e.k_eRecommended = 8)] = "k_eRecommended"),
          (e[(e.k_eSteam = 16)] = "k_eSteam"),
          (e[(e.k_eRequired = 32)] = "k_eRequired"),
          (e[(e.k_eFeatured = 64)] = "k_eFeatured"),
          (e[(e.k_eCurator = 128)] = "k_eCurator"),
          (e[(e.k_eReposted = 256)] = "k_eReposted");
      })(a || (a = {}));
      class o {
        clanid;
        unique_id;
        event_type;
        appid;
        start_time;
        appInfo;
        clanInfo;
        score;
        GetSource() {
          return this.appInfo ? this.appInfo.source : this.clanInfo.source;
        }
        static GetEntityNameForID(e, t) {
          if (e) return n.A.Get().GetApp(e)?.GetName();
          if (t) {
            const e = i.ac.GetClanInfoByClanAccountID(t);
            if (e) return e.group_name;
          }
          return (0, s.we)("#EventCalendar_MuteApp_Unknown");
        }
        static BHasEntityNameForID(e, t) {
          return e
            ? Boolean(n.A.Get().GetApp(e)?.GetName())
            : !!t && !!i.ac.GetClanInfoByClanAccountID(t)?.group_name;
        }
        GetEntityName() {
          return o.GetEntityNameForID(this.appid, this.clanid);
        }
        GetGameCapsule() {
          if (this.appInfo)
            return n.A.Get()
              .GetApp(this.appInfo.appid)
              ?.GetAssets()
              ?.GetMainCapsuleURL();
          if (this.clanInfo) {
            let e = i.ac.GetClanInfoByClanAccountID(this.clanInfo.clanid);
            if (e) return e.avatar_full_url;
          }
          return (0, s.we)("#EventCalendar_MuteApp_Unknown");
        }
        GetGameIcon() {
          if (this.appInfo)
            return n.A.Get()
              .GetApp(this.appInfo.appid)
              ?.GetAssets()
              ?.GetCommunityIconURL();
          if (this.clanInfo) {
            let e = i.ac.GetClanInfoByClanAccountID(this.clanInfo.clanid);
            if (e) return e.avatar_full_url;
          }
          return (0, s.we)("#EventCalendar_MuteApp_Unknown");
        }
      }
      class l {
        appid;
        source;
        playtime;
        last_played;
        wishlist_added;
      }
      class c {
        clanid;
        source;
      }
    },
    77516: (e, t, r) => {
      "use strict";
      r.d(t, {
        ye: () => O,
        DJ: () => W,
        G6: () => z,
        zv: () => A,
        IS: () => k,
        GE: () => M,
        yX: () => R,
        w: () => N,
        EE: () => D,
        lh: () => V,
        qR: () => P,
        dm: () => j,
        DU: () => v,
        mW: () => E,
        GU: () => I,
        bv: () => B,
        Kd: () => C,
        b9: () => G,
        cB: () => H,
      });
      var a = r(34629),
        n = r(79821),
        i = r(2160),
        s = r(14947);
      const o = {
        bBroadcastEnabled: !1,
        broadcastChatSetting: "hide",
        default_broadcast_title: "#Broadcast_default_title_dev",
        localized_broadcast_title: new Array(31),
        localized_broadcast_left_image: new Array(31),
        localized_broadcast_right_image: new Array(31),
        broadcast_whitelist: [],
      };
      var l = r(17720),
        c = r(27666),
        m = r(86355),
        d = r(4796),
        u = r(67165),
        p = r(44165),
        _ = r(82097),
        h = r(44332),
        g = r(61859),
        y = r(19719),
        S = r(27543),
        f = (r(41735), r(90626), r(68797), r(78327));
      var b = r(41338),
        w = (r(14771), r(6419));
      (0, a.Cg)(
        [w.o],
        class {
          m_eventModel;
          m_entry;
          constructor(e, t) {
            (this.m_eventModel = e), (this.m_entry = t);
          }
          GetEventStartTime() {
            return this.m_entry.rtime_start_specific
              ? this.m_entry.rtime_start_specific
              : this.m_eventModel.startTime +
                  this.m_entry.delta_from_event_start_seconds;
          }
        }.prototype,
        "GetEventStartTime",
        null,
      );
      new Set([9, 11, 20, 21, 22, 23, 24, 25, 26, 27, 31, 35]);
      const v = 593110,
        I = 39049601,
        B = 41316928,
        C = 4,
        E = 20,
        T = 9e4;
      var A;
      !(function (e) {
        (e[(e.k_EEventStateUnpublished = 0)] = "k_EEventStateUnpublished"),
          (e[(e.k_EEventStateStaged = 1)] = "k_EEventStateStaged"),
          (e[(e.k_EEventStateVisible = 2)] = "k_EEventStateVisible"),
          (e[(e.k_EEventStatsUnlisted = 3)] = "k_EEventStatsUnlisted");
      })(A || (A = {}));
      const G = [
        {
          label: "#Sale_BrowserSortOption_NewAndTrending",
          flavor: "newandtrending",
          tooltip: "#Sale_BrowserSortOption_NewAndTrending_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_TopWishlisted",
          flavor: "topwishlisted",
          tooltip: "#Sale_BrowserSortOption_TopWishlisted_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_TrendingWishlisted",
          flavor: "trendingwishlisted",
          tooltip: "#Sale_BrowserSortOption_TrendingWishlisted_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_PopularUpcoming",
          flavor: "popularcomingsoon",
          tooltip: "#Sale_BrowserSortOption_PopularUpcoming_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_MostPlayedDemo",
          flavor: "mostplayeddemo",
          tooltip: "#Sale_BrowserSortOption_MostPlayedDemo_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_DailyActiveUserDemo",
          flavor: "dailyactiveuserdemo",
          tooltip: "#Sale_BrowserSortOption_DailyActiveUserDemo_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_PlayedNowDemo",
          flavor: "playednowdemo",
          tooltip: "#Sale_BrowserSortOption_PlayedNowDemo_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_RecentlyReleased",
          flavor: "recentlyreleased",
          tooltip: "#Sale_BrowserSortOption_RecentlyReleased_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_PopularPurchased",
          flavor: "popularpurchased",
          tooltip: "#Sale_BrowserSortOption_PopularPurchased_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_PopularPurchasedDiscounted",
          flavor: "popularpurchaseddiscounted",
          tooltip: "#Sale_BrowserSortOption_PopularPurchasedDiscounted_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_Discounted",
          flavor: "discounted",
          tooltip: "#Sale_BrowserSortOption_Discounted_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_Price",
          flavor: "price",
          tooltip: "#Sale_BrowserSortOption_Price_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_All",
          flavor: "all",
          tooltip: "#Sale_BrowserSortOption_All_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_ContentHub_NewAndTrending",
          flavor: "contenthub_newandtrending",
          tooltip: "#Sale_BrowserSortOption_ContentHub_NewAndTrending_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_ContentHub_TopSellers",
          flavor: "contenthub_topsellers",
          tooltip: "#Sale_BrowserSortOption_ContentHub_TopSellers_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_ContentHub_Popular",
          flavor: "contenthub_popular",
          tooltip: "#Sale_BrowserSortOption_ContentHub_Popular_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_ContentHub_TopRated",
          flavor: "contenthub_toprated",
          tooltip: "#Sale_BrowserSortOption_ContentHub_TopRated_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_ContentHub_Upcoming",
          flavor: "contenthub_upcoming",
          tooltip: "#Sale_BrowserSortOption_ContentHub_Upcoming_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_ContentHub_All",
          flavor: "contenthub_all",
          tooltip: "#Sale_BrowserSortOption_ContentHub_All_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_MLWishlist",
          flavor: "ml_wishlist_recommender",
          tooltip: "#Sale_BrowserSortOption_MLWishlist_ttip",
        },
        {
          label: "#Sale_BrowserSortOption_MLPlaytime",
          flavor: "ml_playtime_recommender",
          tooltip: "#Sale_BrowserSortOption_MLPlaytime_ttip",
        },
      ];
      var D, M, R, k, F, U, L;
      function P(e) {
        return Boolean(e?.store_filter)
          ? JSON.stringify(e.store_filter)
          : void 0;
      }
      function O(e) {
        return (
          "items" === e ||
          "trailercarousel" === e ||
          "crosspromotesalepage" == e
        );
      }
      !(function (e) {
        (e[(e.k_EStoreFilterClauseTypeOr = 0)] = "k_EStoreFilterClauseTypeOr"),
          (e[(e.k_EStoreFilterClauseTypeAnd = 1)] =
            "k_EStoreFilterClauseTypeAnd"),
          (e[(e.k_EStoreFilterClauseTypeStoreTag = 2)] =
            "k_EStoreFilterClauseTypeStoreTag"),
          (e[(e.k_EStoreFilterClauseTypeFeatureTag = 3)] =
            "k_EStoreFilterClauseTypeFeatureTag"),
          (e[(e.k_EStoreFilterClauseTypeLanguage = 4)] =
            "k_EStoreFilterClauseTypeLanguage"),
          (e[(e.k_EStoreFilterClauseTypeContentDescriptor = 5)] =
            "k_EStoreFilterClauseTypeContentDescriptor"),
          (e[(e.k_EStoreFilterClauseTypePrice = 6)] =
            "k_EStoreFilterClauseTypePrice"),
          (e[(e.k_EStoreFilterClauseTypeAppType = 7)] =
            "k_EStoreFilterClauseTypeAppType");
      })(D || (D = {})),
        (function (e) {
          (e[(e.k_ESaleTagFilter = 0)] = "k_ESaleTagFilter"),
            (e[(e.k_ELanguage = 1)] = "k_ELanguage"),
            (e[(e.k_EContentDescriptor = 2)] = "k_EContentDescriptor"),
            (e[(e.k_EUserPreference = 3)] = "k_EUserPreference"),
            (e[(e.k_EPrice = 4)] = "k_EPrice"),
            (e[(e.k_EAppType = 5)] = "k_EAppType");
        })(M || (M = {})),
        (function (e) {
          (e[(e.k_EHideOwnedItems = 0)] = "k_EHideOwnedItems"),
            (e[(e.k_EHideWishlistedItems = 1)] = "k_EHideWishlistedItems"),
            (e[(e.k_EHideIgnoredItems = 2)] = "k_EHideIgnoredItems");
        })(R || (R = {})),
        (function (e) {
          (e[(e.k_ESortFacetsByName = 0)] = "k_ESortFacetsByName"),
            (e[(e.k_ESortFacetsByMatchCount = 1)] =
              "k_ESortFacetsByMatchCount"),
            (e[(e.k_ESortFacetsManually = 2)] = "k_ESortFacetsManually");
        })(k || (k = {})),
        (function (e) {
          (e.Steam = "Steam"),
            (e.Facebook = "Facebook"),
            (e.Twitter = "Twitter"),
            (e.Reddit = "Reddit");
        })(F || (F = {})),
        (function (e) {
          (e.Summary = "summary"),
            (e.SummaryLargeImage = "summary_large_image");
        })(U || (U = {})),
        (function (e) {
          (e.SingleMedia = "SingleMedia"),
            (e.DoubleMedia = "DoubleMedia"),
            (e.QuadMedia = "QuadMedia"),
            (e.MediaLeft = "MediaLeft"),
            (e.MediaRight = "MediaLeft");
        })(L || (L = {}));
      const z = {
        capsules: [],
        events: [],
        links: [],
        localized_label: new Array(31),
        localized_label_image: new Array(31),
        default_label: "#Sale_default_label",
        section_type: "unselected_empty",
      };
      var N;
      !(function (e) {
        (e[(e.k_ETaggedItems = 0)] = "k_ETaggedItems"),
          (e[(e.k_EContentHub = 1)] = "k_EContentHub");
      })(N || (N = {}));
      const W = {
          localized_subtitle: new Array(31),
          localized_summary: new Array(31),
          localized_title_image: new Array(31),
          localized_capsule_image: new Array(31),
          bSaleEnabled: !1,
          sale_show_creator: !1,
          sale_sections: [],
          sale_browsemore_text: "",
          sale_browsemore_url: "",
          sale_browsemore_color: "",
          sale_browsemore_bgcolor: "",
          localized_sale_header: new Array(31),
          localized_sale_overlay: new Array(31),
          localized_sale_product_banner: new Array(31),
          localized_sale_product_mobile_banner: new Array(31),
          localized_sale_logo: new Array(31),
          sale_font: "",
          sale_background_color: "",
          sale_header_offset: 530,
          referenced_appids: [],
          ...o,
          bScheduleEnabled: !1,
          scheduleEntries: [],
        },
        H = "old_announce_",
        j = 80,
        x = [
          "workshop",
          "patchnotes",
          "contenthub",
          "skip_megaphone",
          "curator",
          "curator_group_members",
          "curator_public",
          "audience_followers",
          "enable_steam_china",
          "disable_steam_global",
          "adult_only_content",
          "stablechannel",
          "betachannel",
          "previewchannel",
        ];
      class V {
        constructor() {
          (0, s.Gn)(this);
        }
        GID = void 0;
        AnnouncementGID = void 0;
        clanSteamID;
        forumTopicGID = void 0;
        type = 1;
        appid = 0;
        name = new Map();
        description = new Map();
        timestamp_loc_updated = new Map();
        startTime = void 0;
        endTime = void 0;
        visibilityStartTime = void 0;
        visibilityEndTime = void 0;
        m_nBuildID = void 0;
        m_strBuildBranch = void 0;
        postTime = void 0;
        visibility_state = A.k_EEventStateUnpublished;
        broadcaster = void 0;
        jsondata = W;
        nCommentCount = 0;
        nVotesUp = 0;
        nVotesDown = 0;
        comment_type;
        gidfeature;
        gidfeature2;
        featured_app_tagid;
        bOldAnnouncement = !1;
        announcementClanSteamID = void 0;
        loadedAllLanguages = !1;
        bLoaded = !1;
        deleteInProgress = !1;
        vecTags = new Array();
        creator_steamid;
        last_update_steamid = void 0;
        rtime32_last_modified = void 0;
        rtime32_last_solr_search_col_updated = void 0;
        rtime32_last_local_modification = void 0;
        rtime32_moderator_reviewed = void 0;
        video_preview_type = void 0;
        video_preview_id = void 0;
        has_live_stream;
        live_stream_viewer_count;
        m_overrideCurrentDay = void 0;
        BIsPartnerEvent() {
          return !this.bOldAnnouncement && Boolean(this.GID);
        }
        static FromJSON(e) {
          let t = new V(),
            r = JSON.parse(e);
          return (
            Object.assign(t, r),
            (t.name = new Map(r.name)),
            (t.description = new Map(r.description)),
            (t.vecTags = new Array(r.vecTags)),
            (t.clanSteamID = new l.b(r.clanSteamID)),
            (0, h.w)(
              t.clanSteamID && t.clanSteamID.BIsValid(),
              "Invalid Clan SteamID: " + t.clanSteamID.ConvertTo64BitString(),
            ),
            r.broadcaster &&
              ((t.broadcaster = new l.b(r.broadcaster)),
              (0, h.w)(
                t.broadcaster && t.broadcaster.BIsValid(),
                "Invalid Broadcast SteamID: " +
                  t.broadcaster.ConvertTo64BitString(),
              )),
            t
          );
        }
        toJSON(e) {
          let t = new Object();
          return (
            Object.assign(t, this),
            (t.name = Array.from(this.name)),
            (t.description = Array.from(this.description)),
            (t.tags = Array.from(this.vecTags)),
            (t.clanSteamID = this.clanSteamID.ConvertTo64BitString()),
            this.broadcaster &&
              (t.broadcaster = this.broadcaster.ConvertTo64BitString()),
            t
          );
        }
        clone(e = !1) {
          let t = new V();
          return (
            (t.GID = this.GID),
            (t.AnnouncementGID = this.AnnouncementGID),
            (t.clanSteamID = this.clanSteamID),
            (t.bOldAnnouncement = this.bOldAnnouncement),
            (t.nCommentCount = this.nCommentCount),
            (t.nVotesUp = this.nVotesUp),
            (t.nVotesDown = this.nVotesDown),
            (t.forumTopicGID = this.forumTopicGID),
            (t.comment_type = this.comment_type),
            (t.gidfeature = this.gidfeature),
            (t.gidfeature2 = this.gidfeature2),
            (t.featured_app_tagid = this.featured_app_tagid),
            (t.creator_steamid = this.creator_steamid),
            (t.last_update_steamid = this.last_update_steamid),
            (t.rtime32_last_modified = this.rtime32_last_modified),
            (t.rtime32_last_solr_search_col_updated =
              this.rtime32_last_solr_search_col_updated),
            (t.rtime32_moderator_reviewed = this.rtime32_moderator_reviewed),
            (t.type = this.type),
            (t.appid = this.appid),
            (t.name = new Map()),
            this.name.forEach((e, r) => {
              t.name.set(r, e);
            }),
            (t.description = new Map()),
            this.description.forEach((e, r) => {
              t.description.set(r, e);
            }),
            (t.timestamp_loc_updated = new Map()),
            this.timestamp_loc_updated.forEach((e, r) => {
              t.timestamp_loc_updated.set(r, e);
            }),
            (t.startTime = this.startTime),
            (t.endTime = this.endTime),
            (t.visibilityStartTime = this.visibilityStartTime),
            (t.visibilityEndTime = this.visibilityEndTime),
            (t.postTime = this.postTime),
            (t.visibility_state = this.visibility_state),
            (t.loadedAllLanguages = this.loadedAllLanguages),
            (t.bLoaded = this.bLoaded),
            (t.broadcaster = this.broadcaster
              ? new l.b(this.broadcaster.ConvertTo64BitString())
              : null),
            (t.jsondata = JSON.parse(JSON.stringify(this.jsondata))),
            (t.vecTags = new Array()),
            e
              ? ((t.m_nBuildID = this.m_nBuildID),
                (t.m_strBuildBranch = this.m_strBuildBranch),
                this.vecTags.forEach((e) => t.vecTags.push(e)))
              : this.vecTags.forEach((e) => {
                  x.includes(e) && t.vecTags.push(e);
                }),
            t
          );
        }
        GetLastReferencedSaleDayFromCapsules(e, t) {
          let r = t;
          return (
            e?.forEach((e) => {
              void 0 !== e.visibility_index &&
                (r =
                  void 0 === r
                    ? e.visibility_index
                    : Math.max(r, e.visibility_index));
            }),
            r
          );
        }
        GetLastReferencedSaleDay() {
          let e;
          for (const t of this.GetSaleSections())
            if ("tabs" === t.section_type) {
              if (t.tabs?.length > 0)
                for (const r of t.tabs)
                  e = this.GetLastReferencedSaleDayFromCapsules(r.capsules, e);
            } else e = this.GetLastReferencedSaleDayFromCapsules(t.capsules, e);
          return (
            this.jsondata.sale_num_headers > 1 &&
              (null == e || e < this.jsondata.sale_num_headers) &&
              (e = this.jsondata.sale_num_headers),
            e
          );
        }
        GetDayIndexFromEventStart() {
          let e = 0;
          const t = p.HD.GetTimeNowWithOverride();
          void 0 !== this.startTime &&
            t >= this.startTime &&
            (e = Math.floor((t - this.startTime) / 86400)),
            void 0 !== this.m_overrideCurrentDay &&
              this.m_overrideCurrentDay >= 0 &&
              (e = this.m_overrideCurrentDay);
          const r = this.GetLastReferencedSaleDay() || 0;
          return Math.min(e, r);
        }
        GetNameWithFallback(e) {
          const t = g.A0.GetELanguageFallback(e);
          return this.name.get(e) || this.name.get(t);
        }
        GetGameTitle(e) {
          return _.A.Get().GetApp(this.appid)?.GetName();
        }
        BInRealmGlobal() {
          return !this.BHasTag("disable_steam_global");
        }
        BInRealmChina() {
          return this.BHasTag("enable_steam_china");
        }
        BIsLanguageValidForRealms(e) {
          return (
            !(
              !this.BInRealmGlobal() ||
              !g.A0.IsELanguageValidInRealm(e, i.TU.k_ESteamRealmGlobal)
            ) ||
            !(
              !this.BInRealmChina() ||
              !g.A0.IsELanguageValidInRealm(e, i.TU.k_ESteamRealmChina)
            )
          );
        }
        GetImgArray(e) {
          let t = [];
          if (
            (("background" !== e && "localized_title_image" != e) ||
              (t = this.jsondata.localized_title_image),
            "capsule" === e)
          )
            t = this.jsondata.localized_capsule_image;
          else if ("spotlight" === e)
            t = this.jsondata.localized_spotlight_image;
          else if ("email_full" === e || "email_centered" === e)
            t = this.jsondata.email_setting
              ? this.jsondata.email_setting.sections[0].localized_image
              : [];
          else if ("broadcast_left" === e)
            t = this.jsondata.localized_broadcast_left_image;
          else if ("broadcast_right" === e)
            t = this.jsondata.localized_broadcast_right_image;
          else if ("sale_header" === e)
            if (this.jsondata.sale_num_headers > 1) {
              const e = Math.min(
                this.jsondata.sale_num_headers - 1,
                this.GetDayIndexFromEventStart(),
              );
              t = this.jsondata.localized_per_day_sales_header[e];
            } else t = this.jsondata.localized_sale_header;
          else
            "sale_logo" === e
              ? (t = this.jsondata.localized_sale_logo)
              : "sale_overlay" === e
                ? (t = this.jsondata.localized_sale_overlay)
                : m.pb.includes(e)
                  ? (t = m.pU.GetLocalizedImageGroupForEditAsImgArray(
                      this.clanSteamID,
                    ))
                  : "product_banner" === e
                    ? (t = this.jsondata.localized_sale_product_banner)
                    : "product_mobile_banner" === e
                      ? (t = this.jsondata.localized_sale_product_mobile_banner)
                      : "bestofyear_banner" === e
                        ? (t = this.jsondata.localized_bestofyear_banner)
                        : "bestofyear_banner_mobile" === e
                          ? (t =
                              this.jsondata.localized_bestofyear_banner_mobile)
                          : "localized_store_app_spotlight" === e
                            ? (t = this.jsondata.localized_store_app_spotlight)
                            : "localized_store_app_spotlight_mobile" === e &&
                              (t =
                                this.jsondata
                                  .localized_store_app_spotlight_mobile);
          return t;
        }
        GetImageURL(e, t = 0, r = m.wI.full) {
          const a = this.GetImgArray(e),
            n = a && a.length > t && null != a[t];
          return n && a[t].startsWith("http")
            ? a[t]
            : n
              ? m.i6.GenerateArtworkURLFromHashAndExtensions(
                  this.clanSteamID,
                  a[t],
                  r,
                )
              : void 0;
        }
        GetImageHash(e, t = 0) {
          let r = this.GetImgArray(e);
          return r && r.length > t && null != r[t]
            ? r[t].substr(0, r[t].length - 4)
            : null;
        }
        GetImageHashAndExt(e, t = 0) {
          let r = this.GetImgArray(e);
          return r && r.length > t && null != r[t] ? r[t] : null;
        }
        BHasSomeImage(e) {
          let t = this.GetImgArray(e);
          return t && t.some((e) => null != e && e.length > 0);
        }
        BHasImage(e, t) {
          let r = this.GetImgArray(e);
          return r && r.length > t && null != r[t];
        }
        BHasAnnouncementGID() {
          return (
            null !== this.AnnouncementGID &&
            void 0 !== this.AnnouncementGID &&
            this.AnnouncementGID.length > 1
          );
        }
        GetAnnouncementGID() {
          return this.AnnouncementGID;
        }
        BHasForumTopicGID() {
          return (
            null !== this.forumTopicGID &&
            void 0 !== this.forumTopicGID &&
            this.forumTopicGID.length > 1
          );
        }
        GetForumTopicURL() {
          if (!this.BHasForumTopicGID()) return "";
          if (this.appid)
            return (
              f.TS.COMMUNITY_BASE_URL +
              "app/" +
              this.appid +
              "/eventcomments/" +
              this.forumTopicGID
            );
          {
            const e = d.ac.GetClanInfoByClanAccountID(
              this.clanSteamID.GetAccountID(),
            );
            if (e && e.vanity_url)
              return (
                f.TS.COMMUNITY_BASE_URL +
                "groups/" +
                e.vanity_url +
                "/eventcomments/" +
                this.forumTopicGID
              );
          }
          return (
            f.TS.COMMUNITY_BASE_URL +
            "gid/" +
            this.clanSteamID.ConvertTo64BitString() +
            "/eventcomments/" +
            this.forumTopicGID
          );
        }
        BIsEventInFuture() {
          return p.HD.GetTimeNowWithOverride() < this.startTime;
        }
        BHasEventEnded() {
          return this.endTime < p.HD.GetTimeNowWithOverride();
        }
        UpdateVoteCount(e, t) {
          "up" == e
            ? (this.nVotesUp = (0, y.OQ)(
                this.nVotesUp + t,
                0,
                Number.MAX_SAFE_INTEGER,
              ))
            : "down" == e &&
              (this.nVotesDown = (0, y.OQ)(
                this.nVotesDown + t,
                0,
                Number.MAX_SAFE_INTEGER,
              ));
        }
        GetImageFromBeginningOfDescription(e, t) {
          let r = this.GetDescriptionWithFallback(e);
          if (r) {
            let e = r.indexOf("[img]");
            if (-1 !== e && e < t) {
              e += 5;
              let t = r.indexOf("[/img]", e);
              if (-1 != t) {
                let a = r.substring(e, t).trim();
                if (0 != a.length) return (0, c.v6)(a);
              }
            }
          }
          return null;
        }
        GetImageURLWithFallback(e, t, r = m.wI.full) {
          const a = this.GetImageURL(e, t, r);
          if (a && a.trim().length > 0) return a;
          const n = g.A0.GetELanguageFallback(t);
          if (t != n) {
            const t = this.GetImageURL(e, n, r);
            if (t && t.trim().length > 0) return t;
          }
          const i = d.ac.GetClanInfoByClanAccountID(
            this.clanSteamID.GetAccountID(),
          );
          if ("capsule" == e) {
            let e = this.GetImageFromBeginningOfDescription(
              t,
              Number.MAX_VALUE,
            );
            if (e) return e;
            let r = this.appid;
            if (!r && i && ((i.is_creator_home && !i.is_ogg) || i.is_curator)) {
              if (!this.jsondata?.referenced_appids?.length)
                return i.avatar_full_url;
              r = this.jsondata.referenced_appids[0];
            }
            const a = _.A.Get().GetApp(r);
            return a
              ? a.GetAssets().GetMainCapsuleURL()
              : f.TS.STORE_ICON_BASE_URL + r + "/header.jpg";
          }
          return "background" == e &&
            i &&
            ((i.is_creator_home && !i.is_ogg) || i.is_curator)
            ? i.creator_page_bg_url
            : this.GetFallbackArtworkScreenshot();
        }
        GetFallbackArtworkScreenshot() {
          if (this.appid) {
            _.A.Get().QueueAppRequest(this.appid, { include_screenshots: !0 });
            const e = _.A.Get().GetApp(this.appid);
            let t = Number(
              this.bOldAnnouncement
                ? this.AnnouncementGID
                : null == this.GID
                  ? 0
                  : this.GID,
            );
            return e?.GetOnlyAllAgesSafeScreenshots().length > 1
              ? ((t %= e.GetOnlyAllAgesSafeScreenshots().length),
                e.GetOnlyAllAgesSafeScreenshots()[t])
              : e?.GetBothAllAgesSafeAndMatureScreenshots()?.length > 0
                ? ((t %= e.GetBothAllAgesSafeAndMatureScreenshots().length),
                  e.GetBothAllAgesSafeAndMatureScreenshots()[t])
                : "";
          }
          if (this.clanSteamID) {
            const e = d.ac.GetClanInfoByClanAccountID(
              this.clanSteamID.GetAccountID(),
            );
            if (e && ((e.is_creator_home && !e.is_ogg) || e.is_curator))
              return e.avatar_full_url;
          }
          return "";
        }
        BImageNeedScreenshotFallback(e, t) {
          let r = this.GetImageURL(e, t);
          if (!r || 0 == r.length) {
            const a = g.A0.GetELanguageFallback(t);
            t != a && (r = this.GetImageURL(e, a));
          }
          return !r || 0 == r.length;
        }
        GetImageForSizeAsArrayWithFallback(e, t, r, a) {
          let n = new Array();
          this.BImageNeedScreenshotFallback(e, t) ||
            (n.push(this.GetImageURLWithFallback(e, t, r)),
            r != m.wI.full &&
              n.push(this.GetImageURLWithFallback(e, t, m.wI.full)));
          const i = this.GetFallbackArtworkScreenshot();
          return i && !a && n.push(i), n;
        }
        GetDescriptionWithFallback(e) {
          const t = g.A0.GetELanguageFallback(e);
          return this.description.get(e) || this.description.get(t);
        }
        BIsImageSafeForAllAges(e, t) {
          const r = d.ac.GetClanInfoByClanAccountID(
              this.clanSteamID.GetAccountID(),
            ),
            a = g.A0.GetELanguageFallback(t);
          return (
            null != this.GetImageURL(e, t) ||
            (t != a && null != this.GetImageURL(e, a)) ||
            (this.appid &&
              _.A.Get().GetApp(this.appid)?.BHasAgeSafeScreenshots()) ||
            (!this.appid &&
              r &&
              ((r.is_creator_home && !r.is_ogg) || r.is_curator))
          );
        }
        BIsVisibleEvent() {
          let e = Math.floor(p.HD.GetTimeNowWithOverride());
          return (
            this.visibility_state == A.k_EEventStatsUnlisted ||
            (this.visibility_state == A.k_EEventStateVisible &&
              e > this.visibilityStartTime &&
              (this.visibilityEndTime < 10 || e < this.visibilityEndTime))
          );
        }
        BIsStagedEvent() {
          return this.visibility_state == A.k_EEventStateStaged;
        }
        BIsUnlistedEvent() {
          return this.visibility_state == A.k_EEventStatsUnlisted;
        }
        GetStartTimeAndDateUnixSeconds() {
          return this.startTime;
        }
        GetEndTimeAndDateUnixSeconds() {
          return this.endTime;
        }
        GetPostTimeAndDateUnixSeconds() {
          return this.postTime;
        }
        GetVisibilityStartTimeAndDateUnixSeconds() {
          return this.visibilityStartTime;
        }
        BIsEventActionEnabled() {
          return (
            !!this.jsondata.action_end_time &&
            (this.jsondata.action_end_time > p.HD.GetTimeNowWithOverride() ||
              (1575396e3 == this.jsondata.action_end_time &&
                1606845600 > p.HD.GetTimeNowWithOverride()))
          );
        }
        BHasSubTitle(e) {
          if (
            !this.jsondata ||
            !this.jsondata.localized_subtitle ||
            e >= this.jsondata.localized_subtitle.length
          )
            return !1;
          let t = this.jsondata.localized_subtitle[e];
          return null != t && "" != t;
        }
        GetSubTitle(e) {
          if (
            !this.jsondata ||
            !this.jsondata.localized_subtitle ||
            e >= this.jsondata.localized_subtitle.length
          )
            return "";
          let t = this.jsondata.localized_subtitle[e];
          return t || "";
        }
        GetSubTitleWithLanguageFallback(e) {
          return this.jsondata
            ? g.NT.GetWithFallback(this.jsondata.localized_subtitle, e)
            : "";
        }
        GetSubTitleWithSummaryFallback(e) {
          return (
            g.NT.GetWithFallback(this.jsondata?.localized_subtitle, e) ||
            V.GenerateSummaryFromText(this.GetDescriptionWithFallback(e))
          );
        }
        GetSummaryWithFallback(e, t) {
          return (
            g.NT.GetWithFallback(this.jsondata?.localized_summary, e) ||
            V.GenerateSummaryFromText(this.GetDescriptionWithFallback(e), t)
          );
        }
        GetSummary(e) {
          return g.NT.Get(this.jsondata?.localized_summary, e);
        }
        BHasSummary(e) {
          return Boolean(this.GetSummary(e));
        }
        static GenerateSummaryFromText(e, t) {
          return e && 0 != e.trim().length
            ? ((e = (0, n.Yj)(e, [
                "img",
                "h1",
                "h2",
                "h3",
                "spoiler",
                "table",
                "previewyoutube",
                "looping_media",
                "roomeffect",
                "sticker",
              ])),
              (e = (0, n.zV)(e)),
              (e = (0, b.aX)(e)),
              (0, b.bC)(e, t || 180))
            : "";
        }
        BHasTag(e) {
          return -1 != this.vecTags.indexOf(e);
        }
        BHasTagStartingWith(e) {
          return this.vecTags.some((t) => t.startsWith(e));
        }
        BIsOGGEvent() {
          return Boolean(this.appid) && this.appid > 0;
        }
        BShowLibrarySpotlight() {
          return Boolean(this.jsondata.library_spotlight);
        }
        BShowLibrarySpotlightText() {
          return Boolean(this.jsondata.library_spotlight_text);
        }
        BHasBroadcastEnabled() {
          return this.jsondata.bBroadcastEnabled;
        }
        BEventCanShowBroadcastWidget(e) {
          if (this.jsondata.bSaleEnabled) return this.BHasBroadcastEnabled();
          const t = p.HD.GetTimeNowWithOverride(),
            r = this.endTime ? this.endTime : t + 3600;
          return (
            this.BHasBroadcastEnabled() &&
            this.jsondata.broadcast_whitelist &&
            this.jsondata.broadcast_whitelist.length > 0 &&
            (e || (this.startTime - 600 <= t && t < r))
          );
        }
        BHasBroadcastForceBanner() {
          return this.jsondata.broadcast_force_banner;
        }
        BSaleShowBroadcastAtTopOfPage() {
          return !(
            this.jsondata.sale_sections &&
            this.jsondata.sale_sections.some(
              (e) => "broadcast" == e.section_type,
            )
          );
        }
        BSaleShowCuratorRecommendationAtBottomOfPage() {
          return !(
            this.jsondata.sale_sections &&
            this.jsondata.sale_sections.some(
              (e) => "curator_recommendation" == e.section_type,
            )
          );
        }
        GetBroadcastChatVisibility() {
          return this.jsondata.broadcastChatSetting || "hide";
        }
        GetBroadcastTitle(e) {
          return (
            g.NT.GetWithFallback(this.jsondata.localized_broadcast_title, e) ||
            (0, g.we)(
              this.jsondata.default_broadcast_title ??
                "#Broadcast_default_title_dev",
            )
          );
        }
        GetBroadcastWhitelist() {
          return this.jsondata.broadcast_whitelist;
        }
        GetBroadcastWhitelistAsSteamIDs() {
          return this.jsondata.broadcast_whitelist.map((e) =>
            l.b.InitFromAccountID(e).ConvertTo64BitString(),
          );
        }
        BIsBroadcastAccountIDWhiteListed(e) {
          return (this.jsondata.broadcast_whitelist || []).includes(Number(e));
        }
        BHasSaleEnabled() {
          return this.jsondata.bSaleEnabled;
        }
        BHasSaleVanity() {
          return (
            this.jsondata.bSaleEnabled && Boolean(this.jsondata.sale_vanity_id)
          );
        }
        GetSaleVanity() {
          return this.jsondata.sale_vanity_id;
        }
        GetSaleURL() {
          if (!this.jsondata.bSaleEnabled) return null;
          if (!Boolean(this.jsondata.sale_vanity_id))
            return (
              f.TS.STORE_BASE_URL +
              "newshub/" +
              (this.appid
                ? "app/" + this.appid
                : "group/" + this.clanSteamID.GetAccountID()) +
              "/view/" +
              this.GID
            );
          if (this.BUsesContentHubForItemSource()) {
            const e = this.jsondata.source_content_hub;
            return e
              ? "string" == typeof e
                ? f.TS.STORE_BASE_URL + "category/" + e
                : "category" == e.type
                  ? f.TS.STORE_BASE_URL + "category/" + e.category
                  : "tags" == e.type
                    ? f.TS.STORE_BASE_URL +
                      "tags/" +
                      ((0, g.l4)() || "en") +
                      "/" +
                      e.tagid
                    : "freetoplay" == e.type
                      ? f.TS.STORE_BASE_URL + "genre/Free%20to%20Play/"
                      : "earlyaccess" == e.type
                        ? f.TS.STORE_BASE_URL + "genre/Early%20Access/"
                        : f.TS.STATS_BASE_URL + e.type
              : f.TS.STORE_BASE_URL + "sale/" + this.jsondata.sale_vanity_id;
          }
          if (!this.jsondata.sale_vanity_id_valve_approved_for_sale_subpath) {
            if (u.pF.BHasCreatorHomeLoaded(this.clanSteamID)) {
              return (
                u.pF
                  .GetCreatorHome(this.clanSteamID)
                  .GetCreatorHomeURL("developer") +
                "sale/" +
                this.jsondata.sale_vanity_id
              );
            }
            return (
              f.TS.STORE_BASE_URL +
              "curator/" +
              this.clanSteamID.GetAccountID() +
              "/sale/" +
              this.jsondata.sale_vanity_id
            );
          }
          return f.TS.STORE_BASE_URL + "sale/" + this.jsondata.sale_vanity_id;
        }
        BHasEmailEnabled() {
          return (
            this.jsondata.email_setting && this.jsondata.email_setting.bEnable
          );
        }
        GetSaleSections() {
          return this.jsondata.sale_sections;
        }
        GenerateDynamicSaleSections(e, t, r, a) {
          const n = [],
            i = {
              section_type: "unselected_empty",
              capsules: void 0,
              events: void 0,
              links: void 0,
              localized_label: void 0,
              default_label: void 0,
            };
          return (
            e &&
              n.push({
                ...i,
                section_type: "footer_self_creator_home",
                unique_id: 90010,
                curator_clan_id: this.clanSteamID.GetAccountID(),
              }),
            r &&
              n.push({
                ...i,
                section_type: "footer_browse_more",
                unique_id: 90012,
              }),
            a &&
              n.push({
                ...i,
                section_type: "footer_default_social_share",
                unique_id: 90013,
              }),
            n
          );
        }
        GetSaleSectionIncludingFooterSections() {
          const e = this.jsondata?.sale_show_creator,
            t = this.BSaleShowCuratorRecommendationAtBottomOfPage(),
            r = this.jsondata.sale_browse_more_button,
            a =
              0 == this.GetSaleSectionsByType("social_share").length &&
              !this.jsondata.sale_default_social_media_disabled;
          return e || t || r || a
            ? [
                ...this.GetSaleSections(),
                ...this.GenerateDynamicSaleSections(e, t, r, a),
              ]
            : this.GetSaleSections();
        }
        GetSaleSectionByID(e) {
          if (e > T) {
            return this.GenerateDynamicSaleSections(!0, !0, !0, !0).find(
              (t) => t.unique_id == e,
            );
          }
          return this.jsondata.sale_sections?.find((t) => t.unique_id == e);
        }
        GetSaleSectionCount() {
          return this.jsondata.sale_sections.length;
        }
        GetSaleSectionsByType(e) {
          return this.jsondata.sale_sections?.filter(
            (t) => t.section_type == e,
          );
        }
        GetSaleSectionFirstMatchByType(e) {
          for (let t = 0; t < this.jsondata.sale_sections.length; ++t)
            if (this.jsondata.sale_sections[t].section_type === e)
              return this.jsondata.sale_sections[t];
        }
        static AccumulateCapsuleListIDs(e, t, r, a) {
          e &&
            e.forEach((e) => {
              if (e) {
                t.has(e.type) && ((a && !a(e.id)) || r.add(e.id));
              }
            });
        }
        GetSaleItemOfType(e, t) {
          if (!this.jsondata.sale_sections) return new Set();
          const r = new Set(e),
            a = new Set();
          if (
            ((0, h.w)(
              !this.jsondata.bOptimizedForSize,
              "Cannot find all items in optimized json",
            ),
            this.jsondata.bOptimizedForSize && "dev" == f.TS.WEB_UNIVERSE)
          )
            throw new Error(
              "GetSaleOfItemType called on a truncated jsondata.",
            );
          return (
            this.jsondata.tagged_items?.forEach((e) => {
              V.AccumulateCapsuleListIDs([e.capsule], r, a, t);
            }),
            this.jsondata.sale_sections.forEach((e) => {
              if (O(e.section_type))
                V.AccumulateCapsuleListIDs(e.capsules, r, a, t);
              else if ("tabs" === e.section_type && e.tabs)
                for (const n of e.tabs)
                  V.AccumulateCapsuleListIDs(n.capsules, r, a, t);
            }),
            a
          );
        }
        GetSaleItemCountOfType(e, t) {
          return this.GetSaleItemOfType(e, t).size;
        }
        GetSaleFeaturedAppsCount(e) {
          return this.GetSaleItemCountOfType(
            ["game", "application", "software", "dlc", "music"],
            e,
          );
        }
        GetSaleFeaturedAppsAndDemosCount(e) {
          return this.GetSaleItemCountOfType(
            ["game", "application", "software", "dlc", "music", "demo"],
            e,
          );
        }
        GetSaleFeaturedBundlesCount(e) {
          return this.GetSaleItemCountOfType(["bundle"], e);
        }
        GetSaleFeaturedPackagesCount(e) {
          return this.GetSaleItemCountOfType(["sub"], e);
        }
        GetSaleFeaturedApps(e) {
          return this.GetSaleItemOfType(
            ["game", "application", "software", "dlc", "music"],
            e,
          );
        }
        GetSaleFeaturedAppsAndDemos(e) {
          return this.GetSaleItemOfType(
            ["game", "application", "software", "dlc", "music", "demo"],
            e,
          );
        }
        GetSaleFeaturedBundles(e) {
          return this.GetSaleItemOfType(["bundle"], e);
        }
        GetSaleFeaturedPackages(e) {
          return this.GetSaleItemOfType(["sub"], e);
        }
        GetTaggedItems() {
          return this.jsondata.tagged_items || [];
        }
        BHasScheduleEnabled() {
          return this.jsondata.bScheduleEnabled;
        }
        GetEventType() {
          return this.type;
        }
        GetEventTypeAsString() {
          return (0, S.rG)(this.type);
        }
        GetCategoryAsString() {
          return this.BHasTag("steam_award_nomination_request")
            ? (0, g.we)("#PartnerEvent_SteamAwardNominations")
            : this.BHasTag("steam_award_vote_request")
              ? (0, g.we)("#PartnerEvent_SteamAwardVoteRequest")
              : this.BHasTag("steam_game_festival_artist_statement")
                ? (0, g.we)("#PartnerEvent_SteamGameFestival_ArtistState")
                : this.BHasTag("steam_game_festival_office_hour")
                  ? (0, g.we)("#PartnerEvent_SteamGameFestival_OfficeHour")
                  : this.BHasTag("steam_game_festival_broadcast") ||
                      (this.BHasTagStartingWith("sale_nextfest_") &&
                        11 == this.type)
                    ? (0, g.we)("#PartnerEvent_SteamGameFestival_Broadcast")
                    : this.GetEventTypeAsString();
        }
        GetAllTags() {
          return this.vecTags;
        }
        BMatchesAllTags(e) {
          let t = !0;
          return (
            e?.forEach((e) => {
              this.vecTags.includes(e) || (t = !1);
            }),
            t
          );
        }
        BAllowedSteamStoreSpotlight() {
          return Boolean(this.jsondata.store_spotlight);
        }
        BHasLibaryHomeSpotlight() {
          return Boolean(this.jsondata.library_home_spotlight);
        }
        BHasSaleProductBanners() {
          return (
            this.jsondata.bSaleEnabled &&
            (this.BHasSomeImage("product_banner") ||
              this.BHasSomeImage("product_banner_override"))
          );
        }
        GetSteamAwardCategory() {
          return this.jsondata.steam_award_category_suggestion;
        }
        GetSteamAwardNomineeCategories() {
          return this.jsondata.steam_award_category_voteids;
        }
        BIsLockedToGameOwners() {
          return Boolean(
            this.jsondata.ownership_requirement_info?.bLockedToAppOwners,
          );
        }
        GetRequiredAppIDs() {
          return this.jsondata.ownership_requirement_info
            ? this.jsondata.ownership_requirement_info.rgRequiredAppIDs
            : [];
        }
        GetRequiredPackageIDs() {
          return this.jsondata.ownership_requirement_info
            ? this.jsondata.ownership_requirement_info.rgRequiredPackageIDs
            : [];
        }
        BUseSubscriptionLayout() {
          return !!this.jsondata.sale_use_subscription_layout;
        }
        BIsLockedToPartnerAppRights() {
          return Boolean(
            this.jsondata.app_right_requirement_info?.bLockedToPartnerAppRights,
          );
        }
        GetRequiredPartnerAppRights() {
          return this.jsondata.app_right_requirement_info;
        }
        GetValveAccessLog() {
          return Array.isArray(this.jsondata.valve_access_log)
            ? this.jsondata.valve_access_log
            : [];
        }
        BUsesContentHubForItemSource() {
          return (
            this.jsondata.item_source_type === N.k_EContentHub &&
            Boolean(this.jsondata.source_content_hub)
          );
        }
        GetContentHubType() {
          return this.BUsesContentHubForItemSource()
            ? null == this.jsondata.source_content_hub
              ? "games"
              : "string" == typeof this.jsondata.source_content_hub
                ? "category"
                : this.jsondata.source_content_hub.type
            : void 0;
        }
        GetContentHubCategory() {
          return null == this.jsondata.source_content_hub
            ? void 0
            : "string" == typeof this.jsondata.source_content_hub
              ? this.jsondata.source_content_hub
              : this.jsondata.source_content_hub.category;
        }
        GetContentHubTag() {
          return null == this.jsondata.source_content_hub
            ? void 0
            : "string" == typeof this.jsondata.source_content_hub
              ? 0
              : this.jsondata.source_content_hub.tagid;
        }
        GetContentHub() {
          return "string" == typeof this.jsondata.source_content_hub
            ? { type: "category", category: this.jsondata.source_content_hub }
            : this.jsondata.source_content_hub;
        }
        BContentHubDiscountedOnly() {
          return this.jsondata.content_hub_discounted_only;
        }
        BIsBackgroundImageGroupingEnabled() {
          return this.jsondata.sale_background_img_groups?.enabled;
        }
        GetSalePageGroupDefinition() {
          return this.jsondata.sale_background_img_groups;
        }
        GetSalePageBackgroundImageGroupCount() {
          return this.jsondata.sale_background_img_groups?.enabled
            ? this.jsondata.sale_background_img_groups.groups.length
            : 0;
        }
        GetAllSalePageGroups() {
          return this.jsondata.sale_background_img_groups?.enabled
            ? this.jsondata.sale_background_img_groups.groups
            : [];
        }
        GetSalePageBackgroundGroup(e) {
          return this.jsondata.sale_background_img_groups?.enabled
            ? this.jsondata.sale_background_img_groups.groups[e]
            : null;
        }
        GetIncludedRealmList() {
          const e = new Array();
          return (
            this.BInRealmGlobal() && e.push(i.TU.k_ESteamRealmGlobal),
            this.BInRealmChina() && e.push(i.TU.k_ESteamRealmChina),
            (0, h.w)(
              e.length > 0,
              `Event ${this.GID} is currently configured so that no realms are valid for display. Either enable Steam China or Global to address this issue`,
            ),
            e
          );
        }
        BIsValidForRealm(e) {
          return this.GetIncludedRealmList().includes(e);
        }
      }
      (0, a.Cg)([s.sH], V.prototype, "GID", void 0),
        (0, a.Cg)([s.sH], V.prototype, "AnnouncementGID", void 0),
        (0, a.Cg)([s.sH], V.prototype, "forumTopicGID", void 0),
        (0, a.Cg)([s.sH], V.prototype, "type", void 0),
        (0, a.Cg)([s.sH], V.prototype, "appid", void 0),
        (0, a.Cg)([s.sH], V.prototype, "name", void 0),
        (0, a.Cg)([s.sH], V.prototype, "description", void 0),
        (0, a.Cg)([s.sH], V.prototype, "timestamp_loc_updated", void 0),
        (0, a.Cg)([s.sH], V.prototype, "startTime", void 0),
        (0, a.Cg)([s.sH], V.prototype, "endTime", void 0),
        (0, a.Cg)([s.sH], V.prototype, "visibilityStartTime", void 0),
        (0, a.Cg)([s.sH], V.prototype, "visibilityEndTime", void 0),
        (0, a.Cg)([s.sH], V.prototype, "m_nBuildID", void 0),
        (0, a.Cg)([s.sH], V.prototype, "m_strBuildBranch", void 0),
        (0, a.Cg)([s.sH], V.prototype, "postTime", void 0),
        (0, a.Cg)([s.sH], V.prototype, "visibility_state", void 0),
        (0, a.Cg)([s.sH], V.prototype, "broadcaster", void 0),
        (0, a.Cg)([s.sH], V.prototype, "jsondata", void 0),
        (0, a.Cg)([s.sH], V.prototype, "nCommentCount", void 0),
        (0, a.Cg)([s.sH], V.prototype, "nVotesUp", void 0),
        (0, a.Cg)([s.sH], V.prototype, "nVotesDown", void 0),
        (0, a.Cg)([s.sH], V.prototype, "bOldAnnouncement", void 0),
        (0, a.Cg)([s.sH], V.prototype, "announcementClanSteamID", void 0),
        (0, a.Cg)([s.sH], V.prototype, "loadedAllLanguages", void 0),
        (0, a.Cg)([s.sH], V.prototype, "bLoaded", void 0),
        (0, a.Cg)([s.sH], V.prototype, "deleteInProgress", void 0),
        (0, a.Cg)([s.sH], V.prototype, "vecTags", void 0),
        (0, a.Cg)([s.sH], V.prototype, "last_update_steamid", void 0),
        (0, a.Cg)([s.sH], V.prototype, "rtime32_last_modified", void 0),
        (0, a.Cg)(
          [s.sH],
          V.prototype,
          "rtime32_last_solr_search_col_updated",
          void 0,
        ),
        (0, a.Cg)(
          [s.sH],
          V.prototype,
          "rtime32_last_local_modification",
          void 0,
        ),
        (0, a.Cg)([s.sH], V.prototype, "rtime32_moderator_reviewed", void 0),
        (0, a.Cg)([s.sH], V.prototype, "video_preview_type", void 0),
        (0, a.Cg)([s.sH], V.prototype, "video_preview_id", void 0),
        (0, a.Cg)([s.sH], V.prototype, "m_overrideCurrentDay", void 0);
    },
    38390: (e, t, r) => {
      "use strict";
      r.d(t, { B9: () => l, RR: () => o });
      var a = r(90626),
        n = r(20587),
        i = r(4434),
        s = r(17720);
      r(78327), r(17690);
      function o(e) {
        const [t, r] = (0, a.useState)(() => n.O3.GetClanEventModel(e)),
          s = (0, i.m)("usePartnerEventByEventGID");
        return (
          (0, a.useEffect)(() => {
            e &&
              t?.GID != e &&
              (n.O3.Init(),
              n.O3.LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs(
                [e],
                [],
                s,
              ).then((t) => {
                1 != t?.length || t[0].GID != e || s.token.reason || r(t[0]);
              }));
          }, [e, t, s]),
          t
        );
      }
      function l(e, t, r) {
        const [o, l] = (0, a.useState)(n.O3.GetClanEventModel(t)),
          [c, m] = (0, a.useState)(!!e && !!t),
          [d, u] = (0, a.useState)(),
          [p, _] = (0, a.useState)(1),
          h = (0, i.m)("usePartnerEventByClanAccountAndEventGID");
        return (
          (0, a.useEffect)(() => {
            (async () => {
              try {
                if (o?.GID != t && t) {
                  n.O3.Init();
                  const a = s.b.InitFromClanID(e);
                  let i;
                  try {
                    i =
                      await n.O3.LoadPartnerEventFromClanEventGIDAndClanSteamID(
                        a,
                        t,
                        0,
                        r,
                      );
                  } catch (e) {
                    u(e?.response?.data?.err_msg),
                      _(e?.response?.data?.success || 2);
                  }
                  h.token.reason || l(i);
                }
              } finally {
                m(!1);
              }
            })();
          }, [e, t, o, r, h]),
          { eventModel: o, bLoading: c, sErrorMessage: d, eResult: p }
        );
      }
    },
    82415: (e, t, r) => {
      "use strict";
      r.d(t, { o: () => _ });
      var a = r(90626),
        n = r(82097),
        i = r(71541),
        s = r(9154),
        o = r(738),
        l = r(12155),
        c = r(52038),
        m = r(61859),
        d = r(78327),
        u = r(54599),
        p = r.n(u);
      async function _(e) {
        d.TS.IN_CLIENT
          ? (console.log(`Running game ${e} locally.`),
            (window.location.href = "steam://run/" + e))
          : (console.log(
              `Cannot identify local client. Prompting user to launch ${e}.`,
            ),
            (async function (e) {
              await n.A.Get().QueueAppRequest(e, {});
              const t = n.A.Get().GetApp(e),
                r = t?.GetName() || "";
              console.log("prompting for", r);
              const i = d.TS.STORE_BASE_URL + "about/";
              (0, o.mK)(
                a.createElement(h, {
                  appid: e,
                  strGameName: r,
                  strDownloadSteamUrl: i,
                }),
                window,
              );
            })(e));
      }
      const h = (e) => {
        const t = () => e.closeModal && e.closeModal();
        return a.createElement(
          s.x_,
          { onEscKeypress: t, className: p().GotSteamDialog },
          a.createElement(
            i.UC,
            null,
            a.createElement(i.Y9, null, " ", (0, m.we)("#GotSteam_Title"), " "),
            a.createElement(
              i.nB,
              null,
              a.createElement(
                i.a3,
                null,
                (0, m.PP)(
                  "#GotSteam_PromptWithDownloadLink",
                  a.createElement(
                    "a",
                    {
                      href: e.strDownloadSteamUrl,
                      className: p().DownloadSteamUrl,
                    },
                    (0, m.we)("#GotSteam_DownloadLinkText"),
                  ),
                  a.createElement(
                    "span",
                    { className: p().GameName },
                    e.strGameName,
                  ),
                ),
              ),
              a.createElement(
                "div",
                { className: p().Buttons },
                a.createElement(
                  "a",
                  {
                    href: "steam://run/" + e.appid,
                    onClick: t,
                    className: (0, c.A)(p().Button, p().LeftButton),
                  },
                  a.createElement(
                    "div",
                    { className: p().AnswerText },
                    " ",
                    (0, m.we)("#GotSteam_Yes"),
                    " ",
                  ),
                  a.createElement(
                    "div",
                    { className: p().ActionText },
                    " ",
                    (0, m.we)("#GotSteam_Yes_Play"),
                    " ",
                  ),
                ),
                a.createElement(
                  "a",
                  {
                    href: e.strDownloadSteamUrl,
                    onClick: t,
                    className: p().Button,
                  },
                  a.createElement(
                    "div",
                    { className: p().AnswerText },
                    " ",
                    (0, m.we)("#GotSteam_No"),
                    " ",
                  ),
                  a.createElement(
                    "div",
                    { className: p().ActionText },
                    " ",
                    (0, m.we)("#GotSteam_No_Download"),
                    " ",
                  ),
                ),
              ),
              a.createElement(
                "div",
                { className: p().Footer },
                a.createElement(l.Qte, { className: p().Logo }),
                (0, m.we)("#GotSteam_Blurb"),
              ),
            ),
          ),
        );
      };
    },
    55963: (e, t, r) => {
      "use strict";
      r.d(t, {
        Ay: () => d,
        L3: () => m,
        VZ: () => l,
        k2: () => o,
        wJ: () => c,
      });
      var a = r(3578),
        n = r(44332),
        i = r(61336),
        s = r(30470);
      function o(e, t = "", r = null) {
        return d.InstrumentLink(e, t, r);
      }
      function l(e, t, r = null) {
        const a = (0, i.wm)(e).toLowerCase(),
          n = (0, i.wm)(s.TS.COMMUNITY_BASE_URL).toLowerCase(),
          o = (0, i.wm)(s.TS.STORE_BASE_URL).toLowerCase();
        return a === n || a === o ? c(e, t, r) : e;
      }
      function c(e, t, r = null) {
        const n = m(t, r);
        return a.A.AddNavParamToURL(e, n);
      }
      function m(e, t = null) {
        return e?.domain ? d.GetLinkParam(e, t) : s.TS.SNR;
      }
      class d {
        static sm_strDomain;
        static sm_strController;
        static sm_strMethod;
        static sm_strSubmethod;
        static sm_strComputedLinkPrefix;
        static SetNavEventParams(e, t, r = null, a = null) {
          (d.sm_strDomain = e),
            (d.sm_strController = t),
            (d.sm_strMethod = r),
            (d.sm_strSubmethod = a),
            (d.sm_strComputedLinkPrefix = null);
        }
        static GetDefaultParams() {
          let e = { domain: d.sm_strDomain, controller: d.sm_strController };
          return (
            d.sm_strMethod && (e.method = d.sm_strMethod),
            d.sm_strSubmethod && (e.submethod = d.sm_strSubmethod),
            e
          );
        }
        static InstrumentLink(e, t, r = null) {
          const n = d.GetLinkParam(t, r);
          return a.A.AddNavParamToURL(e, n);
        }
        static GetLinkParam(e, t = null) {
          let r, n;
          if ("string" != typeof e) {
            if (e.domain) return a.A.GetLinkParam(e, t);
            r = e.feature || "";
          }
          if (!d.sm_strComputedLinkPrefix && !d.ComputeStaticLinkPrefix())
            return null;
          n = d.sm_strComputedLinkPrefix;
          let i = a.A.EncodeEventComponent(r);
          return i && ((n += "_" + i), t && (n += "_" + t)), n;
        }
        static ComputeStaticLinkPrefix() {
          return d.sm_strDomain
            ? ((d.sm_strComputedLinkPrefix = a.A.ComputeLinkPrefix(
                d.sm_strDomain,
                d.sm_strController,
                d.sm_strMethod,
                d.sm_strSubmethod,
              )),
              !0)
            : ((0, n.w)(
                !1,
                "CStoreNavEvents::SetNavEventParams was not called before calling InstrumentLink!",
              ),
              !1);
        }
      }
    },
    13699: (e, t, r) => {
      "use strict";
      r.d(t, { R: () => c });
      var a = r(34629),
        n = r(41735),
        i = r.n(n),
        s = r(14947),
        o = r(78327);
      class l {
        constructor() {
          (0, s.Gn)(this);
        }
        m_mapYouTubeVideo = new Map();
        m_mapSharedFile = new Map();
        async LoadYouTubeDynamicData(e, t) {
          let r = new Array(),
            a = "";
          if (
            (e.forEach((e, t) => {
              this.m_mapYouTubeVideo.has(e)
                ? r.push(this.m_mapYouTubeVideo.get(e))
                : (a.length > 0 && (a += ","), (a += e));
            }),
            0 == a.length)
          )
            return r;
          let n = { youtubevideoids: a },
            l = null;
          return (
            (l = await i().get(
              o.TS.STORE_BASE_URL + "/events/ajaxgetdynamiceventmetadata",
              { params: n, cancelToken: t.token },
            )),
            l &&
              l.data &&
              l.data.youtube &&
              (0, s.h5)(() => {
                l.data.youtube.forEach((e, t) => {
                  this.m_mapYouTubeVideo.set(e.videoid, e), r.push(e);
                });
              }),
            r
          );
        }
        async LoadSharedFileDynamicData(e, t) {
          let r = new Array(),
            a = "";
          if (
            (e.forEach((e, t) => {
              this.m_mapSharedFile.has(e)
                ? r.push(this.m_mapSharedFile.get(e))
                : (a.length > 0 && (a += ","), (a += e));
            }),
            0 == a.length)
          )
            return r;
          let n = { sharedfileids: a },
            l = null;
          return (
            (l = await i().get(
              o.TS.STORE_BASE_URL + "/events/ajaxgetdynamiceventmetadata",
              { params: n, cancelToken: t.token },
            )),
            l &&
              l.data &&
              l.data.sharedfiles &&
              (0, s.h5)(() => {
                l.data.sharedfiles.forEach((e, t) => {
                  this.m_mapSharedFile.set(e.sharedfileid, e), r.push(e);
                });
              }),
            r
          );
        }
      }
      (0, a.Cg)([s.sH], l.prototype, "m_mapYouTubeVideo", void 0),
        (0, a.Cg)([s.sH], l.prototype, "m_mapSharedFile", void 0);
      const c = new l();
    },
    34010: (e, t, r) => {
      "use strict";
      r.d(t, {
        MU: () => S,
        MX: () => b,
        U7: () => f,
        fn: () => h,
        j: () => g,
      });
      var a = r(34629),
        n = r(82097),
        i = r(41735),
        s = r.n(i),
        o = r(14947),
        l = r(17720),
        c = r(54728),
        m = r(44165),
        d = r(68033),
        u = r(68797),
        p = r(78327),
        _ = r(69300);
      function h(e) {
        return Boolean(e && e.thumbnail_http_address);
      }
      class g {
        constructor() {
          (0, o.Gn)(this);
        }
        static s_GlobalStore;
        m_inFlightRequests = new Map();
        m_lookupKeyToEmbedStreamDef = new Map();
        m_lookupStreams = new Map();
        m_playReadyStream = new Map();
        m_bMapHasStartedVideo = new Map();
        m_mapBroadcastChecked = new Map();
        m_pageChatStatus = "hide";
        m_streamChatStatus = "hide";
        m_bUserChatExpanded = void 0;
        m_bUserPreferenceHideBroadcastByDefault = void 0;
        m_bCollapsed = void 0;
        m_setStreamChangedListeners = new Set();
        m_bUseFakeData = !1;
        m_onLoadContextCall = new Map();
        BHasStreams(e) {
          const t = this.GetStreams(e);
          return Boolean(t && t.length > 0);
        }
        AddCallbackOnNewContext(e, t, r) {
          this.m_onLoadContextCall.set(this.GetStreamsLookupKeyFromDef(e), {
            name: t,
            fnCallback: r,
          });
        }
        ClearCallbackOnNewContext(e) {
          this.m_onLoadContextCall.set(
            this.GetStreamsLookupKeyFromDef(e),
            null,
          );
        }
        GetPlayReadyStream(e) {
          let t = this.GetStreamsLookupKeyFromDef(e);
          return this.m_playReadyStream.get(t);
        }
        BIsEmbeddedBroadcastHiddenByDefaultUserSettings() {
          return Boolean(this.m_bUserPreferenceHideBroadcastByDefault);
        }
        BIsEmbeddedStreamCollapsed() {
          return Boolean(this.m_bCollapsed);
        }
        SetEmbeddedStreamCollapsed(e) {
          this.m_bCollapsed != e && (this.m_bCollapsed = e);
        }
        GetConcurrentStreams(e) {
          const t = this.GetStreams(e);
          return t ? t.filter((e) => h(e)).length : 0;
        }
        GetChatVisibility() {
          return "remove" === this.m_pageChatStatus ||
            "remove" === this.m_streamChatStatus
            ? "remove"
            : void 0 !== this.m_bUserChatExpanded
              ? this.m_bUserChatExpanded
                ? "show"
                : "hide"
              : "show" === this.m_pageChatStatus
                ? "show"
                : "hide" === this.m_pageChatStatus ||
                    "hide" === this.m_streamChatStatus
                  ? "hide"
                  : "show";
        }
        ToggleChatVisibility() {
          const e = this.GetChatVisibility();
          "remove" !== e && (this.m_bUserChatExpanded = "hide" === e);
        }
        DebugDumpContextAndAvailableContext(e) {
          console.log("Requested context", this.GetStreamsLookupKeyFromDef(e)),
            console.log("Available context count: ", this.m_lookupStreams.size),
            this.m_lookupStreams.forEach((e, t) => {
              console.log(t, e.length);
            });
        }
        GetStreams(e) {
          const t = this.GetStreamsLookupKeyFromDef(e);
          return this.m_lookupStreams.get(t);
        }
        GetBroadcastURL(e) {
          let t = null;
          return (
            (t = e.steamid
              ? new l.b(e.steamid)
              : l.b.InitFromAccountID(e.accountid)),
            p.TS.COMMUNITY_BASE_URL +
              "broadcast/watch/" +
              t.ConvertTo64BitString()
          );
        }
        BIsAppStreaming(e) {
          let t = !1;
          return (
            this.m_lookupStreams.forEach((r) => {
              t ||
                (t =
                  Boolean(r) &&
                  r.some(
                    (t) =>
                      c.es.GetOrCreateBroadcastInfo(t.steamid).m_nAppID === e,
                  ));
            }),
            t
          );
        }
        GetStreamsForAppID(e) {
          const t = new Array();
          return (
            this.m_lookupStreams.forEach((r) => {
              r?.forEach((r) => {
                c.es.GetOrCreateBroadcastInfo(r.steamid).m_nAppID === e &&
                  t.push(r);
              });
            }),
            t
          );
        }
        AddStreamChangedListener(e) {
          this.m_setStreamChangedListeners.add(e);
        }
        RemoveStreamChangedListener(e) {
          this.m_setStreamChangedListeners.delete(e);
        }
        async LoadBIsEmbeddedBroadcastHidden(e) {
          if (void 0 === this.m_bUserPreferenceHideBroadcastByDefault) {
            let t = (0, p.Tc)("broadcastuser", "application_config");
            if (!t)
              try {
                let r =
                    p.TS.STORE_BASE_URL +
                    "broadcast/ajaxgetuserbroadcastpreferences",
                  a = await s().get(r, { params: {}, cancelToken: e.token });
                t = a.data;
              } catch (e) {
                console.log(
                  "LoadBIsEmbeddedBroadcastHidden: " + (0, u.H)(e).strErrorMsg,
                ),
                  (t = { bHideStoreBroadcast: !1 });
              }
            (0, o.h5)(() => {
              (this.m_bUserPreferenceHideBroadcastByDefault =
                t.bHideStoreBroadcast),
                (this.m_bCollapsed = t.bHideStoreBroadcast);
            });
          }
          return this.m_bUserPreferenceHideBroadcastByDefault;
        }
        async SetupEmbeddableVOD(e, t) {
          (this.m_bUseFakeData = !1),
            (this.m_streamChatStatus = "remove"),
            await n.A.Get().QueueAppRequest(e.nAppIDVOD, {
              include_assets: !0,
              include_trailers: !0,
            });
          const r = n.A.Get().GetApp(e.nAppIDVOD),
            a = new _.TT();
          if (
            ((a.accountid = 0),
            (a.nAppIDVOD = e.nAppIDVOD),
            (a.default_selection_priority = _.mY.k_ePrimary),
            (a.current_selection_priority = _.mY.k_ePrimary),
            (a.thumbnail_http_address = r?.GetAssets().GetHeaderURL() || ""),
            (a.title = r?.GetName() || ""),
            this.GetStreams(e).unshift(a),
            t)
          ) {
            const t = this.GetStreamsLookupKeyFromDef(e);
            this.m_playReadyStream.set(t, a);
          }
        }
        async HintLoadEmbeddablePreviewStreams(e) {
          let t = null,
            r = {
              eventid: e.event ? e.event.GID : void 0,
              previewAccounts: Boolean(e.bIsPreview && e.accountIDs)
                ? e.accountIDs.slice().sort().join(",")
                : void 0,
            };
          try {
            return (
              (t = await s().get(
                p.TS.STORE_BASE_URL + "broadcast/ajaxgetstreamersforpreview",
                { params: r },
              )),
              this.HandleHintLoadBroadcastResponse(e, t.data)
            );
          } catch (e) {
            let t = (0, u.H)(e);
            console.error(
              "HintLoadEmbeddablePreviewStreams hit error loading: " +
                t.strErrorMsg,
              t,
            );
          }
          return [];
        }
        async HintLoadEmbeddableStreams(e) {
          let t = this.MapEmbeddableStreamToRequest(e),
            r = this.GetStreamsLookupKeyFromParam(t);
          if (!this.m_inFlightRequests.has(r)) {
            this.m_lookupKeyToEmbedStreamDef.set(r, e);
            const a = this.InternalHintLoadEmbeddableStreams(e, t);
            this.m_inFlightRequests.set(r, a);
          }
          return this.m_inFlightRequests.get(r);
        }
        ValidateBroadcastPageStreamers(e) {
          const t = e;
          return (
            !!(
              t &&
              "number" == typeof t.success &&
              t.filtered &&
              Array.isArray(t.filtered) &&
              t.broadcast_chat_visibility
            ) &&
            (0 == t.filtered.length ||
              "string" == typeof t.filtered[0].accountid)
          );
        }
        async InternalHintLoadEmbeddableStreams(e, t) {
          let r = (0, p.Tc)(
            "broadcast_available_for_page",
            "application_config",
          );
          if (this.ValidateBroadcastPageStreamers(r))
            return this.HandleHintLoadBroadcastResponse(e, r);
          try {
            let r = null;
            return (
              (r = await s().get(
                p.TS.STORE_BASE_URL + "broadcast/ajaxgetstreamersforpage",
                { params: t },
              )),
              this.HandleHintLoadBroadcastResponse(e, r.data)
            );
          } catch (e) {
            let t = (0, u.H)(e);
            console.error(
              "HintLoadEmbeddableStreams hit error loading: " + t.strErrorMsg,
              t,
            );
          }
          return [];
        }
        async HandleHintLoadBroadcastResponse(e, t) {
          (this.m_bUseFakeData = !1),
            e.bIsPreview &&
              (t?.filtered?.length > 0
                ? this.ExtractBroadcastPrioritiesFromPartnerEventForPreview(
                    e.event,
                    t.filtered,
                  )
                : ((t = {
                    filtered: [{}],
                    success: 1,
                    total_count: 1,
                    err_msg: "",
                    broadcast_chat_visibility: "hide",
                  }),
                  (this.m_bUseFakeData = !0))),
            t.broadcast_chat_visibility &&
              (this.m_pageChatStatus = t.broadcast_chat_visibility);
          const r = new Array();
          (0, o.h5)(() => {
            t.filtered.forEach((e) => {
              if (!e.steamid) {
                const t = l.b.InitFromAccountID(e.accountid);
                e.steamid = t.ConvertTo64BitString();
              }
              const t = c.es.GetOrCreateBroadcastInfo(e.steamid),
                a = e.appid ? Number(e.appid) : c.fO;
              (t.m_nAppID = a),
                (t.m_strAppId = "" + a),
                void 0 === e.current_selection_priority &&
                  (e.current_selection_priority = e.default_selection_priority),
                a != c.fO && r.push(a);
            });
          });
          const a = this.GetStreamsLookupKeyFromDef(e);
          if (
            (this.m_lookupStreams.set(a, t.filtered),
            this.m_onLoadContextCall.has(a))
          ) {
            const e = this.m_onLoadContextCall.get(a);
            e
              ? ("dev" == p.TS.WEB_UNIVERSE &&
                  console.log(
                    "CBroadcastEmbeddableStore initialized after caller using callback to " +
                      e.name,
                  ),
                e.fnCallback())
              : "dev" == p.TS.WEB_UNIVERSE &&
                console.log(
                  "CBroadcastEmbeddableStore initialized after caller, however callback is since cleared",
                );
          }
          const n = this.GetStreams(e);
          return await this.AutoStartVideoStream(e, n), n;
        }
        ExtractBroadcastPrioritiesFromPartnerEventForPreview(e, t) {
          const r = Array.from(e.jsondata.broadcast_whitelist ?? []),
            a = Array.from(e.jsondata.broadcast_priority ?? []),
            n = new Map();
          for (let e = 0; e < r.length && !(e >= a.length); e++)
            n.set(r[e], (0, _.PH)(a[e]));
          t.forEach((e) => {
            const t = Number(e.accountid);
            n.has(t) && (e.current_selection_priority = n.get(t));
          });
        }
        async AutoStartVideoStream(e, t) {
          let r = this.GetStreamsLookupKeyFromDef(e);
          if (this.m_bMapHasStartedVideo.get(r)) return null;
          if (this.m_bUseFakeData) {
            if (!this.m_playReadyStream.get(r)) {
              const e = {
                accountid: 0,
                thumbnail_http_address: "",
                default_selection_priority: _.mY.k_eGeneral,
                current_selection_priority: _.mY.k_eGeneral,
              };
              this.m_playReadyStream.set(r, e);
            }
            return this.m_playReadyStream;
          }
          return this.PlayFromAvailableStreams(e, t);
        }
        async PlayFromAvailableStreams(e, t, r = !1) {
          const a = new Set();
          for (;;) {
            const n = t.filter((e) => !(a.has(e) || (r && e.nAppIDVOD))),
              i = this.GetAutoStartStream(n);
            if (!i) return null;
            if (await this.AttemptToPlayStream(e, i)) return i;
            a.add(i);
          }
        }
        async AttemptToPlayStream(e, t) {
          let r = this.GetStreamsLookupKeyFromDef(e);
          if (
            (this.m_bMapHasStartedVideo.set(r, !0),
            this.m_mapBroadcastChecked.has(t.accountid) ||
              this.m_mapBroadcastChecked.set(
                t.accountid,
                this.InternalAttemptToPlayStream(e, t),
              ),
            t.nAppIDVOD)
          )
            this.m_playReadyStream.set(r, t);
          else {
            const a = await this.m_mapBroadcastChecked.get(t.accountid);
            if (1 != a?.success) return null;
            (t.steamid = a.steamid),
              this.m_playReadyStream.set(r, t),
              this.GetConcurrentStreams(e) > 1
                ? (this.m_streamChatStatus = "hide")
                : (this.m_streamChatStatus = t.broadcast_chat_visibility),
              this.m_setStreamChangedListeners.forEach((e) => e(t));
            f(c.es.GetOrCreateBroadcastInfo(t.steamid).m_nAppID, 1, t.snr);
          }
          return t;
        }
        async InternalAttemptToPlayStream(e, t) {
          this.GetStreamsLookupKeyFromDef(e);
          let r = null;
          try {
            const e = p.TS.STORE_BASE_URL + "broadcast/ajaxcheckbroadcast";
            let a = {
              broadcastaccountid: t.accountid,
              viewer_token: c.es.GetViewerToken(),
              origin: self.origin,
            };
            return (r = await s().get(e, { params: a })), r.data;
          } catch (e) {
            let t = (0, u.H)(e);
            console.error("Broadcast.AttemptToPlayStream: " + t.strErrorMsg, t);
          }
          return null;
        }
        GetAutoStartStream(e) {
          if (!e) return null;
          const t = e.filter((e) => h(e)),
            r = t.reduce((e, t) => Math.max(e, y(t)), 0),
            a = t.filter((e) => y(e) === r);
          if (0 === a.length) return null;
          return a[Math.floor(Math.random() * a.length)];
        }
        MapEmbeddableStreamToRequest(e) {
          return {
            appid: e.appid,
            promotionName: e.bIsPreview ? "preview" : e.promotionName,
            clanid: e.clanid
              ? e.clanid
              : e.event
                ? e.event.clanSteamID.GetAccountID()
                : void 0,
            listid: e.listid,
            subid: e.subid,
            bundleid: e.bundleid,
            eventid: e.event ? e.event.GID : void 0,
            previewAccounts: Boolean(e.bIsPreview && e.accountIDs)
              ? e.accountIDs.slice().sort().join(",")
              : void 0,
            test: false,
            cc: p.TS.COUNTRY,
            l: p.TS.LANGUAGE,
            hubtype: e.event?.GetContentHubType(),
            hubcategory: e.event?.GetContentHubCategory(),
            hubtagid: e.event?.GetContentHubTag(),
            tabuniqueid: e.tabuniqueid,
            tabfilter: e.tabfilter,
            rt_now_override_test: m.HD.BHasTimeOverride()
              ? m.HD.GetTimeNowWithOverride()
              : void 0,
          };
        }
        GetStreamsLookupKeyFromDef(e) {
          return this.GetStreamsLookupKeyFromParam(
            this.MapEmbeddableStreamToRequest(e),
          );
        }
        GetStreamsLookupKeyFromParam(e) {
          return JSON.stringify(e);
        }
        static Get() {
          return (
            g.s_GlobalStore ||
              ((g.s_GlobalStore = new g()),
              "dev" == p.TS.WEB_UNIVERSE &&
                (window.g_BroadcastEmbeddableStore = g.s_GlobalStore),
              g.s_GlobalStore.Init()),
            g.s_GlobalStore
          );
        }
        Init() {}
      }
      function y(e) {
        return e.current_selection_priority || _.mY.k_eGeneral;
      }
      function S(e) {
        e.sort((e, t) =>
          y(e) != y(t)
            ? y(t) - y(e)
            : e.viewer_count != t.viewer_count
              ? t.viewer_count - e.viewer_count
              : t.accountid - e.accountid,
        );
      }
      async function f(e, t, r) {
        if (e > 0 && 7 != e && r) {
          let a = new URLSearchParams();
          a.append("page_action", "" + t),
            a.append("snr", r),
            s().post(
              p.TS.STORE_BASE_URL + "ajaxreportproductaction/" + e + "/",
              a,
            );
        }
      }
      (0, a.Cg)([o.sH], g.prototype, "m_lookupStreams", void 0),
        (0, a.Cg)([o.sH], g.prototype, "m_playReadyStream", void 0),
        (0, a.Cg)([o.sH], g.prototype, "m_pageChatStatus", void 0),
        (0, a.Cg)([o.sH], g.prototype, "m_streamChatStatus", void 0),
        (0, a.Cg)([o.sH], g.prototype, "m_bUserChatExpanded", void 0),
        (0, a.Cg)(
          [o.sH],
          g.prototype,
          "m_bUserPreferenceHideBroadcastByDefault",
          void 0,
        ),
        (0, a.Cg)([o.sH], g.prototype, "m_bCollapsed", void 0),
        (0, a.Cg)(
          [o.XI],
          g.prototype,
          "HintLoadEmbeddablePreviewStreams",
          null,
        ),
        (0, a.Cg)([o.XI], g.prototype, "AttemptToPlayStream", null);
      const b = new d.T();
    },
    69300: (e, t, r) => {
      "use strict";
      r.d(t, { PH: () => c, TT: () => m, mY: () => l });
      var a = r(34629),
        n = r(14947);
      const i = "primary",
        s = "featured",
        o = "default_featured";
      var l;
      function c(e) {
        switch (e) {
          case i:
            return l.k_ePrimary;
          case s:
            return l.k_eFeatured;
          case o:
            return l.k_eDefaultFeatured;
          default:
            return l.k_eGeneral;
        }
      }
      !(function (e) {
        (e[(e.k_ePrimary = 3)] = "k_ePrimary"),
          (e[(e.k_eFeatured = 2)] = "k_eFeatured"),
          (e[(e.k_eDefaultFeatured = 1)] = "k_eDefaultFeatured"),
          (e[(e.k_eGeneral = 0)] = "k_eGeneral");
      })(l || (l = {}));
      class m {
        constructor() {
          (0, n.Gn)(this);
        }
        accountid;
        steamid;
        hub_popular;
        popular;
        relay_broadcast_id;
        rowversion;
        thumbnail_http_address;
        nAppIDVOD;
        title = void 0;
        viewer_count = void 0;
        whitelist_rank;
        gamedata_subtitle = void 0;
        store_title;
        left_panel;
        right_panel;
        snr;
        broadcast_chat_visibility;
        default_selection_priority = l.k_eGeneral;
        current_selection_priority = l.k_eGeneral;
      }
      (0, a.Cg)([n.sH], m.prototype, "title", void 0),
        (0, a.Cg)([n.sH], m.prototype, "viewer_count", void 0),
        (0, a.Cg)([n.sH], m.prototype, "gamedata_subtitle", void 0),
        (0, a.Cg)([n.sH], m.prototype, "current_selection_priority", void 0);
    },
    54728: (e, t, r) => {
      "use strict";
      r.d(t, { es: () => O, fK: () => A, a0: () => G, fO: () => T });
      var a = r(34629),
        n = r(41735),
        i = r.n(n),
        s = r(14947),
        o = r(3067),
        l = r(4299);
      function c(e, t, r) {
        return [e, t, r];
      }
      class m extends Error {}
      class d extends l.J8 {
        m_appid;
        constructor(e) {
          super(), (this.m_appid = e || 0);
        }
        GetAppID() {
          return this.m_appid;
        }
        parseColor(e) {
          if ("string" != typeof e || !e.match(/^#[0-9a-fA-F]{6}$/))
            throw new m("expected color string");
          return [
            parseInt(e.substring(1, 3), 16),
            parseInt(e.substring(3, 5), 16),
            parseInt(e.substring(5, 7), 16),
          ];
        }
        parseString(e) {
          if ("string" == typeof e) return e;
          throw new m("expected string");
        }
        parseNumber(e) {
          if ("number" == typeof e) return e;
          throw new m("expected number");
        }
        parseDate(e) {
          if ("number" == typeof e) return new Date(e);
          throw new m("expected timestamp");
        }
        parseArray(e, t) {
          let r = [];
          if ("object" != typeof e || !Array.isArray(e))
            throw new m("expected array");
          let a = e.length;
          for (let n = 0; n < a; ++n)
            try {
              r.push(t(e[n]));
            } catch (e) {
              throw ((e.message += "\n...while parsing array element " + n), e);
            }
          return r;
        }
        parseDict(e, t) {
          let r = new Map();
          if ("object" != typeof e || Array.isArray(e))
            throw new m("expected object");
          for (let a in e)
            try {
              r.set(a, t(e[a]));
            } catch (e) {
              throw (
                ((e.message += "\n...while parsing dictionary element " + a), e)
              );
            }
          return r;
        }
        parseBracket(e) {
          let t = {
            name: this.parseString(e.name),
            start: this.parseDate(e.start),
            color: [255, 0, 255],
          };
          return (
            "params" in e &&
              (t.params = this.parseDict(
                e.params,
                this.parseString.bind(this),
              )),
            "end" in e && (t.end = this.parseDate(e.end)),
            "color" in e && (t.color = this.parseColor(e.color)),
            t
          );
        }
        parseMarker(e) {
          let t = { time: this.parseDate(e.time), color: [0, 255, 255] };
          return (
            "name" in e && (t.name = this.parseString(e.name)),
            "params" in e &&
              (t.params = this.parseDict(
                e.params,
                this.parseString.bind(this),
              )),
            "color" in e && (t.color = this.parseColor(e.color)),
            t
          );
        }
        parseSoundTrack(e) {
          let t = {};
          return (
            "song_title" in e &&
              (t.song_title = this.parseString(e.song_title)),
            "appid" in e && (t.appid = this.parseNumber(e.appid)),
            "song_index" in e &&
              (t.song_index = this.parseNumber(e.song_index)),
            t
          );
        }
        parseBroadcastGameData(e) {
          let t = { appid: 0, brackets: [], markers: [] };
          return (
            "appid" in e && (t.appid = this.parseNumber(e.appid)),
            "brackets" in e &&
              (t.brackets = this.parseArray(
                e.brackets,
                this.parseBracket.bind(this),
              )),
            "markers" in e &&
              (t.markers = this.parseArray(
                e.markers,
                this.parseMarker.bind(this),
              )),
            "soundtrack" in e &&
              (t.soundtrack = this.parseSoundTrack(e.soundtrack)),
            t
          );
        }
        convertTime(e, t) {
          return e - t / 1e3;
        }
        UpdateMarkers(e, t) {
          let r = [],
            a = [];
          for (const n of e)
            n.persistent
              ? (a.length > 0 &&
                  (a[a.length - 1].nTimeEnd = this.convertTime(n.Timestamp, t)),
                n.name.length > 0 &&
                  a.push({
                    strTemplateName: n.name,
                    nTimeStart: this.convertTime(n.Timestamp, t),
                    nTimeEnd: -1,
                    color: c(n.color_r, n.color_g, n.color_b),
                  }))
              : r.push({
                  strTemplateName: n.name,
                  nTime: this.convertTime(n.Timestamp, t),
                  color: c(n.color_r, n.color_g, n.color_b),
                });
          return { rgMarkers: r, rgSegments: a };
        }
        UpdateRegions(e) {
          let t = [];
          for (const r of e)
            t.push({
              strTemplateName: r.name,
              min: { x: r.min_x, y: r.min_y },
              max: { x: r.max_x, y: r.max_y },
              behavior: r.behavior,
            });
          return t;
        }
        UpdateSoundtrack(e, t) {}
      }
      var u = r(36064),
        p = r(47831),
        _ = r(19719),
        h = r(78327),
        g = r(6419),
        y = r(34374),
        S = r(6144);
      class f {
        m_elVideo = null;
        m_peerConnection = null;
        m_strBroadcastSteamID = void 0;
        m_ulWebRTCSessionID = void 0;
        m_schCandidateTimer = new S.LU();
        m_nHostCandidateGeneration = void 0;
        m_nCandidateUpdateIntervalMS = void 0;
        m_listeners = new S.Ji();
        m_bFirstPlay = !0;
        m_bStatsViewVisible = !1;
        m_schCaptureDisplayStatsTrigger = new S.LU();
        m_stats = new y._L();
        constructor(e) {
          (0, s.Gn)(this), (this.m_elVideo = e);
        }
        async PlayMPD(e) {}
        async PlayWebRTC(e, t, r, a, n) {
          (this.m_strBroadcastSteamID = e),
            (this.m_ulWebRTCSessionID = r),
            (this.m_nHostCandidateGeneration = 0),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "pause",
              this.OnVideoPause,
            ),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "resize",
              this.OnVideoResize,
            );
          let s = {
            iceServers: [
              { urls: ["stun:" + a] },
              { urls: ["turn:" + a], username: t, credential: r },
            ],
            iceTransportPolicy: "relay",
          };
          (this.m_peerConnection = new RTCPeerConnection(s)),
            (this.m_peerConnection.oniceconnectionstatechange = ((e) => {
              this.m_peerConnection &&
                (console.log(
                  "BroadcastWebRTC: ICE connection state changed to " +
                    this.m_peerConnection.iceConnectionState,
                ),
                "failed" === this.m_peerConnection.iceConnectionState
                  ? this.OnWebRTCConnectionFailed()
                  : "disconnected" ===
                      this.m_peerConnection.iceConnectionState &&
                    this.OnWebRTCConnectionRetry());
            }).bind(this)),
            (this.m_peerConnection.onicecandidate = ((e) => {
              if (e.candidate) {
                const t = new FormData();
                t.append("broadcaststeamid", this.m_strBroadcastSteamID),
                  t.append("webrtc_session_id", this.m_ulWebRTCSessionID),
                  t.append("sdp_mid", e.candidate.sdpMid),
                  t.append(
                    "sdp_mline_index",
                    String(e.candidate.sdpMLineIndex),
                  ),
                  t.append("candidate", e.candidate.candidate),
                  i()
                    .post(
                      `${h.TS.CHAT_BASE_URL}broadcast/addbroadcastwebrtccandidate`,
                      t,
                    )
                    .then((e) => {
                      const t = e.data;
                      (t.success && 1 == t.success) ||
                        console.log(
                          "Failed to add a WebRTC session ICE candidate: " +
                            String(t.success),
                        );
                    })
                    .catch((e) =>
                      console.log(
                        "Failed to add a WebRTC session ICE candidate" + e,
                      ),
                    );
              }
            }).bind(this)),
            (this.m_peerConnection.ontrack = ((e) => {
              "video" === e.track.kind &&
                ((this.m_elVideo.src = null),
                (this.m_elVideo.srcObject = e.streams[0]),
                this.Play());
            }).bind(this)),
            this.m_peerConnection
              .setRemoteDescription({ type: "offer", sdp: n })
              .then(async () => {
                await this.m_peerConnection.setLocalDescription(
                  await this.m_peerConnection.createAnswer(),
                );
                const e = new FormData();
                e.append("broadcaststeamid", this.m_strBroadcastSteamID),
                  e.append("webrtc_session_id", this.m_ulWebRTCSessionID),
                  e.append(
                    "answer",
                    this.m_peerConnection.localDescription.sdp,
                  );
                try {
                  await i()
                    .post(
                      `${h.TS.CHAT_BASE_URL}broadcast/setbroadcastwebrtcanswer`,
                      e,
                    )
                    .then((e) => {
                      const t = e.data;
                      if (!t.success || 1 != t.success)
                        throw new Error(String(t.success));
                    });
                } catch (e) {
                  return (
                    console.log(
                      "Failed to set the WebRTC session answer: " + e,
                    ),
                    void this.OnWebRTCConnectionRetry()
                  );
                }
                (this.m_nCandidateUpdateIntervalMS = 250),
                  this.m_schCandidateTimer.Schedule(
                    this.m_nCandidateUpdateIntervalMS,
                    () => this.GetHostCandidates(),
                  );
              });
        }
        async GetHostCandidates() {
          const e = new FormData();
          e.append("broadcaststeamid", this.m_strBroadcastSteamID),
            e.append("webrtc_session_id", this.m_ulWebRTCSessionID),
            e.append(
              "candidate_generation",
              String(this.m_nHostCandidateGeneration),
            );
          try {
            await i()
              .post(
                `${h.TS.CHAT_BASE_URL}broadcast/getbroadcastwebrtccandidates`,
                e,
              )
              .then((e) => {
                const t = e.data,
                  r = t.data;
                if (!t.success || 1 != t.success)
                  throw new Error(String(t.success));
                r.candidate_generation > this.m_nHostCandidateGeneration
                  ? (r.candidates.forEach((e) => {
                      const t = new RTCIceCandidate({
                        sdpMid: e.sdp_mid,
                        sdpMLineIndex: e.sdp_mline_index,
                        candidate: e.candidate,
                      });
                      this.m_peerConnection
                        .addIceCandidate(t)
                        .catch((e) => console.error(e));
                    }),
                    (this.m_nHostCandidateGeneration = r.candidate_generation))
                  : this.m_nHostCandidateGeneration > 0 &&
                    (this.m_nCandidateUpdateIntervalMS *= 2);
              });
          } catch (e) {
            return (
              console.log("Failed to get WebRTC session ICE candidates" + e),
              void this.OnWebRTCConnectionRetry()
            );
          }
          this.m_schCandidateTimer.Schedule(
            this.m_nCandidateUpdateIntervalMS,
            () => this.GetHostCandidates(),
          );
        }
        DispatchEvent(e, t = null) {
          let r = new CustomEvent(e, {
            cancelable: !0,
            bubbles: !0,
            detail: t,
          });
          this.m_elVideo.dispatchEvent(r);
        }
        OnWebRTCConnectionRetry() {
          this.DispatchEvent("valve-webrtcretry");
        }
        OnWebRTCConnectionFailed() {
          this.DispatchEvent("valve-webrtcfailed");
        }
        Close() {
          this.m_listeners.Unregister(),
            this.m_schCandidateTimer.Cancel(),
            this.m_schCaptureDisplayStatsTrigger.Cancel(),
            this.m_peerConnection &&
              (this.m_peerConnection.close(), (this.m_peerConnection = null)),
            this.m_elVideo.pause(),
            (this.m_elVideo.srcObject = null),
            this.m_stats &&
              (this.m_stats.GetFPSMonitor().Close(), (this.m_stats = null)),
            (this.m_bFirstPlay = !0);
        }
        IsBuffering() {
          return !1;
        }
        GetCurrentPlayTime() {
          return 0;
        }
        GetLiveContentStartTime() {
          return null;
        }
        GetAvailableVideoStartTime() {
          return 0;
        }
        GetBufferedLiveEdgeTime() {
          return 0;
        }
        IsPaused() {
          return this.m_elVideo.paused;
        }
        async Play() {
          const e = this.m_bFirstPlay;
          this.m_bFirstPlay = !1;
          let t = !1;
          const r = () => {
            (t = !0),
              this.m_stats
                .GetFPSMonitor()
                .StartTracking(() =>
                  this.m_stats.ExtractFrameInfo(this.m_elVideo),
                );
          };
          try {
            await this.m_elVideo.play(), r();
          } catch (e) {
            e.name;
          }
          !t && e && this.DispatchEvent("valve-userinputneeded");
        }
        Pause() {
          this.m_elVideo.pause();
        }
        CanSeek() {
          return !1;
        }
        SeekAndPlay(e) {
          return this.Play(), 0;
        }
        Seek(e) {
          return 0;
        }
        JumpTime(e) {
          return 0;
        }
        IsMuted() {
          return this.m_elVideo.muted;
        }
        SetMuted(e) {
          this.m_elVideo.muted = e;
        }
        SetVolume(e) {
          (e = _.OQ(e, 0, 1)), (this.m_elVideo.volume = e);
        }
        GetVolume() {
          return this.m_elVideo.volume;
        }
        GetDASHPlayerStats() {
          return this.m_stats;
        }
        SetStatsViewIsVisible(e) {
          e && !this.m_bStatsViewVisible
            ? (this.CaptureStatsForDisplay(),
              this.m_schCaptureDisplayStatsTrigger.Schedule(
                250,
                this.CaptureStatsForDisplay,
              ))
            : !e &&
              this.m_bStatsViewVisible &&
              this.m_schCaptureDisplayStatsTrigger.Cancel(),
            (this.m_bStatsViewVisible = e);
        }
        CaptureStatsForDisplay() {
          this.m_stats.SetHTMLVideoPlayerDisplay(
            this.m_elVideo.videoWidth,
            this.m_elVideo.videoHeight,
            this.m_elVideo.clientWidth,
            this.m_elVideo.clientHeight,
          ),
            this.m_schCaptureDisplayStatsTrigger.Schedule(
              250,
              this.CaptureStatsForDisplay,
            );
        }
        OnVideoPause(e) {
          this.m_stats.GetFPSMonitor().Close();
        }
        OnVideoResize(e) {
          this.m_stats.GetFPSMonitor().SetWindowResized();
        }
        GetVideoRepresentations() {
          let e = [];
          return e.push({ id: "auto", displayName: "Auto", selected: !0 }), e;
        }
        SetVideoRepresentation(e) {}
        IsLiveContent() {
          return !0;
        }
        GetThumbnailForTimestamp(e) {
          return "";
        }
        BHasTimedText() {
          return !1;
        }
      }
      (0, a.Cg)([g.o], f.prototype, "PlayWebRTC", null),
        (0, a.Cg)([s.XI.bound], f.prototype, "CaptureStatsForDisplay", null),
        (0, a.Cg)([g.o], f.prototype, "OnVideoPause", null),
        (0, a.Cg)([g.o], f.prototype, "OnVideoResize", null);
      var b = r(62490),
        w = r(44332),
        v = r(61859),
        I = r(68797),
        B = r(6469),
        C = r(43882),
        E = r(66703);
      const T = 7;
      var A, G;
      !(function (e) {
        (e[(e.None = 0)] = "None"),
          (e[(e.Unlocking = 1)] = "Unlocking"),
          (e[(e.Loading = 2)] = "Loading"),
          (e[(e.Ready = 3)] = "Ready"),
          (e[(e.Error = 4)] = "Error");
      })(A || (A = {}));
      class D {
        m_rtUnlockTime = 0;
        m_schUnlockTimeout = new S.LU();
        m_broadcast;
        m_video;
        UnlockH264(e, t) {
          this.BCanUnlockH264()
            ? (e.SetState(A.Unlocking, ""),
              console.log("Unlocking H.264 for broadcast video playback"),
              this.RequestUnlockH264(),
              (this.m_broadcast = e),
              (this.m_video = t),
              (this.m_rtUnlockTime = Date.now()),
              this.m_schUnlockTimeout.Schedule(100, () =>
                this.CheckUnlockState(),
              ))
            : e.SetState(A.Error, (0, v.we)("#BroadcastWatch_MinBrowser"));
        }
        BCanUnlockH264() {
          return (0, E.Dp)("RemotePlay.UnlockH264")
            ? (console.log("Client supports direct H.264 unlock"), !0)
            : (0, E.Dp)("BrowserView.PostMessageToParent")
              ? (console.log("Client supports browserview H.264 unlock"), !0)
              : (console.log("Client does not support H.264 unlock"), !1);
        }
        RequestUnlockH264() {
          (0, E.Dp)("RemotePlay.UnlockH264")
            ? (console.log("Requesting direct H.264 unlock"),
              SteamClient.RemotePlay.UnlockH264())
            : (0, E.Dp)("BrowserView.PostMessageToParent")
              ? (console.log("Requesting browserview unlock"),
                SteamClient.BrowserView.PostMessageToParent(
                  "UnlockH264Request",
                  "CUnlockH264Helper",
                ))
              : console.log(
                  "Failed to request H.264 unlock: no method supported",
                );
        }
        CheckUnlockState() {
          if (this.m_broadcast.m_eWatchState != A.Unlocking) return;
          if ((0, u.Mc)() || (0, u.aM)())
            return (
              console.log("Unlocking H.264 successful"),
              this.m_broadcast.SetState(A.None, ""),
              void this.m_video.Restart()
            );
          Date.now() - this.m_rtUnlockTime > 6e3
            ? (console.log(
                "Unlocking H.264 timed out (Steam client or servers offline?)",
              ),
              this.m_broadcast.SetState(
                A.Error,
                (0, v.we)("#BroadcastWatch_MinBrowser"),
              ))
            : this.m_schUnlockTimeout.Schedule(100, () =>
                this.CheckUnlockState(),
              );
        }
      }
      class M {
        constructor() {
          (0, s.Gn)(this);
        }
        m_steamIDBroadcast = "";
        m_ulBroadcastID = "";
        m_ulViewerToken = "";
        m_strCDNAuthUrlParameters = void 0;
        m_bWebRTC = !1;
        m_data;
        m_eWatchState = A.None;
        m_strStateDescription = "";
        m_rgVideos = [];
        m_schManifestTimeout = new S.LU();
        m_schHeartbeatTimeout = new S.LU();
        SetState(e, t = "") {
          (this.m_eWatchState = e),
            (this.m_strStateDescription = t),
            e == A.Error && console.log(this.m_strStateDescription);
        }
      }
      (0, a.Cg)([s.sH], M.prototype, "m_ulBroadcastID", void 0),
        (0, a.Cg)([s.sH], M.prototype, "m_eWatchState", void 0),
        (0, a.Cg)([s.sH], M.prototype, "m_strStateDescription", void 0),
        (0, a.Cg)([s.XI], M.prototype, "SetState", null);
      class R {
        m_steamIDBroadcast = "";
        m_bInitialized = !1;
        m_strTitle = "";
        m_strAppId = "" + T;
        m_nAppID = T;
        m_strAppTitle = "";
        m_strThumbnailUrl = "";
        m_nViewerCount = 0;
        m_bIsOnline = !1;
        m_schUpdateTimeout = new S.LU();
        m_nRefCount = 0;
        constructor(e) {
          (0, s.Gn)(this), (this.m_steamIDBroadcast = e);
        }
      }
      (0, a.Cg)([s.sH], R.prototype, "m_bInitialized", void 0),
        (0, a.Cg)([s.sH], R.prototype, "m_strTitle", void 0),
        (0, a.Cg)([s.sH], R.prototype, "m_strAppId", void 0),
        (0, a.Cg)([s.sH], R.prototype, "m_nAppID", void 0),
        (0, a.Cg)([s.sH], R.prototype, "m_strAppTitle", void 0),
        (0, a.Cg)([s.sH], R.prototype, "m_strThumbnailUrl", void 0),
        (0, a.Cg)([s.sH], R.prototype, "m_nViewerCount", void 0),
        (0, a.Cg)([s.sH], R.prototype, "m_bIsOnline", void 0);
      class k {
        constructor() {
          (0, s.Gn)(this);
        }
        m_eWatchState = A.None;
        m_strStateDescription = "";
        m_rgVideos = [];
        SetState(e, t = "") {
          (this.m_eWatchState = e),
            (this.m_strStateDescription = t),
            e == A.Error && console.log(this.m_strStateDescription);
        }
      }
      (0, a.Cg)([s.sH], k.prototype, "m_eWatchState", void 0),
        (0, a.Cg)([s.sH], k.prototype, "m_strStateDescription", void 0),
        (0, a.Cg)([s.XI], k.prototype, "SetState", null);
      class F extends k {
        m_clipID;
        m_data;
      }
      class U extends k {
        m_nAppIDVOD;
        m_manifestURL;
      }
      class L {
        m_mapBroadcasts = new Map();
        m_mapClips = new Map();
        m_mapVODs = new Map();
        m_activeVideo = null;
        m_broadcastSettings = { nVolume: 1, bMuted: !1, ulViewerToken: "0" };
        m_schSaveSettings = new S.LU();
        m_broadcastInfos = {};
        constructor() {
          (0, s.Gn)(this), this.LoadBroadcastSettings();
        }
        GetBroadcastState(e) {
          if (e.IsBroadcastClip()) {
            let t = this.m_mapClips.get(e.GetBroadcastClipID());
            return t ? t.m_eWatchState : A.None;
          }
          if (e.IsBroadcastVOD()) {
            const t = this.m_mapVODs.get(e.GetBroadcastAppIDVOD());
            return t ? t.m_eWatchState : A.None;
          }
          {
            let t = this.m_mapBroadcasts.get(e.GetBroadcastSteamID());
            return t ? t.m_eWatchState : A.None;
          }
        }
        GetBroadcastStateDescription(e) {
          if (e.IsBroadcastClip()) {
            let t = this.m_mapClips.get(e.GetBroadcastClipID());
            return t ? t.m_strStateDescription : "";
          }
          if (e.IsBroadcastVOD()) {
            const t = this.m_mapVODs.get(e.GetBroadcastAppIDVOD());
            return t ? t.m_strStateDescription : "";
          }
          {
            let t = this.m_mapBroadcasts.get(e.GetBroadcastSteamID());
            return t ? t.m_strStateDescription : "";
          }
        }
        CreateBroadcastVideo(e, t, r, a) {
          let n = this.GetOrCreateBroadcast(t),
            { nVolume: i, bMuted: s } = this.m_broadcastSettings,
            o = new P(e, i, s, r);
          if (
            (o.SetBroadcastSteamID(t),
            n.m_rgVideos.push(o),
            (n.m_bWebRTC = a),
            !(0, u.Mc)() && !(0, u.aM)())
          ) {
            return new D().UnlockH264(n, o), o;
          }
          return o;
        }
        CreateClipVideo(e, t, r) {
          let a = this.GetOrCreateClip(t),
            { nVolume: n, bMuted: i } = this.m_broadcastSettings,
            s = new P(e, n, i, r);
          if (
            (s.SetBroadcastClipID(t),
            a.m_rgVideos.push(s),
            !(0, u.Mc)() && !(0, u.aM)())
          ) {
            return new D().UnlockH264(a, s), s;
          }
          return s;
        }
        CreateVODVideo(e, t, r) {
          let a = this.GetOrCreateVOD(t),
            { nVolume: n, bMuted: i } = this.m_broadcastSettings,
            s = new P(e, n, i, r);
          if (
            (s.SetBroadcastAppIDVOD(t),
            a.m_rgVideos.push(s),
            !(0, u.Mc)() && !(0, u.aM)())
          ) {
            return new D().UnlockH264(a, s), s;
          }
          return s;
        }
        StartVideo(e) {
          if (e.IsBroadcastClip()) {
            console.log(`Starting clip for ${e.GetBroadcastClipID()}`);
            let t = this.m_mapClips.get(e.GetBroadcastClipID());
            if (!t) return;
            this.SetActiveVideo(e),
              t.m_eWatchState == A.None
                ? this.GetClipManifest(t, e.GetWatchLocation())
                : t.m_eWatchState == A.Ready && e.StartClip(t);
          } else if (e.IsBroadcastVOD()) {
            console.log(`Starting VOD for ${e.GetBroadcastAppIDVOD()}`);
            let t = this.m_mapVODs.get(e.GetBroadcastAppIDVOD());
            if (!t) return;
            this.SetActiveVideo(e),
              t.m_eWatchState == A.None
                ? this.GetVODManifest(t, e.GetWatchLocation())
                : t.m_eWatchState == A.Ready && e.StartVOD(t);
          } else {
            let t = this.m_mapBroadcasts.get(e.GetBroadcastSteamID());
            if (!t) return;
            this.SetActiveVideo(e),
              t.m_eWatchState == A.None
                ? this.GetBroadcastManifest(t, e.GetWatchLocation())
                : t.m_eWatchState == A.Ready && e.StartBroadcast(t);
          }
        }
        SetActiveVideo(e) {
          this.m_mapBroadcasts.forEach((t) => {
            for (let r of t.m_rgVideos) r != e && r.StopPlaybackTillUserInput();
          }),
            this.m_mapClips.forEach((t) => {
              for (let r of t.m_rgVideos)
                r != e && r.StopPlaybackTillUserInput();
            }),
            (this.m_activeVideo = e);
        }
        PauseAllVideo() {
          this.m_mapBroadcasts.forEach((e) => {
            for (let t of e.m_rgVideos) t.StopPlaybackTillUserInput();
          });
        }
        async StopVideo(e) {
          let t = e.GetBroadcastSteamID(),
            r = this.m_mapBroadcasts.get(t);
          e.Stop(),
            r &&
              (r.m_ulBroadcastID &&
                (async function (e, t, r) {
                  if (!t) return;
                  let a = new FormData();
                  a.append("steamid", e),
                    a.append("broadcastid", t),
                    a.append("viewertoken", r);
                  try {
                    await i().post(
                      h.TS.CHAT_BASE_URL + "broadcast/stopwatching",
                      a,
                    );
                  } catch {}
                })(
                  t,
                  r.m_ulBroadcastID,
                  this.m_broadcastSettings.ulViewerToken,
                ),
              b.Wp(r.m_rgVideos, (t) => t == e),
              this.RemoveBroadcastIfUnused(r));
        }
        StartInfo(e) {
          const t = this.GetOrCreateBroadcastInfo(e);
          return (
            t.m_nRefCount++,
            (t.m_bInitialized && t.m_schUpdateTimeout.IsScheduled()) ||
              this.LoadBroadcastInfo(t),
            t
          );
        }
        StopInfo(e) {
          e.m_nRefCount--;
        }
        GetOrCreateBroadcastInfo(e) {
          if (!e) {
            return new R("");
          }
          if (!this.m_broadcastInfos[e]) {
            const t = (0, s.sH)(new R(e));
            this.m_broadcastInfos[e] = t;
          }
          return this.m_broadcastInfos[e];
        }
        GetOrCreateBroadcast(e) {
          let t = this.m_mapBroadcasts.get(e);
          return (
            t ||
            ((t = new M()),
            (t.m_steamIDBroadcast = e),
            (t.m_eWatchState = A.None),
            this.m_mapBroadcasts.set(e, t),
            t)
          );
        }
        GetBroadcast(e) {
          return this.m_mapBroadcasts.get(e);
        }
        GetBroadcastClip(e) {
          return this.m_mapClips.get(e);
        }
        GetBroadcastVOD(e) {
          return this.m_mapVODs.get(e);
        }
        RemoveBroadcastIfUnused(e) {
          e.m_rgVideos.length ||
            (e.m_schHeartbeatTimeout.Cancel(),
            e.m_schManifestTimeout.Cancel(),
            this.m_mapBroadcasts.delete(e.m_steamIDBroadcast));
        }
        GetOrCreateClip(e) {
          let t = this.m_mapClips.get(e);
          return (
            t ||
            ((t = new F()),
            (t.m_clipID = e),
            (t.m_eWatchState = A.None),
            this.m_mapClips.set(e, t),
            t)
          );
        }
        GetOrCreateVOD(e) {
          let t = this.m_mapVODs.get(e);
          return (
            t ||
            ((t = new U()),
            (t.m_nAppIDVOD = e),
            (t.m_eWatchState = A.None),
            this.m_mapVODs.set(e, t),
            t)
          );
        }
        async LoadBroadcastInfo(e) {
          let t = "0",
            r = this.m_mapBroadcasts.get(e.m_steamIDBroadcast);
          if ((r && (t = r.m_ulBroadcastID), 0 == e.m_nRefCount)) return;
          const a = {
            steamid: e.m_steamIDBroadcast,
            broadcastid: t,
            location:
              r &&
              r.m_rgVideos &&
              r.m_rgVideos[0] &&
              r.m_rgVideos[0].GetWatchLocation(),
          };
          try {
            const t = await i().get(
              `${h.TS.CHAT_BASE_URL}broadcast/getbroadcastinfo/`,
              { params: a },
            );
            if (!t || !t.data || !t.data.success || 1 != t.data.success)
              return void (e.m_bInitialized = !0);
            const r = t.data;
            (0, s.h5)(() => {
              (e.m_bInitialized = !0),
                (e.m_strTitle = r.title),
                (e.m_strAppId = r.appid),
                (e.m_nAppID = Number.parseInt(r.appid)),
                (e.m_strAppTitle = r.app_title),
                (e.m_strThumbnailUrl = r.thumbnail_url),
                (e.m_nViewerCount = r.viewer_count),
                (e.m_bIsOnline = r.is_online),
                !e.m_strTitle &&
                  o.td &&
                  ((e.m_strTitle = o.td.name),
                  (e.m_strAppTitle = o.td.appName || o.td.name));
              const t = r.update_interval;
              t &&
                "number" == typeof t &&
                e.m_schUpdateTimeout.Schedule(1e3 * t, () =>
                  this.LoadBroadcastInfo(e),
                );
            });
          } catch (e) {
            console.error(e);
          }
        }
        DelayedGetBroadcastManifest(e, t, r = Date.now()) {
          e.m_schManifestTimeout.Schedule(5e3, () =>
            this.GetBroadcastManifest(e, t, r),
          );
        }
        async GetBroadcastManifest(e, t, r = Date.now()) {
          e.SetState(A.Loading, "");
          let a = {
              steamid: e.m_steamIDBroadcast,
              broadcastid: 0,
              viewertoken: this.m_broadcastSettings.ulViewerToken,
              watchlocation: t,
              sessionid: h.TS.SESSIONID,
              is_webrtc: e.m_bWebRTC,
            },
            n = null;
          try {
            n = await i().get(
              h.TS.CHAT_BASE_URL + "broadcast/getbroadcastmpd/",
              { params: a, withCredentials: !0 },
            );
          } catch (e) {
            let t = (0, I.H)(e);
            console.error(
              "Failed to get broadcast manifest!" + t.strErrorMsg,
              t,
            );
          }
          if (!n || 200 != n.status)
            return void e.SetState(
              A.Error,
              (0, v.we)("#BroadcastWatch_RequestFailed"),
            );
          let s = n.data;
          s.viewertoken && this.SetViewerToken(s.viewertoken);
          let o = s.success;
          if ("ready" == o)
            e.SetState(A.Ready),
              (e.m_ulBroadcastID = s.broadcastid),
              (e.m_ulViewerToken = this.m_broadcastSettings.ulViewerToken),
              (e.m_strCDNAuthUrlParameters = s.cdn_auth_url_parameters),
              (e.m_bWebRTC = s.is_webrtc),
              (e.m_data = s),
              this.LoadBroadcast(e),
              setTimeout(() => {
                e.m_schHeartbeatTimeout.Schedule(
                  1e3 * e.m_data.heartbeat_interval,
                  () => this.HeartbeatBroadcast(e),
                );
              }, 3e4 * Math.random());
          else if ("waiting" == o) {
            e.SetState(
              A.Loading,
              (0, v.we)("#BroadcastWatch_WaitingForResponse"),
            );
            let a = Date.now() - r;
            if (a > 6e4)
              return void e.SetState(
                A.Error,
                (0, v.we)("#BroadcastWatch_NotAvailable"),
              );
            let n = a > 3e4 ? s.retry : 5e3;
            e.m_schManifestTimeout.Schedule(n, () =>
              this.GetBroadcastManifest(e, t, r),
            );
          } else
            "waiting_for_start" == o
              ? (e.SetState(
                  A.Loading,
                  (0, v.we)("#BroadcastWatch_WaitingForStart"),
                ),
                e.m_schManifestTimeout.Schedule(s.retry, () =>
                  this.GetBroadcastManifest(e, t, r),
                ))
              : "waiting_for_reconnect" == o
                ? (e.SetState(
                    A.Loading,
                    (0, v.we)("#BroadcastWatch_WaitingForReconnect"),
                  ),
                  e.m_schManifestTimeout.Schedule(s.retry, () =>
                    this.GetBroadcastManifest(e, t, r),
                  ))
                : "end" == o
                  ? e.SetState(
                      A.Error,
                      (0, v.we)("#BroadcastWatch_NotAvailable"),
                    )
                  : "too_many_broadcasts" == o
                    ? e.SetState(
                        A.Error,
                        (0, v.we)("#BroadcastWatch_TooManyBroadcasts"),
                      )
                    : "system_not_supported" == o
                      ? e.SetState(
                          A.Error,
                          (0, v.we)("#BroadcastWatch_SystemNotSupported"),
                        )
                      : "user_restricted" == o
                        ? e.SetState(
                            A.Error,
                            (0, v.we)("#BroadcastWatch_UserRestricted"),
                          )
                        : "poor_upload_quality" == o
                          ? e.SetState(
                              A.Error,
                              (0, v.we)("#BroadcastWatch_PoorUploadQuality"),
                            )
                          : "request_failed" == o
                            ? e.SetState(
                                A.Error,
                                (0, v.we)("#BroadcastWatch_RequestFailed"),
                              )
                            : "too_many_viewers" == o
                              ? e.SetState(
                                  A.Error,
                                  (0, v.we)("#BroadcastWatch_TooManyViewers"),
                                )
                              : e.SetState(
                                  A.Error,
                                  (0, v.we)("#BroadcastWatch_NotAvailable"),
                                );
        }
        async GetClipManifest(e, t) {
          e.SetState(A.Loading, "");
          let r = {
              clipid: e.m_clipID,
              watchlocation: t,
              sessionid: h.TS.SESSIONID,
            },
            a = null;
          try {
            a = await i().get(h.TS.CHAT_BASE_URL + "broadcast/getclipdetails", {
              params: r,
              withCredentials: !0,
            });
          } catch (e) {
            console.error(e), console.log("Failed to get clip manifest!");
          }
          if (!a || 200 != a.status)
            return void e.SetState(
              A.Error,
              (0, v.we)("#BroadcastWatch_RequestFailed"),
            );
          let n = a.data;
          1 == n.success
            ? (e.SetState(A.Ready), (e.m_data = n), this.LoadClip(e))
            : e.SetState(A.Error, (0, v.we)("#BroadcastWatch_RequestFailed"));
        }
        async GetVODManifest(e, t) {
          e.SetState(A.Loading, "");
          let r = await B.K.Get().LoadVODForAppID(e.m_nAppIDVOD);
          r
            ? (e.SetState(A.Ready),
              (e.m_manifestURL = r.video_url),
              this.LoadVOD(e))
            : e.SetState(A.Error, (0, v.we)("#BroadcastWatch_RequestFailed"));
        }
        async HeartbeatBroadcast(e) {
          let t = new FormData();
          t.append("steamid", e.m_steamIDBroadcast),
            t.append("broadcastid", e.m_ulBroadcastID),
            t.append("viewertoken", this.m_broadcastSettings.ulViewerToken),
            i().post(h.TS.CHAT_BASE_URL + "broadcast/heartbeat/", t),
            e.m_schHeartbeatTimeout.Schedule(
              1e3 * e.m_data.heartbeat_interval,
              () => this.HeartbeatBroadcast(e),
            );
        }
        LoadBroadcast(e) {
          e.m_rgVideos.findIndex((e) => e == this.m_activeVideo) >= 0 &&
            this.m_activeVideo.StartBroadcast(e);
        }
        LoadClip(e) {
          e.m_rgVideos.findIndex((e) => e == this.m_activeVideo) >= 0 &&
            this.m_activeVideo.StartClip(e);
        }
        LoadVOD(e) {
          e.m_rgVideos.findIndex((e) => e == this.m_activeVideo) >= 0 &&
            this.m_activeVideo.StartVOD(e);
        }
        BroadcastDownloadFailed(e, t = !0, r = p.N_.Invalid) {
          e.Stop();
          let a = this.m_mapBroadcasts.get(e.GetBroadcastSteamID());
          a &&
            a.m_eWatchState != A.Loading &&
            (a.m_bWebRTC && t && (a.m_bWebRTC = !1),
            r == p.N_.StreamGone
              ? this.DelayedGetBroadcastManifest(a, e.GetWatchLocation())
              : this.GetBroadcastManifest(a, e.GetWatchLocation()));
        }
        UserInputClickVideo(e) {
          if (
            this.m_activeVideo != e &&
            (this.PauseAllVideo(),
            (this.m_activeVideo = e),
            !e.IsBroadcastClip() && !e.IsBroadcastVOD())
          ) {
            let t = this.m_mapBroadcasts.get(e.GetBroadcastSteamID());
            this.GetBroadcastManifest(t, e.GetWatchLocation());
          }
          e.UserInputClick();
        }
        LoadBroadcastSettings() {
          if (!window.localStorage) return;
          let e = window.localStorage.getItem("broadcastSettings");
          if (!e) return;
          let t = JSON.parse(e);
          if (!t) return;
          Object.assign(this.m_broadcastSettings, t);
          let r = this.m_broadcastSettings;
          (r.bMuted = !!r.bMuted),
            (r.nVolume = _.OQ(r.nVolume, 0, 1)),
            "string" != typeof r.ulViewerToken && (r.ulViewerToken = "0");
        }
        SaveBroadcastSettings() {
          window.localStorage &&
            this.m_schSaveSettings.Schedule(1e3, () => {
              try {
                window.localStorage.setItem(
                  "broadcastSettings",
                  JSON.stringify(this.m_broadcastSettings),
                );
              } catch (e) {}
            });
        }
        SetViewerToken(e) {
          this.m_broadcastSettings.ulViewerToken != e &&
            ((this.m_broadcastSettings.ulViewerToken = e),
            this.SaveBroadcastSettings());
        }
        GetViewerToken() {
          return this.m_broadcastSettings.ulViewerToken;
        }
        SaveVolumeChange(e, t) {
          (this.m_broadcastSettings.nVolume == e &&
            this.m_broadcastSettings.bMuted == t) ||
            ((this.m_broadcastSettings.nVolume = e),
            (this.m_broadcastSettings.bMuted = t),
            this.SaveBroadcastSettings());
        }
      }
      (0, a.Cg)([s.sH], L.prototype, "m_mapBroadcasts", void 0),
        (function (e) {
          (e[(e.Timeline = 1)] = "Timeline"), (e[(e.Minimap = 2)] = "Minimap");
        })(G || (G = {}));
      class P {
        m_elVideo = null;
        m_player = null;
        m_listeners = new S.Ji();
        m_gameDataParser = null;
        m_eWatchLocation = 0;
        m_bStartWithSubtitles = !1;
        m_steamIDBroadcast = null;
        m_BroadcastInfo = null;
        m_broadcastClipID = null;
        m_nBroadcastAppIDVOD = null;
        m_bPaused = !1;
        m_nPlaybackTime = 0;
        m_bBuffering = !1;
        m_bOnLiveEdge = !1;
        m_nVolume = 0;
        m_bMuted = !1;
        m_bUserInputNeeded = !1;
        m_bIsReplay = !1;
        m_nTimelineDuration = 1800;
        m_nVideoStartPos = 0;
        m_nVideoEndPos = 0;
        m_editorStartTime = 0;
        m_editorEndTime = 0;
        m_rgMarkers = s.sH.array();
        m_rgSegments = s.sH.array();
        m_rgRegions = s.sH.array();
        m_fnOnVideoEnd;
        m_videoEndingTimer;
        constructor(e, t, r, a) {
          (0, s.Gn)(this),
            (this.m_elVideo = e),
            (this.m_nVolume = t),
            (this.m_bMuted = r),
            (this.m_eWatchLocation = a);
        }
        SetBroadcastSteamID(e) {
          this.m_steamIDBroadcast = e;
        }
        GetBroadcastSteamID() {
          return this.m_steamIDBroadcast;
        }
        GetWatchLocation() {
          return this.m_eWatchLocation;
        }
        IsPaused() {
          return this.m_bPaused;
        }
        GetPlaybackTime() {
          return this.m_nPlaybackTime;
        }
        SetStatsViewIsVisible(e) {
          this.m_player && this.m_player.SetStatsViewIsVisible(e);
        }
        GetDASHPlayerStats() {
          return this.m_player.GetDASHPlayerStats();
        }
        BHasDASHStats() {
          return null != this.m_player;
        }
        IsTimelineMapActive() {
          return !1;
        }
        CanSeek() {
          return this.m_player && this.m_player.CanSeek();
        }
        IsBuffering() {
          return this.m_bBuffering;
        }
        IsOnLiveEdge() {
          return this.m_bOnLiveEdge;
        }
        GetVideoAvailableStartTime() {
          return this.m_nVideoStartPos;
        }
        GetVolume() {
          return this.m_nVolume;
        }
        GetUserInputNeeded() {
          return this.m_bUserInputNeeded;
        }
        IsReplay() {
          return this.m_bIsReplay;
        }
        IsBroadcastClip() {
          return null != this.m_broadcastClipID;
        }
        SetBroadcastClipID(e) {
          this.m_broadcastClipID = e;
        }
        GetBroadcastClipID() {
          return this.m_broadcastClipID;
        }
        IsBroadcastVOD() {
          return null != this.m_nBroadcastAppIDVOD;
        }
        SetBroadcastAppIDVOD(e) {
          this.m_nBroadcastAppIDVOD = e;
        }
        GetBroadcastAppIDVOD() {
          return this.m_nBroadcastAppIDVOD;
        }
        GetVideoRepresentations() {
          return this.m_player ? this.m_player.GetVideoRepresentations() : [];
        }
        SetVideoRepresentation(e) {
          this.m_player.SetVideoRepresentation(e);
        }
        GetBroadcastInfo() {
          return this.m_BroadcastInfo;
        }
        BHasTimedText() {
          return this.m_player?.BHasTimedText();
        }
        BHasPlayer() {
          return Boolean(this.m_player);
        }
        ListSubtitles() {
          return this.m_elVideo.textTracks;
        }
        GetSubtitles() {
          for (let e = 0; e < this.m_elVideo.textTracks.length; e++) {
            const t = this.m_elVideo.textTracks[e];
            if ("showing" === t.mode) return t;
          }
          return null;
        }
        SetSubtitles(e) {
          let t = e ? v.bi[e] : -1;
          this.m_player.SetSubtitles(t);
        }
        SetStartWithSubtitles(e) {
          this.m_bStartWithSubtitles = e;
        }
        GetBroadcastState() {
          return O.GetBroadcastState(this);
        }
        GetBroadcastStateDescription() {
          return O.GetBroadcastStateDescription(this);
        }
        SetOnVideoCallback(e) {
          this.m_fnOnVideoEnd = e;
        }
        InitPlayer() {
          (0, w.w)(!this.m_player, "Initialized twice?"),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "playing",
              this.OnVideoPlaying,
            ),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "pause",
              this.OnVideoPause,
            ),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "timeupdate",
              this.OnVideoTimeUpdate,
            ),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "volumechange",
              this.OnVolumeUpdated,
            ),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "valve-bufferupdate",
              this.OnVideoTimeUpdate,
            ),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "valve-gamedataupdate",
              this.OnGameDataUpdate,
            ),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "valve-downloadfailed",
              this.OnDownloadFailed,
            ),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "valve-webrtcretry",
              this.OnWebRTCRetry,
            ),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "valve-webrtcfailed",
              this.OnWebRTCFailed,
            ),
            this.m_listeners.AddEventListener(
              this.m_elVideo,
              "valve-userinputneeded",
              this.OnUserInputNeeded,
            ),
            (this.m_bPaused = !1),
            (this.m_nPlaybackTime = 0),
            (this.m_bBuffering = !1),
            (this.m_nTimelineDuration = 1800),
            (this.m_nVideoStartPos = 0),
            (this.m_nVideoEndPos = 0),
            this.m_rgMarkers.clear(),
            this.m_rgSegments.clear(),
            (this.m_bUserInputNeeded = !1),
            (this.m_bIsReplay = !1);
        }
        Restart() {
          this.IsMuted() ||
            this.IsPaused() ||
            this.GetUserInputNeeded() ||
            this.Play();
        }
        StartBroadcast(e) {
          this.InitPlayer(),
            e.m_data.url
              ? ((this.m_player = new p.Zn(
                  this.m_elVideo,
                  !(0, u.Mc)() && (0, u.aM)(),
                )),
                this.m_player.PlayMPD(
                  e.m_data.url,
                  e.m_strCDNAuthUrlParameters,
                  e.m_data.hls_url,
                  this.m_bStartWithSubtitles,
                ))
              : ((this.m_player = new f(this.m_elVideo)),
                this.m_player.PlayWebRTC(
                  this.m_steamIDBroadcast,
                  e.m_ulViewerToken,
                  e.m_data.webrtc_session_id,
                  e.m_data.webrtc_turn_server,
                  e.m_data.webrtc_offer_sdp,
                )),
            this.SetVolume(this.m_nVolume),
            this.m_player.SetMuted(this.m_bMuted);
          let t = this.m_player.GetDASHPlayerStats();
          t &&
            t.SetBroadcasterAndViewerInfo(
              this.m_steamIDBroadcast,
              h.iA.steamid,
              e.m_ulBroadcastID,
              e.m_ulViewerToken,
              e.m_strCDNAuthUrlParameters,
            ),
            (this.m_BroadcastInfo = O.StartInfo(this.m_steamIDBroadcast));
        }
        StartClip(e) {
          this.InitPlayer(),
            (this.m_player = new p.Zn(this.m_elVideo)),
            this.m_player.PlayMPD(
              e.m_data.clip_url,
              null,
              null,
              this.m_bStartWithSubtitles,
            ),
            this.SetVolume(this.m_nVolume),
            this.m_player.SetMuted(this.m_bMuted);
        }
        StartVOD(e) {
          this.InitPlayer();
          let t = new p.Zn(this.m_elVideo, !(0, u.Mc)() && (0, u.aM)());
          (this.m_player = t),
            h.iA.logged_in &&
              e.m_nAppIDVOD &&
              t.SetBookmarkAdapter(new C.M(e.m_nAppIDVOD)),
            this.m_player.PlayMPD(
              e.m_manifestURL,
              null,
              null,
              this.m_bStartWithSubtitles,
            ),
            this.SetVolume(this.m_nVolume),
            this.m_player.SetMuted(this.m_bMuted);
        }
        Stop() {
          this.m_listeners.Unregister(),
            this.m_BroadcastInfo &&
              (O.StopInfo(this.m_BroadcastInfo), (this.m_BroadcastInfo = null)),
            (this.m_gameDataParser = null),
            this.m_player && (this.m_player.Close(), (this.m_player = null));
        }
        TogglePlayPause() {
          !this.m_player || this.m_player.IsPaused()
            ? this.Play()
            : this.Pause();
        }
        Play() {
          const e = this.GetBroadcastState();
          e == A.None || this.IsBroadcastClip()
            ? O.StartVideo(this)
            : e == A.Ready &&
              (O.SetActiveVideo(this),
              this.m_player
                ? this.m_player.Play()
                : this.IsBroadcastVOD()
                  ? this.StartVOD(O.GetBroadcastVOD(this.m_nBroadcastAppIDVOD))
                  : this.StartBroadcast(
                      O.GetBroadcast(this.m_steamIDBroadcast),
                    ));
        }
        Pause() {
          console.log(
            "Pause ",
            this.m_steamIDBroadcast,
            this.m_nBroadcastAppIDVOD,
            this.m_broadcastClipID,
          ),
            this.m_player && this.m_player.Pause();
        }
        JumpTime(e) {
          this.m_player.JumpTime(e);
        }
        Seek(e) {
          this.m_player?.Seek(e);
        }
        SeekAndPlay(e) {
          this.m_player.SeekAndPlay(e);
        }
        JumpToLiveEdge() {
          this.m_player.IsLiveContent()
            ? this.SeekAndPlay(this.m_player.GetBufferedLiveEdgeTime())
            : this.SeekAndPlay(this.m_player.GetAvailableVideoStartTime());
        }
        SetVolume(e) {
          this.m_player && this.m_player.SetVolume(e),
            (this.m_nVolume = this.m_player.GetVolume()),
            O.SaveVolumeChange(e, this.m_bMuted);
        }
        SetMute(e) {
          this.m_player && this.m_player.SetMuted(e),
            (this.m_bMuted = e),
            O.SaveVolumeChange(this.m_nVolume, e);
        }
        IsMuted() {
          return this.m_bMuted;
        }
        OnVideoPlaying() {
          (this.m_bPaused = !1),
            0 === this.m_editorStartTime &&
              0 === this.m_editorEndTime &&
              ((this.m_editorStartTime = this.GetVideoAvailableStartTime()),
              (this.m_editorEndTime =
                this.GetVideoAvailableStartTime() +
                this.GetTimelineDuration()));
        }
        OnVideoPause() {
          this.m_bPaused = !0;
        }
        OnVideoTimeUpdate() {
          if (
            (window.clearTimeout(this.m_videoEndingTimer),
            this.IsBroadcastClip())
          )
            (this.m_nPlaybackTime = this.m_player.GetCurrentPlayTime()),
              (this.m_nVideoStartPos =
                this.m_player.GetAvailableVideoStartTime()),
              (this.m_nVideoEndPos = this.m_player.GetBufferedLiveEdgeTime()),
              (this.m_nTimelineDuration =
                this.m_nVideoEndPos - this.m_nVideoStartPos),
              (this.m_bOnLiveEdge = !1),
              (this.m_bBuffering = this.m_player.IsBuffering());
          else {
            if (
              ((this.m_nPlaybackTime = this.m_player.GetCurrentPlayTime()),
              (this.m_nVideoStartPos =
                this.m_player.GetAvailableVideoStartTime()),
              (this.m_nVideoEndPos = Math.max(
                this.m_player.GetBufferedLiveEdgeTime(),
                this.m_nPlaybackTime,
              )),
              this.IsBroadcastVOD() &&
                ((this.m_nTimelineDuration = this.m_nVideoEndPos),
                this.m_fnOnVideoEnd &&
                  this.m_nVideoEndPos - this.m_nPlaybackTime < p.Br))
            ) {
              const e = 400;
              this.m_videoEndingTimer = window.setTimeout(() => {
                this.m_fnOnVideoEnd();
              }, e);
            }
            (this.m_bBuffering = this.m_player.IsBuffering()),
              (this.m_bOnLiveEdge =
                this.m_nVideoEndPos - this.m_nPlaybackTime < p.Br),
              this.m_player.IsPaused() && (this.m_bOnLiveEdge = !1);
          }
        }
        OnVolumeUpdated() {
          (this.m_nVolume = this.m_player.GetVolume()),
            (this.m_bMuted = this.m_player.IsMuted());
        }
        OnGameDataUpdate(e) {
          let t = e.detail;
          if (!t || "object" != typeof t.gamedata) return;
          (this.m_gameDataParser &&
            this.m_gameDataParser.GetAppID() == t.gamedata.__appid) ||
            (this.m_gameDataParser = new d(t.gamedata.__appid));
          const r = this.m_player.GetLiveContentStartTime().getTime();
          if ("timelinemarkers" in t.gamedata) {
            const e = this.m_gameDataParser.UpdateMarkers(
              t.gamedata.__timelinemarkers,
              r,
            );
            e &&
              (this.m_rgMarkers.replace(e.rgMarkers || []),
              this.m_rgSegments.replace(e.rgSegments || []));
            const a = this.m_gameDataParser.UpdateRegions(t.gamedata.__regions);
            a && this.m_rgRegions.replace(a);
          } else
            "soundtrack" in t.gamedata &&
              this.m_gameDataParser.UpdateSoundtrack(
                this.m_steamIDBroadcast,
                t.gamedata.soundtrack,
              );
        }
        OnDownloadFailed(e) {
          let t = e.detail || p.N_.Invalid;
          O.BroadcastDownloadFailed(this, !0, t);
        }
        OnWebRTCRetry() {
          O.BroadcastDownloadFailed(this, !1);
        }
        OnWebRTCFailed() {
          O.BroadcastDownloadFailed(this, !0);
        }
        OnUserInputNeeded() {
          this.m_bUserInputNeeded = !0;
        }
        UserInputClick() {
          (this.m_bUserInputNeeded = !1),
            this.m_player ? this.JumpToLiveEdge() : this.Play();
        }
        StopPlaybackTillUserInput() {
          this.Stop(), this.OnUserInputNeeded();
        }
        GetTimelineStartPos() {
          return this.m_nVideoEndPos - this.m_nTimelineDuration;
        }
        GetTimelineDuration() {
          return this.m_nTimelineDuration;
        }
        GetTimeAtMousePosition(e, t, r, a) {
          let n = _.Fu(e, t.left, t.right, r, a);
          return Math.floor(n + 0.5);
        }
        GetPercentOffsetFromTime(e, t) {
          let r = 0,
            a = 0;
          return (
            t == G.Timeline
              ? ((a = this.m_nVideoEndPos), (r = a - this.m_nTimelineDuration))
              : ((r = 0), (a = 0)),
            _.Fu(e, r, a, 0, 100)
          );
        }
        GetTimelineMarkers() {
          return this.m_rgMarkers;
        }
        GetTimelineSegments() {
          return this.m_rgSegments;
        }
        GetGameDataRegions() {
          return this.m_rgRegions;
        }
        BHasMarkersOrSegments() {
          return this.has_segments || this.has_markers;
        }
        GetThumbnailForTimestamp(e) {
          return this.m_player.GetThumbnailForTimestamp(e);
        }
        get has_markers() {
          return this.m_rgMarkers.length > 0;
        }
        get has_segments() {
          return this.m_rgSegments.length > 0;
        }
      }
      (0, a.Cg)([s.sH], P.prototype, "m_player", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_bPaused", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_nPlaybackTime", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_bBuffering", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_bOnLiveEdge", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_nVolume", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_bMuted", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_bUserInputNeeded", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_bIsReplay", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_nTimelineDuration", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_nVideoStartPos", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_nVideoEndPos", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_editorStartTime", void 0),
        (0, a.Cg)([s.sH], P.prototype, "m_editorEndTime", void 0),
        (0, a.Cg)([s.XI.bound], P.prototype, "StartBroadcast", null),
        (0, a.Cg)([s.XI.bound], P.prototype, "StartClip", null),
        (0, a.Cg)([s.XI.bound], P.prototype, "StartVOD", null),
        (0, a.Cg)([g.o], P.prototype, "OnVideoPlaying", null),
        (0, a.Cg)([g.o], P.prototype, "OnVideoPause", null),
        (0, a.Cg)([s.XI.bound], P.prototype, "OnVideoTimeUpdate", null),
        (0, a.Cg)([g.o], P.prototype, "OnVolumeUpdated", null),
        (0, a.Cg)([s.XI.bound], P.prototype, "OnGameDataUpdate", null),
        (0, a.Cg)([g.o], P.prototype, "OnDownloadFailed", null),
        (0, a.Cg)([g.o], P.prototype, "OnWebRTCRetry", null),
        (0, a.Cg)([g.o], P.prototype, "OnWebRTCFailed", null),
        (0, a.Cg)([g.o], P.prototype, "OnUserInputNeeded", null);
      const O = new L();
      window.uiBroadcastWatchStore = O;
    },
    28954: (e, t, r) => {
      "use strict";
      r.d(t, { V: () => y });
      var a = r(34629),
        n = r(2160),
        i = r(41735),
        s = r.n(i),
        o = r(14947),
        l = r(68797),
        c = r(6419),
        m = r(6144),
        d = r(56011),
        u = r(61859),
        p = r(78327),
        _ = r(86355),
        h = r(64953),
        g = r(69343);
      class y {
        m_filesToUpload = o.sH.array();
        m_filesCompleted = [];
        m_clanSteamID;
        m_allCancelTokens = new Array();
        m_lastError = void 0;
        m_fnSetImageURL = null;
        constructor(e) {
          (0, o.Gn)(this), (this.m_clanSteamID = e);
        }
        GetClanSteamID() {
          return this.m_clanSteamID;
        }
        SetImageAllUrlFunction(e) {
          this.m_fnSetImageURL = e;
        }
        async AddImage(e, t = 0, r, a) {
          const n = (0, g.j)(e.name, t);
          return this.AddImageForLanguage(e, n, r, a);
        }
        async AddImageForLanguage(e, t, r, a) {
          let n = !1;
          return (
            await new Promise((i) => {
              const s = new FileReader();
              (s.onload = () => {
                const o = e.name.split(".").pop().toLowerCase();
                let l = null;
                !p.iA.is_support || ("webm" != o && "mp4" != o)
                  ? ((l = new Image()),
                    (l.onload = () => {
                      const s = new h.i9(e, t, l, r, a);
                      (this.m_filesToUpload = [...this.m_filesToUpload, s]),
                        (n = !0),
                        i();
                    }))
                  : ((l = document.createElement("video")),
                    (l.onloadeddata = () => {
                      const s = new h.i9(e, t, l, r, a);
                      (this.m_filesToUpload = [...this.m_filesToUpload, s]),
                        (n = !0),
                        i();
                    })),
                  (l.onerror = (e) => {
                    console.error(
                      "CClanImageUploader failed to load the image, details",
                      e,
                    ),
                      (n = !1),
                      i();
                  }),
                  (l.src = s.result.toString());
              }),
                s.readAsDataURL(e);
            }),
            n
          );
        }
        async AddExistingClanImage(e, t = 0, r, a) {
          let n = _.i6.GetHashAndExt(e),
            i = _.i6.GenerateEditableArtworkURLFromHashAndExtension(
              this.m_clanSteamID,
              n,
            ),
            o = await s()({ url: i, method: "GET", responseType: "blob" }),
            l = (0, d.pE)(o.data, e.file_name);
          return await this.AddImage(l, t, r, a);
        }
        DeleteUploadImageByIndex(e) {
          this.m_filesToUpload.splice(e, 1),
            (this.m_filesToUpload = [...this.m_filesToUpload]);
        }
        DeleteUploadImage(e) {
          let t = this.m_filesToUpload.findIndex(
            (t) => e.file == t.file && e.uploadTime == t.uploadTime,
          );
          t >= 0 && this.DeleteUploadImageByIndex(t);
        }
        ClearImages() {
          this.m_filesToUpload = o.sH.array();
        }
        GetFilesUploaded() {
          return this.m_filesCompleted;
        }
        GetLastErrorFile() {
          return this.m_lastError;
        }
        GetCompletedFiles() {
          return this.m_filesCompleted.length;
        }
        GetTotalFiles() {
          return this.m_filesToUpload.length;
        }
        GetFilesToUpload() {
          return this.m_filesToUpload.map((e) => e.file);
        }
        GetUploadImages() {
          return this.m_filesToUpload;
        }
        BHasError() {
          return null != this.m_lastError;
        }
        BAllDone() {
          return (
            this.m_filesCompleted.length > 0 &&
            this.m_filesCompleted.length == this.m_filesToUpload.length
          );
        }
        BIsFileCompleted(e) {
          return -1 != this.m_filesCompleted.indexOf(e);
        }
        async UploadAllImages(e, t, r, a, n) {
          const i = {};
          for (let e of this.m_filesToUpload)
            if (!this.BIsFileCompleted(e.file)) {
              const t = e.IsValidAssetType(r, a, n);
              if (t.error || t.needsCrop)
                t.error &&
                  (this.m_lastError = {
                    file: e.file,
                    message: t.error,
                    status: 401,
                  });
              else {
                e.status = "uploading";
                i[`${e.uploadTime}/${e.file.name}`] = this.UploadFile({
                  uploadFile: e.file,
                  filename: e.file.name,
                  artworkType: t.match,
                  resizeRequests: e.GetResizeDimension(),
                  primaryLocalizeImage: e.localizedImageGroupPrimaryImage,
                  lang: e.language,
                  width: e.width,
                  height: e.height,
                });
              }
            }
          const s = await (0, m.RR)(i);
          return (
            Object.keys(s).forEach((r) => {
              const a = s[r],
                n = this.m_filesToUpload.find(
                  (e) => `${e.uploadTime}/${e.file.name}` === r,
                );
              if (n)
                if (1 !== a.success)
                  (n.status = "failed"), (n.message = a.message);
                else if (((n.status = "success"), this.m_fnSetImageURL))
                  if (a.origimagehash) {
                    const r = (0, g.P)(a.language, t, e);
                    _.pU.AddLocalizeImageUploaded(a.origimagehash, r);
                  } else {
                    const r = _.pU.GetClanImageByImageHash(
                      this.m_clanSteamID,
                      a.image_hash,
                    );
                    if (r) {
                      const a = (0, g.P)(n.language, t, e);
                      this.m_fnSetImageURL(n.type, r, a);
                    }
                  }
            }),
            s
          );
        }
        CancelAllUploads() {
          for (let e of this.m_allCancelTokens)
            e.cancel((0, u.we)("#ImageUpload_CancelRequest"));
          this.m_allCancelTokens = new Array();
        }
        RetryAllFailedUploads() {
          this.CancelAllUploads(),
            this.UploadAllImages([n.TU.k_ESteamRealmGlobal], 0);
        }
        async handleUploadRefresh(e) {
          await _.pU.LoadClanImages(this.m_clanSteamID, !0, e);
        }
        async UploadFile(e) {
          const {
            uploadFile: t,
            filename: r,
            artworkType: a,
            resizeRequests: n,
            primaryLocalizeImage: i,
            lang: o,
            width: c,
            height: m,
          } = e;
          let d = null;
          const u = new FormData();
          u.append("clanimage", t, r),
            u.append("sessionid", p.TS.SESSIONID),
            a && u.append("arttype", a),
            n &&
              n.length > 0 &&
              u.append(
                "resize",
                n.map((e) => e.width + "x" + e.height).join(","),
              );
          let _ = "/uploadimage/";
          i &&
            ((_ = "/ajaxuploadlocalizedimage/"),
            u.append("origimagehash", i.image_hash),
            u.append("thumbhash", i.thumbnail_hash),
            u.append("extension", "" + i.file_type),
            u.append("language", "" + o));
          const h = r.split(".").pop().toLocaleLowerCase();
          ("webm" != h && "mp4" != h) ||
            (u.append("video_width", "" + c), u.append("video_height", "" + m));
          const g = s().CancelToken.source();
          this.m_allCancelTokens.push(g);
          let y =
              p.TS.COMMUNITY_BASE_URL +
              "/gid/" +
              this.m_clanSteamID.ConvertTo64BitString() +
              _,
            S = {
              cancelToken: g.token,
              withCredentials: !0,
              headers: { "Content-Type": "multipart/form-data" },
            };
          try {
            (d = await s().post(y, u, S)), this.m_filesCompleted.push(t);
          } catch (e) {
            (this.m_lastError = {
              file: t,
              status: e.response ? e.response.status : 500,
              message: (0, l.H)(e).strErrorMsg,
            }),
              (d = e.response);
          }
          return i || (await this.handleUploadRefresh(g)), d.data;
        }
        static async SendResizeRequest(e, t, r, a, n) {
          let i =
              p.TS.COMMUNITY_BASE_URL +
              "/gid/" +
              t.ConvertTo64BitString() +
              "/resizeimage/",
            o = new FormData();
          return (
            o.append("imagehash", r),
            o.append("extension", a),
            o.append(
              "resize",
              n.map((e) => e.width + "x" + e.height).join(","),
            ),
            o.append("sessionid", p.TS.SESSIONID),
            (await s().post(i, o, { cancelToken: e.token })).data.count
          );
        }
      }
      (0, a.Cg)([o.sH], y.prototype, "m_filesToUpload", void 0),
        (0, a.Cg)([o.sH], y.prototype, "m_filesCompleted", void 0),
        (0, a.Cg)([o.sH], y.prototype, "m_lastError", void 0),
        (0, a.Cg)([c.o], y.prototype, "AddImage", null),
        (0, a.Cg)([c.o], y.prototype, "AddExistingClanImage", null),
        (0, a.Cg)([c.o], y.prototype, "DeleteUploadImageByIndex", null),
        (0, a.Cg)([c.o], y.prototype, "DeleteUploadImage", null),
        (0, a.Cg)([c.o], y.prototype, "ClearImages", null);
    },
    64953: (e, t, r) => {
      "use strict";
      r.d(t, { DA: () => d, _u: () => m, i9: () => p });
      var a = r(34629),
        n = r(14947),
        i = r(73744),
        s = r(56011),
        o = r(61859),
        l = r(86355);
      class c {
        dataUrl = void 0;
        width = void 0;
        height = void 0;
        type = void 0;
        status = void 0;
        message = void 0;
        language;
        file;
        uploadTime;
        fileType = 0;
        constructor(e, t, r, a, s, o) {
          if (
            ((0, n.Gn)(this),
            (this.file = e),
            (this.fileType = l.i6.GetExtensionTypeFromURL(e.name)),
            (this.language = t),
            (this.uploadTime = Date.now()),
            (this.status = "pending"),
            r)
          ) {
            const e = (0, i.vz)(this.fileType, r);
            let t = (0, l.AS)(s, o, e, !1);
            void 0 === t && (t = (0, l.AS)(s, o, e, !0)),
              (this.type = t || r[0]);
          }
          (this.height = o), (this.width = s), (this.dataUrl = a);
        }
        IsValidAssetType(e, t, r) {
          let a = 0,
            n = 0,
            s = !1,
            c = !e || 0 === e.length || e.includes(this.type);
          if (t) (a = t.width), (n = t.height), (s = !0);
          else if (this.type) {
            const e = i.Fj[this.type];
            e &&
              ((a = e.width),
              (n = e.height),
              (s = !e.bDisableEnforceDimensions));
          }
          const m = this.width >= a && this.height >= n,
            d = s ? this.width === a && this.height === n : m,
            u = r && r != this.fileType,
            p =
              !!(e && e.length > 0) &&
              0 == (0, i.vz)(this.fileType, e || []).length,
            h = Boolean(_(this.fileType));
          let g = "",
            y = !1;
          return (
            c
              ? p
                ? (g = (0, o.we)("#ImageUpload_InvalidFileType"))
                : u
                  ? (g = (0, o.we)(
                      "#ImageUpload_InvalidFormat",
                      l.i6.GetExtensionStringForFileType(r),
                    ))
                  : d || h
                    ? m
                      ? !d &&
                        h &&
                        ((g = (0, o.we)(
                          "#ImageUpload_InvalidDimensions",
                          a,
                          n,
                        )),
                        (y = !0))
                      : (g = (0, o.we)("#ImageUpload_TooSmall", a, n))
                    : (g = (0, o.we)("#ImageUpload_InvalidResolution", a, n))
              : (g = (0, o.we)("#ImageUpload_InvalidFormatSelected")),
            { error: g, needsCrop: y, match: this.type }
          );
        }
      }
      (0, a.Cg)([n.sH], c.prototype, "dataUrl", void 0),
        (0, a.Cg)([n.sH], c.prototype, "width", void 0),
        (0, a.Cg)([n.sH], c.prototype, "height", void 0),
        (0, a.Cg)([n.sH], c.prototype, "type", void 0),
        (0, a.Cg)([n.sH], c.prototype, "status", void 0),
        (0, a.Cg)([n.sH], c.prototype, "message", void 0);
      class m extends c {
        video;
        constructor(e, t, r, a) {
          super(e, t, a, r.src, r.videoWidth, r.videoHeight), (this.video = r);
        }
        BIsOriginalMinimumDimensions(e) {
          return (0, i.s4)(this.video.videoWidth, this.video.videoHeight, e);
        }
        GetResizeDimension() {}
      }
      class d extends c {
        constructor(e, t, r) {
          super(e, t, r, URL.createObjectURL(e), 0, 0);
        }
        BIsOriginalMinimumDimensions(e) {
          return (0, i.XY)(e);
        }
        GetResizeDimension() {}
      }
      function u(e) {
        const t = e.split(".").pop().toLocaleLowerCase();
        return "webm" == t || "mp4" == t;
      }
      class p extends c {
        bCropped = !1;
        localizedImageGroupPrimaryImage;
        media;
        constructor(e, t, r, a, i) {
          super(
            e,
            t,
            a,
            r.src,
            u(e.name) ? r.videoWidth : r.width,
            u(e.name) ? r.videoHeight : r.height,
          ),
            (0, n.Gn)(this),
            (this.media = r),
            (this.localizedImageGroupPrimaryImage = i);
        }
        ResetImage() {
          (this.height = this.media.height),
            (this.width = this.media.width),
            (this.dataUrl = this.media.src);
        }
        async CropImage(e, t, r, a, n, i, o) {
          return new Promise((l, c) => {
            const m = _(o);
            if (!m) return void c("Invalid format provided");
            const d = document.createElement("canvas");
            (d.width = n), (d.height = i);
            d.getContext("2d").drawImage(this.media, e, t, r, a, 0, 0, n, i),
              d.toBlob((e) => {
                const t = d.toDataURL(m);
                3 !== o && t.startsWith("data:image/png")
                  ? c("Unable to encode into the requested file format")
                  : ((this.file = (0, s.pE)(e, this.file.name)),
                    (this.width = n),
                    (this.height = i),
                    (this.dataUrl = t),
                    (this.uploadTime = Date.now()),
                    (this.bCropped = !0),
                    l());
              });
          });
        }
        BIsOriginalMinimumDimensions(e) {
          return (0, i.s4)(this.media.width, this.media.height, e);
        }
        GetResizeDimension() {
          return (function (e) {
            if ("background" === e)
              return [
                { width: 960, height: 311 },
                { width: 480, height: 156 },
              ];
            if ("capsule" === e)
              return [{ width: i.Fj[e].width / 2, height: i.Fj[e].height / 2 }];
            if ("spotlight" === e)
              return [{ width: i.Fj[e].width / 2, height: i.Fj[e].height / 2 }];
            return;
          })(this.type);
        }
      }
      function _(e) {
        switch (e) {
          case 3:
            return "image/png";
          case 1:
            return "image/jpeg";
        }
      }
      (0, a.Cg)([n.sH], p.prototype, "bCropped", void 0);
    },
    69343: (e, t, r) => {
      "use strict";
      r.d(t, { P: () => s, j: () => o });
      var a = r(22837),
        n = r(2160),
        i = r(61859);
      function s(e, t, r) {
        if (((null != e && null != e) || (e = t), !r || 0 === r.length))
          return e;
        for (const t of r) if (i.A0.IsELanguageValidInRealm(e, t)) return e;
        for (const e of r) if (i.A0.IsELanguageValidInRealm(t, e)) return t;
        return r.includes(n.TU.k_ESteamRealmGlobal) ? 0 : 29;
      }
      function o(e, t = 0) {
        let r = e.lastIndexOf(".");
        -1 != r && (e = e.slice(0, r).toLowerCase());
        let n = null,
          i = 0;
        e.endsWith("korean") && ((n = 4), (i = 6));
        for (let t = 0; t < 31; ++t) {
          const r = (0, a.Lg)(t);
          r.length <= i || (e.endsWith(r) && ((n = t), (i = r.length)));
        }
        return n || t;
      }
    },
    86355: (e, t, r) => {
      "use strict";
      r.d(t, {
        AS: () => I,
        i6: () => C,
        mr: () => T,
        pU: () => E,
        pb: () => B,
        wI: () => v,
      });
      var a = r(34629),
        n = r(22837),
        i = r(41735),
        s = r.n(i),
        o = r(14947),
        l = r(90626),
        c = r(73744),
        m = r(17720),
        d = r(28954),
        u = r(4434),
        p = r(62490),
        _ = r(44332),
        h = r(68797),
        g = r(6144),
        y = (r(73745), r(14771)),
        S = r(78327),
        f = r(27666),
        b = r(82705),
        w = r(56004);
      var v;
      function I(e, t, r, a = !1) {
        if (r)
          for (let n of r) {
            if (a ? (0, c.s4)(e, t, n) : (0, c.yu)(e, t, n)) return n;
          }
      }
      !(function (e) {
        (e.full = ""),
          (e.background_main = "_960x311"),
          (e.background_mini = "_480x156"),
          (e.capsule_main = "_400x225"),
          (e.spotlight_main = "_1054x230");
      })(v || (v = {}));
      const B = [
        "localized_image_group",
        "link_capsule",
        "product_mobile_banner_override",
        "product_banner_override",
        "sale_section_title",
        "schedule_track_art",
        "localized_background_art",
      ];
      class C {
        constructor() {
          (0, o.Gn)(this);
        }
        m_mapClanToImages = new Map();
        m_mapClanImageLoadPromises = new Map();
        m_imageListChangeCallback = new Map();
        m_mapClanImageLoadState = new Map();
        m_mapImageIDToResolution = new Map();
        m_curLocImageGroup = null;
        m_curLocImageGroupType = null;
        BHasImageResolution(e) {
          return this.m_mapImageIDToResolution.has(e.imageid);
        }
        GetImageResolution(e) {
          return this.m_mapImageIDToResolution.get(e.imageid);
        }
        SetImageResolution(e, t) {
          this.m_mapImageIDToResolution.set(e.imageid, t);
        }
        GetImageListCallbackForClanAccountID(e) {
          return (
            this.m_imageListChangeCallback.has(e) ||
              this.m_imageListChangeCallback.set(e, new g.lu()),
            this.m_imageListChangeCallback.get(e)
          );
        }
        static GetExtensionStringForFileType(e) {
          switch (e) {
            case 1:
              return ".jpg";
            case 2:
              return ".gif";
            case 3:
              return ".png";
            case 5:
              return ".webm";
            case 4:
              return ".mp4";
            case 7:
              return ".srt";
            case 6:
              return ".vtt";
            case 10:
              return ".webp";
          }
        }
        static GetExtensionString(e) {
          return C.GetExtensionStringForFileType(e.file_type) || ".jpg";
        }
        static GetExtensionTypeFromURL(e) {
          return (0, b.yh)(e);
        }
        static GetHashAndExt(e) {
          return e ? e.image_hash + C.GetExtensionString(e) : null;
        }
        static GetThumbHashAndExt(e) {
          return e ? e.thumbnail_hash + C.GetExtensionString(e) : null;
        }
        m_vecClanImageDragListener = new Array();
        AddClanImageDragListener(e) {
          -1 == this.m_vecClanImageDragListener.indexOf(e) &&
            this.m_vecClanImageDragListener.push(e);
        }
        RemoveClanImageDragListener(e) {
          let t = this.m_vecClanImageDragListener.indexOf(e);
          -1 != t && this.m_vecClanImageDragListener.splice(t, 1);
        }
        GetClanImageDragListener() {
          return this.m_vecClanImageDragListener;
        }
        BHasLoadedClanImages(e) {
          return this.m_mapClanToImages.has(e.GetAccountID());
        }
        async LoadClanImages(e, t, r) {
          const a = e.GetAccountID();
          return (
            (!t && this.m_mapClanImageLoadPromises.has(a)) ||
              this.m_mapClanImageLoadPromises.set(
                a,
                this.InternalLoadClanImages(e, t, r),
              ),
            this.m_mapClanImageLoadPromises.get(a)
          );
        }
        async InternalLoadClanImages(e, t, r) {
          let a = e.GetAccountID();
          if (
            ((0, _.w)(e && 0 != a, "ClanSteamID missing:" + e),
            e && (!this.m_mapClanToImages.has(a) || t))
          ) {
            let t = {},
              n = null;
            const i =
              S.TS.COMMUNITY_BASE_URL +
              "/gid/" +
              e.ConvertTo64BitString() +
              "/getimages/";
            n = await s().get(i, {
              params: t,
              withCredentials: !0,
              cancelToken: r ? r.token : null,
            });
            for (let e of n.data.images) e.clanAccountID = a;
            (0, o.h5)(() => {
              this.m_mapClanImageLoadState.set(a, { loaded: !0 }),
                this.m_mapClanToImages.set(a, n.data.images),
                this.GetImageListCallbackForClanAccountID(a).Dispatch(
                  n.data.images,
                );
            });
          }
          return this.m_mapClanToImages.get(a);
        }
        GetLoadState(e) {
          return this.m_mapClanImageLoadState.get(e.GetAccountID());
        }
        GetClanImages(e) {
          return this.GetClanImagesByAccount(e.GetAccountID());
        }
        GetClanImagesByAccount(e) {
          let t = this.m_mapClanToImages.get(e);
          return t || new Array();
        }
        GetFilteredClanImages(e, t) {
          let r = E.GetClanImages(e);
          return this.GetFilteredClanImagesList(r, t);
        }
        GetFilteredClanImagesList(e, t) {
          if (t && t.trim().length > 0) {
            t = t.trim().toLowerCase();
            let r = new Array();
            for (let a of e)
              a.file_name &&
                a.file_name.toLowerCase().indexOf(t) >= 0 &&
                r.push(a);
            return r;
          }
          return e;
        }
        GetClanImageByID(e, t) {
          let r = e.GetAccountID(),
            a = this.m_mapClanToImages.get(r);
          return a ? a.find((e) => e.imageid == t) : null;
        }
        GetClanImageByURL(e, t) {
          let r = e.GetAccountID(),
            a = this.m_mapClanToImages.get(r);
          return a ? a.find((e) => e.thumb_url == t || e.url == t) : null;
        }
        GetClanImageByFile(e, t) {
          let r = e.GetAccountID(),
            a = this.m_mapClanToImages.get(r);
          return a ? a.find((e) => e.file_name == t.name) : null;
        }
        GetClanImageByImageHash(e, t) {
          let r = e.GetAccountID(),
            a = this.m_mapClanToImages.get(r);
          return a ? a.find((e) => e.image_hash == t) : null;
        }
        async DeleteClanImageByID(e, t) {
          let r = { sessionid: S.TS.SESSIONID, imageid: t },
            a = e.GetAccountID(),
            n = await s().get(
              S.TS.COMMUNITY_BASE_URL +
                "/gid/" +
                e.ConvertTo64BitString() +
                "/deleteimage/",
              { params: r },
            );
          if (!n || 200 != n.status || 1 != n.data.success) return n.data;
          let i = this.m_mapClanToImages.get(a),
            o = i.findIndex((e, r, a) => e.imageid == t);
          return (
            o >= 0 &&
              (i.splice(o, 1),
              this.GetImageListCallbackForClanAccountID(a).Dispatch([...i])),
            n.data
          );
        }
        async DeleteClanImage(e, t) {
          return this.DeleteClanImageByID(e, t.imageid);
        }
        static GetHashFromHashAndExt(e) {
          let t = e.substring(e.lastIndexOf("."));
          return e.substring(0, e.length - t.length);
        }
        static GetExtensionStringFromHashAndExt(e) {
          return e.substring(e.lastIndexOf("."));
        }
        static GenerateArtworkURLFromHashAndExtensions(e, t, r = v.full, a, i) {
          if (r != v.full || a) {
            let s = t.substring(t.lastIndexOf(".")),
              o = t.substring(0, t.length - s.length);
            return a && "localized_image_group" == i
              ? (0, f.mJ)() +
                  e.GetAccountID() +
                  "/" +
                  o +
                  "/" +
                  (0, n.x6)((0, n.Lg)(a)) +
                  s
              : (0, f.mJ)() + e.GetAccountID() + "/" + o + r + s;
          }
          return (0, f.mJ)() + e.GetAccountID() + "/" + t;
        }
        static GenerateEditableArtworkURLFromHashAndExtension(e, t, r) {
          let a =
            S.TS.COMMUNITY_BASE_URL +
            "gid/" +
            e.ConvertTo64BitString() +
            "/showclanimage/?image_hash_and_ext=" +
            t;
          return r && (a += "&lang=" + r), a;
        }
        static GetMimeType(e) {
          return (0, w.ab)(e);
        }
        async AsyncGetImageResolution(e, t, r, a, n) {
          const i = t + C.GetExtensionString({ file_type: r }),
            s = C.GenerateEditableArtworkURLFromHashAndExtension(e, i);
          return await this.AsyncGetImageResolutionInternal(s, a, n);
        }
        async AsyncGetImageResolutionInternal(e, t, r) {
          let a = { success: void 0 },
            n = new Image();
          (n.crossOrigin = "anonymous"),
            (n.onerror = (t) => {
              r ||
                ((a.err_msg =
                  "Load fail on url " +
                  e +
                  " with error: " +
                  (0, h.H)(t).strErrorMsg),
                console.error(a.err_msg)),
                (a.success = 2);
            }),
            (n.onload = () => {
              (a.width = n.width),
                (a.height = n.height),
                (0, _.w)(
                  a.width > 0 && a.height > 0,
                  "unexpected image resolution discovered for strURL: " + e,
                ),
                (a.success = 1);
            }),
            (n.src = e),
            t.token.promise.catch((e) => {
              (n.onload = () => {}), (a.success = 52);
            });
          let i = 0;
          for (; void 0 === a.success && i < 100; )
            await (0, y.IP)(100), (i += 1);
          return (
            i >= 100 &&
              ((a.success = 16),
              (a.err_msg = "We timed out processing images")),
            a
          );
        }
        async AsyncOverlay(e, t, r, a, n, i) {
          let s,
            o,
            l = new Image();
          (l.crossOrigin = "anonymous"),
            (l.onerror = (e) => {
              (s =
                "Load fail on url " +
                r +
                " with error: " +
                (0, h.H)(e).strErrorMsg),
                console.error(s);
            }),
            (l.onload = () => {
              let e = new Image();
              (e.crossOrigin = "anonymous"),
                (e.onerror = (e) => {
                  (s =
                    "Load fail on url " +
                    t +
                    " with error: " +
                    (0, h.H)(e).strErrorMsg),
                    console.error(s);
                }),
                (e.onload = () => {
                  try {
                    let t = document.createElement("canvas"),
                      r = t.getContext("2d");
                    (t.width = n), (t.height = i), r.drawImage(e, 0, 0, n, i);
                    let a = (n - l.width) / 2,
                      s = (i - l.height) / 2;
                    r.drawImage(l, a, s),
                      t.toBlob((e) => (o = e), "image/jpeg");
                  } catch (e) {
                    s =
                      "Failed during image processing for " + a + " with " + e;
                  }
                }),
                (e.src = t);
            }),
            (l.src = r);
          let c = 0;
          for (; void 0 === o && c < 100; ) await (0, y.IP)(100), (c += 1);
          if (
            (c >= 100 &&
              void 0 === o &&
              (s = "AsyncOverlay - We timed out processing images"),
            s)
          )
            throw (console.log(s), { success: 2, err_msg: s });
          let m = new d.V(e),
            u = await m.UploadFile({
              uploadFile: o,
              filename: a,
              width: i,
              height: i,
            });
          return u.image_hash + C.GetExtensionString(u);
        }
        async BDoesClanImageFileExistsOnCDNOrOrigin(e, t, r, a) {
          let n =
              S.TS.COMMUNITY_BASE_URL +
              "gid/" +
              t.ConvertTo64BitString() +
              "/hasclanimagefile",
            i = { image_hash_and_ext: r, lang: "" + a };
          return (
            1 ==
            (await s().get(n, { params: i, cancelToken: e && e.token })).data
              .success
          );
        }
        SetPrimaryImageForImageGroup(e, t) {
          (this.m_curLocImageGroup &&
            this.m_curLocImageGroup.primaryImage.imageid == e.imageid &&
            t == this.m_curLocImageGroupType) ||
            ((this.m_curLocImageGroup = {
              primaryImage: e,
              localized_images: [],
            }),
            (this.m_curLocImageGroupType = t),
            (this.m_curLocImageGroup.localized_images = (0, p.$Y)(
              this.m_curLocImageGroup.localized_images,
              31,
              null,
            )));
        }
        GetPrimaryImageForImageGroup() {
          return this.m_curLocImageGroup?.primaryImage;
        }
        ClearImageGroup() {
          (this.m_curLocImageGroup = null),
            (this.m_curLocImageGroupType = null);
        }
        GetLocalizedImageGroupForEdit() {
          return this.m_curLocImageGroup;
        }
        GetLocalizedImageGroupForEditAsURL(e, t) {
          if (this.m_curLocImageGroup) {
            let r = this.m_curLocImageGroup.primaryImage;
            return this.m_curLocImageGroup.localized_images[t]
              ? this.m_curLocImageGroup.localized_images[t]
              : C.GenerateArtworkURLFromHashAndExtensions(
                  e,
                  C.GetHashAndExt(r),
                );
          }
          return null;
        }
        GetLocalizedImageGroupForEditAsImgArray(e) {
          return this.GetAllLocalizedGroupImages();
        }
        async DetermineAvailableLocalizationForGroup(e) {
          let t = this.m_curLocImageGroup.primaryImage,
            r = m.b.InitFromClanID(t.clanAccountID),
            a = C.GetHashAndExt(t),
            n = [];
          for (let t = 0; t < 31; ++t)
            n.push(this.BDoesClanImageFileExistsOnCDNOrOrigin(e, r, a, t));
          let i = await Promise.all(n);
          (0, o.h5)(() => {
            for (let e = 0; e < 31; ++e)
              i[e] &&
                (this.m_curLocImageGroup.localized_images[e] =
                  C.GenerateArtworkURLFromHashAndExtensions(
                    r,
                    a,
                    v.full,
                    e,
                    this.m_curLocImageGroupType,
                  ));
          });
        }
        SetLocalizedImageGroupAtLang(e, t, r) {
          this.m_curLocImageGroup &&
            (this.m_curLocImageGroup.localized_images[e] = r
              ? C.GenerateArtworkURLFromHashAndExtensions(
                  t,
                  r,
                  v.full,
                  e,
                  this.m_curLocImageGroupType,
                )
              : null);
        }
        AddLocalizeImageUploaded(e, t) {
          let r = this.m_curLocImageGroup.primaryImage;
          if (r.image_hash == e) {
            let e = m.b.InitFromClanID(r.clanAccountID),
              a = C.GetHashAndExt(r);
            this.m_curLocImageGroup.localized_images[t] =
              C.GenerateArtworkURLFromHashAndExtensions(
                e,
                a,
                v.full,
                t,
                this.m_curLocImageGroupType,
              );
          }
        }
        GetAllLocalizedGroupImages() {
          return (
            (this.m_curLocImageGroup &&
              this.m_curLocImageGroup.localized_images) ||
            []
          );
        }
      }
      (0, a.Cg)([o.sH], C.prototype, "m_mapClanToImages", void 0),
        (0, a.Cg)([o.sH], C.prototype, "m_mapClanImageLoadState", void 0),
        (0, a.Cg)([o.sH], C.prototype, "m_curLocImageGroup", void 0);
      const E = new C();
      function T(e) {
        const t = m.b.InitFromClanID(e),
          r = (0, u.m)("useLoadClanImages"),
          [a, n] = (0, l.useState)(() => E.BHasLoadedClanImages(t));
        return (
          (0, l.useEffect)(() => {
            const t = m.b.InitFromClanID(e);
            E.BHasLoadedClanImages(t) ||
              E.LoadClanImages(t, !1, r).then(() => n(!0));
          }, [e, r]),
          a
        );
      }
    },
    4796: (e, t, r) => {
      "use strict";
      r.d(t, { TB: () => _, ac: () => p, vF: () => h });
      var a = r(34629),
        n = r(41735),
        i = r.n(n),
        s = r(14947),
        o = r(90626),
        l = r(17720),
        c = r(44332),
        m = r(78327),
        d = r(67165);
      class u {
        constructor() {
          (0, s.Gn)(this);
        }
        m_mapAppIDToClanInfo = new Map();
        m_mapVanityToClanInfo = new Map();
        m_mapClanAccountIDToClanInfo = new Map();
        m_mapPromisesLoading = new Map();
        m_rgQueuedEventsClanIDs = new Array();
        m_bLoadedFromConfig = !1;
        Init() {
          this.LazyInit();
        }
        LazyInit() {
          this.m_bLoadedFromConfig ||
            ((0, s.h5)(() => {
              let e = (0, m.Fd)("groupvanityinfo", "application_config");
              this.ValidateClanConfig(e) &&
                e.forEach((e) => {
                  this.InternalSetupValue(e);
                });
            }),
            (this.m_bLoadedFromConfig = !0));
        }
        AddGroupVanities(e) {
          (0, s.h5)(() => {
            this.ValidateClanConfig(e) &&
              e.forEach((e) => {
                this.InternalSetupValue(e);
              });
          });
        }
        ValidateClanConfig(e) {
          const t = e;
          return (
            !!(
              t &&
              Array.isArray(t) &&
              t.length > 0 &&
              "object" == typeof t[0]
            ) &&
            "number" == typeof t[0].clanAccountID &&
            ("number" == typeof t[0].appid ||
              "string" == typeof t[0].vanity_url)
          );
        }
        BHasClanInfoLoaded(e) {
          return (
            (0, c.w)(e.BIsValid(), "Clan SteamID is not valid when ClanInfo"),
            (0, c.w)(
              e.BIsClanAccount(),
              "Clan SteamID is not a clan account id when requesting clan info ",
            ),
            this.m_mapClanAccountIDToClanInfo.has(e.GetAccountID())
          );
        }
        BHasClanInfoLoadedByAccountID(e) {
          return this.m_mapClanAccountIDToClanInfo.has(e);
        }
        RegisterClanData(e) {
          for (const t of e) this.InternalSetupValue(t);
        }
        InternalSetupValue(e) {
          const t = {
            clanAccountID: e.clanAccountID,
            clanSteamID: new l.b(e.clanSteamIDString),
            appid: e.appid,
            vanity_url: e.vanity_url,
            member_count: e.member_count,
            is_ogg: e.is_ogg,
            is_creator_home: e.is_creator_home,
            is_curator: e.is_curator,
            has_visible_store_page: e.has_visible_store_page,
            has_rss_feed: e.has_rss_feed,
            rss_language: e.rss_language ? e.rss_language : 0,
            avatar_full_url: e.avatar_full_url,
            avatar_medium_url: e.avatar_medium_url,
            group_name: e.group_name,
            creator_page_bg_url: e.creator_page_bg_url,
            partner_events_enabled: e.partner_events_enabled,
          };
          0 != e.appid && this.m_mapAppIDToClanInfo.set(e.appid, t),
            e.vanity_url &&
              e.vanity_url.length > 0 &&
              this.m_mapVanityToClanInfo.set(
                e.vanity_url.toLocaleLowerCase(),
                t,
              ),
            this.m_mapClanAccountIDToClanInfo.set(e.clanAccountID, t);
        }
        GetRequestParam() {
          return { origin: self.origin };
        }
        async LoadOGGClanInfoForAppID(e) {
          if (
            (this.LazyInit(),
            "string" == typeof e && (e = parseInt(e)),
            (0, c.w)(
              0 != e,
              "LoadOGGClanInfoForAppID called with appid of zero",
            ),
            0 == e)
          )
            return null;
          if (this.m_mapAppIDToClanInfo.has(e))
            return this.m_mapAppIDToClanInfo.get(e);
          let t = "appid_" + e;
          return (
            this.m_mapPromisesLoading.has(t) ||
              this.m_mapPromisesLoading.set(
                t,
                this.InternalLoadOGGClanInfoForAppID(e),
              ),
            this.m_mapPromisesLoading.get(t)
          );
        }
        async InternalLoadOGGClanInfoForAppID(e) {
          const t =
            m.TS.COMMUNITY_BASE_URL + "ogg/" + e + "/ajaxgetvanityandclanid/";
          let r = null;
          try {
            r = (await i().get(t, { params: this.GetRequestParam() })).data;
          } catch (e) {}
          return r
            ? (this.InternalSetupValue(r), this.m_mapAppIDToClanInfo.get(e))
            : null;
        }
        async LoadOGGClanInfoForIdentifier(e) {
          if (
            (this.LazyInit(),
            this.m_mapVanityToClanInfo.has(e?.toLocaleLowerCase()))
          )
            return this.m_mapVanityToClanInfo.get(e?.toLocaleLowerCase());
          let t = "storevanity_" + e?.toLocaleLowerCase();
          return (
            this.m_mapPromisesLoading.has(t) ||
              this.m_mapPromisesLoading.set(
                t,
                this.InternalLoadOGGClanInfoForIdentifier(e),
              ),
            this.m_mapPromisesLoading.get(t)
          );
        }
        async InternalLoadOGGClanInfoForIdentifier(e) {
          const t =
            m.TS.COMMUNITY_BASE_URL + "games/" + e + "/ajaxgetvanityandclanid/";
          let r = await i().get(t, { params: this.GetRequestParam() });
          return (
            this.InternalSetupValue(r.data),
            this.m_mapVanityToClanInfo.get(e?.toLocaleLowerCase())
          );
        }
        async LoadOGGClanInfoForGroupVanity(e) {
          if (
            (this.LazyInit(),
            this.m_mapVanityToClanInfo.has(e?.toLocaleLowerCase()))
          )
            return this.m_mapVanityToClanInfo.get(e?.toLocaleLowerCase());
          let t = "community_name_" + e;
          return (
            this.m_mapPromisesLoading.has(t) ||
              this.m_mapPromisesLoading.set(
                t,
                this.InternalLoadOGGClanInfoForGroupVanity(
                  e?.toLocaleLowerCase(),
                ),
              ),
            this.m_mapPromisesLoading.get(t)
          );
        }
        async InternalLoadOGGClanInfoForGroupVanity(e) {
          const t =
            m.TS.COMMUNITY_BASE_URL +
            "groups/" +
            e +
            "/ajaxgetvanityandclanid/";
          let r = await i().get(t, { params: this.GetRequestParam() });
          return (
            this.InternalSetupValue(r.data),
            this.m_mapVanityToClanInfo.get(e?.toLocaleLowerCase())
          );
        }
        async LoadClanInfoForClanSteamID(e) {
          this.LazyInit();
          let t = e.GetAccountID();
          if (this.m_mapClanAccountIDToClanInfo.has(t))
            return this.m_mapClanAccountIDToClanInfo.get(t);
          let r = "clanaccountid_" + t;
          return (
            this.m_mapPromisesLoading.has(r) ||
              this.m_mapPromisesLoading.set(
                r,
                this.InternalLoadClanInfoForClanSteamID(e),
              ),
            this.m_mapPromisesLoading.get(r)
          );
        }
        async LoadClanInfoForClanAccountID(e) {
          const t = l.b.InitFromClanID(e);
          return this.LoadClanInfoForClanSteamID(t);
        }
        async InternalLoadClanInfoForClanSteamID(e) {
          let t = e.GetAccountID();
          const r =
            m.TS.COMMUNITY_BASE_URL +
            "gid/" +
            e.ConvertTo64BitString() +
            "/ajaxgetvanityandclanid/";
          let a = await i().get(r, { params: this.GetRequestParam() });
          return (
            this.InternalSetupValue(a.data),
            this.m_mapClanAccountIDToClanInfo.get(t)
          );
        }
        GetOGGClanInfo(e) {
          return "string" == typeof e
            ? this.m_mapVanityToClanInfo.get(e?.toLocaleLowerCase())
            : this.m_mapAppIDToClanInfo.get(e);
        }
        GetClanSteamIDForAppID(e) {
          if ((this.LazyInit(), this.m_mapAppIDToClanInfo.has(e)))
            return l.b.InitFromClanID(
              this.m_mapAppIDToClanInfo.get(e).clanAccountID,
            );
        }
        GetClanVanityForAppID(e) {
          if ((this.LazyInit(), this.m_mapAppIDToClanInfo.has(e)))
            return this.m_mapAppIDToClanInfo.get(e).vanity_url;
        }
        GetClanVanityForClanSteamID(e) {
          if (
            (this.LazyInit(),
            this.m_mapClanAccountIDToClanInfo.has(e.GetAccountID()))
          )
            return this.m_mapClanAccountIDToClanInfo.get(e.GetAccountID())
              .vanity_url;
        }
        HasLoadedClanAccountID(e) {
          return this.LazyInit(), this.m_mapClanAccountIDToClanInfo.has(e);
        }
        GetClanMemberCount(e) {
          return this.m_mapAppIDToClanInfo.has(e)
            ? this.m_mapAppIDToClanInfo.get(e).member_count
            : 0;
        }
        GetClanInfoByClanAccountID(e) {
          return (
            this.LazyInit(),
            (0, c.w)(
              !!e,
              "Unepxected clanid when requesting information. GetClanInfoByClanAccountID ",
            ),
            this.m_mapClanAccountIDToClanInfo.get(e)
          );
        }
        GetCreatorStoreURL(e) {
          let t = d.pF.GetCreatorHome(e);
          if (t) return t.GetCreatorHomeURL("developer");
          let r = this.GetClanInfoByClanAccountID(e.GetAccountID());
          return (
            m.TS.COMMUNITY_BASE_URL +
            (r.vanity_url
              ? "groups/" + r.vanity_url
              : "gid/" + e.ConvertTo64BitString())
          );
        }
      }
      (0, a.Cg)([s.sH], u.prototype, "m_mapAppIDToClanInfo", void 0),
        (0, a.Cg)([s.sH], u.prototype, "m_mapVanityToClanInfo", void 0),
        (0, a.Cg)([s.sH], u.prototype, "m_mapClanAccountIDToClanInfo", void 0),
        (0, a.Cg)([s.XI], u.prototype, "RegisterClanData", null),
        (0, a.Cg)([s.XI], u.prototype, "InternalSetupValue", null);
      const p = new u();
      function _(e) {
        const [t, r] = (0, o.useState)(
            e ? p.GetClanInfoByClanAccountID(e) : void 0,
          ),
          [a, n] = (0, o.useState)(!!e && !p.BHasClanInfoLoadedByAccountID(e));
        return (
          (0, o.useEffect)(() => {
            if (e)
              if (p.BHasClanInfoLoadedByAccountID(e))
                r(p.GetClanInfoByClanAccountID(e)), n(!1);
              else {
                n(!0);
                const t = l.b.InitFromClanID(
                  "string" == typeof e ? Number.parseInt(e) : e,
                );
                p.LoadClanInfoForClanSteamID(t).then((e) => {
                  r(e ?? void 0), n(!1);
                });
              }
            else r(void 0), n(!1);
          }, [e]),
          [a, t]
        );
      }
      function h(e) {
        const [t, r] = (0, o.useState)(() => !p.GetOGGClanInfo(e)),
          [a, n] = (0, o.useState)(() => p.GetOGGClanInfo(e));
        return (
          (0, o.useEffect)(() => {
            !e ||
              (a && a.appid == e) ||
              (r(!0),
              p
                .LoadOGGClanInfoForAppID(e)
                .then(n)
                .finally(() => r(!1)));
          }, [a, e]),
          { bLoadingClanInfo: t, clanInfo: a }
        );
      }
      window.g_ClanStore = p;
    },
    56004: (e, t, r) => {
      "use strict";
      r.d(t, { IK: () => p, ab: () => _, qR: () => h });
      var a = r(34629),
        n = r(41735),
        i = r.n(n),
        s = r(14947),
        o = r(68797),
        l = r(6419),
        c = r(6144),
        m = r(30470),
        d = r(64953),
        u = r(69343);
      class p {
        m_filesToUpload = s.sH.array();
        m_strUploadPath = null;
        m_fnUploadSuccessCallback = null;
        m_bSynchronousUpload = !1;
        constructor(e, t, r) {
          (0, s.Gn)(this),
            (this.m_strUploadPath = e),
            (this.m_fnUploadSuccessCallback = t),
            (this.m_bSynchronousUpload = r);
        }
        GetFnOnUploadSuccess() {
          return this.m_fnUploadSuccessCallback;
        }
        SetFnOnUploadSuccess(e) {
          this.m_fnUploadSuccessCallback = e;
        }
        GetUploadPath() {
          return this.m_strUploadPath;
        }
        SetUploadPath(e) {
          this.m_strUploadPath = e;
        }
        GetUploadImages() {
          return this.m_filesToUpload;
        }
        ClearImages() {
          this.m_filesToUpload = s.sH.array();
        }
        DeleteUploadImage(e) {
          const t = this.m_filesToUpload.findIndex(
            (t) => e.file == t.file && e.uploadTime == t.uploadTime,
          );
          t >= 0 &&
            (this.m_filesToUpload.splice(t, 1),
            (this.m_filesToUpload = [...this.m_filesToUpload]));
        }
        isImageFile(e) {
          return e.type.startsWith("image/");
        }
        isVideoFile(e) {
          return e.type.startsWith("video/");
        }
        isSubtitleTextFile(e) {
          return (
            e.type.startsWith("text/") ||
            ("" == e.type && e.name.split("?")[0].endsWith(".vtt")) ||
            ("" == e.type && e.name.split("?")[0].endsWith(".srt"))
          );
        }
        async AddImageForLanguage(e, t, r, a) {
          let n = !1;
          return (
            await new Promise((i) => {
              if (this.isImageFile(e)) {
                const s = new FileReader();
                (s.onload = () => {
                  const o = new Image();
                  (o.onload = () => {
                    const s = new d.i9(e, t, o, r, a);
                    (this.m_filesToUpload = [...this.m_filesToUpload, s]),
                      (n = !0),
                      i();
                  }),
                    (o.onerror = (e) => {
                      console.error(
                        "CCloudImageUploader failed to load the image, details",
                        e,
                      ),
                        (n = !1),
                        i();
                    }),
                    (o.src = s.result.toString());
                }),
                  s.readAsDataURL(e);
              } else if (this.isVideoFile(e)) {
                const a = document.createElement("video");
                (a.preload = "metadata"),
                  a.addEventListener("loadedmetadata", () => {
                    const s = new d._u(e, t, a, r);
                    (this.m_filesToUpload = [...this.m_filesToUpload, s]),
                      (n = !0),
                      i();
                  }),
                  (a.onerror = (e) => {
                    console.error(
                      "CCloudImageUploader failed to load the video, details",
                      e,
                    ),
                      (n = !1),
                      i();
                  }),
                  (a.src = URL.createObjectURL(e));
              } else
                this.isSubtitleTextFile(e)
                  ? ((this.m_filesToUpload = [
                      ...this.m_filesToUpload,
                      new d.DA(e, t, r),
                    ]),
                    (n = !0),
                    i())
                  : (console.error(
                      "CCloudImageUploader failed to determine file type, not image, video or subtitle",
                      e,
                      e.type,
                    ),
                    (n = !1));
            }),
            n
          );
        }
        async UploadAllImages(e, t, r, a, n) {
          const i = {};
          let s = {};
          for (const e of this.m_filesToUpload)
            if ("pending" === e.status) {
              const t = e.IsValidAssetType(r, a, n);
              if (!t.error && !t.needsCrop) {
                e.status = "uploading";
                const r = `${e.uploadTime}/${e.file.name}`;
                (i[r] = this.UploadFile(
                  e.file,
                  e.file.name,
                  e.language,
                  t.match,
                )),
                  this.m_bSynchronousUpload && (s[r] = await i[r]);
              }
            }
          return (
            this.m_bSynchronousUpload || (s = await (0, c.RR)(i)),
            Object.keys(s).forEach((r) => {
              const a = s[r],
                n = this.m_filesToUpload.find(
                  (e) => `${e.uploadTime}/${e.file.name}` === r,
                );
              if (n)
                if (a && 1 === a.success) {
                  n.status = "success";
                  const r = (0, u.P)(a.language, t, e);
                  this.m_fnUploadSuccessCallback(
                    a.image_hash,
                    a.file_name,
                    r,
                    (function (e) {
                      switch (e) {
                        case 2:
                          return "image/gif";
                        case 1:
                          return "image/jpeg";
                        case 3:
                          return "image/png";
                        case 4:
                          return "video/mp4";
                        case 5:
                          return "video/webm";
                        case 6:
                          return "text/vtt";
                        case 7:
                          return "text/srt";
                        case 10:
                          return "image/webp";
                      }
                      return null;
                    })(a.file_type),
                    n.type,
                    n.width,
                    n.height,
                  );
                } else (n.status = "failed"), (n.message = a.message);
            }),
            s
          );
        }
        async UploadFile(e, t, r, a, n, s) {
          let l = null;
          const c = new FormData();
          c.append("assetfile", e, t),
            c.append("sessionid", m.TS.SESSIONID),
            c.append("elangauge", "" + r),
            c.append("originalname", t),
            n?.length > 0 &&
              c.append(
                "resize",
                n.map((e) => e.width + "x" + e.height).join(","),
              ),
            a && c.append("arttype", a);
          const d = _(t);
          if (!d)
            return {
              success: 8,
              message: "Invalid file extension, cannot determine mimetype",
            };
          c.append("mimetype", d);
          try {
            l = await i().post(this.m_strUploadPath, c, {
              withCredentials: !0,
              headers: { "Content-Type": "multipart/form-data" },
            });
          } catch (e) {
            const t = (0, o.H)(e);
            console.log("CCloudImageUploader.UploadFile failed ", t, e),
              (l = e.response);
          }
          return l?.data;
        }
      }
      function _(e) {
        const t = e.toLowerCase();
        return t.endsWith(".jpg")
          ? "image/jpeg"
          : t.endsWith(".png")
            ? "image/png"
            : t.endsWith(".gif")
              ? "image/gif"
              : t.endsWith(".mp4")
                ? "video/mp4"
                : t.endsWith(".webm")
                  ? "video/webm"
                  : t.endsWith(".srt")
                    ? "text/srt"
                    : t.endsWith(".vtt")
                      ? "text/vtt"
                      : t.endsWith(".webp")
                        ? "image/webp"
                        : null;
      }
      function h(e) {
        switch (e) {
          case "image/jpeg":
            return ".jpg";
          case "image/png":
            return ".png";
          case "image/gif":
            return ".gif";
          case "video/mp4":
            return ".mp4";
          case "video/webm":
            return ".webm";
          case "text/vtt":
            return ".vtt";
          case "text/srt":
            return ".srt";
          case "image/webp":
            return ".webp";
        }
        return (
          console.error("ConvertMimeTypeToExtension:Unexepected mime type ", e),
          ".jpg"
        );
      }
      (0, a.Cg)([s.sH], p.prototype, "m_filesToUpload", void 0),
        (0, a.Cg)([l.o], p.prototype, "GetUploadImages", null),
        (0, a.Cg)([l.o], p.prototype, "ClearImages", null),
        (0, a.Cg)([l.o], p.prototype, "DeleteUploadImage", null),
        (0, a.Cg)([l.o], p.prototype, "AddImageForLanguage", null),
        (0, a.Cg)([l.o], p.prototype, "UploadAllImages", null);
    },
    82705: (e, t, r) => {
      "use strict";
      r.d(t, { yh: () => a });
      r(90626);
      function a(e) {
        return (
          e.indexOf("?") > 0 && (e = e.split("?")[0]),
          e.endsWith(".jpg")
            ? 1
            : e.endsWith(".png")
              ? 3
              : e.endsWith(".gif")
                ? 2
                : e.endsWith(".mp4")
                  ? 4
                  : e.endsWith(".webm")
                    ? 5
                    : e.endsWith(".vtt")
                      ? 6
                      : e.endsWith(".srt")
                        ? 7
                        : e.endsWith(".webp")
                          ? 10
                          : void 0
        );
      }
    },
    36837: (e, t, r) => {
      "use strict";
      r.d(t, { f: () => n });
      var a = r(78327);
      class n {
        m_HomeView;
        BHasHomeView() {
          return Boolean(this.m_HomeView);
        }
        GetHomeView() {
          return this.m_HomeView?.home;
        }
        static s_globalSingletonStore;
        static Get() {
          return (
            n.s_globalSingletonStore ||
              ((n.s_globalSingletonStore = new n()),
              "dev" == a.TS.WEB_UNIVERSE &&
                (window.g_HomeViewSetting = n.s_globalSingletonStore)),
            n.s_globalSingletonStore
          );
        }
        constructor() {
          "dev" === a.TS.WEB_UNIVERSE && (window.g_HomeViewStore = this);
          const e = (0, a.Tc)("home_view_setting", "application_config");
          this.ValidateHomeViewData(e) && this.SetHomeViewSetting(e);
          const t = (0, a.Tc)(
            "home_view_setting_override",
            "application_config",
          );
          this.ValidateHomeViewDataOverride(t) &&
            this.SetHomeViewSettingOverride(t);
        }
        ValidateHomeViewData(e) {
          const t = e;
          return (
            t && "object" == typeof t.home && "object" == typeof t.main_cluster
          );
        }
        SetHomeViewSetting(e) {
          this.m_HomeView = e;
        }
        ValidateHomeViewDataOverride(e) {
          const t = e;
          return (
            t &&
            (!t.all || "object" == typeof t.all) &&
            (!t.maincap || "object" == typeof t.maincap)
          );
        }
        SetHomeViewSettingOverride(e) {
          this.m_HomeView.home = {
            ...this.m_HomeView.home,
            ...e?.all,
            ...e?.maincap,
          };
        }
      }
    },
    67165: (e, t, r) => {
      "use strict";
      r.d(t, { pF: () => I, id: () => C, FV: () => B });
      var a = r(34629),
        n = r(4434),
        i = r(41735),
        s = r.n(i),
        o = r(14947),
        l = r(90626),
        c = r(78327);
      class m {
        m_clanSteamID;
        m_appidList = new Array();
        m_strName = "";
        m_strAvatarURLFullSize = "";
        m_strTagLineLoc = "";
        m_nFollowers = 0;
        m_strVanity = "";
        m_webLink = void 0;
        m_promise;
        m_bIsLoaded = !1;
        m_bIsHidden = !1;
        m_clanAccountFlags = 0;
        constructor(e) {
          (0, o.Gn)(this), (this.m_clanSteamID = e);
        }
        Initialize(e) {
          (this.m_strName = e.name || ""),
            (this.m_strAvatarURLFullSize =
              e.avatar_url_full_size ||
              "https://avatars.steamstatic.com/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg"),
            (this.m_strTagLineLoc = e.tag_line_localized || ""),
            (this.m_nFollowers = e.followers || 0),
            (this.m_strVanity = e.vanity || void 0),
            (this.m_webLink = e.weblink),
            (this.m_bIsHidden = e.hidden || !1),
            (this.m_clanAccountFlags = e.clan_account_flags ?? 0),
            e.appids && e.appids.forEach((e) => this.m_appidList.push(e)),
            (this.m_bIsLoaded = !0);
        }
        GetCreatorHomeIdentifier() {
          return {
            name: this.m_strName,
            clan_account_id: this.m_clanSteamID.GetAccountID(),
            type: "developer",
            hidden: this.m_bIsHidden,
          };
        }
        BIsPartnerEventEditorEnabled() {
          return Boolean(8 & this.m_clanAccountFlags);
        }
        BHasClanAccountFlagSet(e) {
          return Boolean(this.m_clanAccountFlags & e);
        }
        BIsLoaded() {
          return this.m_bIsLoaded;
        }
        GetClanSteamID() {
          return this.m_clanSteamID;
        }
        GetClanAccountID() {
          return this.m_clanSteamID.GetAccountID();
        }
        GetAppIDList() {
          return this.m_appidList;
        }
        GetName() {
          return this.m_strName;
        }
        GetAvatarURLFullSize() {
          return this.m_strAvatarURLFullSize;
        }
        GetTagLine() {
          return this.m_strTagLineLoc;
        }
        GetNumFollowers() {
          return this.m_nFollowers;
        }
        BIsHidden() {
          return this.m_bIsHidden;
        }
        GetCreatorHomeURL(e) {
          if (this.m_strVanity) {
            switch (e) {
              case "publisher":
                return (
                  c.TS.STORE_BASE_URL + "publisher/" + this.m_strVanity + "/"
                );
              case "franchise":
                return (
                  c.TS.STORE_BASE_URL + "franchise/" + this.m_strVanity + "/"
                );
            }
            return c.TS.STORE_BASE_URL + "developer/" + this.m_strVanity + "/";
          }
          return (
            c.TS.STORE_BASE_URL +
            "curator/" +
            this.m_clanSteamID.GetAccountID() +
            "/"
          );
        }
        BHasWebLink() {
          return void 0 !== this.m_webLink;
        }
        GetWebLink() {
          return this.m_webLink;
        }
        GetVanityString() {
          return this.m_strVanity;
        }
        AdjustFollower(e) {
          this.m_nFollowers += e;
        }
        async EnablePartnerEventEditorFlag() {
          this.BIsPartnerEventEditorEnabled() ||
            (await this.UpdateGroupFlagsFeature([2, 8], !0));
        }
        async UpdateGroupFlagsFeature(e, t) {
          let r = c.TS.PARTNER_BASE_URL + "sales/ajaxupdateclanaccountflags",
            a = this.m_clanAccountFlags;
          if (
            (e.forEach((e) => {
              t ? (a |= e) : (a &= ~e);
            }),
            a == this.m_clanAccountFlags)
          )
            return;
          let n = new Array();
          1 & a && n.push(1),
            8 & a && n.push(8),
            2 & a && n.push(2),
            4 & a && n.push(4),
            16 & a && n.push(16),
            32 & a && n.push(32),
            64 & a && n.push(64);
          let i = new FormData();
          i.append("sessionid", c.TS.SESSIONID),
            i.append("clan_account_id", this.GetClanAccountID().toString()),
            i.append("accountflags", JSON.stringify(n));
          let o = await s().post(r, i);
          o &&
            200 == o.status &&
            1 == o.data.success &&
            (this.m_clanAccountFlags = a);
        }
      }
      (0, a.Cg)([o.sH], m.prototype, "m_appidList", void 0),
        (0, a.Cg)([o.sH], m.prototype, "m_nFollowers", void 0),
        (0, a.Cg)([o.sH], m.prototype, "m_clanAccountFlags", void 0);
      var d = r(17720),
        u = r(20194),
        p = r(56545),
        _ = r(80613),
        h = r(89068);
      const g = _.Message;
      class y extends g {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            y.prototype.clan_account_id || h.Sg(y.M()),
            g.initialize(this, e, 0, -1, [2], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            y.sm_m ||
              (y.sm_m = {
                proto: y,
                fields: {
                  clan_account_id: {
                    n: 1,
                    br: h.qM.readUint32,
                    bw: h.gp.writeUint32,
                  },
                  appid_list: {
                    n: 2,
                    r: !0,
                    q: !0,
                    br: h.qM.readUint32,
                    pbr: h.qM.readPackedUint32,
                    bw: h.gp.writeRepeatedUint32,
                  },
                },
              }),
            y.sm_m
          );
        }
        static MBF() {
          return y.sm_mbf || (y.sm_mbf = h.w0(y.M())), y.sm_mbf;
        }
        toObject(e = !1) {
          return y.toObject(e, this);
        }
        static toObject(e, t) {
          return h.BT(y.M(), e, t);
        }
        static fromObject(e) {
          return h.Uq(y.M(), e);
        }
        static deserializeBinary(e) {
          let t = new _.BinaryReader(e),
            r = new y();
          return y.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return h.zj(y.MBF(), e, t);
        }
        serializeBinary() {
          var e = new _.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          h.i0(y.M(), e, t);
        }
        serializeBase64String() {
          var e = new _.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CDeveloperPageToApps";
        }
      }
      const S = _.Message;
      class f extends S {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            f.prototype.clan_account_ids || h.Sg(f.M()),
            S.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            f.sm_m ||
              (f.sm_m = {
                proto: f,
                fields: {
                  clan_account_ids: {
                    n: 1,
                    r: !0,
                    q: !0,
                    br: h.qM.readUint32,
                    pbr: h.qM.readPackedUint32,
                    bw: h.gp.writeRepeatedUint32,
                  },
                  ignore_dlc: { n: 2, br: h.qM.readBool, bw: h.gp.writeBool },
                },
              }),
            f.sm_m
          );
        }
        static MBF() {
          return f.sm_mbf || (f.sm_mbf = h.w0(f.M())), f.sm_mbf;
        }
        toObject(e = !1) {
          return f.toObject(e, this);
        }
        static toObject(e, t) {
          return h.BT(f.M(), e, t);
        }
        static fromObject(e) {
          return h.Uq(f.M(), e);
        }
        static deserializeBinary(e) {
          let t = new _.BinaryReader(e),
            r = new f();
          return f.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return h.zj(f.MBF(), e, t);
        }
        serializeBinary() {
          var e = new _.BinaryWriter();
          return f.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          h.i0(f.M(), e, t);
        }
        serializeBase64String() {
          var e = new _.BinaryWriter();
          return f.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStoreCatalog_GetDevPageAllAppsLinked_Request";
        }
      }
      class b extends S {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            b.prototype.results || h.Sg(b.M()),
            S.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            b.sm_m ||
              (b.sm_m = {
                proto: b,
                fields: { results: { n: 1, c: y, r: !0, q: !0 } },
              }),
            b.sm_m
          );
        }
        static MBF() {
          return b.sm_mbf || (b.sm_mbf = h.w0(b.M())), b.sm_mbf;
        }
        toObject(e = !1) {
          return b.toObject(e, this);
        }
        static toObject(e, t) {
          return h.BT(b.M(), e, t);
        }
        static fromObject(e) {
          return h.Uq(b.M(), e);
        }
        static deserializeBinary(e) {
          let t = new _.BinaryReader(e),
            r = new b();
          return b.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return h.zj(b.MBF(), e, t);
        }
        serializeBinary() {
          var e = new _.BinaryWriter();
          return b.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          h.i0(b.M(), e, t);
        }
        serializeBase64String() {
          var e = new _.BinaryWriter();
          return b.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CStoreCatalog_GetDevPageAllAppsLinked_Response";
        }
      }
      var w;
      !(function (e) {
        e.GetDevPageAllAppsLinked = function (e, t) {
          return e.SendMsg(
            "StoreCatalog.GetDevPageAllAppsLinked#1",
            (0, p.I8)(f, t),
            b,
            { ePrivilege: 1 },
          );
        };
      })(w || (w = {}));
      class v {
        constructor() {
          (0, o.Gn)(this);
        }
        m_mapClanToCreatorHome = new Map();
        m_mapAppToCreatorIDList = new Map();
        m_bLoadedFromConfig = !1;
        LazyInit() {
          if (!this.m_bLoadedFromConfig) {
            let e = (0, c.Tc)("creatorhome", "application_config");
            this.ValidateStoreDefault(e) &&
              e.forEach((e) => {
                let t = Number(e.creator_clan_id),
                  r = d.b.InitFromClanID(t),
                  a = new m(r);
                a.Initialize(e),
                  (a.m_promise = v.GetAsPromise(a)),
                  this.m_mapClanToCreatorHome.set(t, a);
              });
            let t = (0, c.Tc)("creatorhomeforapp", "application_config");
            this.ValidateStoreDefaultAppList(t) &&
              t.forEach((e) => {
                void 0 !== e.appid &&
                  (this.m_mapAppToCreatorIDList.has(e.appid) ||
                    this.m_mapAppToCreatorIDList.set(e.appid, new Array()),
                  this.m_mapAppToCreatorIDList.get(e.appid).push(e));
              }),
              (this.m_bLoadedFromConfig = !0);
          }
        }
        static async GetAsPromise(e) {
          return e;
        }
        ValidateStoreDefault(e) {
          const t = e;
          return (
            !!(
              t &&
              Array.isArray(t) &&
              t.length > 0 &&
              "object" == typeof t[0]
            ) &&
            "string" == typeof t[0].name &&
            ("string" == typeof t[0].creator_clan_id ||
              "number" == typeof t[0].creator_clan_id)
          );
        }
        ValidateStoreDefaultAppList(e) {
          const t = e;
          return (
            !!(
              t &&
              Array.isArray(t) &&
              t.length > 0 &&
              "object" == typeof t[0]
            ) &&
            "number" == typeof t[0].clan_account_id &&
              t[0].clan_account_id > 0 &&
              "number" == typeof t[0].appid &&
            t[0].appid > 0
          );
        }
        BHasCreatorHomeLoaded(e) {
          return (
            this.m_mapClanToCreatorHome.has(e.GetAccountID()) &&
            this.m_mapClanToCreatorHome.get(e.GetAccountID()).BIsLoaded()
          );
        }
        GetCreatorHome(e) {
          return this.m_mapClanToCreatorHome.get(e.GetAccountID());
        }
        GetCreatorHomeByID(e) {
          return this.m_mapClanToCreatorHome.get(e.clan_account_id);
        }
        async LoadCreatorHome(e, t) {
          if (
            (this.LazyInit(),
            !this.m_mapClanToCreatorHome.has(e.GetAccountID()))
          ) {
            let r = new m(e);
            (r.m_promise = this.InternalCreatorHome(r, t)),
              await r.m_promise,
              this.m_mapClanToCreatorHome.set(e.GetAccountID(), r);
          }
          return this.m_mapClanToCreatorHome.get(e.GetAccountID()).m_promise;
        }
        async InternalCreatorHome(e, t) {
          let r = { get_appids: !0, l: c.TS.LANGUAGE, origin: self.origin },
            a =
              c.TS.STORE_BASE_URL +
              "curator/" +
              e.GetClanAccountID() +
              "/ajaxgetcreatorhomeinfo",
            n = await s().get(a, { params: r, cancelToken: t && t.token });
          return e.Initialize(n.data), e;
        }
        async LoadCreatorHomeListForAppIncludeHiddden(e, t) {
          if ((this.LazyInit(), !this.m_mapAppToCreatorIDList.has(e))) {
            let r = { appid: e },
              a = c.TS.STORE_BASE_URL + "events/ajaxgetcreatorhomeidforapp",
              n = await s().get(a, {
                params: r,
                cancelToken: t && t.token,
                withCredentials: !0,
              });
            this.m_mapAppToCreatorIDList.set(e, n.data.creator_list);
          }
          return this.m_mapAppToCreatorIDList.get(e);
        }
        async SearchCreatorHomeStore(e, t, r) {
          let a = `${c.TS.STORE_BASE_URL}curator/0/ajaxsearchcurators`,
            n = {
              term: e.replace(" ", "+"),
              require_creator: t,
              cc: c.TS.COUNTRY,
              l: c.TS.LANGUAGE,
              origin: self.origin,
            },
            i = new Array();
          const l = await s().get(a, { params: n, cancelToken: r.token });
          return (
            l.data.curators &&
              (0, o.h5)(() => {
                l.data.curators.forEach((e) => {
                  if (!this.m_mapClanToCreatorHome.has(e.creator_clan_id)) {
                    let t = d.b.InitFromClanID(e.creator_clan_id),
                      r = new m(t);
                    r.Initialize(e),
                      this.m_mapClanToCreatorHome.set(e.creator_clan_id, r);
                  }
                  i.push(this.m_mapClanToCreatorHome.get(e.creator_clan_id));
                });
              }),
            i
          );
        }
        GetCreatorHomeListForAppIncludeHidden(e) {
          return this.m_mapAppToCreatorIDList.has(e)
            ? this.m_mapAppToCreatorIDList.get(e)
            : [];
        }
      }
      (0, a.Cg)([o.sH], v.prototype, "m_mapClanToCreatorHome", void 0),
        (0, a.Cg)([o.sH], v.prototype, "m_mapAppToCreatorIDList", void 0),
        (0, a.Cg)([o.XI], v.prototype, "LazyInit", null);
      const I = new v();
      function B(e) {
        const t = d.b.InitFromClanID(e),
          [r, a] = l.useState(I.GetCreatorHome(t)),
          i = (0, n.m)("useCreatorHome");
        return (
          l.useEffect(() => {
            const t = d.b.InitFromClanID(e);
            I.BHasCreatorHomeLoaded(t)
              ? r
                ? r.GetClanAccountID() != e && a(I.GetCreatorHome(t))
                : a(I.GetCreatorHome(t))
              : I.LoadCreatorHome(t).then(() => {
                  i?.token?.reason || a(I.GetCreatorHome(t));
                });
          }, [i?.token?.reason, e, r]),
          r
        );
      }
      function C(e, t, r) {
        const a = (0, u.I)({
          queryKey: ["useCreateHomeLinkedApps", t, r],
          queryFn: async () => {
            const a = p.w.Init(f);
            a.Body().add_clan_account_ids(t), r && a.Body().set_ignore_dlc(!0);
            const n = await w.GetDevPageAllAppsLinked(e, a);
            if (1 != n.GetEResult())
              throw new Error(
                `Error from useCreateHomeLinkedApps: ${n.GetEResult()}`,
              );
            return 0 == n.Body().results().length
              ? []
              : n.Body().results()[0].appid_list();
          },
          enabled: Boolean(t > 0 && e),
        });
        return a?.isLoading ? null : a.data;
      }
      window.g_CreatorHomeStore = I;
    },
    30894: (e, t, r) => {
      "use strict";
      r.d(t, { Fm: () => h, L2: () => g, Lg: () => y });
      var a,
        n = r(34629),
        i = r(41735),
        s = r.n(i),
        o = r(14947),
        l = r(68797),
        c = r(78327),
        m = r(90626),
        d = r(56011),
        u = r(3578);
      !(function (e) {
        (e[(e.AnyController = 0)] = "AnyController"),
          (e[(e.XboxController = 1)] = "XboxController"),
          (e[(e.Ps3Controller = 2)] = "Ps3Controller"),
          (e[(e.Ps4Controller = 3)] = "Ps4Controller"),
          (e[(e.Ps5Controller = 4)] = "Ps5Controller"),
          (e[(e.SwitchController = 5)] = "SwitchController"),
          (e[(e.SteamController = 6)] = "SteamController"),
          (e[(e.SteamDeckNeptune = 7)] = "SteamDeckNeptune"),
          (e[(e.SteamDeckGalileo = 8)] = "SteamDeckGalileo");
      })(a || (a = {}));
      const p = {
          any_controller: a.AnyController,
          xbox_controller: a.XboxController,
          ps3_controller: a.Ps3Controller,
          ps4_controller: a.Ps4Controller,
          ps5_controller: a.Ps5Controller,
          switch_controller: a.SwitchController,
          steam_controller: a.SteamController,
          steam_deck_neptune: a.SteamDeckNeptune,
          steam_deck_galileo: a.SteamDeckGalileo,
        },
        _ = "unUserdataVersion";
      class h {
        m_setWishList = new Set();
        m_wishlistInOrder = Array();
        m_setOwnedPackages = new Set();
        m_setOwnedApps = new Set();
        m_setFollowedApps = new Set();
        m_setExcludedTagsIds = new Set();
        m_setExcludedContentDescriptors = new Set();
        m_setRecommendedApps = new Set();
        m_recAppInOrder = new Array();
        m_mapIgnoredApps = new Map();
        m_mapIgnoredPackages = new Map();
        m_setCuratorsFollowed = new Set();
        m_setCuratorsIgnored = new Set();
        m_bShowFilteredUserReviewScores = !0;
        m_setPreferredPlatforms = new Set();
        m_bAllowAppImpressions = !1;
        m_primaryLanguage = -1;
        m_secondaryLanguages = new Set();
        m_setRecommendedTags = new Set();
        m_mapRecommendingCuratorsForApp = new Map();
        m_setPackagesInCart = new Set();
        m_setAppsInCart = new Set();
        m_nCartLineItemCount = 0;
        m_rgHardwareUsed = new Set();
        m_bIsLoaded = !1;
        m_promise;
        m_bAjaxInFlight = !1;
        BIsLoaded() {
          return this.m_bIsLoaded;
        }
        GetWishlistGamesInUserOrder() {
          return this.m_wishlistInOrder;
        }
        GetWishlistGameCount() {
          return this.m_setWishList.size;
        }
        GetRecommendedGamesInIRPriorityOrder() {
          return this.m_recAppInOrder;
        }
        GetFollowedCuratorCount() {
          return this.m_setCuratorsFollowed.size;
        }
        GetFollowedCuratorsAccountID() {
          return Array.from(this.m_setCuratorsFollowed);
        }
        GetPackagesInCartCount() {
          return this.m_setPackagesInCart.size;
        }
        GetAppInCartCount() {
          return this.m_setAppsInCart.size;
        }
        GetCartLineItemCount() {
          return this.m_nCartLineItemCount;
        }
        GetIgnoredAppsCount() {
          return this.m_mapIgnoredApps.size;
        }
        BIsFollowingCurator(e) {
          const t =
            "object" == typeof e && "GetAccountID" in e ? e.GetAccountID() : e;
          return this.m_setCuratorsFollowed.has(t);
        }
        BIsFollowingCreator(e) {
          return this.BIsFollowingCurator(e);
        }
        BIsIgnoringCurator(e) {
          const t =
            "object" == typeof e && "GetAccountID" in e ? e.GetAccountID() : e;
          return this.m_setCuratorsIgnored.has(t);
        }
        get ExcludedContentDescriptor() {
          return Array.from(this.m_setExcludedContentDescriptors);
        }
        BExcludesTag(e) {
          return e.some((e) => this.m_setExcludedTagsIds.has(Number(e.tagid)));
        }
        BExcludeTagIDs(e) {
          return e.some((e) => this.m_setExcludedTagsIds.has(e));
        }
        GetExcludedTagsSortedByID() {
          return Array.from(this.m_setExcludedTagsIds).sort();
        }
        BExcludesContentDescriptor(e) {
          return e.some((e) => this.m_setExcludedContentDescriptors.has(e));
        }
        BIncludesContentDescriptor(e) {
          return !this.m_setExcludedContentDescriptors.has(e);
        }
        BIsGameWishlisted(e) {
          return this.m_setWishList.has(Number(e));
        }
        BIsGameRecommended(e) {
          return this.m_setRecommendedApps.has(Number(e));
        }
        BIsGameIgnored(e) {
          return this.m_mapIgnoredApps && this.m_mapIgnoredApps.has(e);
        }
        BIsPackageIgnored(e) {
          return this.m_mapIgnoredPackages?.has(e);
        }
        BIsGameOwned(e) {
          return this.m_setOwnedApps.has(Number(e));
        }
        BOwnsApp(e) {
          return Boolean(e) && this.m_setOwnedApps.has(Number(e));
        }
        BFollowsApp(e) {
          return this.m_setFollowedApps.has(Number(e));
        }
        BOwnsPackage(e) {
          return this.m_setOwnedPackages.has(Number(e));
        }
        BHasUsedHardware(e) {
          return this.m_rgHardwareUsed.has(e);
        }
        BShowFilteredUserReviewScores() {
          return this.m_bShowFilteredUserReviewScores;
        }
        BAppImpressionsAllowed() {
          return this.m_bAllowAppImpressions;
        }
        GetPrimaryLanguage() {
          return this.m_primaryLanguage;
        }
        GetSecondaryLanguages() {
          return this.m_secondaryLanguages;
        }
        BIsAnyLanguageEnabled(e) {
          return (
            null == this.m_primaryLanguage ||
            this.m_primaryLanguage <= -1 || 31 <= this.m_primaryLanguage ||
            e.some(
              (e) =>
                this.m_primaryLanguage === e ||
                this.m_secondaryLanguages.has(e),
            )
          );
        }
        GetRecommendedTags() {
          return this.m_setRecommendedTags;
        }
        BIsAjaxInFlight() {
          return this.m_bAjaxInFlight;
        }
        BIsAppRecommendedBySomeCurator(e) {
          return this.m_mapRecommendingCuratorsForApp.has(e);
        }
        GetRecommendingCuratorsForApp(e) {
          return this.m_mapRecommendingCuratorsForApp.get(e);
        }
        GetOwnedApps() {
          return this.m_setOwnedApps;
        }
        GetWishlistedApps() {
          return this.m_setWishList;
        }
        async HintLoad() {
          return (
            this.m_promise || (this.m_promise = this.InternalLoad()),
            this.m_promise
          );
        }
        async InternalLoad() {
          let e = window.localStorage.getItem(_) || "0",
            t = {
              v: "0" == e ? void 0 : e,
              id: "" + c.iA.accountid,
              cc: "" + c.TS.COUNTRY,
              origin: self.origin,
            },
            r = c.TS.STORE_BASE_URL + "dynamicstore/userdata/";
          try {
            let e = await s().get(r, { params: t, withCredentials: !0 });
            e &&
              200 == e.status &&
              (0, o.h5)(() => {
                if (((this.m_bIsLoaded = !0), e.data.rgCurators)) {
                  this.m_setCuratorsFollowed = new Set();
                  for (const t in e.data.rgCurators)
                    this.m_setCuratorsFollowed.add(Number(t));
                }
                if (
                  (e.data.rgCuratorsIgnored &&
                    (this.m_setCuratorsIgnored = new Set(
                      e.data.rgCuratorsIgnored.map((e) => Number(e)),
                    )),
                  e.data.rgWishlist &&
                    ((this.m_wishlistInOrder = e.data.rgWishlist.map((e) =>
                      Number(e),
                    )),
                    (this.m_setWishList = new Set(
                      e.data.rgWishlist.map((e) => Number(e)),
                    ))),
                  e.data.rgFollowedApps &&
                    (this.m_setFollowedApps = new Set(
                      e.data.rgFollowedApps.map((e) => Number(e)),
                    )),
                  e.data.rgOwnedApps &&
                    (this.m_setOwnedApps = new Set(
                      e.data.rgOwnedApps.map((e) => Number(e)),
                    )),
                  e.data.rgOwnedPackages &&
                    (this.m_setOwnedPackages = new Set(
                      e.data.rgOwnedPackages.map((e) => Number(e)),
                    )),
                  e.data.rgIgnoredApps)
                ) {
                  const t = e.data.rgIgnoredApps;
                  this.m_mapIgnoredApps = new Map();
                  for (const e in t)
                    this.m_mapIgnoredApps.set(Number(e), Number(t[e]));
                }
                if (e.data.rgIgnoredPackages) {
                  const t = e.data.rgIgnoredPackages;
                  this.m_mapIgnoredPackages = new Map();
                  for (const e in t)
                    this.m_mapIgnoredPackages.set(Number(e), Number(t[e]));
                }
                if (
                  (e.data.rgExcludedTags &&
                    (this.m_setExcludedTagsIds = new Set(
                      e.data.rgExcludedTags.map((e) => Number(e.tagid)),
                    )),
                  e.data.rgExcludedContentDescriptorIDs &&
                    (this.m_setExcludedContentDescriptors = new Set(
                      e.data.rgExcludedContentDescriptorIDs.map((e) =>
                        Number(e),
                      ),
                    )),
                  e.data.rgRecommendedApps &&
                    ((this.m_recAppInOrder = e.data.rgRecommendedApps.map((e) =>
                      Number(e),
                    )),
                    (this.m_setRecommendedApps = new Set(
                      e.data.rgRecommendedApps.map((e) => Number(e)),
                    ))),
                  e.data.rgPreferredPlatforms &&
                    (this.m_setPreferredPlatforms = new Set(
                      e.data.rgPreferredPlatforms,
                    )),
                  e.data.bAllowAppImpressions &&
                    (this.m_bAllowAppImpressions = e.data.bAllowAppImpressions),
                  (this.m_bShowFilteredUserReviewScores =
                    !!e.data.bShowFilteredUserReviewScores),
                  void 0 !== e.data.rgPrimaryLanguage &&
                    (this.m_primaryLanguage = e.data.rgPrimaryLanguage),
                  e.data.rgSecondaryLanguages &&
                    (this.m_secondaryLanguages = new Set(
                      e.data.rgSecondaryLanguages,
                    )),
                  e.data.rgRecommendedTags &&
                    (this.m_setRecommendedTags = new Set(
                      e.data.rgRecommendedTags.map((e) => e.tagid),
                    )),
                  e.data.rgAppsInCart &&
                    (this.m_setAppsInCart = new Set(e.data.rgAppsInCart)),
                  e.data.rgPackagesInCart &&
                    (this.m_setPackagesInCart = new Set(
                      e.data.rgPackagesInCart,
                    )),
                  e.data.nCartLineItemCount &&
                    (this.m_nCartLineItemCount = e.data.nCartLineItemCount),
                  e.data.rgCurations)
                )
                  for (const t of Object.keys(e.data.rgCurations)) {
                    const r = [];
                    for (const a of Object.keys(e.data.rgCurations[t]))
                      0 === e.data.rgCurations[t][a] && r.push(Number(a));
                    this.m_mapRecommendingCuratorsForApp.set(Number(t), r);
                  }
                if (e.data.rgHardwareUsed)
                  for (const t of e.data.rgHardwareUsed) {
                    const e = p[t];
                    e && this.m_rgHardwareUsed.add(e);
                  }
              });
          } catch (e) {
            let t = (0, l.H)(e);
            console.error("CDynamicStore.InternalLoad", t.strErrorMsg, t);
          }
          return this;
        }
        async UpdateFollowOrIgnoreCurator(e, t, r) {
          let a =
            c.TS.STORE_BASE_URL +
            "curators/" +
            (t ? "ajaxfollow/" : "ajaxignore/");
          const n = e.GetAccountID(),
            i = new FormData();
          i.append("clanid", "" + n),
            i.append("sessionid", c.TS.SESSIONID),
            i.append(t ? "follow" : "ignore", r ? "1" : "0");
          let o = await s().post(a, i, { withCredentials: !0 });
          if (o && 200 == o.status) {
            this.InvalidateCache();
            const e = t
              ? this.m_setCuratorsFollowed
              : this.m_setCuratorsIgnored;
            r ? e.add(n) : e.delete(n);
          }
          return o.data;
        }
        async UpdateAppIgnore(e, t, r, a = 0) {
          let n = c.TS.STORE_BASE_URL + "recommended/ignorerecommendation";
          const i = new FormData();
          i.append("sessionid", c.TS.SESSIONID),
            i.append("appid", "" + e),
            i.append("remove", t ? "0" : "1"),
            i.append("snr", r),
            i.append("ignore_reason", "" + a);
          try {
            this.m_bAjaxInFlight = !0;
            let r = await s().post(n, i, { withCredentials: !0 });
            return (
              r &&
                200 == r.status &&
                (0, o.h5)(() => {
                  this.InvalidateCache(),
                    t
                      ? this.m_mapIgnoredApps.set(e, a)
                      : this.m_mapIgnoredApps.delete(e);
                }),
              (this.m_bAjaxInFlight = !1),
              r.data
            );
          } catch (e) {
            let t = (0, l.H)(e);
            console.error("UpdateAppIgnore", t.strErrorMsg, t);
          }
          return (this.m_bAjaxInFlight = !1), { success: 2 };
        }
        async UpdateGameWishlist(e, t, r, a) {
          let n =
            c.TS.STORE_BASE_URL +
            "api/" +
            (t ? "addtowishlist" : "removefromwishlist");
          const i = new FormData();
          i.append("appid", "" + e),
            i.append("sessionid", c.TS.SESSIONID),
            r && i.append("snr", r),
            (this.m_bAjaxInFlight = !0);
          let o = await s().post(n, i, {
            withCredentials: !0,
            cancelToken: a ? a.token : void 0,
          });
          if (((this.m_bAjaxInFlight = !1), a && a.token.reason))
            return { success: 52 };
          if (
            ((o.data.success = 1 == o.data.success ? 1 : 2),
            1 == o.data.success)
          )
            if ((this.InvalidateCache(), (e = Number(e)), t))
              this.m_setWishList.has(e) || this.m_wishlistInOrder.push(e),
                this.m_setWishList.add(e);
            else {
              if (this.m_setWishList.has(e)) {
                const t = this.m_wishlistInOrder.findIndex((t) => t == e);
                -1 != t && this.m_wishlistInOrder.splice(t, 1);
              }
              this.m_setWishList.delete(e);
            }
          return o.data;
        }
        async AddToCart(e, t, r, a, n, i, o) {
          if (
            void 0 !== window.g_bUseNewCartAPI &&
            window.g_bUseNewCartAPI &&
            "function" == typeof window.AddItemToCart
          ) {
            let e;
            return (
              n && (e = u.A.ParseSNR(n)), window.AddItemToCart(t, i, e), !0
            );
          }
          const l = new FormData();
          l.append("action", "add_to_cart"),
            i ? l.append("bundleid", i.toString()) : l.append("subid", "" + t),
            n && l.append("snr", n),
            l.append("sessionid", c.TS.SESSIONID),
            l.append("quantity", "1");
          const m = (0, d.uX)(e);
          e.preventDefault();
          try {
            await s().post(r, l, { withCredentials: !0 }),
              this.InvalidateCache(),
              o?.fnSetURL ? o.fnSetURL(a) : (m.location.href = a);
          } catch (e) {
            return console.log("HandleOnAddToCart", e), !1;
          }
          return !0;
        }
        async AddLicenseForFreeGame(e) {
          if (this.BOwnsApp(e)) return 1;
          try {
            const t = new FormData();
            t.append("sessionid", c.TS.SESSIONID),
              t.append("appid", "" + e),
              t.append("cc", c.TS.COUNTRY);
            let r = c.TS.STORE_BASE_URL + "actions/addappformastersubscription",
              a = await s().post(r, t, { withCredentials: !0 });
            if (
              (this.InvalidateCache(), !a.data.success || 1 !== a.data.success)
            )
              return a.data.success ? a.data.success : 2;
            this.m_setOwnedApps.add(Number(e));
          } catch (e) {
            let t = (0, l.H)(e);
            return (
              console.log("AddLicense request failed:", t.strErrorMsg, t), 2
            );
          }
          return 1;
        }
        async UpdateFollowingApp(e, t) {
          try {
            const r = c.TS.STORE_BASE_URL + "explore/followgame",
              a = new FormData();
            a.append("appid", "" + e),
              a.append("sessionid", c.TS.SESSIONID),
              t || a.append("unfollow", "1");
            const n = await s().post(r, a, { withCredentials: !0 });
            if (!n.data) return 2;
            this.InvalidateCache(),
              t
                ? this.m_setFollowedApps.add(Number(e))
                : this.m_setFollowedApps.delete(Number(e));
          } catch (e) {
            return console.log("Follow game request failed"), 2;
          }
          return 1;
        }
        BHasPlatformPreferenceSet() {
          return (
            this.m_setPreferredPlatforms.size > 0 &&
            this.m_setPreferredPlatforms.size < 3
          );
        }
        BIsPreferredPlatform(e) {
          return this.m_setPreferredPlatforms.has(e);
        }
        InvalidateCache() {
          window.localStorage.setItem(
            _,
            (
              Number.parseInt(window.localStorage.getItem(_) || "0") + 1
            ).toString(),
          );
        }
        static s_globalSingletonStore;
        static Get() {
          return (
            h.s_globalSingletonStore ||
              ((h.s_globalSingletonStore = new h()),
              "dev" == c.TS.WEB_UNIVERSE &&
                (window.DUS = h.s_globalSingletonStore)),
            h.s_globalSingletonStore
          );
        }
        constructor() {
          (0, o.Gn)(this);
        }
      }
      function g() {
        const [e, t] = (0, m.useState)(!h.Get().BIsLoaded());
        return (
          (0, m.useEffect)(() => {
            e &&
              h
                .Get()
                .HintLoad()
                .finally(() => t(!h.Get().BIsLoaded()));
          }, [e]),
          [e, h.Get()]
        );
      }
      function y(e) {
        const [t, r] = g();
        return !t && r.BOwnsApp(e);
      }
      (0, n.Cg)([o.sH], h.prototype, "m_setWishList", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_setOwnedPackages", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_setOwnedApps", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_setFollowedApps", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_setExcludedTagsIds", void 0),
        (0, n.Cg)(
          [o.sH],
          h.prototype,
          "m_setExcludedContentDescriptors",
          void 0,
        ),
        (0, n.Cg)([o.sH], h.prototype, "m_setRecommendedApps", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_mapIgnoredApps", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_mapIgnoredPackages", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_setCuratorsFollowed", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_setCuratorsIgnored", void 0),
        (0, n.Cg)(
          [o.sH],
          h.prototype,
          "m_bShowFilteredUserReviewScores",
          void 0,
        ),
        (0, n.Cg)([o.sH], h.prototype, "m_primaryLanguage", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_secondaryLanguages", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_setRecommendedTags", void 0),
        (0, n.Cg)(
          [o.sH],
          h.prototype,
          "m_mapRecommendingCuratorsForApp",
          void 0,
        ),
        (0, n.Cg)([o.sH], h.prototype, "m_setPackagesInCart", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_setAppsInCart", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_nCartLineItemCount", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_rgHardwareUsed", void 0),
        (0, n.Cg)([o.sH], h.prototype, "m_bAjaxInFlight", void 0),
        (0, n.Cg)([o.EW], h.prototype, "ExcludedContentDescriptor", null),
        (0, n.Cg)([o.XI], h.prototype, "UpdateAppIgnore", null);
    },
    30193: (e, t, r) => {
      "use strict";
      r.d(t, { p: () => o });
      var a = r(34629),
        n = r(78327),
        i = r(14947);
      const s = 604800;
      class o {
        constructor() {
          (0, i.Gn)(this);
        }
        m_bEmoticonListRequested = !1;
        m_bInitialized = !1;
        m_rtMostRecentEmoticon = void 0;
        static sm_EmoticonRegex = new RegExp("ː([a-zA-Z0-9_\\-]+)ː", "g");
        m_rgEmoticons = [];
        m_rgFlairs = [];
        m_rgRecentEmoticons;
        m_rgStickers = [];
        m_rgRecentStickers;
        m_rgEffects = [];
        m_rtLastStickerOrEffect = Number.MIN_SAFE_INTEGER;
        m_emoticonTrackerCallback = null;
        m_stickerTrackerCallback = null;
        static GetEmoticonURL(e, t) {
          return t
            ? n.TS.COMMUNITY_CDN_URL + "economy/emoticonlarge/" + e
            : n.TS.COMMUNITY_CDN_URL + "economy/emoticon/" + e;
        }
        static GetEmoticonReplaceRegex() {
          return o.sm_EmoticonRegex;
        }
        static BEmoticonFilterMatch(e, t) {
          return (
            -1 !== `:${e.name_normalized || e.name}:`.indexOf(t.toLowerCase())
          );
        }
        static FilterEmoticons(e, t) {
          return t && ":" !== t
            ? e.filter((e) => o.BEmoticonFilterMatch(e, t))
            : e;
        }
        static BStickerFilterMatch(e, t) {
          return e.name.toLowerCase().indexOf(t.toLowerCase()) > -1;
        }
        static FilterStickers(e, t) {
          return t ? e.filter((e) => o.BStickerFilterMatch(e, t)) : e;
        }
        SearchEmoticons(e, t = 25, r = !0) {
          function a(e) {
            return e.name_normalized || e.name;
          }
          this.UpdateEmoticonList(), (e = e.toLocaleLowerCase());
          let n = this.recent_emoticons.filter((t) => !e || a(t).startsWith(e)),
            i = this.recent_emoticons.filter(
              (t) => !r && -1 !== a(t).indexOf(e),
            ),
            s = this.m_rgEmoticons.filter((t) => !e || a(t).startsWith(e)),
            o = this.m_rgEmoticons.filter((t) => !r && -1 !== a(t).indexOf(e)),
            l = new Set(),
            c = [];
          function m(e, r, n) {
            return (
              !(c.length >= t) &&
              (l.has(e) ||
                (l.add(e), c.push({ name: a(e), recent: r, new: n })),
              !0)
            );
          }
          function d(e, t, r) {
            for (let a of e) if (!m(a, t, r(a))) break;
          }
          return (
            d(n, !0, (e) => !(e.last_used || !e.time_received)),
            d(s, !1, () => !1),
            d(i, !0, (e) => !(e.last_used || !e.time_received)),
            d(o, !1, () => !1),
            c
          );
        }
        get is_initialized() {
          return this.m_bInitialized;
        }
        GetTimeReceivedNewestEmoticon() {
          return this.UpdateEmoticonList(), this.m_rtMostRecentEmoticon;
        }
        GetTimeReceivedForStickerOrEffect() {
          return this.m_rtLastStickerOrEffect;
        }
        UpdateEmoticonList() {
          this.m_bInitialized || this.RequestEmoticonList();
        }
        get emoticon_list() {
          return this.UpdateEmoticonList(), this.m_rgEmoticons;
        }
        get flair_list() {
          return this.UpdateEmoticonList(), this.m_rgFlairs;
        }
        GetStickerList() {
          return this.m_rgStickers;
        }
        GetEffectList() {
          return this.m_rgEffects;
        }
        GetFlairListByGroupID(e) {
          return this.m_rgFlairs.filter((t) => t.flairGroupID === e);
        }
        get recent_emoticons() {
          return (
            this.m_rgRecentEmoticons || this.BuildRecentEmoticonList(),
            this.m_rgRecentEmoticons
          );
        }
        get recent_stickers() {
          return (
            this.m_rgRecentStickers || this.BuildRecentStickerList(),
            this.m_rgRecentStickers
          );
        }
        SetEmoticonTrackerCallback(e) {
          this.m_emoticonTrackerCallback = e;
        }
        SetStickerTrackerCallback(e) {
          this.m_stickerTrackerCallback = e;
        }
        TrackEmoticonUsage(e, t) {
          if (!this.m_bInitialized) return;
          this.m_emoticonTrackerCallback &&
            this.m_emoticonTrackerCallback(e, t);
          let r,
            a = new Map(),
            n = /\[emoticon\]([^[]*)/g;
          for (; (r = n.exec(e)); ) {
            let e = a.get(r[1]) || 0;
            a.set(r[1], e + 1);
          }
          let i = !1;
          if (a.size) {
            if (void 0 !== this.m_rgRecentEmoticons)
              for (let e of this.m_rgRecentEmoticons)
                a.has(e.name) &&
                  ((e.last_used = t),
                  (e.use_count += a.get(e.name)),
                  a.delete(e.name),
                  e.time_received && ((i = !0), delete e.time_received));
            if (a.size)
              for (let e of this.m_rgEmoticons)
                a.has(e.name) &&
                  ((e.last_used = t),
                  (e.use_count += a.get(e.name)),
                  delete e.time_received,
                  void 0 !== this.m_rgRecentEmoticons &&
                    this.m_rgRecentEmoticons.push(e));
            if (
              void 0 !== this.m_rgRecentEmoticons &&
              (this.BuildRecentEmoticonList(), i)
            ) {
              this.m_rtMostRecentEmoticon = void 0;
              for (let e of this.m_rgRecentEmoticons)
                !e.last_used &&
                  e.time_received &&
                  (!this.m_rtMostRecentEmoticon ||
                    e.time_received > this.m_rtMostRecentEmoticon) &&
                  (this.m_rtMostRecentEmoticon = e.time_received);
            }
          }
        }
        TrackStickerUsage(e, t) {
          if (!this.m_bInitialized) return;
          this.m_stickerTrackerCallback && this.m_stickerTrackerCallback(e, t);
          const r = this.m_rgStickers.find(({ name: t }) => t === e);
          (r.last_used = t),
            (r.use_count += 1),
            delete r.time_received,
            this.BuildRecentStickerList();
        }
        RequestEmoticonList() {
          !this.m_bEmoticonListRequested &&
            this.BInitialized() &&
            ((this.m_bEmoticonListRequested = !0),
            this.RequestEmoticonListInternal());
        }
        BuildRecentEmoticonList() {
          this.m_rgRecentEmoticons = this.BuildRecentList(this.m_rgEmoticons);
        }
        BuildRecentStickerList() {
          this.m_rgRecentStickers = this.BuildRecentList(this.m_rgStickers);
        }
        BuildRecentList(e) {
          const t = this.GetServerTime() - s,
            r = e.filter(
              ({ last_used: e, time_received: r }) => e || (r && r > t),
            );
          return (
            r.sort(
              (e, t) =>
                (t.last_used || t.time_received) -
                (e.last_used || e.time_received),
            ),
            r.slice(0, 50)
          );
        }
        OnEmoticonListReceived(e) {
          (this.m_rgFlairs = []),
            (this.m_rgEmoticons = []),
            (this.m_rgRecentEmoticons = void 0),
            (this.m_rtMostRecentEmoticon = void 0);
          let t = this.GetServerTime() - s;
          for (let r of e) {
            let e = r.name;
            e.startsWith("^")
              ? this.m_rgFlairs.push({
                  name: e.match(new RegExp(/:(.*):/))[1],
                  flairGroupID: e.match(new RegExp(/\^(.*)\^/))[1],
                })
              : (!r.last_used && r.time_received > t
                  ? (!this.m_rtMostRecentEmoticon ||
                      r.time_received > this.m_rtMostRecentEmoticon) &&
                    (this.m_rtMostRecentEmoticon = r.time_received)
                  : delete r.time_received,
                this.m_rgEmoticons.push(r));
          }
          (this.m_bInitialized = !0), (this.m_bEmoticonListRequested = !1);
        }
      }
      (0, a.Cg)([i.sH], o.prototype, "m_bInitialized", void 0),
        (0, a.Cg)([i.sH], o.prototype, "m_rtMostRecentEmoticon", void 0),
        (0, a.Cg)([i.sH], o.prototype, "m_rtLastStickerOrEffect", void 0),
        (0, a.Cg)([i.XI], o.prototype, "TrackEmoticonUsage", null);
    },
    90362: (e, t, r) => {
      "use strict";
      r.d(t, { m: () => S, V: () => b });
      var a = r(56545),
        n = r(85737),
        i = r(65689),
        s = r(71944),
        o = r(44654),
        l = r(29233);
      function c(e) {
        try {
          if (!e || "string" != typeof e) return null;
          const t = e.split(".");
          if (3 !== t.length) return null;
          const [r, a] = t,
            n = d(r),
            i = d(a);
          return n && i ? { header: JSON.parse(n), body: JSON.parse(i) } : null;
        } catch (e) {
          return (
            console.error(`Exception while attempting to decode token: "${e}"`),
            null
          );
        }
      }
      function m(e) {
        return e ? e.body.exp : 0;
      }
      function d(e) {
        return atob(e.replace(/-/g, "+").replace(/_/g, "/"));
      }
      const u = {
        name: "steamLoginSpoofSteamID",
        options: { path: "/", secure: !0 },
        preferenceControls: { isTechnicallyNecessary: !0 },
      };
      class p {
        m_ServiceTransport;
        m_AnonymousServiceTransport;
        m_strWebAPIBaseURL;
        m_webApiAccessToken = "";
        m_bJsonMode = !1;
        m_bJWTToken = !1;
        m_fnRequestNewAccessToken;
        m_refreshAccessTokenPromise;
        m_dtLastExpireCheck = 0;
        m_strSpoofedSteamID = "";
        constructor(e, t = "", r = !1, a) {
          (this.m_strWebAPIBaseURL = e),
            (this.m_webApiAccessToken = t),
            (this.m_bJsonMode = r),
            (this.m_fnRequestNewAccessToken = a),
            (this.m_bJWTToken = null != c(t)),
            (this.m_ServiceTransport = {
              SendMsg: this.SendMsgAndAwaitResponse.bind(this, {
                bSendAuth: !0,
              }),
              SendNotification: this.SendNotification.bind(this, {
                bSendAuth: !0,
              }),
              MakeReady: this.MakeReady.bind(this),
            }),
            (this.m_AnonymousServiceTransport = {
              SendMsg: this.SendMsgAndAwaitResponse.bind(this, {
                bSendAuth: !1,
              }),
              SendNotification: this.SendNotification.bind(this, {
                bSendAuth: !1,
              }),
              MakeReady: this.MakeReady.bind(this),
            });
          const n = (function (e) {
            if (!document.cookie) return;
            const t = document.cookie.match("(^|; )" + e.name + "=([^;]*)");
            return t && t[2] ? decodeURIComponent(t[2]) : void 0;
          })(u);
          n && /[0-9]+/g.test(n) && (this.m_strSpoofedSteamID = n);
        }
        WaitUntilLoggedOn() {
          return Promise.resolve();
        }
        GetServerRTime32() {
          return Number(new Date());
        }
        get steamid() {
          return new l.b2();
        }
        RTime32ToDate(e) {
          return new Date(1e3 * e);
        }
        MakeReady() {
          return Promise.resolve({ result: 1, message: "ready" });
        }
        GetServiceTransport() {
          return this.m_ServiceTransport;
        }
        GetWebAPIAccessToken() {
          return this.m_webApiAccessToken;
        }
        GetAnonymousServiceTransport() {
          return this.m_AnonymousServiceTransport;
        }
        async SendMsgAndAwaitResponse(e, t, r, n, i) {
          let s;
          try {
            if (this.m_bJWTToken && e.bSendAuth) {
              const e = Date.now() / 1e3;
              this.m_refreshAccessTokenPromise
                ? await this.m_refreshAccessTokenPromise
                : this.m_fnRequestNewAccessToken &&
                  e - this.m_dtLastExpireCheck > 60 &&
                  ((this.m_dtLastExpireCheck = e),
                  (function (e) {
                    const t = m(e),
                      r = (function (e) {
                        return e ? e.body.nbf || e.body.iat : 0;
                      })(e);
                    let a = 900;
                    const n = t - r;
                    return (
                      n < 1350 && (a = n <= 60 ? 0 : 60),
                      m(e) - a < Date.now() / 1e3
                    );
                  })(c(this.m_webApiAccessToken)) &&
                    ((this.m_refreshAccessTokenPromise =
                      this.m_fnRequestNewAccessToken(this.m_webApiAccessToken)),
                    (this.m_webApiAccessToken =
                      await this.m_refreshAccessTokenPromise),
                    (this.m_refreshAccessTokenPromise = void 0)));
            }
            const l = await this.Send(e, t, r, i);
            if (200 != l.status) throw new Error("Request Error");
            if (
              ((s = a.w.Init(n, 147)),
              l.headers &&
                (l.headers.get("x-eresult") &&
                  s.Hdr().set_eresult(parseInt(l.headers.get("x-eresult"))),
                l.headers.get("x-error_message") &&
                  s.Hdr().set_error_message(l.headers.get("x-error_message"))),
              this.m_bJsonMode)
            )
              s.SetBodyJSON(await l.json());
            else {
              const e = new o.pV(await l.arrayBuffer());
              s.ReadBodyFromBuffer(n, e);
            }
            0;
          } catch (t) {
            const r = 401 === t?.response?.status,
              a = r ? "Unauthorized" : void 0;
            (s = this.CreateFailedMsgProtobuf(n, 3, a)),
              r &&
                !this.m_refreshAccessTokenPromise &&
                this.m_bJWTToken &&
                e.bSendAuth &&
                this.m_fnRequestNewAccessToken &&
                ((this.m_refreshAccessTokenPromise =
                  this.m_fnRequestNewAccessToken(this.m_webApiAccessToken)),
                (this.m_webApiAccessToken =
                  await this.m_refreshAccessTokenPromise),
                (this.m_refreshAccessTokenPromise = void 0));
          }
          return s;
        }
        SendNotification(e, t, r, a) {
          return this.Send(e, t, r, a), !0;
        }
        Send(e, t, r, a) {
          const n = this.CreateWebAPIURL(t),
            i = r.SerializeBody(),
            o = s.fromByteArray(i),
            l = a.eWebAPIKeyRequirement,
            c = 0 == a.ePrivilege && 1 == l,
            m = {},
            d = new URLSearchParams();
          e.bSendAuth ||
            1 == l ||
            console.error(
              `Attempting to invoke service ${t} without auth, but auth is required.`,
            ),
            this.m_webApiAccessToken &&
              e.bSendAuth &&
              !c &&
              (d.append("access_token", this.m_webApiAccessToken),
              this.m_strSpoofedSteamID &&
                d.append("spoof_steamid", this.m_strSpoofedSteamID));
          if (a.bConstMethod)
            return (
              d.append("origin", self.origin),
              this.m_bJsonMode
                ? d.append("input_json", JSON.stringify(r.Body().toObject()))
                : d.append("input_protobuf_encoded", o),
              fetch(`${n}?${d.toString()}`, m)
            );
          {
            const e = new FormData();
            return (
              this.m_bJsonMode
                ? e.append("input_json", JSON.stringify(r.Body().toObject()))
                : e.append("input_protobuf_encoded", o),
              fetch(`${n}?${d.toString()}`, { ...m, method: "POST", body: e })
            );
          }
        }
        CreateWebAPIURL(e) {
          const t = e.match(/([^\.]+)\.(.+)#(\d+)/);
          if (!t || 4 != t.length) throw `Invalid service name: ${e}`;
          return `${this.m_strWebAPIBaseURL}I${t[1]}Service/${t[2]}/v${t[3]}`;
        }
        CreateFailedMsgProtobuf(e, t, r) {
          const n = a.w.Init(e);
          return (
            n.Hdr().set_eresult(2),
            n.Hdr().set_transport_error(t),
            r && n.Hdr().set_error_message(r),
            n
          );
        }
      }
      var _ = r(8527);
      var h = r(20194),
        g = r(44736),
        y = r(14771);
      function S(e, t, r) {
        return (0, h.I)({
          queryKey: f(t, r),
          queryFn: async () => {
            const t = a.w.Init(n.Vj);
            t.Body().set_clan_event_gid(r);
            const i = await n.ZK.GetAvailability(e, t);
            return i.BSuccess()
              ? i
                  .Body()
                  .availability()
                  .map((e) => e.toObject())
              : [];
          },
          enabled: (0, g.H7)() == t,
          staleTime: 10 * y.Kp.PerMinute,
        });
      }
      const f = (e, t) => ["useMeetSteamGetAvailability", e, t];
      function b(e, t, r, n) {
        return (0, h.I)({
          queryKey: w(t, r),
          queryFn: async () => {
            const e = a.w.Init(i.V4);
            e.Body().set_type(6),
              e.Body().set_steamid(n.ConvertTo64BitString()),
              e.Body().set_gid(r);
            const t = (function () {
                const e = window;
                e.g_wapitRefreshEnabled = !1;
                const t = "function" == typeof e.g_wapitRefresh;
                let r;
                return (
                  !_.TS.IN_CLIENT &&
                    t &&
                    (r = () =>
                      new Promise((t, r) => {
                        e.g_wapitRefresh((e) => {
                          t(e);
                        }),
                          window.setTimeout(() => r("Refresh Timeout"), 1e4);
                      })),
                  new p(_.TS.WEBAPI_BASE_URL, e.g_wapit, !1, r)
                );
              })(),
              s = await i.Nl.GetUserActionData(t.GetServiceTransport(), e);
            return s.BSuccess() && s.Body().jsondata()
              ? JSON.parse(s.Body().jsondata())
              : {};
          },
          enabled: (0, g.H7)() == t,
        });
      }
      const w = (e, t) => ["useMeetSteamGetRegistrationDetails", e, t];
    },
    81477: (e, t, r) => {
      "use strict";
      r.d(t, { E: () => a, V: () => c });
      var a,
        n = r(41735),
        i = r.n(n),
        s = r(78327),
        o = r(6144),
        l = r(46910);
      !(function (e) {
        (e[(e.k_eDiscussions = 0)] = "k_eDiscussions"),
          (e[(e.k_eThumbsUp = 1)] = "k_eThumbsUp"),
          (e[(e.k_eClickThrough = 2)] = "k_eClickThrough"),
          (e[(e.k_eMuted = 3)] = "k_eMuted"),
          (e[(e.k_ePlayedVideo = 4)] = "k_ePlayedVideo"),
          (e[(e.k_eReminder_Opened = 5)] = "k_eReminder_Opened"),
          (e[(e.k_eReminder_MobilePush = 6)] = "k_eReminder_MobilePush"),
          (e[(e.k_eReminder_Email = 7)] = "k_eReminder_Email"),
          (e[(e.k_eReminder_CalendarApple = 8)] = "k_eReminder_CalendarApple"),
          (e[(e.k_eReminder_CalendarGoogle = 9)] =
            "k_eReminder_CalendarGoogle"),
          (e[(e.k_eReminder_CalendarOutlook = 10)] =
            "k_eReminder_CalendarOutlook"),
          (e[(e.k_eReminder_EmailUnverified = 11)] =
            "k_eReminder_EmailUnverified"),
          (e[(e.k_eReminder_MobilePushMissing = 12)] =
            "k_eReminder_MobilePushMissing");
      })(a || (a = {}));
      const c = new (class {
        m_nPastViewedIndex = 0;
        m_nPastViewedDays = 0;
        m_nFutureViewedIndex = 0;
        m_nFutureViewableEvents = 0;
        m_nLastRecordedFilter = 0;
        m_sBrowserID = void 0;
        m_scheduledFilterChange = new o.LU();
        m_scheduledFutureStats = new o.LU();
        m_scheduledPastStats = new o.LU();
        RecordViewedEvent(e, t) {
          const r = e.GetStoreInitializationTimestamp().getTime() / 1e3;
          this.m_nFutureViewableEvents = 0;
          let a,
            n = 0,
            i = null;
          const s = e.GetCurrentlyLoadedItemsForStats();
          for (const e of s) {
            const s = e.start_time > r;
            if ((e.unique_id == t && ((a = n), (i = e)), s))
              this.m_nFutureViewableEvents++;
            else if (void 0 !== a) break;
            n++;
          }
          if (void 0 !== a)
            if (a < this.m_nFutureViewableEvents) {
              const t = this.m_nFutureViewableEvents - a;
              if (this.m_nFutureViewedIndex < t) {
                this.m_nFutureViewedIndex = t;
                const r = () => {
                    const t =
                      Math.min(this.m_nFutureViewedIndex, 4095) |
                      (Math.min(this.m_nFutureViewableEvents, 255) << 12) |
                      (Math.min(this.GetTimeSpentOnPageS(e), 2047) << 20);
                    c.SendExperimentEventToSteam(18, t);
                  },
                  a = 500;
                this.m_scheduledFutureStats.Schedule(a, r);
              }
            } else {
              const t = a - this.m_nFutureViewableEvents;
              if (this.m_nPastViewedIndex < t) {
                (this.m_nPastViewedIndex = t),
                  (this.m_nPastViewedDays = Math.floor(
                    (r - i.start_time) / 86400,
                  ));
                const a = () => {
                    const t =
                      Math.min(this.m_nPastViewedIndex, 4095) |
                      (Math.min(this.m_nPastViewedDays, 255) << 12) |
                      (Math.min(this.GetTimeSpentOnPageS(e), 2047) << 20);
                    c.SendExperimentEventToSteam(17, t);
                  },
                  n = 500;
                this.m_scheduledPastStats.Schedule(n, a);
              }
            }
        }
        RecordFilterChangeEvent(e) {
          this.m_scheduledFilterChange.Schedule(1e3, () => {
            let t = 0;
            e.BIsGameSourceAllowed(l.FD.k_ELibrary) && (t |= 1),
              e.BIsGameSourceAllowed(l.FD.k_EWishlist) && (t |= 2),
              e.BIsGameSourceAllowed(l.FD.k_EFollowing) && (t |= 4),
              e.BIsGameSourceAllowed(l.FD.k_ERecommended) && (t |= 8),
              e.BIsGameSourceAllowed(l.FD.k_ESteam) && (t |= 16),
              e.BIsGameSourceAllowed(l.FD.k_EFeatured) && (t |= 32),
              e.BIsGameSourceAllowed(l.FD.k_ERecent) && (t |= 64),
              e.BIsEventTypeGroupAllowed(l.xj.k_ENews) && (t |= 1024),
              e.BIsEventTypeGroupAllowed(l.xj.k_EEvents) && (t |= 2048),
              e.BIsEventTypeGroupAllowed(l.xj.k_EStreaming) && (t |= 4096),
              e.BIsEventTypeGroupAllowed(l.xj.k_EUpdates) && (t |= 8192),
              e.BIsEventTypeGroupAllowed(l.xj.k_EReleases) && (t |= 16384),
              e.BIsEventTypeGroupAllowed(l.xj.k_ESales) && (t |= 32768),
              t != this.m_nLastRecordedFilter &&
                ((this.m_nLastRecordedFilter = t),
                this.SendExperimentEventToSteam(16, t));
          });
        }
        GetTimeSpentOnPageS(e) {
          const t = e.GetStoreInitializationTimestamp(),
            r = new Date();
          return Math.max(0, Math.floor((r.getTime() - t.getTime()) / 1e3));
        }
        RecordAppInteractionEvent(e, t) {
          this.SendExperimentEventToSteam(19, t);
        }
        SendExperimentEventToSteam(e, t) {
          this.InitBrowserID();
          const r = s.TS.STORE_BASE_URL + "events/ajaxreportnewshubstats/",
            a = new URLSearchParams();
          a.append("page_action", "" + e),
            a.append("snr", s.TS.SNR),
            a.append("uint_data", "" + t),
            a.append("str_data", this.m_sBrowserID),
            i().post(r, a);
        }
        InitBrowserID() {
          if (void 0 === this.m_sBrowserID)
            if (s.TS.IN_CLIENT) this.m_sBrowserID = "steam";
            else {
              const e = navigator.userAgent;
              /iPhone|iPad|iPod/i.test(e) ||
              (/Macintosh/i.test(e) && /Safari/i.test(e))
                ? (this.m_sBrowserID = "ios")
                : /Android/i.test(e)
                  ? (this.m_sBrowserID = "android")
                  : (this.m_sBrowserID = "");
            }
        }
      })();
      window.g_EventCalendarTrackingStore = c;
    },
    46910: (e, t, r) => {
      "use strict";
      r.d(t, { FD: () => a, vJ: () => S, xj: () => _ });
      var a,
        n = r(34629),
        i = r(14947),
        s = r(47822),
        o = r(44332),
        l = r(78327),
        c = r(81477),
        m = r(44165);
      !(function (e) {
        (e.k_ERecent = "recent"),
          (e.k_ELibrary = "library"),
          (e.k_EWishlist = "wishlist"),
          (e.k_EFollowing = "following"),
          (e.k_ERecommended = "recommended"),
          (e.k_ESteam = "steam"),
          (e.k_EFeatured = "featured"),
          (e.k_ECurator = "curator");
      })(a || (a = {}));
      const d = [
          a.k_ELibrary,
          a.k_EWishlist,
          a.k_EFollowing,
          a.k_ERecommended,
          a.k_ESteam,
          a.k_ECurator,
        ],
        u = [...d, a.k_EFeatured],
        p = [a.k_EFeatured];
      var _;
      !(function (e) {
        (e.k_ENews = "news"),
          (e.k_EEvents = "events"),
          (e.k_EStreaming = "streaming"),
          (e.k_EUpdates = "updates"),
          (e.k_EReleases = "releases"),
          (e.k_ESales = "sales");
      })(_ || (_ = {}));
      const h = [
          _.k_ENews,
          _.k_EEvents,
          _.k_EStreaming,
          _.k_EUpdates,
          _.k_EReleases,
          _.k_ESales,
        ],
        g = new Map([
          [_.k_ENews, [28]],
          [_.k_EEvents, [9, 27, 22, 23, 24, 35, 25, 26]],
          [_.k_EStreaming, [11]],
          [_.k_EUpdates, [12, 13, 14]],
          [_.k_EReleases, [10, 29, 16, 15, 32]],
          [_.k_ESales, [20, 21, 31, 34]],
        ]);
      function y(e) {
        return new Map(e.map((e) => [e, !0]));
      }
      class S {
        m_mapEventTypeGroupsAllowed = new Map();
        m_mapGameSources = new Map();
        m_bCuratorUnhideOnFollowDialogDismissed = !1;
        m_mapHiddenApps = new Map();
        m_mapHiddenClans = new Map();
        m_bInitializedForUpdatesOnly;
        m_eStorageType = "session";
        m_strStorageKey;
        constructor(e) {
          (0, i.Gn)(this),
            (0, i.h5)(() => {
              e?.rgHiddenApps &&
                e.rgHiddenApps.forEach((e) => this.m_mapHiddenApps.set(e, !0)),
                e?.rgHiddenClans &&
                  e.rgHiddenClans.forEach((e) =>
                    this.m_mapHiddenClans.set(e, !0),
                  );
            });
        }
        GetGameSources() {
          return Array.from(this.m_mapGameSources.keys());
        }
        GetStorageObject() {
          return this.m_strStorageKey
            ? "session" === this.m_eStorageType
              ? window.sessionStorage
              : window.localStorage
            : null;
        }
        GetPreferencesStorageKey() {
          return `${this.m_strStorageKey}-event-calendar-prefs`;
        }
        get enabledEventTypeSet() {
          const e = new Set();
          for (const t of Array.from(this.m_mapEventTypeGroupsAllowed.keys()))
            g.get(t).forEach((t) => e.add(t));
          return e;
        }
        MapClanEventTypeToGroup(e) {
          let t = null;
          return (
            g.forEach((r, a) => {
              -1 !== r.indexOf(e) && (t = a);
            }),
            t || _.k_EEvents
          );
        }
        InitDefaultCheckboxes(e, t, r) {
          (this.m_bInitializedForUpdatesOnly = t),
            (this.m_mapEventTypeGroupsAllowed = y(t ? [_.k_EUpdates] : h));
          const n = (0, l.Y2)() ? u : d;
          (this.m_mapGameSources = y(e ? n : p)),
            r && this.m_mapGameSources.set(a.k_EFeatured, !0);
        }
        Init(e, t, r, a, n) {
          (this.m_eStorageType = n), (this.m_strStorageKey = a);
          const i = this.GetStorageObject(),
            s = i ? i.getItem(this.GetPreferencesStorageKey()) : null;
          if (s) {
            const e = JSON.parse(s);
            if (e.rgEventTypeGroupsAllowed && e.rgGameSources) {
              const { rgEventTypeGroupsAllowed: t, rgGameSources: r } = e;
              return (
                (this.m_mapEventTypeGroupsAllowed = y(t)),
                (this.m_mapGameSources = y(r)),
                void (
                  void 0 !== e.bCuratorUnhideOnFollowDismissed &&
                  (this.m_bCuratorUnhideOnFollowDialogDismissed =
                    e.bCuratorUnhideOnFollowDismissed)
                )
              );
            }
          }
          this.InitDefaultCheckboxes(e, t, r);
        }
        SaveFilterPreferences() {
          const e = this.GetStorageObject();
          if (!e) return;
          const t = {
            rgEventTypeGroupsAllowed: Array.from(
              this.m_mapEventTypeGroupsAllowed.keys(),
            ),
            rgGameSources: Array.from(this.m_mapGameSources.keys()),
            bCuratorUnhideOnFollowDismissed:
              this.m_bCuratorUnhideOnFollowDialogDismissed,
          };
          e.setItem(this.GetPreferencesStorageKey(), JSON.stringify(t));
        }
        BCuratorUnhideOnFollowDialogDismissed() {
          return this.m_bCuratorUnhideOnFollowDialogDismissed;
        }
        SetCuratorUnhideOnFollowDialogDismissed(e) {
          (this.m_bCuratorUnhideOnFollowDialogDismissed = e),
            this.SaveFilterPreferences();
        }
        BIsEventTypeGroupAllowed(e) {
          return this.m_mapEventTypeGroupsAllowed.has(e);
        }
        BIsGameSourceAllowed(e) {
          return (
            !(e === a.k_EFollowing && !m.HD.bIsFollowingEnabled) &&
            !(e === a.k_ECurator && !m.HD.bIsCuratorsEnabled) &&
            this.m_mapGameSources.has(e)
          );
        }
        SetEventTypeGroupAllowed(e, t) {
          t
            ? this.m_mapEventTypeGroupsAllowed.set(e, !0)
            : this.m_mapEventTypeGroupsAllowed.delete(e),
            this.SaveFilterPreferences(),
            c.V.RecordFilterChangeEvent(this);
        }
        SetGameSourceAllowed(e, t) {
          t
            ? (this.m_mapGameSources.set(e, !0),
              e == a.k_ERecent
                ? this.m_mapGameSources.delete(a.k_ELibrary)
                : e == a.k_ELibrary &&
                  ((0, o.w)(
                    !this.m_mapGameSources.has(a.k_ERecent),
                    "Setting Library although Recent already set - illusion was broken",
                  ),
                  this.m_mapGameSources.delete(a.k_ERecent)))
            : (this.m_mapGameSources.delete(e),
              e == a.k_ERecent
                ? this.m_mapGameSources.set(a.k_ELibrary, !0)
                : e == a.k_ELibrary &&
                  this.m_mapGameSources.delete(a.k_ERecent)),
            this.SaveFilterPreferences(),
            c.V.RecordFilterChangeEvent(this);
        }
        BShouldDisplayEvent(e) {
          const t = e.GetSource(),
            r = Boolean(
              e.appInfo &&
                e.appInfo.last_played &&
                e.appInfo.last_played + 15552e3 >=
                  m.HD.GetTimeNowWithOverride(),
            );
          return (
            !!(
              this.enabledEventTypeSet.has(e.event_type) ||
              (this.m_bInitializedForUpdatesOnly &&
                this.BIsEventTypeGroupAllowed(_.k_EUpdates) &&
                28 == e.event_type &&
                e.start_time < 1599202800)
            ) &&
            !this.m_mapHiddenApps.has(e.appid) &&
              !this.m_mapHiddenClans.has(e.clanid) &&
            (!!(t & s.bK.k_eRequired || t & s.bK.k_eReposted) ||
              Boolean(
                (this.BIsGameSourceAllowed(a.k_ERecent) && r) ||
                  (this.BIsGameSourceAllowed(a.k_ELibrary) &&
                    t & s.bK.k_eLibrary) ||
                  (this.BIsGameSourceAllowed(a.k_EWishlist) &&
                    t & s.bK.k_eWishlist) ||
                  (this.BIsGameSourceAllowed(a.k_EFollowing) &&
                    t & s.bK.k_eFollowing) ||
                  (this.BIsGameSourceAllowed(a.k_ERecommended) &&
                    t & s.bK.k_eRecommended) ||
                  (this.BIsGameSourceAllowed(a.k_ESteam) &&
                    t & s.bK.k_eSteam) ||
                  (this.BIsGameSourceAllowed(a.k_EFeatured) &&
                    t & s.bK.k_eFeatured) ||
                  (this.BIsGameSourceAllowed(a.k_ECurator) &&
                    t & s.bK.k_eCurator),
              ))
          );
        }
        BAreAllEventsHidden() {
          return (
            0 == this.m_mapEventTypeGroupsAllowed.size ||
            0 == this.m_mapGameSources.size
          );
        }
        BAreAnyEventsFiltered(e) {
          const t = (0, l.Y2)() ? u : d;
          return (
            (e ? t : p).some((e) => !this.BIsGameSourceAllowed(e)) ||
            h.some((e) => !this.BIsEventTypeGroupAllowed(e))
          );
        }
        BIsClanVisible(e) {
          return !this.m_mapHiddenClans.has(e);
        }
        SetClanVisibility(e, t) {
          t
            ? this.m_mapHiddenClans.has(e) && this.m_mapHiddenClans.delete(e)
            : this.m_mapHiddenClans.has(e) || this.m_mapHiddenClans.set(e, !0);
        }
        BIsAppVisible(e) {
          return !this.m_mapHiddenApps.has(e);
        }
        SetAppVisibility(e, t) {
          t
            ? this.m_mapHiddenApps.has(e) && this.m_mapHiddenApps.delete(e)
            : this.m_mapHiddenApps.has(e) || this.m_mapHiddenApps.set(e, !0);
        }
      }
      (0, n.Cg)([i.sH], S.prototype, "m_mapEventTypeGroupsAllowed", void 0),
        (0, n.Cg)([i.sH], S.prototype, "m_mapGameSources", void 0),
        (0, n.Cg)(
          [i.sH],
          S.prototype,
          "m_bCuratorUnhideOnFollowDialogDismissed",
          void 0,
        ),
        (0, n.Cg)([i.sH], S.prototype, "m_mapHiddenApps", void 0),
        (0, n.Cg)([i.sH], S.prototype, "m_mapHiddenClans", void 0),
        (0, n.Cg)(
          [(0, i.EW)({ keepAlive: !0, equals: i.m3.structural })],
          S.prototype,
          "enabledEventTypeSet",
          null,
        ),
        (0, n.Cg)([i.XI], S.prototype, "SetEventTypeGroupAllowed", null),
        (0, n.Cg)([i.XI], S.prototype, "SetGameSourceAllowed", null);
    },
    60746: (e, t, r) => {
      "use strict";
      r.d(t, { KN: () => b, Nh: () => _, Ec: () => w });
      var a = r(34629),
        n = r(41735),
        i = r.n(n),
        s = r(14947),
        o = r(56545),
        l = r(37403),
        c = r(6144),
        m = r(6419),
        d = r(78327),
        u = r(68797);
      class p {
        m_CMInterface;
        m_setShownEvents = new Set();
        m_setReadEvents = new Set();
        m_rgPendingUpload = [];
        m_schUpload = new c.LU();
        m_bUploading = !1;
        constructor(e) {
          this.m_CMInterface = e;
        }
        MarkEventShown(e, t, r) {
          let a = this.MakeKey(e, r);
          if (this.m_setShownEvents.has(a)) return !1;
          this.m_setShownEvents.add(a);
          let n = new l.kZ();
          return (
            n.set_event_gid(e),
            n.set_clanid(t),
            n.set_display_location(r),
            n.set_mark_shown(!0),
            this.QueueForUpload(n),
            !0
          );
        }
        MarkEventRead(e, t, r) {
          let a = this.MakeKey(e, r);
          if (this.m_setReadEvents.has(a)) return !1;
          this.m_setReadEvents.add(a);
          let n = new l.kZ();
          return (
            n.set_event_gid(e),
            n.set_clanid(t),
            n.set_display_location(r),
            n.set_mark_read(!0),
            this.QueueForUpload(n),
            !0
          );
        }
        MakeKey(e, t) {
          return `${e}_${t}`;
        }
        QueueForUpload(e) {
          this.m_rgPendingUpload.push(e), this.ScheduleUpload();
        }
        ScheduleUpload() {
          this.m_bUploading ||
            (this.m_rgPendingUpload.length >= 30
              ? this.UploadPendingData()
              : this.m_schUpload.IsScheduled() ||
                this.m_schUpload.Schedule(6e4, this.UploadPendingData));
        }
        async Flush() {
          if (!this.m_bUploading) return this.UploadPendingData();
        }
        async UploadPendingData() {
          if (this.m_bUploading) return;
          this.m_schUpload.Cancel();
          let e = this.m_rgPendingUpload.splice(0, 30);
          if (0 == e.length) return;
          let t = !1;
          if (this.m_CMInterface) {
            let r = o.w.Init(l.wS);
            for (let t of e) r.Body().add_markings(t);
            this.m_bUploading = !0;
            let a = await l.BE.MarkPartnerEventsForUser(
              this.m_CMInterface.GetServiceTransport(),
              r,
            );
            (this.m_bUploading = !1), (t = 1 == a.GetEResult());
          } else {
            if (!d.iA.logged_in) return;
            let r = e.map((e) => e.toObject()),
              a = (0, d.xv)() + "actions/ajaxmarkpartnerevents";
            const n = new FormData();
            n.append("sessionid", d.TS.SESSIONID),
              n.append("request", JSON.stringify(r));
            try {
              t =
                1 ==
                (await i().post(a, n, { withCredentials: !0 })).data.success;
            } catch (e) {
              let t = (0, u.H)(e);
              console.error(
                "CPartnerEventUserTracking.UploadPendingData error " +
                  t.strErrorMsg,
                t,
              );
            }
          }
          t
            ? this.m_rgPendingUpload.length > 0 && this.ScheduleUpload()
            : (console.log(
                "Saving news event state failed. Will try again soon!",
              ),
              (this.m_rgPendingUpload = this.m_rgPendingUpload.concat(e)),
              this.m_schUpload.Schedule(6e4, this.UploadPendingData));
        }
      }
      (0, a.Cg)([m.o], p.prototype, "UploadPendingData", null);
      var _,
        h = r(17720),
        g = r(44332),
        y = r(90626),
        S = r(44736);
      class f {
        clanid = void 0;
        appid = 0;
        can_edit = !1;
        owns_app = !1;
        follows_app = !1;
        support_user = !1;
        valve_admin = !1;
        limited_user = !1;
        event_ignored = new Array();
        event_followed = new Array();
        event_followed_flags = new Array();
        constructor(e) {
          (0, s.Gn)(this), (this.clanid = e);
        }
      }
      (0, a.Cg)([s.sH], f.prototype, "clanid", void 0),
        (0, a.Cg)([s.sH], f.prototype, "appid", void 0),
        (0, a.Cg)([s.sH], f.prototype, "can_edit", void 0),
        (0, a.Cg)([s.sH], f.prototype, "owns_app", void 0),
        (0, a.Cg)([s.sH], f.prototype, "follows_app", void 0),
        (0, a.Cg)([s.sH], f.prototype, "support_user", void 0),
        (0, a.Cg)([s.sH], f.prototype, "valve_admin", void 0),
        (0, a.Cg)([s.sH], f.prototype, "limited_user", void 0),
        (0, a.Cg)([s.sH], f.prototype, "event_ignored", void 0),
        (0, a.Cg)([s.sH], f.prototype, "event_followed", void 0),
        (0, a.Cg)([s.sH], f.prototype, "event_followed_flags", void 0),
        (function (e) {
          (e[(e.k_ENotifyFlagNone = 0)] = "k_ENotifyFlagNone"),
            (e[(e.k_ENotifyFlagByEmail = 1)] = "k_ENotifyFlagByEmail"),
            (e[(e.k_ENotifyFlagByPush = 2)] = "k_ENotifyFlagByPush");
        })(_ || (_ = {}));
      class b {
        constructor() {
          (0, s.Gn)(this);
        }
        m_mapClanToUserPermissions = new Map();
        m_mapAnnounceGIDToVote = new Map();
        m_setReadEventGIDs = new Set();
        m_tracker;
        m_cm = void 0;
        static s_EventUserStore;
        m_bIsPresentationMode = (0, d.Bu)();
        static Get() {
          return (
            (0, g.w)(
              !!b.s_EventUserStore,
              "Have not yet initialized global EventUserStore",
            ),
            b.s_EventUserStore
          );
        }
        static IsInitialized() {
          return !!b.s_EventUserStore;
        }
        static async InitGlobal(e) {
          if (!b.s_EventUserStore) {
            const t = new b();
            await t.Init(e),
              (b.s_EventUserStore = t),
              "dev" == d.TS.WEB_UNIVERSE && (window.g_EventUserStore = t);
          }
        }
        async Init(e) {
          (this.m_cm = e), (this.m_tracker = new p(e));
          const t = (0, d.Fd)("partnereventpermissions", "application_config");
          this.ValidateStoreDefault(t) &&
            ((0, s.h5)(() => {
              t.forEach((e) => {
                let t = new f(e.clanid),
                  r = { result: t, promise: b.RemapToPromise(t) };
                this.CopyFromResponseToTrack(r, e),
                  this.m_mapClanToUserPermissions.set(e.clanid, r);
              });
            }),
            ("dev" != d.TS.WEB_UNIVERSE && "beta" != d.TS.WEB_UNIVERSE) ||
              console.log(
                "CEventUserStore has loaded",
                this.m_mapClanToUserPermissions.size,
                this.m_mapClanToUserPermissions,
              ));
          let r = (0, d.Fd)("uservotes", "application_config");
          r &&
            (0, s.h5)(() => {
              r.forEach((e) => {
                let t = !!e.voted_up || (!e.voted_down && void 0);
                this.m_mapAnnounceGIDToVote.set(e.clanAnnouncementGID, t);
              });
            });
        }
        GetTracker() {
          return this.m_tracker;
        }
        ValidateStoreDefault(e) {
          const t = e;
          return (
            !!(
              t &&
              Array.isArray(t) &&
              t.length > 0 &&
              "object" == typeof t[0]
            ) &&
            "number" == typeof t[0].clanid &&
            "number" == typeof t[0].appid
          );
        }
        RecordEventShown(e, t) {
          e &&
            !e.bOldAnnouncement &&
            this.m_tracker.MarkEventShown(
              e.GID,
              e.clanSteamID.GetAccountID(),
              t,
            );
        }
        RecordEventRead(e, t) {
          e &&
            !e.bOldAnnouncement &&
            (this.HasEventBeenRead(e.GID) ||
              (this.SetEventAsRead(e.GID),
              this.m_tracker.MarkEventRead(
                e.GID,
                e.clanSteamID.GetAccountID(),
                t,
              )));
        }
        SetEventAsRead(e) {
          this.m_setReadEventGIDs.add(e);
        }
        HasEventBeenRead(e) {
          return this.m_setReadEventGIDs.has(e);
        }
        static async RemapToPromise(e) {
          return e;
        }
        BIsUserLoggedIn() {
          return d.iA.logged_in;
        }
        BIsPartnerEventPermissionsLoaded(e) {
          return this.m_mapClanToUserPermissions.has(e);
        }
        GetPartnerEventPermissions(e) {
          if (!e || !e.BIsValid()) return new f(0);
          const t = e.GetAccountID();
          this.m_mapClanToUserPermissions.has(t) ||
            this.LoadSingleAppEventPermissions(e);
          return this.m_mapClanToUserPermissions.get(t).result;
        }
        BFollowsEvent(e, t) {
          return (
            -1 != this.GetPartnerEventPermissions(e).event_followed.indexOf(t)
          );
        }
        BFollowsEventAndNotifiedBy(e, t, r) {
          let a = this.GetPartnerEventPermissions(e),
            n = a.event_followed.indexOf(t);
          return -1 !== n && (a.event_followed_flags[n] & r) == r;
        }
        BIgnoresEvent(e, t) {
          return (
            -1 != this.GetPartnerEventPermissions(e).event_ignored.indexOf(t)
          );
        }
        async LoadSingleAppEventPermissions(e) {
          let t = e.GetAccountID(),
            r = this.m_mapClanToUserPermissions.get(t);
          return (
            r ||
              ((r = {
                promise: this.InternalLoadSingleAppEventPermissions(e),
                result: new f(t),
              }),
              this.m_mapClanToUserPermissions.set(t, r)),
            r.promise
          );
        }
        CopyFromResponseToTrack(e, t) {
          (e.result.appid = t.appid),
            (e.result.can_edit = t.can_edit),
            (e.result.clanid = t.appid),
            (e.result.event_followed = t.event_followed),
            (e.result.event_ignored = t.event_ignored),
            (e.result.event_followed_flags = t.event_followed_flags),
            (e.result.follows_app = t.follows_app),
            (e.result.owns_app = t.owns_app),
            (e.result.limited_user = t.limited_user),
            (t.support_user || t.valve_admin) && this.m_bIsPresentationMode
              ? ((e.result.can_edit = !0),
                (e.result.support_user = !1),
                (e.result.valve_admin = !1))
              : ((e.result.support_user = t.support_user),
                (e.result.valve_admin = t.valve_admin));
        }
        async InternalLoadSingleAppEventPermissions(e) {
          let t = null,
            r = e.GetAccountID(),
            a = !Boolean(d.iA.logged_in);
          if (!this.m_mapClanToUserPermissions.has(r)) {
            let t = new f(e.GetAccountID());
            this.m_mapClanToUserPermissions.set(r, {
              result: t,
              promise: b.RemapToPromise(t),
            });
          }
          try {
            if (Boolean(d.iA.logged_in)) {
              let n =
                  d.TS.COMMUNITY_BASE_URL +
                  "gid/" +
                  e.ConvertTo64BitString() +
                  "/ajaxgetpartnereventpermissions/",
                s = {};
              if (
                ("partnerweb" == (0, d.yK)()
                  ? ((n =
                      d.TS.PARTNER_BASE_URL +
                      "partnerevents/ajaxgetpartnereventpermissions"),
                    (s = { clanaccountid: e.GetAccountID() }))
                  : "store" == (0, d.yK)() &&
                    ((n =
                      d.TS.STORE_BASE_URL +
                      "events/ajaxgetpartnereventpermissions"),
                    (s = { clanaccountid: e.GetAccountID() })),
                (t = await i().get(n, { params: s, withCredentials: !0 })),
                1 != t.data.success)
              )
                console.error(
                  "Partner Events Failed Load:" + (0, u.H)(t.data).strErrorMsg,
                ),
                  (a = !0);
              else {
                let e = this.m_mapClanToUserPermissions.get(r);
                this.CopyFromResponseToTrack(e, t.data);
              }
            }
          } catch (e) {
            if (
              ((t = e.response),
              (a = !0),
              e &&
                void 0 !== e.response &&
                void 0 !== e.response.data &&
                void 0 !== e.response.data.success &&
                21 == e.response.data.success)
            );
            else {
              const t = (0, u.H)(e);
              console.error(
                "InternalLoadSingleAppEventPermissions account: " +
                  r +
                  ": " +
                  t.strErrorMsg,
                t,
              );
            }
          } finally {
            a &&
              (0, s.h5)(() => {
                let e = this.m_mapClanToUserPermissions.get(r);
                (e.result.appid = t && t.data ? t.data.appid : 0),
                  (e.result.can_edit = !1),
                  (e.result.clanid = t && t.data ? t.data.clanid : 0),
                  (e.result.event_followed = new Array()),
                  (e.result.event_ignored = new Array()),
                  (e.result.event_followed_flags = new Array()),
                  (e.result.follows_app = !1),
                  (e.result.owns_app = !1),
                  (e.result.support_user = !1),
                  (e.result.valve_admin = !1),
                  (e.result.limited_user = !1);
              });
          }
          return this.m_mapClanToUserPermissions.get(r).result;
        }
        async SetFollowOrUnfollowEvent(e, t, r, a, n) {
          let o = this.GetPartnerEventPermissions(r),
            l = o.event_followed.indexOf(a),
            c = 0;
          -1 !== l &&
            ((c = o.event_followed_flags[l]), e ? (n = c & ~n) : (n |= c));
          let m = 0 == n,
            u =
              ("store" === (0, d.yK)()
                ? d.TS.STORE_BASE_URL + "events"
                : d.TS.COMMUNITY_BASE_URL +
                  "/gid/" +
                  r.ConvertTo64BitString()) +
              (m ? "/unfolloworunignoreevent" : "/followorignoreevent"),
            p = new URLSearchParams();
          p.append("sessionid", d.TS.SESSIONID),
            p.append("ignore", "" + t),
            p.append("gid", a),
            p.append("notification_flag", "" + n),
            p.append("clan_accountid", "" + r.GetAccountID());
          await i().post(u, p, { withCredentials: !0 });
          (0, s.h5)(() => {
            let e = this.m_mapClanToUserPermissions.get(r.GetAccountID()),
              i = null,
              s = null,
              o = null,
              l = null;
            m
              ? ((i = t ? e.result.event_ignored : e.result.event_followed),
                (o = t ? null : e.result.event_followed_flags))
              : t
                ? ((i = e.result.event_followed),
                  (o = e.result.event_followed_flags),
                  (s = e.result.event_ignored))
                : ((i = e.result.event_ignored),
                  (s = e.result.event_followed),
                  (l = e.result.event_followed_flags));
            let c = i.indexOf(a);
            if ((c > -1 && (i.splice(c, 1), o && o.splice(c, 1)), s)) {
              let e = s.indexOf(a);
              -1 == e ? (s.push(a), l && l.push(n)) : (l[e] = n);
            }
          });
        }
        async Vote(e, t, r) {
          if (!e || !e.AnnouncementGID) return !1;
          const a = this.m_mapAnnounceGIDToVote.get(e.AnnouncementGID);
          if (a === t) return !0;
          if (
            (this.m_mapAnnounceGIDToVote.set(e.AnnouncementGID, t),
            (0, s.h5)(() => {
              !0 === a && e.UpdateVoteCount("up", -1),
                !1 === a && e.UpdateVoteCount("down", -1),
                !0 === t && e.UpdateVoteCount("up", 1),
                !1 === t && e.UpdateVoteCount("down", 1);
            }),
            this.m_cm)
          ) {
            let r = o.w.Init(l.QU);
            return (
              r.Body().set_announcementid(e.AnnouncementGID),
              r.Body().set_vote_up(!!t),
              r.Body().set_clan_accountid(e.clanSteamID.GetAccountID()),
              1 ==
                (
                  await l.BE.RateClanAnnouncement(
                    this.m_cm.GetServiceTransport(),
                    r,
                  )
                ).GetEResult()
            );
          }
          {
            const a = (0, d.yK)(),
              n =
                "community" == a || "steamtv" == a
                  ? d.TS.COMMUNITY_BASE_URL +
                    "gid/" +
                    e.clanSteamID.ConvertTo64BitString() +
                    "/announcements/rate/" +
                    e.AnnouncementGID
                  : d.TS.STORE_BASE_URL +
                    "updated/ajaxrateupdate/" +
                    e.AnnouncementGID,
              s = new URLSearchParams();
            s.append("sessionid", d.TS.SESSIONID),
              s.append("voteup", t ? "1" : "0"),
              s.append("clanid", "" + e.clanSteamID.GetAccountID()),
              s.append("ajax", "1");
            const o = { withCredentials: !0, cancelToken: r.token };
            return 1 == (await i().post(n, s, o)).data.success;
          }
        }
        async LoadMyVote(e, t) {
          if (e?.AnnouncementGID) {
            if (this.m_mapAnnounceGIDToVote.has(e.AnnouncementGID))
              return this.m_mapAnnounceGIDToVote.get(e.AnnouncementGID);
            let r;
            if (this.m_cm) {
              let t = o.w.Init(l.$Y);
              t.Body().set_announcementid(e.AnnouncementGID);
              let a = await l.BE.GetClanAnnouncementVoteForUser(
                this.m_cm.GetServiceTransport(),
                t,
              );
              1 == a.GetEResult() &&
                (r =
                  !!a.Body().voted_up() || (!a.Body().voted_down() && void 0));
            } else {
              const a = "store" == (0, d.yK)(),
                n = a
                  ? d.TS.STORE_BASE_URL + "actions/ajaxgetmyannouncementvote"
                  : d.TS.COMMUNITY_BASE_URL +
                    "gid/" +
                    e.clanSteamID.ConvertTo64BitString() +
                    "/announcements/ajaxgetmyvote/" +
                    e.AnnouncementGID,
                s = { gid: a ? e.AnnouncementGID : void 0 },
                o = await i().get(n, {
                  withCredentials: !0,
                  cancelToken: t.token,
                  params: s,
                });
              r = !!o.data.voted_up || (!o.data.voted_down && void 0);
            }
            return this.m_mapAnnounceGIDToVote.set(e.AnnouncementGID, r), r;
          }
        }
        SetVote(e, t) {
          this.m_mapAnnounceGIDToVote.set(e, t);
        }
        BHasMyVote(e) {
          return (
            !!e.AnnouncementGID &&
            this.m_mapAnnounceGIDToVote.has(e.AnnouncementGID)
          );
        }
        GetPreviouslyLoadedVote(e) {
          return e.AnnouncementGID
            ? this.m_mapAnnounceGIDToVote.get(e.AnnouncementGID)
            : void 0;
        }
        BShowEmailEditorTab(e) {
          if (e.BHasEmailEnabled()) return !0;
          if (e.clanSteamID.GetAccountID() == (0, S.H7)()) return !0;
          let t = this.GetPartnerEventPermissions(e.clanSteamID);
          return (d.UF.IS_OGG || d.UF.IS_VALVE_GROUP) && t.valve_admin;
        }
        BShowSaleEditorTab(e) {
          if (e.BHasSaleEnabled()) return !0;
          if (e.clanSteamID.GetAccountID() == (0, S.H7)()) return !1;
          let t = this.GetPartnerEventPermissions(e.clanSteamID);
          return (
            !d.UF.IS_OGG &&
            (t.valve_admin ||
              (e.jsondata.clone_from_event_gid &&
                e.jsondata.clone_from_sale_enabled))
          );
        }
      }
      function w(e) {
        const [t, r] = (0, y.useState)(
            b.Get().BIsPartnerEventPermissionsLoaded(e),
          ),
          a = h.b.InitFromClanID(e),
          [n, i] = (0, y.useState)(b.Get().GetPartnerEventPermissions(a));
        return (
          (0, y.useEffect)(() => {
            if (!t) {
              const t = h.b.InitFromClanID(e);
              b.Get()
                .LoadSingleAppEventPermissions(t)
                .then((e) => {
                  i(e), r(!0);
                });
            }
          }, [t, e]),
          n
        );
      }
      (0, a.Cg)([s.sH], b.prototype, "m_mapClanToUserPermissions", void 0),
        (0, a.Cg)([s.sH], b.prototype, "m_mapAnnounceGIDToVote", void 0),
        (0, a.Cg)([s.sH], b.prototype, "m_setReadEventGIDs", void 0),
        (0, a.Cg)([s.XI], b.prototype, "CopyFromResponseToTrack", null);
    },
    20587: (e, t, r) => {
      "use strict";
      r.d(t, { ZQ: () => v, O3: () => I, dB: () => B, CO: () => C });
      var a = r(34629),
        n = r(41735),
        i = r.n(n),
        s = r(14947),
        o = r(31561),
        l = r(22837),
        c = r(77516),
        m = r(17720);
      var d = r(62490),
        u = r(44332),
        p = r(68797),
        _ = r(6144),
        h = r(61859),
        g = r(41338),
        y = r(78327),
        S = r(90626),
        f = r(73745);
      class b {
        appid;
        date;
        can_play;
        playtime;
        announcementid;
        constructor(e) {
          (0, u.w)(
            "number" == typeof e.appid,
            "AJAX updated app returned a non-numeric AppID! Did the PHP change?",
          ),
            (this.appid = e.appid),
            (this.date = e.date),
            (this.can_play = e.can_play),
            (this.playtime = e.playtime),
            (this.announcementid = e.announcementid);
        }
      }
      function w(e) {
        let t = "" + e;
        const r = h.A0.GetELanguageFallback(e);
        return e != r && (t += "_" + r), t;
      }
      class v {
        constructor() {
          (0, s.Gn)(this);
        }
        m_mapExistingEvents = new Map();
        m_mapEventUpdateCallback = new Map();
        m_mapAnnouncementBodyToEvent = new Map();
        m_mapClanToGIDs = new Map();
        m_mapAppIDToGIDs = new Map();
        m_mapAdjacentAnnouncementGIDs = new Map();
        m_mapUpdatedApps = new Map();
        m_tsUpdatedAppsQueryTime = 0;
        m_rgQueuedEventsClanIDs = new Array();
        m_rgQueuedEventsUniqueIDs = new Array();
        m_rgQueuedEventsForEditFlags = new Array();
        m_QueuedEventTimeout = new _.LU();
        m_PendingInfoPromise;
        m_PendingInfoResolve;
        m_bLoadedFromConfig = !1;
        Init() {
          if (!this.m_bLoadedFromConfig) {
            let t =
              ((e = "PartnerEventStore"),
              window.StoreDefaults ? window.StoreDefaults[e] : void 0);
            this.ValidateStoreDefault(t) &&
              t.forEach((e) => {
                if (e) {
                  let t = new m.b(e.clan_steamid);
                  const r = this.InsertEventModelFromClanEventData(t, e);
                  e.announcement_body &&
                    this.m_mapExistingEvents.set(
                      c.cB + e.announcement_body.gid,
                      r,
                    );
                }
              });
            let r = (0, y.Fd)("partnereventstore", "application_config");
            this.ValidateStoreDefault(r) &&
              r.forEach((e) => {
                if (e) {
                  let t = new m.b(e.clan_steamid);
                  const r = this.InsertEventModelFromClanEventData(t, e);
                  e.announcement_body &&
                    !this.m_mapExistingEvents.has(
                      c.cB + e.announcement_body.gid,
                    ) &&
                    this.m_mapExistingEvents.set(
                      c.cB + e.announcement_body.gid,
                      r,
                    );
                }
              });
            let a = (0, y.Fd)("partnereventadjacents", "application_config");
            this.ValidateAdjacentEvent(a) &&
              (("dev" != y.TS.WEB_UNIVERSE && "beta" != y.TS.WEB_UNIVERSE) ||
                console.log(
                  "DEV_DEBUG: CPartnerEventStore loading adjacents gids payload: " +
                    a.length,
                ),
              a.forEach((e) => {
                e &&
                  this.m_mapAdjacentAnnouncementGIDs.set(
                    e.announcementGID,
                    e.adjacents,
                  );
              })),
              "dev" == y.TS.WEB_UNIVERSE &&
                console.log(
                  "PartnerEventStore Loaded events: " +
                    this.m_mapExistingEvents.size +
                    " with adjacent info: " +
                    this.m_mapExistingEvents.size,
                ),
              (this.m_bLoadedFromConfig = !0);
          }
          var e;
        }
        ValidateStoreDefault(e) {
          const t = e;
          return (
            !!(
              t &&
              Array.isArray(t) &&
              t.length > 0 &&
              "object" == typeof t[0]
            ) &&
            ("string" == typeof t[0].gid ||
              ("object" == typeof t[0].announcement_body &&
                "string" == typeof t[0].announcement_body.gid))
          );
        }
        ValidateAdjacentEvent(e) {
          const t = e;
          return (
            !!(
              t &&
              Array.isArray(t) &&
              t.length > 0 &&
              "object" == typeof t[0]
            ) &&
            "string" == typeof t[0].announcementGID &&
              Array.isArray(t[0].adjacents) &&
            (0 == t[0].adjacents.length || "string" == typeof t[0].adjacents[0])
          );
        }
        GetPartnerEventChangeCallback(e) {
          return (
            this.m_mapEventUpdateCallback.has(e) ||
              this.m_mapEventUpdateCallback.set(e, new _.lu()),
            this.m_mapEventUpdateCallback.get(e)
          );
        }
        GetClanEventGIDs(e) {
          let t = this.m_mapClanToGIDs.get(e.GetAccountID());
          return t || [];
        }
        GetClanEventGIDsForApp(e) {
          let t = this.m_mapAppIDToGIDs.get(e);
          return t || [];
        }
        GetClanEventModel(e) {
          return this.m_mapExistingEvents.get(e);
        }
        BHasClanEventModel(e) {
          return this.m_mapExistingEvents.has(e);
        }
        BHasClanAnnouncementGID(e) {
          if (this.m_mapAnnouncementBodyToEvent.has(e)) {
            let t = this.m_mapAnnouncementBodyToEvent.get(e);
            return this.BHasClanEventModel(t);
          }
          return !1;
        }
        GetClanEventGIDFromAnnouncementGID(e) {
          return this.m_mapAnnouncementBodyToEvent.get(e);
        }
        GetClanEventFromAnnouncementGID(e) {
          return this.m_mapExistingEvents.get(
            this.m_mapAnnouncementBodyToEvent.get(e),
          );
        }
        DefaultEventSortFunction(e, t) {
          return e.startTime == t.startTime
            ? (0, g.kd)(e.GID, t.GID)
            : t.startTime - e.startTime;
        }
        RegisterClanEvents(e) {
          if (e)
            for (const t of e) {
              const e = this.GetEventLookupKey(t);
              if (!this.m_mapExistingEvents.has(e)) {
                const e = new m.b(t.clan_steamid);
                this.InsertEventModelFromClanEventData(e, t);
              }
            }
        }
        GetRankedClanEvents(e, t) {
          let r = [],
            a = e ? this.GetClanEventGIDs(e) : this.GetClanEventGIDsForApp(t);
          if (!a || 0 == a.length) return r;
          for (let e of a) {
            let t = this.GetClanEventModel(e);
            r.push(t);
          }
          return r.sort(this.DefaultEventSortFunction), r;
        }
        BIsOldAnnouncement(e) {
          return (
            (null == e.gid || null == e.gid || "0" == e.gid) &&
            e.announcement_body &&
            "0" != e.announcement_body.gid
          );
        }
        GetEventLookupKey(e) {
          return this.BIsOldAnnouncement(e)
            ? c.cB + e.announcement_body.gid
            : e.gid;
        }
        InsertEventModelFromClanEventData(e, t) {
          let r = new c.lh();
          if (
            ((r.clanSteamID = e),
            (0, u.w)(
              r.clanSteamID && r.clanSteamID.BIsValid(),
              "Invalid Clan SteamID: " +
                r.clanSteamID.ConvertTo64BitString() +
                " " +
                y.TS.EUNIVERSE,
            ),
            (r.GID = this.GetEventLookupKey(t)),
            (r.bOldAnnouncement = this.BIsOldAnnouncement(t)),
            (r.appid = t.appid),
            (r.startTime = t.rtime32_start_time),
            (r.endTime = t.rtime32_end_time),
            (r.visibilityStartTime = t.rtime32_visibility_start),
            (r.visibilityEndTime = t.rtime32_visibility_end),
            (r.loadedAllLanguages = !1),
            (r.type = t.event_type),
            (r.nVotesUp = t.votes_up),
            (r.nVotesDown = t.votes_down),
            (r.comment_type = t.comment_type),
            (r.gidfeature = t.gidfeature),
            (r.gidfeature2 = t.gidfeature2),
            (r.featured_app_tagid = t.featured_app_tagid),
            (r.vecTags = new Array()),
            (r.creator_steamid = t.creator_steamid),
            (r.last_update_steamid = t.last_update_steamid),
            (r.rtime32_last_modified = t.rtime32_last_modified),
            (r.rtime32_moderator_reviewed = t.rtime_mod_reviewed),
            (r.video_preview_type = t.video_preview_type),
            (r.video_preview_id = t.video_preview_id),
            (r.has_live_stream = t.has_live_stream),
            (r.live_stream_viewer_count = t.live_stream_viewer_count),
            (r.m_nBuildID = t.build_id),
            (r.m_strBuildBranch = t.build_branch),
            t.announcement_body)
          ) {
            let e = t.announcement_body;
            (r.AnnouncementGID = e.gid),
              r.name.set(e.language, e.headline),
              r.description.set(e.language, e.body),
              r.timestamp_loc_updated.clear(),
              (r.forumTopicGID = e.forum_topic_id),
              (r.nCommentCount = e.commentcount),
              (r.postTime = e.posttime),
              r.bOldAnnouncement && !e.hidden && (r.startTime = e.posttime),
              (r.announcementClanSteamID = new m.b(e.clanid)),
              e.tags &&
                e.tags.length > 0 &&
                e.tags.forEach((e) => r.vecTags.push(e)),
              !r.rtime32_last_solr_search_col_updated &&
                r.rtime32_last_modified &&
                ((r.rtime32_last_solr_search_col_updated =
                  r.rtime32_last_modified),
                (r.rtime32_last_modified = e.updatetime));
          } else
            (r.AnnouncementGID = "0"),
              (r.forumTopicGID = t.forum_topic_id),
              r.name.clear(),
              r.description.clear(),
              r.timestamp_loc_updated.clear(),
              (r.postTime = t.rtime32_start_time),
              (r.nCommentCount = t.comment_count),
              r.name.set(0, t.event_name),
              r.description.set(0, t.event_notes);
          t.broadcaster_accountid &&
            (r.broadcaster = new m.b(t.broadcaster_accountid));
          const a = c.DJ;
          try {
            r.jsondata = {
              ...a,
              ...(t.jsondata ? JSON.parse(t.jsondata) : void 0),
            };
          } catch (e) {
            const t = (0, p.H)(e);
            throw (
              (console.error(
                "PartnerEventStore::InsertEventModelFromClanEventData: failed to parse embedded json model" +
                  t.strErrorMsg,
                t,
              ),
              e)
            );
          }
          if (
            ((r.jsondata.localized_capsule_image = (0, d.$Y)(
              r.jsondata.localized_capsule_image || [],
              31,
              null,
            )),
            (r.jsondata.localized_title_image = (0, d.$Y)(
              r.jsondata.localized_title_image || [],
              31,
              null,
            )),
            (r.jsondata.localized_subtitle = (0, d.$Y)(
              r.jsondata.localized_subtitle || [],
              31,
              null,
            )),
            (r.jsondata.localized_summary = (0, d.$Y)(
              r.jsondata.localized_summary || [],
              31,
              null,
            )),
            (r.jsondata.localized_broadcast_title = (0, d.$Y)(
              r.jsondata.localized_broadcast_title || [],
              31,
              null,
            )),
            (r.jsondata.localized_broadcast_left_image = (0, d.$Y)(
              r.jsondata.localized_broadcast_left_image || [],
              31,
              null,
            )),
            (r.jsondata.localized_broadcast_right_image = (0, d.$Y)(
              r.jsondata.localized_broadcast_right_image || [],
              31,
              null,
            )),
            (r.jsondata.localized_sale_header = (0, d.$Y)(
              r.jsondata.localized_sale_header || [],
              31,
              null,
            )),
            (r.jsondata.localized_sale_overlay = (0, d.$Y)(
              r.jsondata.localized_sale_overlay || [],
              31,
              null,
            )),
            (r.jsondata.localized_sale_product_banner = (0, d.$Y)(
              r.jsondata.localized_sale_product_banner || [],
              31,
              null,
            )),
            (r.jsondata.localized_sale_product_mobile_banner = (0, d.$Y)(
              r.jsondata.localized_sale_product_mobile_banner || [],
              31,
              null,
            )),
            (r.jsondata.localized_sale_logo = (0, d.$Y)(
              r.jsondata.localized_sale_logo || [],
              31,
              null,
            )),
            void 0 !== r.jsondata.sale_num_headers)
          )
            for (let e = 0; e < r.jsondata.sale_num_headers; ++e)
              r.jsondata.localized_per_day_sales_header[e] = (0, d.$Y)(
                r.jsondata.localized_per_day_sales_header[e],
                31,
                null,
              );
          return (
            r.jsondata.sale_sections &&
              r.jsondata.sale_sections.forEach((e, t) => {
                e.localized_label &&
                  (e.localized_label = (0, d.$Y)(e.localized_label, 31, null)),
                  "trailercarousel" === e.section_type &&
                    (e.show_as_carousel = !1),
                  (r.jsondata.sale_sections[t] = { ...c.G6, ...e });
              }),
            r.jsondata.email_setting &&
              r.jsondata.email_setting.sections &&
              r.jsondata.email_setting.sections.forEach((e) => {
                void 0 !== e.localized_headline &&
                  null !== e.localized_headline &&
                  (e.localized_headline = (0, d.$Y)(
                    e.localized_headline,
                    31,
                    null,
                  )),
                  void 0 !== e.localized_body &&
                    null !== e.localized_body &&
                    (e.localized_body = (0, d.$Y)(e.localized_body, 31, null)),
                  void 0 !== e.localized_image &&
                    null !== e.localized_image &&
                    (e.localized_image = (0, d.$Y)(
                      e.localized_image,
                      31,
                      null,
                    ));
              }),
            r.jsondata.localized_title_image.forEach((e, t) => {
              if (null != e && "http" == e.substr(0, 4)) {
                let a = e.lastIndexOf("/"),
                  n = e.substr(a + 1);
                r.jsondata.localized_title_image[t] = n;
              }
            }),
            t.published
              ? t.unlisted
                ? (r.visibility_state = c.zv.k_EEventStatsUnlisted)
                : t.hidden
                  ? (r.visibility_state = c.zv.k_EEventStateStaged)
                  : (r.visibility_state = c.zv.k_EEventStateVisible)
              : (r.visibility_state = c.zv.k_EEventStateUnpublished),
            this.InsertUniqueEventGID(e.GetAccountID(), r.appid, r.GID),
            this.m_mapExistingEvents.set(r.GID, r),
            r.AnnouncementGID &&
              r.AnnouncementGID.length > 1 &&
              this.m_mapAnnouncementBodyToEvent.set(r.AnnouncementGID, r.GID),
            (r.bLoaded = !0),
            r
          );
        }
        HelperInitializeNumSalesHeaderArray(e) {
          if (e.jsondata.sale_num_headers > 1) {
            e.jsondata.localized_per_day_sales_header = [];
            for (let t = 0; t < e.jsondata.sale_num_headers; ++t)
              e.jsondata.localized_per_day_sales_header.push(
                (0, d.$Y)([], 31, null),
              );
            e.m_overrideCurrentDay = 0;
          } else e.m_overrideCurrentDay = void 0;
        }
        GetAllClanEvents(e) {
          let t = new Array();
          return (
            this.m_mapClanToGIDs.has(e.GetAccountID()) &&
              this.m_mapClanToGIDs.get(e.GetAccountID()).forEach((e) => {
                let r = this.m_mapExistingEvents.get(e);
                r && t.push(r);
              }),
            t
          );
        }
        async QueueLoadPartnerEvent(e, t, r) {
          if (this.m_mapExistingEvents.has(t)) return;
          this.m_rgQueuedEventsClanIDs.push(e),
            this.m_rgQueuedEventsUniqueIDs.push(t),
            this.m_rgQueuedEventsForEditFlags.push(Boolean(r)),
            this.m_PendingInfoPromise ||
              (this.m_PendingInfoPromise = new Promise(
                (e) => (this.m_PendingInfoResolve = e),
              ));
          const a = this.m_PendingInfoPromise,
            n = () => {
              const e = this.m_PendingInfoResolve,
                t = this.m_rgQueuedEventsClanIDs,
                r = this.m_rgQueuedEventsUniqueIDs,
                a = this.m_rgQueuedEventsForEditFlags;
              (this.m_PendingInfoPromise = null),
                (this.m_rgQueuedEventsClanIDs = new Array()),
                (this.m_rgQueuedEventsUniqueIDs = new Array()),
                (this.m_rgQueuedEventsForEditFlags = new Array()),
                this.InternalLoadPartnerEventList(t, r, a).then(() => e());
            };
          if (this.m_rgQueuedEventsClanIDs.length >= 30)
            this.m_QueuedEventTimeout.Cancel(), n();
          else if (!this.m_QueuedEventTimeout.IsScheduled()) {
            const e = 50;
            this.m_QueuedEventTimeout.Schedule(e, n);
          }
          return a;
        }
        async InternalLoadPartnerEventList(e, t, r) {
          let a = r.some((e) => e);
          const n =
              y.TS.STORE_BASE_URL +
              (a
                ? "events/ajaxgeteventdetailsforedit/"
                : "events/ajaxgeteventdetails/"),
            s = w((0, l.sf)(y.TS.LANGUAGE)),
            o = {
              clanid_list: e.join(","),
              uniqueid_list: t.join(","),
              lang_list: s,
              origin: self.origin,
            };
          try {
            const e = await i().get(n, { params: o, withCredentials: a });
            this.RegisterClanEvents(e.data.events);
          } catch (e) {
            let t = (0, p.H)(e);
            console.error("GetEventDetails hit error " + t.strErrorMsg, t);
          }
        }
        async LoadAdjacentPartnerEvents(e, t, r, a, n, i, s) {
          return this.InternalLoadAdjacentPartnerEvents(
            e,
            void 0,
            t,
            r,
            a,
            n,
            i,
            s,
          );
        }
        async LoadAdjacentPartnerEventsByAnnouncement(e, t, r, a, n, i, s) {
          return this.InternalLoadAdjacentPartnerEvents(
            void 0,
            e,
            t,
            r,
            a,
            n,
            i,
            s,
          );
        }
        async LoadAdjacentPartnerEventsByEvent(e, t, r, a, n, i, s) {
          const o = t || e.clanSteamID;
          return e.bOldAnnouncement
            ? this.InternalLoadAdjacentPartnerEvents(
                void 0,
                e.AnnouncementGID,
                o,
                r,
                a,
                n,
                i,
                s,
              )
            : this.InternalLoadAdjacentPartnerEvents(
                e.GID,
                e.AnnouncementGID,
                o,
                r,
                a,
                n,
                i,
                s,
              );
        }
        async InternalLoadAdjacentPartnerEvents(e, t, r, a, n, o, c, d) {
          let u = new Array();
          if (this.m_mapAdjacentAnnouncementGIDs.has(t)) {
            let e = this.m_mapAdjacentAnnouncementGIDs.get(t),
              r = new Array();
            if (
              (e.forEach((e) => {
                if (this.m_mapAnnouncementBodyToEvent.has(e)) {
                  let t = this.m_mapAnnouncementBodyToEvent.get(e);
                  u.push(this.m_mapExistingEvents.get(t));
                } else r.push(e);
              }),
              r.length > 0)
            ) {
              (
                await this.LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs(
                  null,
                  r,
                  d,
                )
              ).forEach((e) => u.push(e));
            }
          } else {
            let _ =
              y.TS.STORE_BASE_URL + "events/ajaxgetadjacentpartnerevents/";
            const h = w((0, l.sf)(y.TS.LANGUAGE));
            let g = {
              clan_accountid: r ? r.GetAccountID() : void 0,
              appid: a,
              count_before: n,
              count_after: o,
              gidevent: e,
              gidannouncement: t,
              lang_list: h,
              rtime_oldestevent: c ? c.rtime_oldestevent : void 0,
              require_tags:
                c && c.require_tags ? c.require_tags.join(",") : void 0,
              exclude_tags:
                c && c.exclude_tags ? c.exclude_tags.join(",") : void 0,
              require_no_tags: c ? c.require_no_tags : void 0,
              event_type_filter:
                c && c.event_type_filter
                  ? c.event_type_filter.join(",")
                  : void 0,
              exclude_event_types:
                c && c.exclude_event_types
                  ? c.exclude_event_types.join(",")
                  : void 0,
              origin: self.origin,
            };
            try {
              let n = await i().get(_, { params: g, cancelToken: d?.token });
              if (1 == n?.data?.success)
                (0, s.h5)(() => {
                  for (let e of n.data.events) {
                    let t = this.GetEventLookupKey(e);
                    if (!this.m_mapExistingEvents.has(t)) {
                      let t = new m.b(e.clan_steamid);
                      this.InsertEventModelFromClanEventData(r || t, e);
                    }
                    u.push(this.m_mapExistingEvents.get(t));
                  }
                  0 == u.length &&
                    (e && this.BHasClanEventModel(e)
                      ? u.push(this.m_mapExistingEvents.get(e))
                      : t &&
                        this.BHasClanAnnouncementGID(t) &&
                        u.push(this.GetClanEventFromAnnouncementGID(t)));
                });
              else {
                let e = (0, p.H)(n?.data);
                console.error(
                  "LoadAdjacentPartnerEvents Success but empty response:" +
                    a +
                    " clanAccount:" +
                    (r ? r.GetAccountID() : 0) +
                    " " +
                    e.strErrorMsg,
                  e,
                );
              }
            } catch (e) {
              let t = (0, p.H)(e);
              52 != t.errorCode &&
                console.error(
                  "LoadAdjacentPartnerEvents hit error on appid:" +
                    a +
                    " clanAccount:" +
                    (r ? r.GetAccountID() : 0) +
                    " " +
                    t.strErrorMsg,
                  t,
                );
            }
          }
          return u;
        }
        async LoadPartnerEventsPageable(e, t, r = 0, a = 0) {
          let n = new Array(),
            o = y.TS.STORE_BASE_URL + "events/ajaxgetpartnereventspageable/",
            l = {
              clan_accountid: e ? e.GetAccountID() : void 0,
              appid: t,
              offset: r,
              count: a,
              l: y.TS.LANGUAGE,
              origin: self.origin,
            };
          try {
            let e = await i().get(o, { params: l });
            (0, s.h5)(() => {
              for (let t of e.data.events) {
                let e = this.GetEventLookupKey(t);
                if (!this.m_mapExistingEvents.has(e)) {
                  let e = new m.b(t.clan_steamid);
                  this.InsertEventModelFromClanEventData(e, t);
                }
                n.push(this.m_mapExistingEvents.get(e));
              }
            });
          } catch (e) {
            console.error(
              "LoadClanEventInDateRange hit error " + (0, p.H)(e).strErrorMsg,
            );
          }
          return n;
        }
        async GetBestEventsForCurrentUser(e, t, r) {
          let a = new Array(),
            n = {
              l: y.TS.LANGUAGE,
              include_steam_blog: !0,
              filter_to_played_within_days: e,
              include_only_game_updates: t,
            },
            o = y.TS.STORE_BASE_URL + "events/ajaxgetbesteventsforuser",
            l = await i().get(o, {
              params: n,
              withCredentials: !0,
              cancelToken: r ? r.token : void 0,
            });
          if (!l.data?.events) {
            let e = l.data?.err_msg || "";
            throw new Error(
              `GetBestEventsForCurrentUser request failed (${e})`,
            );
          }
          return (
            (0, s.h5)(() => {
              for (let e of l.data.events) {
                let t = this.GetEventLookupKey(e);
                if (!this.m_mapExistingEvents.has(t)) {
                  let t = new m.b(e.clan_steamid);
                  this.InsertEventModelFromClanEventData(t, e);
                }
                let r = {
                  nAppPriority: e.nAppPriority,
                  bPossibleTakeOver: e.bPossibleTakeOver,
                  event: this.m_mapExistingEvents.get(t),
                };
                a.push(r);
              }
            }),
            a
          );
        }
        async LoadImportantEventsAroundToday(e, t, r, a, n, o) {
          let l = new Array(),
            c = new Array();
          c.push({ priority: 0, appids: t }),
            r && c.push({ priority: 1, appids: r }),
            a && c.push({ priority: 2, appids: a });
          let d = {
              count: e,
              strAppIDPriority: JSON.stringify({ prioritized_apps: c }),
              filterToEventTypes: o ? o.toString() : "",
              l: y.TS.LANGUAGE,
            },
            u = y.TS.STORE_BASE_URL + "events/ajaxgettodayboundedevents",
            p = await i().get(u, {
              params: d,
              withCredentials: !0,
              cancelToken: n.token,
            });
          return (
            (0, s.h5)(() => {
              for (let e of p.data.events) {
                let t = this.GetEventLookupKey(e);
                if (!this.m_mapExistingEvents.has(t)) {
                  let t = new m.b(e.clan_steamid);
                  this.InsertEventModelFromClanEventData(t, e);
                }
                l.push(this.m_mapExistingEvents.get(t));
              }
            }),
            l
          );
        }
        InsertUniqueEventGID(e, t, r) {
          this.m_mapClanToGIDs.has(e) ||
            this.m_mapClanToGIDs.set(e, new Array()),
            this.m_mapAppIDToGIDs.has(t) ||
              this.m_mapAppIDToGIDs.set(t, new Array());
          let a = this.m_mapClanToGIDs.get(e);
          -1 == a.indexOf(r) &&
            (a.push(r), this.m_mapAppIDToGIDs.get(t).push(r));
        }
        ResetModel() {}
        async DeleteClanEvent(e, t) {
          this.m_mapExistingEvents.has(t) &&
            (this.m_mapExistingEvents.get(t).deleteInProgress = !0);
          let r = null,
            a = new URLSearchParams();
          return (
            a.append("sessionid", y.TS.SESSIONID),
            a.append("bDelete", "1"),
            a.append("gid", t),
            (r = await i().post(
              y.TS.COMMUNITY_BASE_URL +
                "/gid/" +
                e.ConvertTo64BitString() +
                "/ajaxcreateupdatedeletepartnerevents/",
              a,
            )),
            this.RemoveGIDFromList(e, t),
            r.data
          );
        }
        RemoveGIDFromList(e, t) {
          if (
            (this.m_mapExistingEvents.delete(t),
            this.m_mapClanToGIDs.has(e.GetAccountID()))
          ) {
            let r = this.m_mapClanToGIDs.get(e.GetAccountID()),
              a = r.indexOf(t);
            a >= 0 && r.splice(a, 1);
          }
        }
        FlushEventFromCache(e, t) {
          if (e && this.m_mapExistingEvents.has(e)) {
            if (!t) {
              t = this.m_mapExistingEvents.get(e).AnnouncementGID;
            }
            this.m_mapExistingEvents.delete(e);
          }
          if (
            t &&
            (this.m_mapExistingEvents.has(c.cB + t) &&
              this.m_mapExistingEvents.delete(c.cB + t),
            this.m_mapAnnouncementBodyToEvent.has(t))
          ) {
            const e = this.m_mapAnnouncementBodyToEvent.get(t);
            this.m_mapExistingEvents.has(e) &&
              this.m_mapExistingEvents.delete(e),
              this.m_mapAnnouncementBodyToEvent.delete(t);
          }
        }
        async InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID(
          e,
          t,
          r,
          a,
          n,
          s = !1,
        ) {
          let o = w(s ? 0 : (0, l.sf)(y.TS.LANGUAGE)),
            c = {
              appid: t,
              clan_accountid: e ? e.GetAccountID() : void 0,
              announcement_gid: a,
              event_gid: r,
              lang_list: o,
              last_modified_time: n || 0,
              origin: self.origin,
              for_edit: s,
            },
            d = null,
            p = null;
          if (s) {
            const r = (0, y.yK)();
            "community" === r
              ? ((p = y.TS.COMMUNITY_BASE_URL),
                (p += e ? "gid/" + e.ConvertTo64BitString() : "ogg/" + t),
                (p += "/"))
              : (p =
                  "partnerweb" === r
                    ? y.TS.PARTNER_BASE_URL + "sales/"
                    : y.TS.STORE_BASE_URL + "events/"),
              (p += "ajaxgetpartnereventforedit"),
              (d = { params: c, withCredentials: !0 });
          } else
            (p = y.TS.STORE_BASE_URL + "events/ajaxgetpartnerevent"),
              (d = { params: c, withCredentials: !1 });
          let _ = (await i().get(p, d)).data.event,
            h = this.GetEventLookupKey(_);
          if (
            !this.m_mapExistingEvents.has(h) ||
            this.m_mapExistingEvents.get(h).rtime32_last_modified <
              _.rtime32_last_modified ||
            this.m_mapExistingEvents.get(h).rtime32_moderator_reviewed <
              _.rtime_mod_reviewed
          ) {
            (0, u.w)(
              _.clan_steamid,
              "ClanSteamID is missing from data we received",
            );
            let e = new m.b(_.clan_steamid);
            this.InsertEventModelFromClanEventData(e, _);
          }
          return this.m_mapExistingEvents.get(h);
        }
        async InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
          e,
          t,
          r,
          a,
          n,
          i,
        ) {
          if (r && this.m_mapExistingEvents.has(r))
            return this.m_mapExistingEvents.get(r);
          if (a) {
            if (this.m_mapExistingEvents.has(c.cB + a))
              return this.m_mapExistingEvents.get(c.cB + a);
            if (this.m_mapAnnouncementBodyToEvent.has(a)) {
              const e = this.m_mapAnnouncementBodyToEvent.get(a);
              if (this.m_mapExistingEvents.has(e))
                return this.m_mapExistingEvents.get(e);
            }
          }
          return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID(
            e,
            t,
            r,
            a,
            n,
            i,
          );
        }
        async LoadPartnerEventFromAnnoucementGID(e, t, r) {
          return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
            void 0,
            e,
            void 0,
            t,
            r,
          );
        }
        async LoadPartnerEventFromAnnoucementGIDAndClanSteamID(e, t, r, a) {
          return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
            e,
            void 0,
            void 0,
            t,
            r,
            a,
          );
        }
        async LoadPartnerEventFromClanEventGID(e, t, r) {
          return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
            void 0,
            e,
            t,
            void 0,
            r,
          );
        }
        async LoadPartnerEventFromClanEventGIDAndClanSteamID(e, t, r, a) {
          return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
            e,
            void 0,
            t,
            void 0,
            r,
            a,
          );
        }
        async LoadPartnerEventGeneric(e, t, r, a, n) {
          return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGIDCached(
            e,
            t,
            r,
            a,
            n,
          );
        }
        async LoadHiddenPartnerEvent(e, t) {
          return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID(
            e,
            null,
            t,
            null,
            0,
            !0,
          );
        }
        async LoadHiddenPartnerEventByAnnouncementGID(e, t) {
          return this.InternalLoadPartnerEventFromClanEventOrClanAnnouncementGID(
            e,
            null,
            null,
            t,
            0,
            !0,
          );
        }
        async HintLoadImportantUpdates() {
          const e = (0, o.tB)(36e5);
          if (e != this.m_tsUpdatedAppsQueryTime) {
            this.m_tsUpdatedAppsQueryTime = e;
            const t = { page: 1, numPerPage: 500, includeAnnouncements: !1 },
              r = y.TS.STORE_BASE_URL + "updated/ajaxgetmyappsraw",
              a = await i().get(r, { params: t, withCredentials: !0 });
            a.data.apps &&
              a.data.apps.length > 0 &&
              (0, s.h5)(() => {
                const e = new Map(a.data.apps.map((e) => [e.appid, new b(e)]));
                this.m_mapUpdatedApps = e;
              });
          }
          return this.m_mapUpdatedApps;
        }
        GetAppImportantUpdate(e) {
          return (
            this.HintLoadImportantUpdates().catch((e) => {
              console.log("UpdatedApps failed to load: ", e.response.data);
            }),
            this.m_mapUpdatedApps && this.m_mapUpdatedApps.get(e)
          );
        }
        async LoadClanEventLocalizationFromAnnouncementGID(e, t) {
          let r =
            y.TS.COMMUNITY_BASE_URL +
            "gid/" +
            e.ConvertTo64BitString() +
            "/announcements/ajaxgetlocalization/" +
            t;
          return (await i().get(r)).data.localization;
        }
        async LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs(e, t, r) {
          const a = new Array(),
            n = y.TS.STORE_BASE_URL + "events/ajaxgetbatchedpartnerevent/",
            o = w((0, l.sf)(y.TS.LANGUAGE));
          let c = null,
            d = null;
          if (e) {
            let t = new Array();
            e.forEach((e) => {
              this.m_mapExistingEvents.has(e)
                ? a.push(this.m_mapExistingEvents.get(e))
                : t.push(e);
            }),
              t.sort(),
              (c = t);
          }
          if (t) {
            let e = new Array();
            t.forEach((t) => {
              if (
                this.m_mapAnnouncementBodyToEvent.has(t) &&
                this.m_mapExistingEvents.has(
                  this.m_mapAnnouncementBodyToEvent.get(t),
                )
              ) {
                let e = this.m_mapAnnouncementBodyToEvent.get(t);
                a.push(this.m_mapExistingEvents.get(e));
              } else e.push(t);
            }),
              e.sort(),
              (d = e);
          }
          if (!c && !d) return a;
          const u = new Array();
          for (; c?.length > 0 || d?.length > 0; ) {
            let e = {
              event_gids: c?.length > 0 ? c?.splice(0, 100).join(",") : void 0,
              announcement_gids:
                d?.length > 0 ? d?.splice(0, 100).join(",") : void 0,
              lang_list: o,
              origin: self.origin,
            };
            u.push(
              i().get(n, { params: e, cancelToken: r ? r.token : void 0 }),
            );
          }
          try {
            const e = await Promise.all([...u]);
            let t = 0;
            (0, s.h5)(() =>
              e.forEach((e) => {
                if (e && e.data && e.data.events)
                  for (let t of e.data.events) {
                    let e = this.GetEventLookupKey(t);
                    if (!this.m_mapExistingEvents.has(e)) {
                      let e = new m.b(t.clan_steamid);
                      this.InsertEventModelFromClanEventData(e, t);
                    }
                    a.push(this.m_mapExistingEvents.get(e));
                  }
                else {
                  const t = (0, p.H)(e);
                  console.error(
                    "LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs partial processing hit error " +
                      t.strErrorMsg,
                    t,
                  );
                }
                t += 1;
              }),
            );
          } catch (e) {
            const t = (0, p.H)(e);
            console.error(
              "LoadBatchPartnerEventsByEventGIDsOrAnnouncementGIDs hit error " +
                t.strErrorMsg,
              t,
            );
          }
          return a;
        }
        async SavePartnerEventSaleAssets(e, t, r) {
          let a = null;
          if (!this.m_mapExistingEvents.has(t)) return !1;
          try {
            const n = `${y.TS.PARTNER_BASE_URL}promotion/sales/ajaxsaveasset/${e}`,
              s = new FormData();
            s.append("sessionid", y.TS.SESSIONID),
              s.append("gidclanevent", t),
              s.append("json", JSON.stringify(r));
            const o = await i().post(n, s, { withCredentials: !0 });
            if (1 == o?.data?.success) {
              const e = this.m_mapExistingEvents.get(t);
              for (const t in r)
                r.hasOwnProperty(t) && r[t] && (e.jsondata[t] = r[t]);
              return this.GetPartnerEventChangeCallback(t).Dispatch(e), !0;
            }
            a = (0, p.H)(o);
          } catch (e) {
            a = (0, p.H)(e);
          }
          return (
            console.error(
              "CPartnerEventStore.SavePartnerEventSaleAssets failed: " +
                a?.strErrorMsg,
              a,
            ),
            !1
          );
        }
      }
      (0, a.Cg)([s.sH], v.prototype, "m_mapExistingEvents", void 0),
        (0, a.Cg)([s.sH], v.prototype, "m_mapAnnouncementBodyToEvent", void 0),
        (0, a.Cg)([s.sH], v.prototype, "m_mapClanToGIDs", void 0),
        (0, a.Cg)([s.sH], v.prototype, "m_mapAppIDToGIDs", void 0),
        (0, a.Cg)([s.sH], v.prototype, "m_mapUpdatedApps", void 0),
        (0, a.Cg)([s.XI], v.prototype, "Init", null),
        (0, a.Cg)([f.oI], v.prototype, "GetPartnerEventChangeCallback", null),
        (0, a.Cg)([s.XI], v.prototype, "RegisterClanEvents", null),
        (0, a.Cg)(
          [s.XI],
          v.prototype,
          "InsertEventModelFromClanEventData",
          null,
        ),
        (0, a.Cg)([s.XI], v.prototype, "DeleteClanEvent", null),
        (0, a.Cg)([s.XI], v.prototype, "RemoveGIDFromList", null),
        (0, a.Cg)([s.XI], v.prototype, "FlushEventFromCache", null),
        (0, a.Cg)([f.oI], v.prototype, "SavePartnerEventSaleAssets", null);
      const I = new v();
      function B(e, t) {
        const [r, a] = (0, S.useState)(() => I.GetClanEventModel(t)),
          n = (0, S.useMemo)(() => m.b.InitFromClanID(e), [e]);
        return (
          (0, S.useEffect)(() => {
            !r &&
              e > 0 &&
              (I.Init(),
              I.LoadPartnerEventFromClanEventGIDAndClanSteamID(
                n,
                t,
                0,
                !0,
              ).then(a));
          }, [n, t, r, e]),
          (0, f.hL)(I.GetPartnerEventChangeCallback(t), a),
          r
        );
      }
      function C() {
        return { fnSaveSaleAssets: I.SavePartnerEventSaleAssets };
      }
      window.g_PartnerEventStore = I;
    },
    68033: (e, t, r) => {
      "use strict";
      r.d(t, { A: () => l, T: () => o });
      var a = r(30193),
        n = r(78327),
        i = r(41735),
        s = r.n(i);
      class o extends a.p {
        constructor() {
          super();
        }
        BInitialized() {
          return !0;
        }
        GetServerTime() {
          return n.TS.PAGE_TIMESTAMP + Math.floor(performance.now() / 1e3);
        }
        async RequestEmoticonListInternal() {
          let e = [];
          try {
            let t = await s().get(n.TS.CHAT_BASE_URL + "actions/EmoticonData", {
              withCredentials: !0,
            });
            if (t.data.emoticons)
              for (let r of t.data.emoticons) {
                let t = r.name;
                if (t.startsWith("^")) e.push({ name: t });
                else {
                  let a = { name: t.substr(1, t.length - 2) },
                    n = a.name.toLowerCase();
                  n != a.name && (a.name_normalized = n),
                    r.time_last_used && (a.last_used = r.time_last_used),
                    r.use_count && (a.use_count = r.use_count),
                    r.time_received && (a.time_received = r.time_received),
                    r.appid && (a.appid = r.appid),
                    e.push(a);
                }
              }
          } catch (e) {
            console.error("error loading emoticon list", e);
          }
          this.OnEmoticonListReceived(e);
        }
      }
      const l = new o();
    },
    55263: (e, t, r) => {
      "use strict";
      r.d(t, {
        G6: () => l,
        Gg: () => d,
        MS: () => h,
        Ow: () => m,
        gF: () => g,
        mZ: () => u,
        t7: () => c,
        zX: () => _,
      });
      var a = r(41735),
        n = r.n(a),
        i = r(90626),
        s = r(73745),
        o = r(82097);
      function l(e, t, r, a) {
        const l = (0, i.useRef)(),
          c = (0, i.useRef)(void 0),
          m = (0, s.CH)();
        l.current = e;
        const [d, u] = (0, i.useState)(void 0),
          {
            include_assets: p,
            include_release: _,
            include_platforms: h,
            include_all_purchase_options: g,
            include_screenshots: y,
            include_trailers: S,
            include_ratings: f,
            include_tag_count: b,
            include_reviews: w,
            include_basic_info: v,
            include_supported_languages: I,
            include_full_description: B,
            include_included_items: C,
            include_assets_without_overrides: E,
            apply_user_filters: T,
            include_links: A,
          } = r;
        if (
          ((0, i.useEffect)(() => {
            const r = {
              include_assets: p,
              include_release: _,
              include_platforms: h,
              include_all_purchase_options: g,
              include_screenshots: y,
              include_trailers: S,
              include_ratings: f,
              include_tag_count: b,
              include_reviews: w,
              include_basic_info: v,
              include_supported_languages: I,
              include_full_description: B,
              include_included_items: C,
              include_assets_without_overrides: E,
              apply_user_filters: T,
              include_links: A,
            };
            let i = null;
            return (
              !e ||
                e < 0 ||
                o.A.Get().BHasStoreItem(e, t, r) ||
                (void 0 !== d && a && a == c.current) ||
                (a !== c.current && (u(void 0), (c.current = a)),
                (i = n().CancelToken.source()),
                o.A.Get()
                  .QueueStoreItemRequest(e, t, r)
                  .then((t) => {
                    i?.token.reason || l.current !== e || u(1 == t), m();
                  })),
              () => i?.cancel("useStoreItemCache: unmounting")
            );
          }, [e, t, a, d, p, _, h, g, y, S, f, b, w, v, I, B, C, E, T, A, m]),
          !e)
        )
          return [null, 2];
        if (!1 === d) return [void 0, 2];
        if (o.A.Get().BIsStoreItemMissing(e, t)) return [void 0, 2];
        if (!o.A.Get().BHasStoreItem(e, t, r)) return [void 0, 1];
        const G = o.A.Get().GetStoreItemWithLegacyVisibilityCheck(e, t);
        return G ? [G, 3] : [null, 2];
      }
      function c(e, t, r) {
        return l(e, 0, t, r);
      }
      function m(e, t, r) {
        return l(e, 2, t, r);
      }
      function d(e, t, r) {
        return l(e, 1, t, r);
      }
      function u(e, t, r) {
        const [a, n] = l(e, t, r);
        let i;
        1 != a?.GetStoreItemType() ||
          a.GetAssets()?.GetHeaderURL() ||
          1 != a?.GetIncludedAppIDs().length ||
          (i = a.GetIncludedAppIDs()[0]);
        const [s, o] = c(i, r);
        return i && s?.BIsVisible() ? [s, o] : [a, n];
      }
      function p(e, t, r, a) {
        const l = (0, s.CH)(),
          {
            include_assets: c,
            include_release: m,
            include_platforms: d,
            include_all_purchase_options: u,
            include_screenshots: p,
            include_trailers: _,
            include_ratings: h,
            include_tag_count: g,
            include_reviews: y,
            include_basic_info: S,
            include_supported_languages: f,
            include_full_description: b,
            include_included_items: w,
            include_assets_without_overrides: v,
            apply_user_filters: I,
            include_links: B,
          } = r;
        if (
          ((0, i.useEffect)(() => {
            if (!e || 0 == e.length) return;
            const r = {
                include_assets: c,
                include_release: m,
                include_platforms: d,
                include_all_purchase_options: u,
                include_screenshots: p,
                include_trailers: _,
                include_ratings: h,
                include_tag_count: g,
                include_reviews: y,
                include_basic_info: S,
                include_supported_languages: f,
                include_full_description: b,
                include_included_items: w,
                include_assets_without_overrides: v,
                apply_user_filters: I,
                include_links: B,
              },
              a = e.filter(
                (e) =>
                  !(
                    o.A.Get().BHasStoreItem(e, t, r) ||
                    o.A.Get().BIsStoreItemMissing(e, t)
                  ),
              );
            if (0 == a.length) return;
            const i = n().CancelToken.source(),
              s = a.map((e) => o.A.Get().QueueStoreItemRequest(e, t, r));
            return (
              Promise.all(s).then(() => {
                i.token.reason || l();
              }),
              () => i.cancel("useStoreItemCacheMultiplePackages: unmounting")
            );
          }, [e, t, a, l, c, m, d, u, p, _, h, g, y, S, f, b, w, v, I, B]),
          !e)
        )
          return 2;
        if (
          !e.every(
            (e) =>
              o.A.Get().BHasStoreItem(e, t, r) ||
              o.A.Get().BIsStoreItemMissing(e, t),
          )
        )
          return 1;
        return e.every((e) =>
          o.A.Get().GetStoreItemWithLegacyVisibilityCheck(e, t),
        )
          ? 3
          : 2;
      }
      function _(e, t, r) {
        return p(e, 0, t, r);
      }
      function h(e, t, r) {
        return p(e, 2, t, r);
      }
      function g(e, t, r) {
        return p(e, 1, t, r);
      }
    },
    80782: (e, t, r) => {
      "use strict";
      r.d(t, { Fv: () => l, LG: () => d, MB: () => m });
      var a = r(56545),
        n = r(75487),
        i = r(20194),
        s = r(23809),
        o = (r(72963), r(78327));
      function l(e = o.TS.LANGUAGE) {
        const t = (0, s.TR)(),
          r = (0, s.rX)();
        return (0, i.I)(c(t, r, e));
      }
      function c(e, t, r) {
        return {
          queryKey: ["LocalizedTagNames", r],
          queryFn: async () => {
            const i = `LocalizedTagNames_${r}`,
              s = await t.GetObject(i),
              o = a.w.Init(n.Gr);
            o.Body().set_language(r),
              s?.version_hash && o.Body().set_have_version_hash(s.version_hash);
            const l = await n.nd.GetTagList(
              e.GetAnonymousServiceTransport(),
              o,
            );
            let c;
            if (1 == l.GetEResult())
              (c = l.Body().toObject()), t.StoreObject(i, c);
            else if (29 == l.GetEResult()) c = s;
            else {
              if (!s) throw l.GetErrorMessage();
              console.warn(
                "Couldn't load updated tag localization, will continue with what we have from storage.",
              ),
                (c = s);
            }
            const m = new Map();
            return (
              c.tags.forEach(({ tagid: e, name: t }) =>
                m.set(e, { tagid: e, name: t }),
              ),
              m
            );
          },
          staleTime: 36e5,
        };
      }
      function m(e, t = o.TS.LANGUAGE) {
        const { data: r } = l(t);
        return e ? r?.get(e) : void 0;
      }
      function d(e, t = o.TS.LANGUAGE) {
        const { data: r } = l(t);
        return e?.map((e) => r?.get(e)).filter(Boolean);
      }
    },
    6469: (e, t, r) => {
      "use strict";
      r.d(t, { K: () => c });
      var a = r(41735),
        n = r.n(a),
        i = r(14947),
        s = r(68797),
        o = r(78327),
        l = r(43882);
      class c {
        static s_VODStore;
        m_mapAppToVOD = new Map();
        GetVODForAppID(e) {
          return this.m_mapAppToVOD.get(e);
        }
        async LoadVODForAppID(e, t) {
          if (this.m_mapAppToVOD.has(e)) return this.m_mapAppToVOD.get(e);
          const r = o.TS.STORE_BASE_URL + "video/details/" + e + "/0",
            a = {};
          try {
            let s = await n().get(r, {
              params: a,
              withCredentials: !0,
              cancelToken: t ? t.token : void 0,
            });
            if (t && t.token.reason) return null;
            if (
              s &&
              200 == s.status &&
              s.data &&
              (1 == s.data.success || "ready" == s.data.success)
            ) {
              let t = (0, i.sH)({
                appid: e,
                video_url: s.data.video_url,
                bookmark: s.data.bookmark,
              });
              return (
                s.data.bookmark
                  ? l.t.Get().SetBookmarkForApp(e, s.data.bookmark)
                  : l.t.Get().InitializeBookmarkForApp(e),
                this.m_mapAppToVOD.set(e, t),
                t
              );
            }
          } catch (e) {
            let t = (0, s.H)(e);
            console.error(
              "CVideoOnDemandStore:LoadVODForAppID: Failed " + t.strErrorMsg,
              t,
            );
          }
          return null;
        }
        static Get() {
          return (
            c.s_VODStore || ((c.s_VODStore = new c()), c.s_VODStore.Init()),
            c.s_VODStore
          );
        }
        Init() {}
      }
    },
    43882: (e, t, r) => {
      "use strict";
      r.d(t, { M: () => C, t: () => B });
      var a = r(41735),
        n = r.n(a),
        i = r(56545),
        s = r(96059),
        o = r(80613),
        l = r(89068);
      const c = o.Message;
      class m extends c {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            m.prototype.video_id || l.Sg(m.M()),
            c.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            m.sm_m ||
              (m.sm_m = {
                proto: m,
                fields: {
                  video_id: {
                    n: 1,
                    br: l.qM.readUint64String,
                    bw: l.gp.writeUint64String,
                  },
                  client_cellid: {
                    n: 2,
                    br: l.qM.readUint32,
                    bw: l.gp.writeUint32,
                  },
                },
              }),
            m.sm_m
          );
        }
        static MBF() {
          return m.sm_mbf || (m.sm_mbf = l.w0(m.M())), m.sm_mbf;
        }
        toObject(e = !1) {
          return m.toObject(e, this);
        }
        static toObject(e, t) {
          return l.BT(m.M(), e, t);
        }
        static fromObject(e) {
          return l.Uq(m.M(), e);
        }
        static deserializeBinary(e) {
          let t = new o.BinaryReader(e),
            r = new m();
          return m.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return l.zj(m.MBF(), e, t);
        }
        serializeBinary() {
          var e = new o.BinaryWriter();
          return m.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          l.i0(m.M(), e, t);
        }
        serializeBase64String() {
          var e = new o.BinaryWriter();
          return m.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CVideo_ClientGetVideoURL_Request";
        }
      }
      class d extends c {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            d.prototype.video_id || l.Sg(d.M()),
            c.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            d.sm_m ||
              (d.sm_m = {
                proto: d,
                fields: {
                  video_id: {
                    n: 1,
                    br: l.qM.readUint64String,
                    bw: l.gp.writeUint64String,
                  },
                  video_url: {
                    n: 2,
                    br: l.qM.readString,
                    bw: l.gp.writeString,
                  },
                },
              }),
            d.sm_m
          );
        }
        static MBF() {
          return d.sm_mbf || (d.sm_mbf = l.w0(d.M())), d.sm_mbf;
        }
        toObject(e = !1) {
          return d.toObject(e, this);
        }
        static toObject(e, t) {
          return l.BT(d.M(), e, t);
        }
        static fromObject(e) {
          return l.Uq(d.M(), e);
        }
        static deserializeBinary(e) {
          let t = new o.BinaryReader(e),
            r = new d();
          return d.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return l.zj(d.MBF(), e, t);
        }
        serializeBinary() {
          var e = new o.BinaryWriter();
          return d.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          l.i0(d.M(), e, t);
        }
        serializeBase64String() {
          var e = new o.BinaryWriter();
          return d.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CVideo_ClientGetVideoURL_Response";
        }
      }
      class u extends c {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            u.prototype.encryption_key || l.Sg(u.M()),
            c.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            u.sm_m ||
              (u.sm_m = {
                proto: u,
                fields: {
                  encryption_key: {
                    n: 1,
                    br: l.qM.readBytes,
                    bw: l.gp.writeBytes,
                  },
                },
              }),
            u.sm_m
          );
        }
        static MBF() {
          return u.sm_mbf || (u.sm_mbf = l.w0(u.M())), u.sm_mbf;
        }
        toObject(e = !1) {
          return u.toObject(e, this);
        }
        static toObject(e, t) {
          return l.BT(u.M(), e, t);
        }
        static fromObject(e) {
          return l.Uq(u.M(), e);
        }
        static deserializeBinary(e) {
          let t = new o.BinaryReader(e),
            r = new u();
          return u.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return l.zj(u.MBF(), e, t);
        }
        serializeBinary() {
          var e = new o.BinaryWriter();
          return u.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          l.i0(u.M(), e, t);
        }
        serializeBase64String() {
          var e = new o.BinaryWriter();
          return u.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CVideo_UnlockedH264_Notification";
        }
      }
      class p extends c {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            p.prototype.app_id || l.Sg(p.M()),
            c.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            p.sm_m ||
              (p.sm_m = {
                proto: p,
                fields: {
                  app_id: { n: 1, br: l.qM.readUint32, bw: l.gp.writeUint32 },
                  client_cellid: {
                    n: 2,
                    br: l.qM.readUint32,
                    bw: l.gp.writeUint32,
                  },
                },
              }),
            p.sm_m
          );
        }
        static MBF() {
          return p.sm_mbf || (p.sm_mbf = l.w0(p.M())), p.sm_mbf;
        }
        toObject(e = !1) {
          return p.toObject(e, this);
        }
        static toObject(e, t) {
          return l.BT(p.M(), e, t);
        }
        static fromObject(e) {
          return l.Uq(p.M(), e);
        }
        static deserializeBinary(e) {
          let t = new o.BinaryReader(e),
            r = new p();
          return p.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return l.zj(p.MBF(), e, t);
        }
        serializeBinary() {
          var e = new o.BinaryWriter();
          return p.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          l.i0(p.M(), e, t);
        }
        serializeBase64String() {
          var e = new o.BinaryWriter();
          return p.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFovasVideo_ClientGetOPFSettings_Request";
        }
      }
      class _ extends c {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            _.prototype.app_id || l.Sg(_.M()),
            c.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            _.sm_m ||
              (_.sm_m = {
                proto: _,
                fields: {
                  app_id: { n: 1, br: l.qM.readUint32, bw: l.gp.writeUint32 },
                  opf_settings: {
                    n: 2,
                    br: l.qM.readString,
                    bw: l.gp.writeString,
                  },
                },
              }),
            _.sm_m
          );
        }
        static MBF() {
          return _.sm_mbf || (_.sm_mbf = l.w0(_.M())), _.sm_mbf;
        }
        toObject(e = !1) {
          return _.toObject(e, this);
        }
        static toObject(e, t) {
          return l.BT(_.M(), e, t);
        }
        static fromObject(e) {
          return l.Uq(_.M(), e);
        }
        static deserializeBinary(e) {
          let t = new o.BinaryReader(e),
            r = new _();
          return _.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return l.zj(_.MBF(), e, t);
        }
        serializeBinary() {
          var e = new o.BinaryWriter();
          return _.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          l.i0(_.M(), e, t);
        }
        serializeBase64String() {
          var e = new o.BinaryWriter();
          return _.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CFovasVideo_ClientGetOPFSettings_Response";
        }
      }
      class h extends c {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            h.prototype.app_id || l.Sg(h.M()),
            c.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            h.sm_m ||
              (h.sm_m = {
                proto: h,
                fields: {
                  app_id: { n: 1, br: l.qM.readUint32, bw: l.gp.writeUint32 },
                  playback_position_in_seconds: {
                    n: 2,
                    br: l.qM.readUint32,
                    bw: l.gp.writeUint32,
                  },
                  video_track_id: {
                    n: 3,
                    br: l.qM.readUint64String,
                    bw: l.gp.writeUint64String,
                  },
                  audio_track_id: {
                    n: 4,
                    br: l.qM.readUint64String,
                    bw: l.gp.writeUint64String,
                  },
                  timedtext_track_id: {
                    n: 5,
                    br: l.qM.readUint64String,
                    bw: l.gp.writeUint64String,
                  },
                  last_modified: {
                    n: 6,
                    br: l.qM.readUint32,
                    bw: l.gp.writeUint32,
                  },
                  hide_from_watch_history: {
                    n: 7,
                    d: !1,
                    br: l.qM.readBool,
                    bw: l.gp.writeBool,
                  },
                  hide_from_library: {
                    n: 8,
                    d: !1,
                    br: l.qM.readBool,
                    bw: l.gp.writeBool,
                  },
                },
              }),
            h.sm_m
          );
        }
        static MBF() {
          return h.sm_mbf || (h.sm_mbf = l.w0(h.M())), h.sm_mbf;
        }
        toObject(e = !1) {
          return h.toObject(e, this);
        }
        static toObject(e, t) {
          return l.BT(h.M(), e, t);
        }
        static fromObject(e) {
          return l.Uq(h.M(), e);
        }
        static deserializeBinary(e) {
          let t = new o.BinaryReader(e),
            r = new h();
          return h.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return l.zj(h.MBF(), e, t);
        }
        serializeBinary() {
          var e = new o.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          l.i0(h.M(), e, t);
        }
        serializeBase64String() {
          var e = new o.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "VideoBookmark";
        }
      }
      class g extends c {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            g.prototype.bookmarks || l.Sg(g.M()),
            c.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            g.sm_m ||
              (g.sm_m = {
                proto: g,
                fields: { bookmarks: { n: 1, c: h, r: !0, q: !0 } },
              }),
            g.sm_m
          );
        }
        static MBF() {
          return g.sm_mbf || (g.sm_mbf = l.w0(g.M())), g.sm_mbf;
        }
        toObject(e = !1) {
          return g.toObject(e, this);
        }
        static toObject(e, t) {
          return l.BT(g.M(), e, t);
        }
        static fromObject(e) {
          return l.Uq(g.M(), e);
        }
        static deserializeBinary(e) {
          let t = new o.BinaryReader(e),
            r = new g();
          return g.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return l.zj(g.MBF(), e, t);
        }
        serializeBinary() {
          var e = new o.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          l.i0(g.M(), e, t);
        }
        serializeBase64String() {
          var e = new o.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CVideo_SetVideoBookmark_Notification";
        }
      }
      class y extends c {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            y.prototype.appids || l.Sg(y.M()),
            c.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            y.sm_m ||
              (y.sm_m = {
                proto: y,
                fields: {
                  appids: {
                    n: 1,
                    r: !0,
                    q: !0,
                    br: l.qM.readUint32,
                    pbr: l.qM.readPackedUint32,
                    bw: l.gp.writeRepeatedUint32,
                  },
                  updated_since: {
                    n: 2,
                    br: l.qM.readUint32,
                    bw: l.gp.writeUint32,
                  },
                },
              }),
            y.sm_m
          );
        }
        static MBF() {
          return y.sm_mbf || (y.sm_mbf = l.w0(y.M())), y.sm_mbf;
        }
        toObject(e = !1) {
          return y.toObject(e, this);
        }
        static toObject(e, t) {
          return l.BT(y.M(), e, t);
        }
        static fromObject(e) {
          return l.Uq(y.M(), e);
        }
        static deserializeBinary(e) {
          let t = new o.BinaryReader(e),
            r = new y();
          return y.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return l.zj(y.MBF(), e, t);
        }
        serializeBinary() {
          var e = new o.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          l.i0(y.M(), e, t);
        }
        serializeBase64String() {
          var e = new o.BinaryWriter();
          return y.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CVideo_GetVideoBookmarks_Request";
        }
      }
      class S extends c {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            S.prototype.bookmarks || l.Sg(S.M()),
            c.initialize(this, e, 0, -1, [1], null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            S.sm_m ||
              (S.sm_m = {
                proto: S,
                fields: { bookmarks: { n: 1, c: h, r: !0, q: !0 } },
              }),
            S.sm_m
          );
        }
        static MBF() {
          return S.sm_mbf || (S.sm_mbf = l.w0(S.M())), S.sm_mbf;
        }
        toObject(e = !1) {
          return S.toObject(e, this);
        }
        static toObject(e, t) {
          return l.BT(S.M(), e, t);
        }
        static fromObject(e) {
          return l.Uq(S.M(), e);
        }
        static deserializeBinary(e) {
          let t = new o.BinaryReader(e),
            r = new S();
          return S.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return l.zj(S.MBF(), e, t);
        }
        serializeBinary() {
          var e = new o.BinaryWriter();
          return S.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          l.i0(S.M(), e, t);
        }
        serializeBase64String() {
          var e = new o.BinaryWriter();
          return S.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CVideo_GetVideoBookmarks_Response";
        }
      }
      var f, b, w;
      !(function (e) {
        (e.ClientGetVideoURL = function (e, t) {
          return e.SendMsg("Video.ClientGetVideoURL#1", (0, i.I8)(m, t), d, {
            ePrivilege: 1,
          });
        }),
          (e.SetVideoBookmark = function (e, t) {
            return e.SendNotification(
              "Video.SetVideoBookmark#1",
              (0, i.I8)(g, t),
              { ePrivilege: 1 },
            );
          }),
          (e.GetVideoBookmarks = function (e, t) {
            return e.SendMsg("Video.GetVideoBookmarks#1", (0, i.I8)(y, t), S, {
              ePrivilege: 1,
            });
          });
      })(f || (f = {})),
        (function (e) {
          e.NotifyUnlockedH264Handler = {
            name: "VideoClient.NotifyUnlockedH264#1",
            request: u,
          };
        })(b || (b = {})),
        (function (e) {
          e.ClientGetOPFSettings = function (e, t) {
            return e.SendMsg(
              "FovasVideo.ClientGetOPFSettings#1",
              (0, i.I8)(p, t),
              _,
              { ePrivilege: 1 },
            );
          };
        })(w || (w = {}));
      var v = r(68797),
        I = r(78327);
      class B {
        static s_VODStore;
        m_LoadingOAuth = null;
        m_transport;
        m_mapBookmarks = new Map();
        SetBookmarkForApp(e, t) {
          this.ValidateBookmarkData(t)
            ? this.m_mapBookmarks.set(e, h.fromObject(t))
            : this.InitializeBookmarkForApp(e);
        }
        ValidateBookmarkData(e) {
          const t = e;
          return (
            "object" == typeof t &&
            Number.isInteger(t.playback_position_in_seconds) &&
            Number.isInteger(t.app_id)
          );
        }
        InitializeBookmarkForApp(e) {
          if (!this.m_mapBookmarks.has(e)) {
            let t = {
              app_id: e,
              playback_position_in_seconds: 0,
              video_track_id: "0",
              audio_track_id: "0",
              timedtext_track_id: "0",
              hide_from_watch_history: !1,
              hide_from_library: !1,
            };
            this.m_mapBookmarks.set(e, new h(t));
          }
        }
        GetBookmarkPlayTimeInSeconds(e) {
          if (this.m_mapBookmarks.has(e)) {
            let t = this.m_mapBookmarks.get(e).playback_position_in_seconds();
            if (Number.isInteger(t)) return t;
          }
          return 0;
        }
        async SendBookMarkedTimeToServer(e, t, r, a, n) {
          if (!I.iA.logged_in) return;
          if (
            !this.m_transport &&
            (await this.m_LoadingOAuth, !this.m_transport)
          )
            return void console.warn(
              "CVideoBookmarkStore:SetBookMark no auth token / transport",
            );
          const s = i.w.Init(g);
          if (this.m_mapBookmarks.has(e)) {
            let i = this.m_mapBookmarks.get(e),
              o = !1;
            i.app_id() != e && ((o = !0), i.set_app_id(e)),
              i.playback_position_in_seconds() != t &&
                ((o = !0), i.set_playback_position_in_seconds(t)),
              (r = r || "0"),
              i.video_track_id() != r && (i.set_video_track_id(r), (o = !0)),
              (a = a || "0"),
              i.audio_track_id() != a && (i.set_audio_track_id(a), (o = !0)),
              (n = n || "0") != i.timedtext_track_id() &&
                (i.set_timedtext_track_id(n), (o = !0)),
              o &&
                (s.Body().add_bookmarks(i),
                f.SetVideoBookmark(this.m_transport, s));
          }
        }
        static Get() {
          return (
            B.s_VODStore || ((B.s_VODStore = new B()), B.s_VODStore.Init()),
            B.s_VODStore
          );
        }
        Init() {
          I.iA.logged_in && this.LoadWatchVideoOAuthToken();
        }
        async LoadWatchVideoOAuthToken() {
          const e =
              "community" == (0, I.yK)()
                ? I.TS.COMMUNITY_BASE_URL + "actions/ajaxgetwatchvodtoken"
                : I.TS.STORE_BASE_URL + "actions/ajaxgetwatchvodtoken",
            t = {};
          try {
            let r = await n().get(e, { params: t, withCredentials: !0 });
            if (
              r &&
              200 == r.status &&
              r.data &&
              1 == r.data.success &&
              r.data.webapi_token
            )
              return (
                (this.m_transport = new s.D(
                  I.TS.WEBAPI_BASE_URL,
                  r.data.webapi_token,
                ).GetServiceTransport()),
                this.m_transport
              );
          } catch (e) {
            let t = (0, v.H)(e);
            console.error(
              "CVideoBookmarkStore:LoadWatchVideoOAuthToken: Failed " +
                t.strErrorMsg,
              t,
            );
          }
          return null;
        }
      }
      class C {
        m_appid;
        constructor(e) {
          this.m_appid = e;
        }
        async SetBookmark(e, t, r, a) {
          I.iA.logged_in &&
            B.Get().SendBookMarkedTimeToServer(
              this.m_appid,
              Math.floor(e),
              t,
              r,
              a,
            );
        }
        GetBeginPlaytime() {
          return I.iA.logged_in
            ? B.Get().GetBookmarkPlayTimeInSeconds(this.m_appid)
            : 0;
        }
      }
    },
    74410: (e, t, r) => {
      "use strict";
      r.d(t, { Eo: () => d, V2: () => a, gH: () => m });
      var a,
        n = r(90626),
        i = r(59952),
        s = r(43070),
        o = r(78327),
        l = r(73662);
      function c(e) {
        return {
          sizeStr: e == a.full ? l.sizeFull : l.sizeThumb,
          alignStr: e == a.full ? "" : e == a.left ? l.floatLeft : l.floatRight,
        };
      }
      function m(e) {
        if ((0, o.Y2)()) return null;
        let t = (0, i.j$)(e.args);
        if (t) {
          let e = t.split(";");
          if (2 == e.length) {
            let t = e[0],
              r = e[1].toLocaleLowerCase();
            const { sizeStr: a, alignStr: i } = c(r);
            return n.createElement(s.A, {
              videoID: t,
              classNameAlign: i,
              classNameSize: a,
              bShowVideoImmediately: !0,
            });
          }
        }
        return n.createElement(n.Fragment, null);
      }
      function d(e) {
        if ((0, o.Y2)() || "CN" == o.TS.COUNTRY.toLocaleUpperCase())
          return (0, i.UT)(e);
        const t = (0, i.j$)(e.args, "youtubeid"),
          r = (0, i.j$)(e.args, "size"),
          a = (0, i.j$)(e.args, "seconds"),
          { sizeStr: l, alignStr: m } = c(r);
        return n.createElement(s.A, {
          videoID: t,
          nStartSeconds: a ? Number.parseInt(a) : void 0,
          classNameAlign: m,
          classNameSize: l,
          bShowVideoImmediately: !0,
        });
      }
      !(function (e) {
        (e.left = "leftthumb"),
          (e.right = "rightthumb"),
          (e.full = "full"),
          (e.summary = "summary");
      })(a || (a = {}));
    },
    43070: (e, t, r) => {
      "use strict";
      r.d(t, { A: () => B });
      var a,
        n = r(90626),
        i = r(13699),
        s = r(22797),
        o = r(4434),
        l = r(68797),
        c = r(52038),
        m = r(61859),
        d = r(82227),
        u = r(78327),
        p = r(34629),
        _ = r(62490),
        h = r(94607),
        g = r(73745);
      !(function (e) {
        (e[(e.NotLoaded = 0)] = "NotLoaded"),
          (e[(e.Loading = 1)] = "Loading"),
          (e[(e.Loaded = 2)] = "Loaded");
      })(a || (a = {}));
      let y = a.NotLoaded,
        S = [];
      function f(e) {
        if (y == a.Loaded) return void e();
        if (y == a.NotLoaded) {
          let e = document.createElement("script");
          e.src = "https://www.youtube.com/iframe_api";
          let t = document.getElementsByTagName("script")[0];
          t.parentNode.insertBefore(e, t), (window.onYouTubeIframeAPIReady = b);
        }
        S.findIndex((t) => e == t) < 0 && S.push(e);
      }
      function b() {
        y = a.Loaded;
        for (let e of S) e();
        S = [];
      }
      class w extends n.Component {
        m_strPlayerID = "";
        m_player = null;
        m_playerContainer = null;
        m_bPlayerReady = !1;
        static s_nPlayerIndex = 0;
        constructor(e) {
          super(e),
            (this.m_strPlayerID = "YoutubePlayer_" + w.s_nPlayerIndex++),
            (this.state = { bYoutubeLoaded: !1 });
        }
        componentWillUnmount() {
          var e;
          this.DestroyPlayer(), (e = this.OnYoutubeScriptsReady), _.x9(S, e);
        }
        shouldComponentUpdate(e, t) {
          if (!this.m_player) return !1;
          const r = this.props;
          return r.autoplay != e.autoplay ||
            r.controls != e.controls ||
            r.showInfo != e.showInfo ||
            r.video != e.video
            ? (this.CreatePlayer(e), !1)
            : ((r.width == e.width && r.height == e.height) ||
                (this.m_bPlayerReady &&
                  e.width &&
                  e.height &&
                  this.m_player.setSize(e.width, e.height)),
              r.forcePause != e.forcePause);
        }
        componentDidUpdate(e) {
          e.forcePause != this.props.forcePause &&
            (this.props.forcePause
              ? this.m_player.pauseVideo()
              : this.m_player.playVideo());
        }
        DestroyPlayer() {
          if (this.m_player)
            try {
              this.m_player.stopVideo && this.m_player.stopVideo(),
                this.m_player.destroy && this.m_player.destroy();
            } catch (e) {
            } finally {
              this.m_player = null;
            }
        }
        BindPlayerContainer(e) {
          this.m_playerContainer != e &&
            ((this.m_playerContainer = e),
            this.DestroyPlayer(),
            this.m_playerContainer && f(this.OnYoutubeScriptsReady));
        }
        OnYoutubeScriptsReady() {
          this.CreatePlayer(this.props);
        }
        CreatePlayer(e) {
          if ((this.DestroyPlayer(), !this.m_playerContainer)) return;
          const t = !1 === e.autoplay ? 0 : 1,
            r = !0 === e.showInfo ? 1 : 0,
            a = !0 === e.controls ? 1 : 0,
            n = !0 === e.showFullscreenBtn ? 1 : 0,
            i = !0 === e.playsInline ? 1 : 0;
          let s = {
              width: void 0 !== e.width ? String(e.width) : void 0,
              height: void 0 !== e.height ? String(e.height) : void 0,
              videoId: e.video,
              playerVars: {
                autoplay: t,
                showinfo: r,
                autohide: 1,
                fs: n,
                modestbranding: 1,
                rel: 0,
                playsinline: i,
                iv_load_policy: 3,
                controls: a,
                start: e.startSeconds,
              },
              events: {
                onReady: this.OnPlayerReady,
                onStateChange: this.OnPlayerStateChange,
                onError: this.OnError,
              },
            },
            o = this.m_playerContainer.firstElementChild;
          (this.m_bPlayerReady = !1), (this.m_player = new YT.Player(o, s));
        }
        OnPlayerReady(e) {
          if (((this.m_bPlayerReady = !0), this.props.onVideoInfoChanged)) {
            let e = this.m_player.getVideoData(),
              t = { strAuthor: "", strTitle: "", strVideoID: "" };
            e.author && (t.strAuthor = e.author),
              e.title && (t.strTitle = e.title),
              e.video_id && (t.strVideoID = e.video_id),
              this.props.onVideoInfoChanged(t);
          }
          this.props.width &&
            this.props.height &&
            this.m_player.setSize(this.props.width, this.props.height),
            this.props.autoplay && this.m_player.playVideo(),
            this.props.onPlayerReady && this.props.onPlayerReady();
        }
        OnPlayerStateChange(e) {
          switch (e.data) {
            case YT.PlayerState.UNSTARTED:
              break;
            case YT.PlayerState.BUFFERING:
              this.props.onBuffering && this.props.onBuffering();
              break;
            case YT.PlayerState.PLAYING:
              this.props.onPlaying && this.props.onPlaying();
              break;
            case YT.PlayerState.PAUSED:
              this.props.onPaused && this.props.onPaused();
              break;
            case YT.PlayerState.ENDED:
              this.props.onMovieEnd && this.props.onMovieEnd();
          }
        }
        OnError(e) {
          console.log("Youtube: Playback failed", e),
            this.props.onError && this.props.onError(e);
        }
        OnPlayerLeftView() {
          this.props.autopause &&
            this.m_player &&
            this.m_bPlayerReady &&
            this.m_player.pauseVideo();
        }
        PlayVideo(e) {
          this.m_player &&
            this.m_bPlayerReady &&
            (e && this.m_player.seekTo(0, !0), this.m_player.playVideo());
        }
        render() {
          const e = n.createElement(
            "div",
            {
              key: this.m_strPlayerID,
              ref: this.BindPlayerContainer,
              className: (0, c.A)("YoutubePlayer", this.props.classnames),
            },
            n.createElement(s.t, { className: "YoutubePlayerThrobber" }),
          );
          return this.props.autopause
            ? n.createElement(h.Y, { onLeave: this.OnPlayerLeftView }, e)
            : e;
        }
      }
      (0, p.Cg)([g.oI], w.prototype, "BindPlayerContainer", null),
        (0, p.Cg)([g.oI], w.prototype, "OnYoutubeScriptsReady", null),
        (0, p.Cg)([g.oI], w.prototype, "CreatePlayer", null),
        (0, p.Cg)([g.oI], w.prototype, "OnPlayerReady", null),
        (0, p.Cg)([g.oI], w.prototype, "OnPlayerStateChange", null),
        (0, p.Cg)([g.oI], w.prototype, "OnError", null),
        (0, p.Cg)([g.oI], w.prototype, "OnPlayerLeftView", null),
        (0, p.Cg)([g.oI], w.prototype, "PlayVideo", null);
      var v = r(73662),
        I = r.n(v);
      function B(e) {
        const {
            videoID: t,
            bShowVideoImmediately: r,
            bAutoPlay: a,
            nStartSeconds: p,
            classNameSize: _,
            classNameAlign: h,
          } = e,
          [g, y] = (0, n.useState)(!r),
          [S, b] = (0, n.useState)(!1),
          v = (0, o.m)("YouTubeInlineSnippet"),
          [B, C] = (0, n.useState)({
            title: (0, m.we)("#Loading"),
            description: "",
            videoid: t,
            views: "0",
          });
        (0, n.useEffect)(() => {
          g &&
            i.R.LoadYouTubeDynamicData([t], v)
              .then((e) => {
                !v.token.reason && e.length > 0 && (C(e[0]), b(!0));
              })
              .catch((e) =>
                console.error(
                  "YouTubeInlineSnippet: " + (0, l.H)(e).strErrorMsg,
                ),
              );
        }, [g, v, t]);
        const E = !1;
        if (
          (n.useEffect(() => {
            r && f(() => {});
          }, [r, E]),
          g)
        ) {
          const e = B.title,
            r = B.views,
            a = B.description;
          return n.createElement(
            "div",
            { className: I().DynamicLinkBox, onClick: () => y(!1) },
            n.createElement("img", {
              className: I().DynamicLink_Preview,
              src: "https://img.youtube.com/vi/" + t + "/0.jpg",
            }),
            n.createElement(
              "div",
              { className: I().DynamicLink_Content },
              n.createElement(
                "div",
                { className: I().DynamicLink_Name },
                (0, m.we)("#EventEditor_YouTubeVideoTitle", e),
              ),
              n.createElement(
                "div",
                { className: I().DynamicLink_YoutubeViews },
                (0, m.we)(
                  "#EventEditor_YouTubeVideoViews",
                  (0, d.Dq)(Number(r)),
                ),
              ),
              n.createElement(
                "div",
                { className: I().Dynamiclink_Content },
                S && a,
                !S && n.createElement(s.t, { size: "medium" }),
              ),
            ),
          );
        }
        return n.createElement(
          "div",
          { className: (0, c.A)(I().PreviewYouTubeVideo, _, h), id: t },
          n.createElement("img", {
            className: I().PlaceholderImg,
            src:
              u.TS.COMMUNITY_CDN_URL +
              "public/shared/images/responsive/youtube_16x9_placeholder.gif",
          }),
          n.createElement(w, {
            video: t,
            autoplay: a ?? !1,
            startSeconds: p,
            controls: !0,
            playsInline: !0,
            autopause: !0,
            showFullscreenBtn: !0,
          }),
        );
      }
    },
    10050: (e, t, r) => {
      "use strict";
      r.d(t, { M: () => i });
      var a = r(90626),
        n = r(80724);
      function i(e) {
        const { children: t, ...r } = e,
          i = a.useRef(null);
        return a.createElement(n.A, { nodeRef: i, ...r }, e.children(i));
      }
    },
    65937: (e, t, r) => {
      "use strict";
      r.d(t, { h: () => M });
      var a = r(90626),
        n = r(55963),
        i = r(30894);
      const s = (0, a.createContext)({}),
        o = () => (0, a.useContext)(s);
      var l = r(20194),
        c = r(56545),
        m = r(23809),
        d = r(17690),
        u = r(80613),
        p = r(89068);
      const _ = u.Message;
      class h extends _ {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            h.prototype.packageid || p.Sg(h.M()),
            _.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            h.sm_m ||
              (h.sm_m = {
                proto: h,
                fields: {
                  packageid: { n: 1, br: p.qM.readInt32, bw: p.gp.writeInt32 },
                  country_code: {
                    n: 2,
                    br: p.qM.readString,
                    bw: p.gp.writeString,
                  },
                },
              }),
            h.sm_m
          );
        }
        static MBF() {
          return h.sm_mbf || (h.sm_mbf = p.w0(h.M())), h.sm_mbf;
        }
        toObject(e = !1) {
          return h.toObject(e, this);
        }
        static toObject(e, t) {
          return p.BT(h.M(), e, t);
        }
        static fromObject(e) {
          return p.Uq(h.M(), e);
        }
        static deserializeBinary(e) {
          let t = new u.BinaryReader(e),
            r = new h();
          return h.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return p.zj(h.MBF(), e, t);
        }
        serializeBinary() {
          var e = new u.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          p.i0(h.M(), e, t);
        }
        serializeBase64String() {
          var e = new u.BinaryWriter();
          return h.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPhysicalGoods_CheckInventoryAvailableByPackage_Request";
        }
      }
      class g extends _ {
        static ImplementsStaticInterface() {}
        constructor(e = null) {
          super(),
            g.prototype.inventory_available || p.Sg(g.M()),
            _.initialize(this, e, 0, -1, void 0, null);
        }
        static sm_m;
        static sm_mbf;
        static M() {
          return (
            g.sm_m ||
              (g.sm_m = {
                proto: g,
                fields: {
                  inventory_available: {
                    n: 1,
                    br: p.qM.readBool,
                    bw: p.gp.writeBool,
                  },
                  high_pending_orders: {
                    n: 2,
                    br: p.qM.readBool,
                    bw: p.gp.writeBool,
                  },
                },
              }),
            g.sm_m
          );
        }
        static MBF() {
          return g.sm_mbf || (g.sm_mbf = p.w0(g.M())), g.sm_mbf;
        }
        toObject(e = !1) {
          return g.toObject(e, this);
        }
        static toObject(e, t) {
          return p.BT(g.M(), e, t);
        }
        static fromObject(e) {
          return p.Uq(g.M(), e);
        }
        static deserializeBinary(e) {
          let t = new u.BinaryReader(e),
            r = new g();
          return g.deserializeBinaryFromReader(r, t);
        }
        static deserializeBinaryFromReader(e, t) {
          return p.zj(g.MBF(), e, t);
        }
        serializeBinary() {
          var e = new u.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBuffer();
        }
        static serializeBinaryToWriter(e, t) {
          p.i0(g.M(), e, t);
        }
        serializeBase64String() {
          var e = new u.BinaryWriter();
          return g.serializeBinaryToWriter(this, e), e.getResultBase64String();
        }
        getClassName() {
          return "CPhysicalGoods_CheckInventoryAvailableByPackage_Response";
        }
      }
      var y;
      !(function (e) {
        e.CheckInventoryAvailableByPackage = function (e, t) {
          return e.SendMsg(
            "PhysicalGoods.CheckInventoryAvailableByPackage#1",
            (0, c.I8)(h, t),
            g,
            { bConstMethod: !0, ePrivilege: 0, eWebAPIKeyRequirement: 1 },
          );
        };
      })(y || (y = {}));
      var S = r(30470);
      const f = { high_pending_orders: !1, inventory_available: !0 };
      function b(e) {
        const t = (0, m.rW)(),
          r = (0, l.I)({
            queryKey: [e?.GetID() || d.sc, e?.GetStoreItemType() || "invalid"],
            queryFn: () =>
              (async function (e, t) {
                if (!e || 1 !== e.GetStoreItemType() || 10 !== e.GetAppType())
                  return f;
                const r = c.w.Init(h);
                r.Body().set_packageid(e.GetID()),
                  r.Body().set_country_code(S.iA.country_code);
                const a = await y.CheckInventoryAvailableByPackage(t, r);
                if (1 !== a.GetEResult())
                  throw (
                    (console.error(
                      "Received error from FetchPhysicalGoodsStock",
                      a.GetEResult(),
                    ),
                    new Error(
                      `Error from FetchPhysicalGoodsStock: ${a.GetEResult()}`,
                    ))
                  );
                return a.Body().toObject();
              })(e, t),
            enabled: Boolean(e?.GetID() && 10 === e.GetAppType()),
          });
        return r.isLoading ? null : r.data;
      }
      var w = r(62792),
        v = r(55263),
        I = r(51272),
        B = r(52038),
        C = r(61859),
        E = r(78327),
        T = r(22797),
        A = r(82080),
        G = r.n(A),
        D = r(60014);
      function M(e) {
        const { info: t, className: r } = e,
          s = (0, D.n9)(),
          [o] = (0, v.G6)(t.id, (0, w.SW)(t.type), {}),
          l = b(o);
        (0, a.useEffect)(() => {
          i.Fm.Get().HintLoad();
        }, []);
        const c = (0, a.useCallback)(() => {
          (0, I.Id)(window, `steam://run/${o?.GetAppIDToRun()}`);
        }, [o]);
        if (!o || 8 == o.GetAppType()) return null;
        const m = o.GetBestPurchaseOption(),
          d =
            o.BIsFree() ||
            "0" == o.GetBestPurchasePriceFormatted() ||
            o.GetBestPurchaseOption().discount_pct >= 100;
        if (1 == o.GetStoreItemType())
          if (10 == o.GetAppType()) {
            if (!l)
              return a.createElement(T.t, {
                size: "small",
                position: "center",
              });
            if (!l.inventory_available)
              return a.createElement(
                "div",
                { className: (0, B.A)(G().ActionOutOfStock, r) },
                a.createElement(
                  "span",
                  null,
                  " ",
                  (0, C.we)("#Sale_ReserveExhausted"),
                ),
              );
          } else if (d && o.GetIncludedAppIDs().length > 1) return null;
        if (0 == o.GetStoreItemType()) {
          if (o.BIsComingSoon() && !m?.packageid) return null;
          const e = i.Fm.Get().BOwnsApp(o.GetAppID());
          if (e && 10 === o.GetAppType()) return null;
          if (!e && m?.is_free_to_keep) {
            if (E.TS.IN_CLIENT || "store" != (0, E.yK)()) {
              const e = (0, n.wJ)(
                `${E.TS.IN_CLIENT ? "steam://openurl/" : ""}${o.GetStorePageURL()}`,
                s,
              );
              return a.createElement(
                "div",
                {
                  onClick: (t) => (0, I.Id)(t, e),
                  className: (0, B.A)(G().Action, r),
                },
                a.createElement(
                  "span",
                  null,
                  (0, C.we)("#EventDisplay_CallToAction_VisitStore"),
                ),
              );
            }
            {
              const e = (0, n.wJ)(
                `${E.TS.STORE_BASE_URL}freelicense/addfreelicense`,
                s,
              );
              return a.createElement(
                "form",
                { action: e, method: "POST" },
                a.createElement("input", {
                  type: "hidden",
                  name: "subid",
                  value: m.packageid,
                }),
                a.createElement("input", {
                  type: "hidden",
                  name: "sessionid",
                  value: E.TS.SESSIONID,
                }),
                a.createElement(
                  "button",
                  { className: (0, B.A)(G().Action, r), type: "submit" },
                  (0, C.we)("#EventDisplay_CallToAction_AddToAccount"),
                ),
              );
            }
          }
          if ((e || d) && !o.BIsComingSoon()) {
            let t = (0, C.we)("#EventDisplay_CallToAction_PlayNowForFree");
            return (
              e
                ? (t = (0, C.we)("#EventDisplay_CallToAction_PlayNow"))
                : o.BIsFreeTemporary() &&
                  (t = (0, C.we)("#EventDisplay_CallToAction_AddToAccount")),
              a.createElement(
                "div",
                { className: (0, B.A)(G().Action, r), onClick: c },
                a.createElement("span", null, t),
              )
            );
          }
          if ("" == o.GetBestPurchasePriceFormatted()) {
            const e = (0, n.wJ)(o.GetStorePageURL(), s);
            return a.createElement(
              "a",
              { href: e, className: (0, B.A)(G().Action, r) },
              (0, C.we)("#EventDisplay_CallToAction_VisitStore"),
            );
          }
        }
        return a.createElement(R, { className: r, storeItem: o, info: t });
      }
      function R(e) {
        const { className: t, storeItem: r, info: s } = e,
          l = (0, D.n9)(),
          c = o(),
          m = (0, a.useCallback)(
            (e) => {
              let t, a;
              if (
                (2 == r?.GetStoreItemType() ||
                r?.GetBestPurchaseOption().bundleid
                  ? (t =
                      2 == r?.GetStoreItemType()
                        ? s.id
                        : r?.GetBestPurchaseOption().bundleid)
                  : (a = r?.GetBestPurchaseOption().packageid),
                void 0 !== window.g_bUseNewCartAPI &&
                  window.g_bUseNewCartAPI &&
                  "function" == typeof window.AddItemToCart)
              )
                return window.AddItemToCart(a, t, (0, D.pn)(l)), !0;
              {
                const r = `${E.TS.STORE_BASE_URL}cart/addtocart`,
                  s = `${E.TS.STORE_BASE_URL}cart`,
                  o = (0, n.L3)(l);
                i.Fm.Get().AddToCart(e, a, r, s, o, t, c);
              }
              return !0;
            },
            [r, l, s.id, c],
          );
        return a.createElement(
          "div",
          { className: (0, B.A)(G().Action, t), onClick: m },
          a.createElement("span", null, (0, C.we)("#Store_AddToCart")),
        );
      }
    },
    44736: (e, t, r) => {
      "use strict";
      r.d(t, { ac: () => F, H7: () => k });
      var a = r(34542),
        n = r(22837),
        i = r(81393),
        s = r(64753),
        o = r(8527),
        l = r(65946),
        c = r(90626),
        m = r(59952),
        d = r(96059),
        u = r(90362),
        p = r(9154),
        _ = r(22797),
        h = r(52038),
        g = r(61859),
        y = r(91675),
        S = r(30470),
        f = r(24484),
        b = r(62490),
        w = r(17720),
        v = r(71541);
      function I(e) {
        const {
            transport: t,
            eventModel: r,
            fnConfirm: a,
            fnHideModal: i,
            nMaxPerTeam: s,
            bAddingOrChangingSessions: l,
          } = e,
          m = (0, n.sf)(S.TS.LANGUAGE),
          [d, h] = c.useState({}),
          [y, I] = c.useState(!1),
          B = c.useCallback(
            (e) => {
              h({ ...d, ...e });
            },
            [d],
          ),
          C = (0, u.V)(
            t,
            r.clanSteamID.GetAccountID(),
            r.GID,
            new w.b(o.iA.steamid),
          ),
          {
            sUserAccountEmail: E,
            sUserAccountRealName: T,
            rgPartners: A,
          } = c.useMemo(
            () => ({
              sUserAccountRealName: (0, f.Tc)("realname", "application_config"),
              sUserAccountEmail: (0, f.Tc)("email", "application_config"),
              rgPartners: (0, f.Tc)("partners", "application_config") ?? [],
            }),
            [],
          ),
          [G, D] = c.useState(void 0),
          [M, R] = c.useState(void 0),
          k = c.useMemo(() => {
            const e = [];
            return (
              null == M &&
                e.push({
                  data: void 0,
                  label: (0, g.we)("#MeetSteam_ChoosePartner"),
                }),
              e.push(
                ...A.map((e, t) => ({
                  data: e.partnerid,
                  label: e.partner_name,
                })),
              ),
              e.push({
                data: 0,
                label: (0, g.we)("#MeetSteam_ChoosePartnerOther"),
              }),
              e
            );
          }, [A, M]);
        c.useEffect(() => {
          if (!C.isSuccess) return;
          const e = A.find((e) => e.partnerid == C.data.partner_id),
            t = 0 === C.data.partner_id ? 0 : e?.partnerid;
          R(t), D(t), h(C.data);
        }, [C.isSuccess, C.data, A]);
        const F = A?.length > 0,
          U = !F || null != M,
          L = U && 0 === M;
        c.useEffect(() => {
          if (M == G) return;
          if ((D(M), !F || !U)) return;
          let e;
          const t = A.find((e) => e.partnerid == M);
          var r;
          (e =
            L || !t
              ? {
                  name: E?.length > 0 ? T : void 0,
                  email_override: E?.length > 0 ? E : void 0,
                  partner_id: 0,
                }
              : {
                  name:
                    t.partneruserrealname?.length > 0
                      ? t.partneruserrealname
                      : void 0,
                  company: t.partner_name?.length > 0 ? t.partner_name : void 0,
                  email_override:
                    t.partneruseremail?.length > 0
                      ? t.partneruseremail
                      : void 0,
                  partner_id: t.partnerid,
                }),
            Object.values(e).some((e) => null != e) &&
              B(
                ((r = e),
                Object.fromEntries(
                  Object.entries(r).filter(([e, t]) => void 0 !== t),
                )),
              );
        }, [U, L, F, M, G, A, E, T, B]);
        const P = C.isLoading || y,
          O = l
            ? (0, g.we)("#MeetSteam_Register_title", r.GetNameWithFallback(m))
            : (0, g.we)("#MeetSteam_Unregister_title"),
          z =
            !l ||
            (U &&
              d.name?.length > 0 &&
              (!d.guest_names || d.guest_names?.every((e) => e.length > 0)) &&
              d.email_override?.length > 0 &&
              d.company?.length > 0);
        return c.createElement(
          p.EN,
          { active: !0 },
          P &&
            c.createElement(
              p.eV,
              { bOKDisabled: !0, bHideCloseIcon: !0, onCancel: () => !1 },
              c.createElement(_.t, {
                size: "medium",
                position: "center",
                string: y ? (0, g.we)("#Saving") : (0, g.we)("#Loading"),
              }),
            ),
          !P &&
            c.createElement(
              p.o0,
              {
                strTitle: O,
                onCancel: i,
                bOKDisabled: !z,
                onOK: async () => {
                  I(!0), await a(d), I(!1), C.refetch(), i();
                },
              },
              l &&
                c.createElement(
                  c.Fragment,
                  null,
                  F &&
                    c.createElement(v.m, {
                      label: (0, g.we)("#MeetSteam_Reg_Preset"),
                      tooltip: (0, g.we)("#MeetSteam_Reg_Preset_ttip"),
                      rgOptions: k,
                      selectedOption: M,
                      onChange: (e) => R(e.data),
                    }),
                  U &&
                    c.createElement(
                      c.Fragment,
                      null,
                      c.createElement(v.pd, {
                        type: "text",
                        label: (0, g.we)("#MeetSteam_Reg_Name"),
                        value: d.name || "",
                        onChange: (e) => B({ name: e.currentTarget.value }),
                      }),
                      c.createElement(v.pd, {
                        type: "text",
                        label: (0, g.we)("#MeetSteam_Reg_Email"),
                        value: d.email_override || "",
                        mustBeEmail: !0,
                        onChange: (e) =>
                          B({ email_override: e.currentTarget.value }),
                      }),
                      c.createElement(v.pd, {
                        type: "text",
                        label: (0, g.we)("#MeetSteam_Reg_Company"),
                        value: d.company || "",
                        onChange: (e) => B({ company: e.currentTarget.value }),
                      }),
                      c.createElement(v.pd, {
                        type: "text",
                        label: (0, g.we)("#MeetSteam_Reg_Game"),
                        value: d.game || "",
                        onChange: (e) => B({ game: e.currentTarget.value }),
                      }),
                      Boolean(s > 0) &&
                        c.createElement(v.m, {
                          label: (0, g.we)("#MeetSteam_Reg_GuestCount", s),
                          tooltip: (0, g.we)("#MeetSteam_Reg_GuestCount_ttip"),
                          rgOptions: Array.from({ length: s }).map((e, t) => ({
                            data: t,
                            label: t,
                          })),
                          selectedOption: (d.guests_registered ?? 1) - 1,
                          onChange: (e) =>
                            B({
                              guests_registered: e.data + 1,
                              guest_names:
                                d.guest_names?.length > e.data
                                  ? d.guest_names.slice(0, e.data)
                                  : b.$Y(d.guest_names ?? [], e.data, ""),
                            }),
                        }),
                      Boolean(d.guests_registered > 1) &&
                        c.createElement(
                          "div",
                          null,
                          c.createElement(
                            "div",
                            null,
                            (0, g.we)("#MeetSteam_Reg_Others"),
                          ),
                          d.guest_names.map((e, t) =>
                            c.createElement(v.pd, {
                              key: "guesname_" + t,
                              type: "text",
                              label: (0, g.we)("#MeetSteam_Reg_Others_name"),
                              value: e,
                              onChange: (e) => {
                                const r = [...d.guest_names];
                                (r[t] = e.currentTarget.value),
                                  B({ guest_names: r });
                              },
                            }),
                          ),
                        ),
                    ),
                ),
            ),
        );
      }
      var B = r(34629),
        C = r(56545),
        E = r(85737),
        T = r(14947);
      class A {
        m_isLoading = !1;
        m_existingRegistrations = new Map();
        m_selections = new Map();
        m_transport;
        m_userAccountID;
        m_clanAccountID;
        m_gidClanEvent;
        static s_Singleton;
        static Get() {
          return A.s_Singleton || (A.s_Singleton = new A()), A.s_Singleton;
        }
        constructor() {
          (0, T.Gn)(this);
        }
        Init(e, t, r, a) {
          (this.m_transport = e),
            (this.m_userAccountID = t),
            (this.m_clanAccountID = r),
            (this.m_gidClanEvent = a);
        }
        async Load() {
          if (this.m_isLoading) return;
          if (this.m_clanAccountID != k()) return;
          const e = C.w.Init(E.q3),
            t = w.b.InitFromAccountID(this.m_userAccountID);
          e.Body().set_clan_event_gid(this.m_gidClanEvent),
            e.Body().set_steamid(t.ConvertTo64BitString()),
            this.m_existingRegistrations.clear(),
            this.m_selections.clear(),
            (this.m_isLoading = !0);
          const r = await E.ZK.GetRegistrations(this.m_transport, e);
          (this.m_isLoading = !1),
            r.BSuccess() &&
              (0, T.h5)(() => {
                r.Body()
                  .registrations()
                  .forEach((e) => {
                    const t = e.toObject(),
                      r = {
                        ...t,
                        regmodel: t.jsondata ? JSON.parse(t.jsondata) : void 0,
                      };
                    this.m_existingRegistrations.set(r.group_id, r),
                      this.m_selections.set(r.group_id, r.session_id);
                  });
              });
        }
        SetSelection(e, t) {
          t > 0 ? this.m_selections.set(e, t) : this.m_selections.delete(e);
        }
        BIsLoading() {
          return this.m_isLoading;
        }
        GetSelectedGroups() {
          return Array.from(this.m_selections.keys());
        }
        GetSelection(e) {
          return this.m_selections.get(e);
        }
        GetRegistrationStatus(e, t) {
          const r = this.m_existingRegistrations.get(e)?.session_id == t,
            a = this.m_selections.get(e) == t;
          return r && a ? 1 : !r && a ? 2 : r && !a ? 3 : 0;
        }
        BHaveSelectionsChanged() {
          return (
            (0 != this.m_selections.size ||
              0 != this.m_existingRegistrations.size) &&
            (this.m_selections.size != this.m_existingRegistrations.size ||
              !Array.from(this.m_selections.entries()).every(
                (e) =>
                  this.m_existingRegistrations.get(e[0])?.session_id == e[1],
              ))
          );
        }
        BIsAddingOrChangingSelections() {
          return Array.from(this.m_selections.entries()).some(
            (e) =>
              !this.m_existingRegistrations.get(e[0]) ||
              this.m_existingRegistrations.get(e[0]).session_id != e[1],
          );
        }
        async Save(e) {
          let t = !0;
          for (const [r, a] of this.m_selections) {
            const n = C.w.Init(E.Ku);
            n.Body().set_clan_event_gid(this.m_gidClanEvent),
              n
                .Body()
                .set_steamid(
                  w.b
                    .InitFromAccountID(this.m_userAccountID)
                    .ConvertTo64BitString(),
                ),
              n.Body().set_registration_group_id(r),
              n.Body().set_registration_session_id(a),
              n.Body().set_guest_count(e.guests_registered ?? 1),
              n.Body().set_jsondata(JSON.stringify(e));
            const i = await E.ZK.UpdateRegistration(this.m_transport, n);
            t = t && i.BSuccess();
          }
          for (const [e, r] of this.m_existingRegistrations) {
            if (this.m_selections.has(r.group_id)) continue;
            const a = C.w.Init(E.Ku);
            a.Body().set_clan_event_gid(this.m_gidClanEvent),
              a
                .Body()
                .set_steamid(
                  w.b
                    .InitFromAccountID(this.m_userAccountID)
                    .ConvertTo64BitString(),
                ),
              a.Body().set_registration_group_id(e),
              a.Body().set_registration_session_id(0),
              a.Body().set_guest_count(0),
              a.Body().set_jsondata(JSON.stringify({}));
            const n = await E.ZK.UpdateRegistration(this.m_transport, a);
            t = t && n.BSuccess();
          }
          return await this.Load(), t;
        }
      }
      function G() {
        return (0, l.q3)(() => A.Get().BIsLoading());
      }
      (0, B.Cg)([T.sH], A.prototype, "m_isLoading", void 0),
        (0, B.Cg)([T.sH], A.prototype, "m_existingRegistrations", void 0),
        (0, B.Cg)([T.sH], A.prototype, "m_selections", void 0),
        (0, B.Cg)([T.XI.bound], A.prototype, "SetSelection", null);
      var D = r(60746),
        M = r(82477),
        R = r(738);
      const k = () => (2 === S.TS.EUNIVERSE ? 2581 : 45267781);
      function F(e) {
        const t = e.context.event,
          r = e.context.showErrorInfo,
          a = (0, m.j$)(e.args, "group_id"),
          n = Number.parseInt(a),
          i = (0, l.q3)(() => W(t, n));
        return i
          ? t.clanSteamID.GetAccountID() != k()
            ? r
              ? c.createElement("div", null, "Only support on special group")
              : null
            : c.createElement(
                c.Fragment,
                null,
                c.createElement(L, { groupData: i, eventModel: t }),
                c.createElement(N, { eventModel: t }),
              )
          : r
            ? c.createElement(
                "div",
                null,
                "Failed to find session group id ",
                n,
              )
            : null;
      }
      function U() {
        const e = (0, f.Tc)("promotion_operation_token", "application_config");
        (0, i.w)(Boolean(e), "require promotion_operation_token");
        const [t] = c.useState(() =>
          new d.D(S.TS.WEBAPI_BASE_URL, e).GetServiceTransport(),
        );
        return t;
      }
      function L(e) {
        const { groupData: t, eventModel: r } = e,
          n = U(),
          i = G(),
          s = (0, u.m)(n, r.clanSteamID.GetAccountID(), r.GID),
          m = t?.sessions,
          d = H(),
          p = (0, l.q3)(() =>
            m?.reduce(
              (e, r) =>
                e.set(r.id, A.Get().GetRegistrationStatus(t.group_id, r.id)),
              new Map(),
            ),
          );
        if (!s.isSuccess || (i && o.iA.accountid))
          return c.createElement(_.t, {
            size: "medium",
            position: "center",
            string: (0, g.we)("#Loading"),
          });
        return c.createElement(
          P,
          { groupData: t },
          m?.map((e, r) => {
            const n = s.data.find(
                (r) => r.group_id === t.group_id && r.session_id === e.id,
              ),
              i = p.get(e.id),
              o = r + 1 < m.length;
            return c.createElement(
              c.Fragment,
              { key: "timecol_" + t.group_id + "_" + e.id },
              c.createElement(
                "div",
                { className: a.SessionColumnCtn },
                c.createElement(O, {
                  sessionData: e,
                  onClick: () =>
                    d(() =>
                      ((e) => {
                        const r = A.Get().GetSelection(t.group_id) == e;
                        A.Get().SetSelection(t.group_id, r ? void 0 : e);
                      })(e.id),
                    ),
                  nGuestReservations: n?.guest_count || 0,
                  eRegistrationStatus: i,
                }),
              ),
              o && c.createElement(z, null),
            );
          }),
        );
      }
      function P(e) {
        const { groupData: t, children: r } = e,
          i = (0, n.sf)(S.TS.LANGUAGE),
          s = g.NT.GetWithFallback(t?.localized_session_title, i),
          o = g.NT.GetWithFallback(t?.localized_session_description, i);
        return t
          ? c.createElement(
              "div",
              { className: (0, h.A)({ [a.Ctn]: !0, [a.CtnRegistered]: !1 }) },
              Boolean(s) &&
                c.createElement("div", { className: a.SessionTitle }, s),
              Boolean(o) &&
                c.createElement("div", { className: a.SessionDesc }, o),
              c.createElement("div", { className: a.SessionOptions }, r),
            )
          : null;
      }
      function O(e) {
        const {
            sessionData: t,
            onClick: r,
            nGuestReservations: n,
            eRegistrationStatus: i = 0,
          } = e,
          [s, o, m] = (0, l.q3)(() => [
            t.rtime_start,
            t.rtime_end,
            t.max_capacity,
          ]),
          d = Math.max(0, m - (n || 0)),
          u = (0 === i && d > 0) || 1 === i || 2 === i || 3 === i;
        return c.createElement(
          c.Fragment,
          null,
          c.createElement(
            "div",
            { className: a.SessionInstance },
            1 == i &&
              c.createElement(
                "div",
                { className: a.Registered },
                c.createElement(
                  "span",
                  null,
                  (0, g.we)("#MeetSteam_Registered"),
                ),
              ),
            2 == i &&
              c.createElement(
                "div",
                { className: a.Registering },
                c.createElement(
                  "span",
                  null,
                  (0, g.we)("#MeetSteam_Registering"),
                ),
              ),
            3 == i &&
              c.createElement(
                "div",
                { className: a.Unregistering },
                c.createElement(
                  "span",
                  null,
                  (0, g.we)("#MeetSteam_Unegistering"),
                ),
              ),
            c.createElement(
              "button",
              { className: a.Button, disabled: !u, onClick: r },
              c.createElement(
                "div",
                { className: a.Title },
                (0, y.$w)(new Date(1e3 * s)),
              ),
              c.createElement(
                "div",
                { className: a.TimeFrame },
                (0, y.Vx)(s, o),
              ),
            ),
            c.createElement(
              "div",
              { className: a.max },
              (0, g.Yp)("#MeetSteam_Spot", d.toLocaleString()),
            ),
          ),
        );
      }
      function z() {
        return c.createElement(
          "div",
          { className: a.InstanceDivider },
          (0, g.we)("#MeetSteam_Or"),
        );
      }
      function N(e) {
        const { eventModel: t } = e,
          r = "complete-registration-marker",
          { refIsLast: n, bIsLast: i } = (function (e) {
            const [t, r] = c.useState(!1),
              a = c.useRef(null);
            return (
              c.useEffect(() => {
                const t = document.querySelectorAll("." + e);
                a.current && t.length > 0 && r(t[t.length - 1] === a.current);
              }, [e]),
              { refIsLast: a, bIsLast: t }
            );
          })(r),
          m = U(),
          [d, y] = c.useState(!1),
          [S, f] = c.useState(!1);
        !(function (e, t, r, a) {
          c.useEffect(() => {
            (async () => {
              A.Get().Init(e, t, r, a), await A.Get().Load();
            })();
          }, [e, t, r, a]);
        })(m, o.iA.accountid, t.clanSteamID.GetAccountID(), t.GID);
        const b = (0, u.m)(m, t.clanSteamID.GetAccountID(), t.GID),
          [w, B, C] = (0, s.uD)(),
          E = H(),
          T = G(),
          D = d || T,
          M = (0, l.q3)(() => A.Get().BHaveSelectionsChanged()),
          R = (0, l.q3)(() => A.Get().BIsAddingOrChangingSelections()),
          k = (0, l.q3)(() =>
            A.Get()
              .GetSelectedGroups()
              .reduce((e, r) => {
                const a = W(t, r),
                  n = A.Get().GetSelection(a.group_id),
                  i = a.sessions?.find((e) => e.id == n)?.max_per_team ?? 1;
                return Math.max(e, i);
              }, 1),
          );
        return (
          (function (e) {
            c.useEffect(() => {
              if (e)
                return (
                  (window.onbeforeunload = () =>
                    (0, g.we)("#EventEditor_UnsavedChanges")),
                  () => {
                    window.onbeforeunload = () => {};
                  }
                );
            }, [e]);
          })(M),
          c.createElement(
            "div",
            {
              ref: n,
              className: (0, h.A)(
                r,
                a.CompleteRegistrationCtn,
                i && M && a.Visible,
              ),
            },
            c.createElement(
              "p",
              null,
              (0, g.we)("#MeetSteam_CompleteRegistration_Desc"),
            ),
            i &&
              c.createElement(
                c.Fragment,
                null,
                !D &&
                  c.createElement(
                    v.jn,
                    { disabled: !M, onClick: () => E(() => f(!0)) },
                    (0, g.we)("#MeetSteam_CompleteRegistration"),
                  ),
                D &&
                  c.createElement(_.t, {
                    size: "small",
                    position: "center",
                    string: (0, g.we)("#Saving"),
                  }),
                S &&
                  c.createElement(I, {
                    transport: m,
                    eventModel: t,
                    fnConfirm: async (e) => {
                      y(!0), (await A.Get().Save(e)) || B(), b.refetch(), y(!1);
                    },
                    fnHideModal: () => f(!1),
                    nMaxPerTeam: k,
                    bAddingOrChangingSessions: R,
                  }),
                w &&
                  c.createElement(
                    p.EN,
                    { active: !0 },
                    c.createElement(p.Ee, {
                      strTitle: (0, g.we)("#Error_Generic"),
                      strDescription: (0, g.we)(
                        "#MeetSteam_RegistrationFailed",
                      ),
                      closeModal: C,
                    }),
                  ),
              ),
          )
        );
      }
      function W(e, t) {
        const r = e?.jsondata?.meet_steam_groups || [];
        return r?.find((e) => e.group_id == t);
      }
      function H() {
        return D.KN.Get().BIsUserLoggedIn()
          ? (e) => e()
          : () =>
              (0, R.pg)(
                c.createElement(p.o0, {
                  strTitle: (0, g.we)("#EventDisplay_Share_NotLoggedIn"),
                  strDescription: (0, g.we)(
                    "#EventDisplay_Share_NotLoggedIn_Description",
                  ),
                  strOKButtonText: (0, g.we)("#MobileLogin_SignIn"),
                  onOK: () => (0, M.vg)(),
                }),
                window,
              );
      }
    },
    84364: (e, t, r) => {
      "use strict";
      r.d(t, { j: () => _ });
      var a = r(90626),
        n = r(82415),
        i = r(62792),
        s = r(55263),
        o = r(32754),
        l = r(52038),
        c = r(61859),
        m = r(65937),
        d = r(99559),
        u = r.n(d),
        p = r(79613);
      function _(e) {
        const { info: t, className: r } = e,
          d = (0, a.useRef)({ include_release: !0 }),
          [_] = (0, s.G6)(t?.id, (0, i.SW)(t?.type), d.current),
          h = _?.BHasDemo(),
          g = h || 1 === _?.GetAppType(),
          y = g
            ? (0, c.we)("#Sale_InstallDemo_ttip", _?.GetName())
            : h
              ? (0, c.we)("#Sale_CannotInstallDemo_ttip", _?.GetName())
              : (0, c.we)("#Loading");
        if (!(0, p.$W)())
          return !g && h && _?.BIsFree()
            ? a.createElement(m.h, { info: t, className: r })
            : a.createElement(
                o.he,
                {
                  toolTipContent: y,
                  onClick: (e) => {
                    e.preventDefault(),
                      e.stopPropagation(),
                      g &&
                        (0, n.o)(
                          1 === _?.GetAppType()
                            ? _.GetAppID()
                            : _.GetDemoAppIDs()[0],
                        );
                  },
                  className: (0, l.A)(
                    r,
                    u().DemoButton,
                    !g && u().DisabledButton,
                  ),
                },
                g
                  ? (0, c.we)("#Sale_InstallDemo")
                  : (0, c.we)("#Sale_DemoNotFound"),
              );
      }
    },
    3919: (e, t, r) => {
      "use strict";
      r.d(t, {
        PH: () => c,
        _: () => m,
        tj: () => B,
        qT: () => v,
        Hx: () => I,
        LJ: () => b,
        Bd: () => y,
        cq: () => S,
      });
      var a = r(90626),
        n = r(92757),
        i = r(45699),
        s = r(44332),
        o = r(78327);
      const l = a.createContext({ bCanUseLink: !1 });
      var c,
        m,
        d = r(55963),
        u = r(61336),
        p = r(60014),
        _ = r(44736);
      !(function (e) {
        (e.k_eView = "view"),
          (e.k_eViewWebSiteHub = "websitehub"),
          (e.k_eCommunityView = "communityview"),
          (e.k_eCommunityEdit = "edit"),
          (e.k_eCommunityEditBroadcast = "editBroadcast"),
          (e.k_eCommunityAdminPage = "admin"),
          (e.k_eCommunityPublish = "publish"),
          (e.k_eCommunityMigrate = "migrate"),
          (e.k_eCommunityPreview = "preview"),
          (e.k_eCommunityPreviewSale = "previewsale"),
          (e.k_eCommunityAnnouncementHub = "community_announcehub"),
          (e.k_eStoreView = "storeview"),
          (e.k_eStoreNewsHub = "newshub"),
          (e.k_eStoreOwnerPage = "store"),
          (e.k_eStoreSalePage = "sale"),
          (e.k_eStoreUsersNewsHub = "usernewshub");
      })(c || (c = {})),
        (function (e) {
          (e.k_eFacebook = "facebook"),
            (e.k_eTwitter = "twitter"),
            (e.k_eReddit = "reddit");
        })(m || (m = {}));
      const h =
        /(?:steampowered\.com|community\.\S+\.steam\.dev|store\.\S+\.steam\.dev|valve\.org\/store|steam\.dev\/store|\.steamchina\.com|steamcommunity\.com|valve\.org\/community|steam\.dev\/community)\/(\w+)(\/|$)/i;
      function g(e, t) {
        const r = "store" === (0, o.yK)(),
          a = (function (e) {
            const t = e.match(h);
            return t?.[1];
          })(window.location.href),
          n = r && "news" == a,
          i = "community" === (0, o.yK)(),
          l = t.appid ? "games" : "groups",
          m =
            i &&
            l == a &&
            ((t.appid && t.appid === o.UF.APPID) ||
              (!t.appid &&
                t.clanSteamID.GetAccountID() === o.UF.CLANACCOUNTID));
        switch (e) {
          case c.k_eView:
            return m || n;
          case c.k_eCommunityView:
          case c.k_eCommunityEdit:
          case c.k_eCommunityEditBroadcast:
          case c.k_eCommunityAdminPage:
          case c.k_eCommunityPublish:
          case c.k_eCommunityMigrate:
          case c.k_eCommunityPreview:
          case c.k_eCommunityPreviewSale:
          case c.k_eCommunityAnnouncementHub:
            return m;
          case c.k_eViewWebSiteHub:
            return m || n;
          case c.k_eStoreView:
          case c.k_eStoreNewsHub:
          case c.k_eStoreOwnerPage:
          case c.k_eStoreUsersNewsHub:
            return n;
          case c.k_eStoreSalePage:
            return !1;
          default:
            return (0, s.w)(!1, "Unknown route specified for link: " + e), !1;
        }
      }
      function y(e, t) {
        const r =
          o.TS.COMMUNITY_BASE_URL +
          "gid/" +
          e.clanSteamID.ConvertTo64BitString() +
          "/announcements/share/" +
          e.AnnouncementGID +
          "?site=" +
          t;
        return t === m.k_eFacebook ? r + "&t=" + Math.random() : r;
      }
      function S(e) {
        return w(e, c.k_eStoreView, "absolute");
      }
      function f(e, t, r) {
        if (r)
          return (
            (e ? "/games/" + o.UF.VANITY_ID : "/groups/" + o.UF.VANITY_ID) + "/"
          );
        const a = e ? "ogg/" + e : "gid/" + t.ConvertTo64BitString();
        return o.TS.COMMUNITY_BASE_URL + a + "/";
      }
      function b() {
        return "news";
      }
      function w(e, t, r) {
        const a = "relative" === r,
          n = "community" === (0, o.yK)(),
          i = a ? "/" : o.TS.STORE_BASE_URL,
          l = f(e.appid, e.clanSteamID, a);
        t === c.k_eView
          ? (t = n ? c.k_eCommunityView : c.k_eStoreView)
          : t === c.k_eViewWebSiteHub &&
            (t = n ? c.k_eCommunityAnnouncementHub : c.k_eStoreNewsHub);
        const m = e.GID ? e.GID : "",
          d = e.AnnouncementGID ? e.AnnouncementGID : "";
        switch (t) {
          case c.k_eCommunityPublish:
            return (
              l +
              (e.bOldAnnouncement
                ? "partnerevents/migrate_announcement/" + d
                : "partnerevents/publish/" + m + "?tab=publishing")
            );
          case c.k_eCommunityEdit:
            return (
              l +
              (e.bOldAnnouncement
                ? "partnerevents/migrate_announcement/" + d
                : "partnerevents/edit/" + m)
            );
          case c.k_eCommunityEditBroadcast:
            return (
              l +
              (e.bOldAnnouncement
                ? "partnerevents/migrate_announcement/" + d
                : "partnerevents/edit/" + m) +
              "?tab=broadcast"
            );
          case c.k_eCommunityMigrate:
            return l + "partnerevents/migrate_announcement/" + d;
          case c.k_eCommunityPreview:
            return (
              l +
              (e.bOldAnnouncement
                ? "partnerevents/preview_old_announcement/" + d
                : "partnerevents/preview/" + m)
            );
          case c.k_eCommunityPreviewSale:
            return l + "partnerevents/previewsale/" + m;
          case c.k_eCommunityAdminPage:
            return l + "partnerevents";
          case c.k_eCommunityAnnouncementHub:
            return l + "announcements";
          case c.k_eStoreNewsHub:
            return (
              i +
              `news/${e.appid ? `app/${e.appid}` : `group/${e.clanSteamID.GetAccountID()}`}`
            );
          case c.k_eStoreOwnerPage:
            return (
              i +
              (e.appid
                ? "app/" + e.appid
                : "curator/" + e.clanSteamID.GetAccountID())
            );
          case c.k_eStoreSalePage:
            return e.jsondata.bSaleEnabled
              ? i +
                  (e.jsondata.sale_vanity_id_valve_approved_for_sale_subpath
                    ? "sale/"
                    : "curator/" + e.clanSteamID.GetAccountID() + "/sale/") +
                  e.jsondata.sale_vanity_id
              : i;
          case c.k_eCommunityView:
            return l + "announcements/detail/" + d;
          case c.k_eStoreView:
            if (e.clanSteamID.GetAccountID() == (0, _.H7)())
              return `${o.TS.STORE_BASE_URL}meetsteam/${m}`;
            return `${i}news/${e.appid ? `app/${e.appid}` : `group/${e.clanSteamID.GetAccountID()}`}/${e.bOldAnnouncement ? `old_view/${d}` : `view/${m}`}`;
          case c.k_eStoreUsersNewsHub:
            return `${i}news/`;
          default:
            return (0, s.w)(!1, "Unknown route specified for link"), "";
        }
      }
      function v(e, t, r) {
        return w(
          e,
          t,
          "forceAbsolute" === r || !g(t, e) ? "absolute" : "relative",
        );
      }
      function I(e, t, r) {
        const a = f(e, t, !1);
        return "admin" === r ? a + "partnerevents" : "";
      }
      function B(e) {
        const { preferredFocus: t } = e,
          { bCanUseLink: r } = a.useContext(l),
          s = (0, p.n9)(),
          o = (0, n.W6)();
        if (!e.eventModel) return null;
        const c = r && g(e.route, e.eventModel),
          m = w(e.eventModel, e.route, c ? "relative" : "absolute"),
          _ = c ? m : (0, u.NT)(m),
          h = c ? _ : (0, d.wJ)(_, s);
        return c
          ? a.createElement(
              i.Ii,
              {
                style: e.style,
                className: e.className,
                href: o.createHref({ pathname: h }),
                onClick: (t) => {
                  e.onClick?.(t), o.push(h), t.preventDefault();
                },
                preferredFocus: t,
              },
              e.children,
            )
          : a.createElement(
              i.Ii,
              {
                href: h,
                style: e.style,
                className: e.className,
                onClick: e.onClick,
                preferredFocus: t,
              },
              e.children,
            );
      }
    },
    43667: (e, t, r) => {
      "use strict";
      r.d(t, { y: () => j, j: () => H });
      var a = r(34629),
        n = r(75844),
        i = r(19367),
        s = r(90626),
        o = r(22837),
        l = r(88997),
        c = r(47822),
        m = r(38390),
        d = r(4796),
        u = r(81477),
        p = r(44165),
        _ = r(60746),
        h = r(14947),
        g = r(78327),
        y = r(41735),
        S = r.n(y);
      class f {
        constructor() {
          (0, h.Gn)(this);
        }
        m_bValidatedEmail = !1;
        m_nMobileDeviceCount = 0;
        m_bIsLoaded = !1;
        m_promise;
        m_bLoadedFromConfig = !1;
        LazyInit() {
          if (!this.m_bLoadedFromConfig) {
            let e = (0, g.Fd)("notificationstore", "application_config");
            this.ValidateStoreDefault(e) &&
              (0, h.h5)(() => {
                (this.m_bIsLoaded = !0),
                  (this.m_bValidatedEmail = e.email_validated),
                  (this.m_nMobileDeviceCount = e.mobile_device_count);
              }),
              (this.m_bLoadedFromConfig = !0);
          }
        }
        ValidateStoreDefault(e) {
          return (
            e &&
            "object" == typeof e &&
            "number" == typeof e.mobile_device_count
          );
        }
        BIsLoaded() {
          return this.m_bIsLoaded;
        }
        BHasValidatedEmail() {
          return this.m_bValidatedEmail;
        }
        BHasPushNotification() {
          return this.m_nMobileDeviceCount > 0;
        }
        async HintLoad() {
          return (
            this.LazyInit(),
            this.m_bIsLoaded
              ? 1
              : g.iA.logged_in
                ? (this.m_promise || (this.m_promise = this.InternalLoad()),
                  this.m_promise)
                : 1
          );
        }
        async InternalLoad() {
          const e = g.TS.STORE_BASE_URL + "notification/ajaxusersettings",
            t = await S().get(e, { withCredentials: !0 });
          return (
            1 == t.data.success &&
              (0, h.h5)(() => {
                (this.m_bIsLoaded = !0),
                  (this.m_bValidatedEmail = t.data.email_validated),
                  (this.m_nMobileDeviceCount = t.data.mobile_device_count);
              }),
            t.data.success
          );
        }
      }
      (0, a.Cg)([h.sH], f.prototype, "m_bValidatedEmail", void 0),
        (0, a.Cg)([h.sH], f.prototype, "m_nMobileDeviceCount", void 0);
      let b = new f();
      var w = r(40650),
        v = r(71541),
        I = r(76684),
        B = r(9154),
        C = r(738),
        E = r(12155),
        T = r(22797),
        A = r(32754),
        G = r(68797),
        D = r(52038),
        M = r(61859),
        R = r(73745),
        k = r(14771),
        F = r(61336),
        U = r(6878),
        L = r.n(U),
        P = r(3919),
        O = r(1078),
        z = r(95695),
        N = r(82477),
        W = r(39256);
      let H = class extends s.Component {
        m_iMenuInstance;
        m_elDropDownRef = s.createRef();
        m_bLoadWasCancelled = !1;
        state = { bIsOpen: !1, bIsLoadingNotificationSettings: !b.BIsLoaded() };
        componentDidMount() {
          this.state.bIsLoadingNotificationSettings &&
            b
              .HintLoad()
              .catch(
                (e) => (
                  console.error(
                    "EventReminderWidget load fail: " + (0, G.H)(e).strErrorMsg,
                  ),
                  2
                ),
              )
              .then((e) => {
                1 != e ||
                  this.m_bLoadWasCancelled ||
                  this.setState({ bIsLoadingNotificationSettings: !1 });
              }),
            !this.props.eventModel.appid &&
              this.props.eventModel.clanSteamID &&
              d.ac.LoadClanInfoForClanSteamID(
                this.props.eventModel.clanSteamID,
              );
        }
        componentWillUnmount() {
          this.m_bLoadWasCancelled = !0;
        }
        ToggleMenu(e) {
          const t = _.KN.Get().BIsUserLoggedIn();
          t || g.TS.IN_CLIENT
            ? (!t &&
                g.TS.IN_CLIENT &&
                console.log(
                  "EventReminderWidget: In Client: Cannot use login widget. We expect to be already logged in.",
                ),
              this.state.bIsOpen ? this.HideMenu() : this.ShowMenu(),
              e.stopPropagation(),
              e.preventDefault())
            : (0, C.pg)(
                s.createElement(B.o0, {
                  strTitle: (0, M.we)("#EventDisplay_Share_NotLoggedIn"),
                  strDescription: (0, M.we)(
                    "#EventDisplay_Share_NotLoggedIn_Description",
                  ),
                  strOKButtonText: (0, M.we)("#MobileLogin_SignIn"),
                  onOK: () => (0, N.vg)(),
                }),
                window,
              );
        }
        ShowMenu() {
          let e = s.createElement(V, {
              ...this.props,
              fnHasReminderSet: (e) => this.BHasSomeNotificationSetting(e),
              fnHidePanel: this.HideMenu,
            }),
            t = {
              bOverlapHorizontal: !0,
              bOverlapVertical: !0,
              bDisablePopTop: !0,
              bMatchWidth: !0,
              strClassName: (0, D.A)(
                O.ReminderDialog,
                O.ReminderOptions,
                w.contextMenu,
              ),
            };
          (this.m_iMenuInstance = (0, l.lX)(
            e,
            this.m_elDropDownRef.current,
            t,
          )),
            this.m_iMenuInstance.SetOnHideCallback(this.HideMenu),
            this.setState({ bIsOpen: !0 }),
            u.V.RecordAppInteractionEvent(
              this.props.eventModel.appid,
              u.E.k_eReminder_Opened,
            );
        }
        HideMenu() {
          this.m_iMenuInstance && this.m_iMenuInstance.Hide(),
            this.setState({ bIsOpen: !1 });
        }
        BHasSomeNotificationSetting(e) {
          const t = e.GID;
          return (
            (b.BHasValidatedEmail() &&
              _.KN.Get().BFollowsEventAndNotifiedBy(
                e.clanSteamID,
                t,
                _.Nh.k_ENotifyFlagByEmail,
              )) ||
            (b.BHasPushNotification() &&
              _.KN.Get().BFollowsEventAndNotifiedBy(
                e.clanSteamID,
                t,
                _.Nh.k_ENotifyFlagByPush,
              ))
          );
        }
        render() {
          const e = this.props.bOnlyShowIcon && !this.state.bIsOpen,
            t = this.BHasSomeNotificationSetting(this.props.eventModel),
            r = (0, p.sB)();
          return this.props.eventModel.startTime < r ||
            this.props.eventModel.BIsUnlistedEvent()
            ? null
            : s.createElement(
                "div",
                {
                  className: (0, D.A)({
                    [O.ReminderCheckBox]: !0,
                    [L().ReminderCtn]: !0,
                    [O.IconMode]: e,
                    [O.TextMode]: !e,
                    ReminderSet: t,
                    RemindMeWidget: !0,
                  }),
                  onClick: this.ToggleMenu,
                  ref: this.m_elDropDownRef,
                },
                t &&
                  s.createElement(
                    "div",
                    { className: O.RemindCheck },
                    s.createElement(E.Jlk, null),
                  ),
                e &&
                  s.createElement(
                    "div",
                    { className: O.RemindBell },
                    s.createElement(E.IrQ, null),
                  ),
                s.createElement(
                  "div",
                  { className: O.ReminderDefault },
                  (0, M.we)("#EventDisplay_Reminder_SetReminder"),
                ),
                s.createElement("div", { className: O.ReminderOptions }),
              );
        }
      };
      function j(e) {
        const { bPreviewMode: t, eventGID: r, ...a } = e,
          n = (0, m.RR)(r);
        if (!n)
          return t
            ? s.createElement(
                "div",
                { className: W.ErrorDiv },
                (0, M.we)("#EventDidplay_Reminder_EventNotVisible", r),
              )
            : null;
        const i = (0, o.sf)(g.TS.LANGUAGE);
        return s.createElement(H, { lang: i, ...a, eventModel: n });
      }
      function x(e) {
        return i.unix(e).utc().format("YYYYMMDD[T]HHmmss[Z]");
      }
      (0, a.Cg)([R.oI], H.prototype, "ToggleMenu", null),
        (0, a.Cg)([R.oI], H.prototype, "ShowMenu", null),
        (0, a.Cg)([R.oI], H.prototype, "HideMenu", null),
        (H = (0, a.Cg)([n.PA], H));
      let V = class extends s.Component {
        state = { bIsRequestInFlight: !1 };
        async OnChangeFollowOrIgnore(e, t, r) {
          const { eventModel: a } = this.props,
            n = a?.GID;
          if (n && n != o.kF) {
            this.setState({ bIsRequestInFlight: !0 });
            try {
              await _.KN.Get().SetFollowOrUnfollowEvent(
                !e,
                t,
                a.clanSteamID,
                n,
                r,
              ),
                e &&
                  (r === _.Nh.k_ENotifyFlagByEmail
                    ? this.TrackEventAction(u.E.k_eReminder_Email)
                    : r === _.Nh.k_ENotifyFlagByPush &&
                      this.TrackEventAction(u.E.k_eReminder_MobilePush));
            } catch (e) {
              (0, C.HT)(
                s.createElement(
                  B.KG,
                  {
                    strTitle: (0, M.we)(
                      t
                        ? "#EventDisplay_Reminder_IgnoreEvent_Error"
                        : "#EventDisplay_Reminder_FollowEvent_Error",
                    ),
                    strDescription: (0, M.we)(
                      t
                        ? "#EventDisplay_Reminder_IgnoreEvent_ErrorDesc"
                        : "#EventDisplay_Reminder_FollowEvent_ErrorDesc",
                    ),
                  },
                  (0, G.H)(e).strErrorMsg,
                ),
                window,
              );
            }
            this.setState({ bIsRequestInFlight: !1 });
          }
        }
        OnChangeFollowByEmail(e) {
          this.OnChangeFollowOrIgnore(e, !1, _.Nh.k_ENotifyFlagByEmail);
        }
        OnChangeFollowByPush(e) {
          this.OnChangeFollowOrIgnore(e, !1, _.Nh.k_ENotifyFlagByPush);
        }
        GetExternalCalendarEventTitle() {
          const { eventModel: e, lang: t } = this.props,
            r = e.GetNameWithFallback(t);
          if (c.NK.BHasEntityNameForID(e.appid, e.clanSteamID.GetAccountID())) {
            return `${c.NK.GetEntityNameForID(e.appid, e.clanSteamID.GetAccountID())}: ${r}`;
          }
          return r;
        }
        TrackEventAction(e) {
          const { eventModel: t } = this.props;
          u.V.RecordAppInteractionEvent(t.appid, e);
        }
        GetExternalCalendarEventBody() {
          const { eventModel: e, lang: t } = this.props;
          let r = e.GetSubTitleWithLanguageFallback(t);
          r = r ? `${r}\n\n\n` : "";
          const a = e.GetSummaryWithFallback(t),
            n = e.jsondata.bSaleEnabled
              ? P.PH.k_eStoreSalePage
              : P.PH.k_eStoreView;
          return `${r}${a}\n\n${(0, P.qT)(e, n, "forceAbsolute")}`;
        }
        GetGoogleCalendarLink() {
          const { eventModel: e } = this.props,
            t = encodeURIComponent(this.GetExternalCalendarEventTitle()),
            r = encodeURIComponent(this.GetExternalCalendarEventBody()),
            a = e.GetStartTimeAndDateUnixSeconds(),
            n = x(a),
            i = x(e.GetEndTimeAndDateUnixSeconds() || a + k.Kp.PerHour),
            s =
              (g.TS.IN_CLIENT ? "steam://openurl_external/" : "") +
              `https://calendar.google.com/calendar/r/eventedit?text=${t}&details=${r}&dates=${n}/${i}`;
          return (0, F.k2)(s);
        }
        GetICSDownloadLink(e) {
          const { eventModel: t, lang: r } = this.props,
            a = t.appid
              ? "app/" + t.appid
              : "group/" + t.clanSteamID.GetAccountID(),
            n = "l=" + (0, o.Lg)(r);
          return `${g.TS.STORE_BASE_URL}${(0, P.LJ)()}/download/${a}/${e}/${t.GID}?${n}`;
        }
        render() {
          const {
              eventModel: e,
              bShowStartTime: t,
              bExpandLeft: r,
              bOnlyShowIcon: a,
              fnHasReminderSet: n,
              fnHidePanel: i,
            } = this.props,
            o = b.BHasValidatedEmail(),
            l = b.BHasPushNotification(),
            c = t && e.GetStartTimeAndDateUnixSeconds();
          return s.createElement(
            "div",
            null,
            s.createElement(
              "div",
              {
                className: (0, D.A)(
                  O.ReminderCheckBox,
                  a ? O.IconMode : O.TextMode,
                  "RemindMeWidget",
                ),
                onClick: i,
              },
              n(this.props.eventModel) &&
                s.createElement(
                  "div",
                  { className: O.RemindCheck },
                  s.createElement(E.Jlk, null),
                ),
              a &&
                s.createElement(
                  "div",
                  { className: O.RemindBell },
                  s.createElement(E.IrQ, null),
                ),
              s.createElement(
                "div",
                { className: O.ReminderDefault },
                (0, M.we)("#EventDisplay_Reminder_SetReminder"),
              ),
              s.createElement("div", { className: O.ReminderOpennedOptions }),
            ),
            s.createElement(
              "div",
              {
                className: (0, D.A)(
                  O.FlexColumnContainer,
                  O.ReminderBackground,
                  r && O.ReminderExpandsLeft,
                ),
              },
              this.state.bIsRequestInFlight &&
                s.createElement(T.t, {
                  className: O.RpcThrobber,
                  size: "xlarge",
                  position: "center",
                }),
              c &&
                s.createElement(
                  "div",
                  { className: O.FullStartTime },
                  (0, M.PP)(
                    "#EventDisplay_EventUpcoming_WithDateAndTime",
                    (0, M.TW)(
                      c,
                      (0, k.Ct)(
                        new Date(1e3 * c),
                        p.HD.GetTimeNowWithOverrideAsDate(),
                      ),
                    ),
                    (0, I.yi)(c, !0),
                  ),
                ),
              s.createElement(
                "div",
                { className: O.ReminderOptionsHeader },
                (0, M.we)("#EventDisplay_Reminder_GetNotification_Via"),
              ),
              s.createElement(
                "div",
                { className: (0, D.A)(O.ReminderOption, !o && O.Unverified) },
                s.createElement(
                  A.he,
                  {
                    className: O.CheckboxWrapper,
                    bTopmost: !0,
                    toolTipContent: (0, M.we)(
                      o
                        ? "#EventReminder_NotifyByEmail_ttip"
                        : "#EventReminder_NotifyByEmail_Missing",
                    ),
                  },
                  s.createElement(v.Yh, {
                    label: (0, M.we)("#EventDisplay_Reminder_ViaEmail"),
                    disabled: !o,
                    checked: _.KN.Get().BFollowsEventAndNotifiedBy(
                      e.clanSteamID,
                      e.GID,
                      _.Nh.k_ENotifyFlagByEmail,
                    ),
                    onChange: this.OnChangeFollowByEmail,
                  }),
                ),
                !o &&
                  s.createElement(
                    "div",
                    { className: z.FlexColumnContainer },
                    s.createElement(
                      "a",
                      {
                        href: g.TS.STORE_BASE_URL + "account/",
                        target: g.TS.IN_CLIENT ? void 0 : "_blank",
                        onClick: () =>
                          this.TrackEventAction(
                            u.E.k_eReminder_EmailUnverified,
                          ),
                      },
                      (0, M.we)("#EventReminder_NotifyByEmail_Missing_Add"),
                    ),
                  ),
              ),
              s.createElement(
                "div",
                { className: (0, D.A)(O.ReminderOption, !l && O.Unverified) },
                s.createElement(
                  A.he,
                  {
                    className: O.CheckboxWrapper,
                    bTopmost: !0,
                    toolTipContent: (0, M.we)(
                      l
                        ? "#EventReminder_NotifyByMobile_ttip"
                        : "#EventReminder_NotifyByMobile_Missing",
                    ),
                  },
                  s.createElement(v.Yh, {
                    label: (0, M.we)("#EventDisplay_Reminder_ViaMobileApp"),
                    disabled: !l,
                    checked: _.KN.Get().BFollowsEventAndNotifiedBy(
                      e.clanSteamID,
                      e.GID,
                      _.Nh.k_ENotifyFlagByPush,
                    ),
                    onChange: this.OnChangeFollowByPush,
                  }),
                ),
                !l &&
                  s.createElement(
                    "div",
                    { className: z.FlexColumnContainer },
                    s.createElement(
                      "a",
                      {
                        href: g.TS.STORE_BASE_URL + "mobile/?show=steamapp",
                        target: g.TS.IN_CLIENT ? void 0 : "_blank",
                        onClick: () =>
                          this.TrackEventAction(
                            u.E.k_eReminder_MobilePushMissing,
                          ),
                      },
                      (0, M.we)("#EventReminder_NotifyByMobile_Install"),
                    ),
                  ),
              ),
              s.createElement(
                s.Fragment,
                null,
                s.createElement(
                  "div",
                  { className: O.ReminderOptionsHeader },
                  (0, M.we)("#EventDisplay_Reminder_AddToCalendar"),
                ),
                s.createElement(
                  "div",
                  { className: O.ReminderCalendarOptions },
                  s.createElement(
                    "a",
                    {
                      className: O.ReminderOption,
                      href: this.GetICSDownloadLink("ics"),
                      onClick: () =>
                        this.TrackEventAction(u.E.k_eReminder_CalendarApple),
                    },
                    (0, M.we)("#EventDisplay_Reminder_AppleCalendar_Short"),
                  ),
                  s.createElement(
                    "a",
                    {
                      className: O.ReminderOption,
                      target: g.TS.IN_CLIENT ? void 0 : "_blank",
                      href: this.GetGoogleCalendarLink(),
                      onClick: () =>
                        this.TrackEventAction(u.E.k_eReminder_CalendarGoogle),
                    },
                    (0, M.we)("#EventDisplay_Reminder_GoogleCalendar_Short"),
                  ),
                  s.createElement(
                    "a",
                    {
                      className: O.ReminderOption,
                      href: this.GetICSDownloadLink("outlook"),
                      onClick: () =>
                        this.TrackEventAction(u.E.k_eReminder_CalendarOutlook),
                    },
                    (0, M.we)("#EventDisplay_Reminder_OutlookCalendar_Short"),
                  ),
                ),
              ),
              !1,
            ),
          );
        }
      };
      (0, a.Cg)([R.oI], V.prototype, "OnChangeFollowByEmail", null),
        (0, a.Cg)([R.oI], V.prototype, "OnChangeFollowByPush", null),
        (0, a.Cg)([R.oI], V.prototype, "TrackEventAction", null),
        (V = (0, a.Cg)([n.PA], V));
    },
    2193: (e, t, r) => {
      "use strict";
      r.d(t, { do: () => $, of: () => X });
      var a,
        n = r(75844),
        i = r(65946),
        s = r(90626),
        o = r(17720),
        l = r(67165),
        c = r(30894),
        m = r(34629),
        d = r(41735),
        u = r.n(d),
        p = r(14947),
        _ = r(19367),
        h = r.n(_),
        g = r(47822),
        y = r(60746),
        S = r(20587),
        f = r(82097),
        b = r(99032),
        w = r(44332),
        v = r(68797),
        I = r(6419),
        B = r(61859),
        C = r(78327),
        E = r(81477),
        T = r(46910);
      r(3919);
      !(function (e) {
        (e.Default = "default"),
          (e.Upcoming = "upcoming"),
          (e.Featured = "featured"),
          (e.Press = "press"),
          (e.Steam = "steam"),
          (e.Halloween = "halloween"),
          (e.Dev_All = "all"),
          (e.Dev_AssociatedPress = "associated_press"),
          (e.Dev_Sales = "associated_sales");
      })(a || (a = {}));
      new Map();
      var A = r(44165);
      class G {
        constructor() {
          (0, p.Gn)(this);
        }
        m_mapBlockedAppIds = new Map();
        m_mapBlockedClanIds = new Map();
        static s_globalSingletonStore;
        static Get() {
          return (
            G.s_globalSingletonStore ||
              ((G.s_globalSingletonStore = new G()),
              G.s_globalSingletonStore.Init()),
            G.s_globalSingletonStore
          );
        }
        GetMutedSourceCount() {
          return this.m_mapBlockedAppIds.size + this.m_mapBlockedClanIds.size;
        }
        Init() {
          const e = (0, C.Tc)("mutedcomminfo", "application_config");
          this.ValidateStoreDefault(e) &&
            (("dev" != C.TS.WEB_UNIVERSE && "beta" != C.TS.WEB_UNIVERSE) ||
              console.log(
                "DEV_DEBUG: CMutedCommunicationStore loading bundles payload: " +
                  JSON.stringify(e),
              ),
            e.appids &&
              e.appids.forEach((e) => this.m_mapBlockedAppIds.set(e, !0)),
            e.clanids &&
              e.clanids.forEach((e) => this.m_mapBlockedClanIds.set(e, !0)));
        }
        ValidateStoreDefault(e) {
          const t = e;
          return (
            !(!t || "object" != typeof t) &&
            ((Array.isArray(t.appids) && t.appids.length > 0) ||
              (Array.isArray(t.clanids) && t.clanids.length > 0))
          );
        }
        BIsEventBlocked(e) {
          return e.appid
            ? this.m_mapBlockedAppIds.has(e.appid)
            : !!e.clanInfo && this.m_mapBlockedClanIds.has(e.clanInfo.clanid);
        }
        BIsMutedAppID(e) {
          return this.m_mapBlockedAppIds.has(e);
        }
        BIsMutedClanID(e) {
          return this.m_mapBlockedClanIds.has(e);
        }
        async UpdateCommunitionSetting(e, t, r) {
          const a = C.TS.STORE_BASE_URL + "account/optoutappcommunication/",
            n = new FormData();
          if (
            (n.append("sessionid", C.TS.SESSIONID),
            n.append("allowCommunication", e ? "1" : "0"),
            t)
          ) {
            if (
              (!e && this.m_mapBlockedAppIds.has(t)) ||
              (e && !this.m_mapBlockedAppIds.has(t))
            )
              return !0;
            e
              ? this.m_mapBlockedAppIds.delete(t)
              : this.m_mapBlockedAppIds.set(t, !0),
              n.append("appId", t.toString());
          } else {
            if (!r)
              return (
                (0, w.w)(
                  !1,
                  "BlockEventsFromCalenderEvent: Invalid AppID and ClanID",
                ),
                !1
              );
            if (
              (!e && this.m_mapBlockedClanIds.has(r)) ||
              (e && !this.m_mapBlockedClanIds.has(r))
            )
              return !0;
            e
              ? this.m_mapBlockedClanIds.delete(r)
              : this.m_mapBlockedClanIds.set(r, !0),
              n.append("clanId", r.toString());
          }
          try {
            return 1 == (await u().post(a, n)).data.success;
          } catch (e) {
            return (
              console.error(
                "Blocking app id hit error " + (0, v.H)(e).strErrorMsg,
              ),
              !1
            );
          }
        }
      }
      (0, m.Cg)([p.sH], G.prototype, "m_mapBlockedAppIds", void 0),
        (0, m.Cg)([p.sH], G.prototype, "m_mapBlockedClanIds", void 0);
      function D(e, t, r, a) {
        return {
          strId: "section-" + t,
          strSectionLabel: t,
          rtSectionStart: r,
          rtSectionEnd: a,
          bIsFutureSection: r >= e,
          nRenderedHeight: 2500,
          nTopOffset: 0,
        };
      }
      class M {
        m_nForwardStuckCount = 0;
        m_nBackwardStuckCount = 0;
        m_mapCalendarAppsByID = new Map();
        m_mapCalendarClansByID = new Map();
        m_mapCalendarEventsByGid = new Map();
        m_rgSortedCalendarEvents = new Array();
        m_visibilityStore;
        m_currentView = p.sH.box(null);
        m_bFinishedSearchingForward = !1;
        m_bFinishedSearchingBackward = !1;
        m_rgCalendarSections = [];
        m_rgFutureSections = [];
        m_dtInitTime;
        m_forwardRequestInFlight;
        m_backwardRequestInFlight;
        m_key;
        m_collectionMetaData = void 0;
        constructor(e, t) {
          (0, p.Gn)(this),
            (this.m_key = e),
            (this.m_visibilityStore = new T.vJ(t)),
            c.Fm.Get().HintLoad();
        }
        GetNumEventsLoaded() {
          return this.m_mapCalendarEventsByGid.size;
        }
        BIsGlobalCalendar() {
          return !(
            this.m_key.appids ||
            this.m_key.clanaccountids ||
            this.m_key.collectionid ||
            this.m_key.saleid
          );
        }
        BIsShowingFeaturedFeed() {
          return Boolean(
            this.GetCollectionID() === a.Featured ||
              (this.BIsGlobalCalendar() && !C.iA.accountid),
          );
        }
        BIsSingleSourceCalendar() {
          return Boolean(
            this.BIsSingleGroupCalendar()
              ? !this.BIsSingleAppCalendar()
              : this.BIsSingleAppCalendar(),
          );
        }
        GetKey() {
          return this.m_key;
        }
        BEventMatchCalendarSingleSource(e) {
          return (
            (this.BIsSingleAppCalendar() && this.m_key.appids[0] == e.appid) ||
            (this.BIsSingleGroupCalendar() &&
              this.m_key.clanaccountids[0] == e.clanid)
          );
        }
        BIsSingleSourceMuted() {
          return (
            !!this.BIsSingleSourceCalendar() &&
            (this.BIsSingleAppCalendar()
              ? G.Get().BIsMutedAppID(this.GetSingleAppID())
              : G.Get().BIsMutedClanID(this.GetSingleGroupID()))
          );
        }
        BIsSingleGroupCalendar() {
          return Boolean(
            this.m_key.clanaccountids && 1 == this.m_key.clanaccountids.length,
          );
        }
        GetSingleGroupID() {
          return this.m_key.clanaccountids[0];
        }
        BIsSingleAppCalendar() {
          return Boolean(this.m_key.appids && 1 == this.m_key.appids.length);
        }
        GetSingleAppID() {
          return this.m_key.appids[0];
        }
        BIsCollectionCalendar() {
          return !!this.m_key.collectionid;
        }
        GetCollectionID() {
          return this.m_key.collectionid;
        }
        BIsSaleCalendar() {
          return !!this.m_key.saleid;
        }
        GetSaleID() {
          return this.m_key.saleid;
        }
        BIsCalendarEndTimeSet() {
          return !!this.m_key.rtCalendarEnd;
        }
        GetCalendarEndTime() {
          return this.m_key.rtCalendarEnd;
        }
        SetCollectionMetaData(e) {
          this.m_collectionMetaData = e;
        }
        GetCollectionMetaData() {
          return this.m_collectionMetaData;
        }
        BHasCollectionMetaData() {
          return Boolean(this.m_collectionMetaData);
        }
        ValidateCollectionMetadata(e) {
          const t = e;
          return (
            t &&
            "object" == typeof t &&
            t.clanid &&
            "number" == typeof t.clanid &&
            t.clan_event_gid &&
            "string" == typeof t.clan_event_gid
          );
        }
        SetFilteredView(e, t) {
          const r = this.m_currentView.get();
          r && r.dispose();
          const a = this.BIsSingleSourceMuted(),
            n = new R(
              () => this.m_rgSortedCalendarEvents,
              this.LoadAdditionalEvents,
              this.BHitEventHorizon,
              e,
              t,
              a,
            );
          this.m_currentView.set(n);
        }
        BIsFilteredViewEmpty() {
          return !!this.m_currentView.get()?.BIsViewEmpty();
        }
        GetCalendarItemsInTimeRange(e, t) {
          const r = this.m_currentView.get();
          return r
            ? r.GetCalendarItemsInTimeRange(e, t)
            : (console.error("calendar view not yet initialized"),
              { rgCalendarItems: [], bIsComplete: !1 });
        }
        GetActiveEventsAt(e) {
          const t = this.m_currentView.get();
          return t
            ? t.GetActiveEventsAt(e)
            : (console.error("calendar view not yet initialized"), []);
        }
        GetCurrentlyLoadedEventCount(e, t) {
          return this.m_currentView.get()?.GetCurrentlyLoadedEventCount(e, t);
        }
        GetCurrentlyLoadedItemsForStats() {
          return this.m_currentView.get()?.GetCurrentlyLoadedEvents() || [];
        }
        GetCalendarSections(e) {
          return e ? this.m_rgFutureSections : this.m_rgCalendarSections;
        }
        GetStoreInitializationTimestamp() {
          return (
            this.m_dtInitTime ||
              (this.m_dtInitTime = A.HD.GetTimeNowWithOverrideAsDate()),
            this.m_dtInitTime
          );
        }
        InitCalendarSections() {
          const e = this.GetStoreInitializationTimestamp(),
            t = [],
            r = e.getTime() / 1e3;
          t.push(D(r, (0, B.we)("#EventCalendar_FutureEventsHeader"), r));
          const a = new Date(e);
          a.setHours(0, 0, 0, 1);
          let n = a.getTime() / 1e3;
          t.push(D(r, (0, B.we)("#Time_Today"), n, r)),
            a.setDate(a.getDate() - 1);
          let i = n;
          (n = a.getTime() / 1e3),
            t.push(D(r, (0, B.we)("#Time_Yesterday"), n, i));
          const s =
              this.m_rgSortedCalendarEvents[
                this.m_rgSortedCalendarEvents.length - 1
              ],
            o = s ? s.start_time : r;
          let l = o > n;
          for (let e = 0; e < 5 && !l; e++)
            a.setDate(a.getDate() - 1),
              (i = n),
              (n = a.getTime() / 1e3),
              t.push(D(r, (0, B.cc)(a), n, i)),
              (l = o > n);
          const c = new Date(a);
          let m = n;
          for (; c.getMonth() == e.getMonth() && 1 != c.getDate() && !l; ) {
            c.setDate(c.getDate() - 7);
            const e = c.getTime() / 1e3;
            t.push(D(r, (0, B.lQ)(m - 1), e, m)), (l = o > e), (m = e);
          }
          const d = new Date(e);
          d.setHours(0, 0, 0, 1), d.setDate(1);
          let u = m;
          for (let a = 1; !l; a++) {
            const n = new Date(d);
            n.setMonth(e.getMonth() - a, 1);
            const i = n.getTime() / 1e3;
            t.push(D(r, (0, B.lQ)(i), i, u)), (l = o > i), (u = i);
          }
          this.m_rgCalendarSections.length > t.length
            ? this.m_rgCalendarSections.splice(
                t.length,
                this.m_rgCalendarSections.length,
              )
            : t
                .splice(this.m_rgCalendarSections.length, t.length)
                .forEach((e) => this.m_rgCalendarSections.push(e));
        }
        InitFutureCalendarSections() {
          const e = this.GetStoreInitializationTimestamp(),
            t = [];
          let r;
          this.m_key.rtCalendarEnd && (r = this.m_key.rtCalendarEnd);
          const a =
            this.m_rgSortedCalendarEvents.length > 0 &&
            this.m_rgSortedCalendarEvents[0];
          a && (r = a.start_time), r || (r = e.getTime() / 1e3);
          const n = e.getTime() / 1e3,
            i = new Date(e);
          i.setHours(24, 0, 0, 0);
          let s = i.getTime() / 1e3;
          t.push(
            D(
              n,
              (0, B.we)(
                this.m_key.bSectionByDay ? "#Time_UpNext" : "#Time_Today",
              ),
              n,
              s,
            ),
          );
          let o = r <= s,
            l = s;
          i.setDate(i.getDate() + 1),
            (s = i.getTime() / 1e3),
            o || t.push(D(n, (0, B.we)("#Time_Tomorrow"), l, s)),
            (o = r <= s);
          const c = 6 - h()(e).weekday();
          for (let e = 2; e <= c && !o; e++) {
            l = s;
            const e = (0, B.cc)(i);
            i.setDate(i.getDate() + 1),
              (s = i.getTime() / 1e3),
              t.push(D(n, e, l, s)),
              (o = r <= s);
          }
          if (this.m_key.bSectionByDay)
            for (; !o; ) {
              l = s;
              const e = (0, B.$w)(i);
              i.setDate(i.getDate() + 1),
                (s = i.getTime() / 1e3),
                t.push(D(n, e, l, s)),
                (o = r <= s);
            }
          else {
            const a = new Date(i);
            let l = s;
            const c = h()(e).daysInMonth();
            if (a.getMonth() == e.getMonth() && a.getDate() != c && !o) {
              a.setDate(a.getDate() + 7);
              const e = a.getTime() / 1e3;
              t.push(D(n, (0, B.we)("#EventCalendar_NextWeek"), l, e)),
                (o = r <= e),
                (l = e);
            }
            const m = new Date(e);
            let d;
            if (
              (m.setMonth(m.getMonth() + 1),
              m.setDate(1),
              m.setHours(0, 0, 0, 0),
              a < m && !o)
            ) {
              const e = m.getTime() / 1e3;
              t.push(D(n, (0, B.we)("#EventCalendar_LaterThisMonth"), l, e)),
                (o = r <= e),
                (d = e);
            } else d = l;
            for (let a = 2; !o; a++) {
              const i = new Date(m);
              i.setMonth(e.getMonth() + a);
              const s = i.getTime() / 1e3;
              t.push(D(n, (0, B.lQ)(d), d, s)), (o = r <= s), (d = s);
            }
          }
          this.m_rgFutureSections.length > t.length
            ? this.m_rgFutureSections.splice(
                t.length,
                this.m_rgFutureSections.length,
              )
            : t
                .splice(this.m_rgFutureSections.length, t.length)
                .forEach((e) => this.m_rgFutureSections.push(e));
        }
        async RegisterCalendarEventsAndModels(e) {
          await c.Fm.Get().HintLoad(),
            (0, p.h5)(() => {
              this.RegisterCalendarApps(e.apps),
                this.RegisterCalendarClans(e.clans),
                this.RegisterCalendarEvents(e.documents),
                S.O3.RegisterClanEvents(e.events),
                this.RegisterReadEvents(e.events_read),
                this.RegisterEventVotes(e.event_votes),
                e.forwardComplete && (this.m_bFinishedSearchingForward = !0),
                e.backwardComplete && (this.m_bFinishedSearchingBackward = !0),
                this.InitCalendarSections(),
                this.InitFutureCalendarSections(),
                this.SetCollectionMetaData(
                  this.ValidateCollectionMetadata(e.metadatainfo)
                    ? e.metadatainfo
                    : null,
                );
            });
        }
        RegisterCalendarApps(e) {
          if (e)
            for (const t of e) {
              if (this.m_mapCalendarAppsByID.has(t.appid)) continue;
              const e = new g.dF();
              (e.appid = t.appid),
                (e.source = t.source),
                (e.playtime = t.playtime),
                (e.last_played = t.last_played),
                (e.wishlist_added = t.wishlist_added),
                this.m_mapCalendarAppsByID.set(t.appid, e),
                t.hidden &&
                  this.m_visibilityStore.SetAppVisibility(t.appid, !1);
            }
        }
        RegisterCalendarClans(e) {
          if (e)
            for (const t of e)
              if (!this.m_mapCalendarClansByID.has(t.clanid)) {
                const e = new g.w2();
                (e.clanid = t.clanid),
                  (e.source = t.source),
                  this.m_mapCalendarClansByID.set(t.clanid, e),
                  t.hidden &&
                    this.m_visibilityStore.SetClanVisibility(t.clanid, !1);
              }
        }
        RegisterReadEvents(e) {
          if (!e) return;
          const t = y.KN.Get();
          for (const r of e) t.SetEventAsRead(r);
        }
        RegisterEventVotes(e) {
          if (!e) return;
          const t = y.KN.Get();
          for (const r of e) {
            const e = void 0 === r.vote ? void 0 : Boolean(r.vote);
            t.SetVote(r.id, e);
          }
        }
        RegisterCalendarEvents(e) {
          if (e) {
            let t = !1;
            for (const r of e)
              this.BInternalInsertCalendarEventItem(r) && (t = !0);
            t && this.RebuildSortedCalendarEventList();
          }
        }
        BHitEventHorizon(e) {
          return "forward" == e
            ? this.m_bFinishedSearchingForward
            : this.m_bFinishedSearchingBackward;
        }
        GetTimeEdgeForDirection(e, t = void 0) {
          return "forward" === e
            ? this.m_rgSortedCalendarEvents.length > 0
              ? this.m_rgSortedCalendarEvents[0].start_time
              : t
            : this.m_rgSortedCalendarEvents.length > 0
              ? this.m_rgSortedCalendarEvents[
                  this.m_rgSortedCalendarEvents.length - 1
                ].start_time
              : t;
        }
        UpdateStuckCounters(e, t) {
          const r =
              "forward" === e
                ? this.m_bFinishedSearchingForward
                : this.m_bFinishedSearchingBackward,
            a = this.GetTimeEdgeForDirection(e, void 0);
          return r || a !== t
            ? ("forward" == e
                ? (this.m_nForwardStuckCount = 0)
                : (this.m_nBackwardStuckCount = 0),
              !1)
            : ("forward" == e
                ? this.m_nForwardStuckCount++
                : this.m_nBackwardStuckCount++,
              !0);
        }
        GetRequestInFlight(e) {
          return "forward" === e
            ? this.m_forwardRequestInFlight
            : this.m_backwardRequestInFlight;
        }
        SetRequestInFlight(e, t) {
          (0, w.w)(
            !t || !this.GetRequestInFlight(e),
            "Already have a request in flight for",
            e,
          ),
            "forward" === e
              ? (this.m_forwardRequestInFlight = t)
              : (this.m_backwardRequestInFlight = t);
        }
        async LoadAdditionalEvents(e, t) {
          if (this.BHitEventHorizon(e)) return 1;
          let r = this.GetRequestInFlight(e);
          if (r) return r;
          const a =
              C.TS.STORE_BASE_URL + "events/ajaxgetusereventcalendarrange/",
            n =
              "forward" === e
                ? this.m_nForwardStuckCount
                : this.m_nBackwardStuckCount,
            i = n < 3 ? n : 0,
            s = n >= 3 ? 1 : 0,
            o = ("dev" === C.TS.WEB_UNIVERSE ? 50 : 250) + 50 * i,
            l = this.GetTimeEdgeForDirection(e, A.HD.GetTimeNowWithOverride()),
            c = {
              minTime: 0,
              maxTime: 0,
              ascending: !0,
              maxResults: o,
              populateEvents: 15,
              appTypes: this.m_visibilityStore.GetGameSources().join(","),
              eventTypes: Array.from(
                this.m_visibilityStore.enabledEventTypeSet,
              ).join(","),
              appIdFilter: Boolean(
                this.m_key.appids && this.m_key.appids.length > 0,
              )
                ? this.m_key.appids.sort().join(",")
                : void 0,
              clanIdFilter: Boolean(
                this.m_key.clanaccountids &&
                  this.m_key.clanaccountids.length > 0,
              )
                ? this.m_key.clanaccountids.sort().join(",")
                : void 0,
              collectionID: this.m_key.collectionid,
              saleID: this.m_key.saleid,
              hubtype: this.m_key.hubtype,
              category_or_language: this.m_key.category_or_language,
              tag_name: this.m_key.tag_name,
              tags: this.m_key.rgTags
                ? this.m_key.rgTags.slice().sort().join(",")
                : void 0,
            };
          "forward" === e
            ? ((c.minTime = Math.floor(l + s)), (c.ascending = !0))
            : ((c.maxTime = Math.floor(l - s)), (c.ascending = !1));
          return (
            (r = u()
              .get(a, {
                params: c,
                cancelToken: t ? t.token : void 0,
                withCredentials: !0,
              })
              .then(async (r) => {
                if ((this.SetRequestInFlight(e, null), 1 == r.data.success)) {
                  if (
                    (await this.RegisterCalendarEventsAndModels(r.data),
                    this.UpdateStuckCounters(e, l))
                  )
                    return this.LoadAdditionalEvents(e, t);
                } else
                  console.error(
                    "LoadAdditionalEvents was not successful: Msg" + r.data.msg,
                  );
                return r.data.success;
              })
              .catch((t) => {
                this.SetRequestInFlight(e, null);
                let r = (0, v.H)(t);
                return (
                  console.error(
                    "LoadAdditionalEvents hit error " + r.strErrorMsg,
                    r,
                  ),
                  "forward" == e
                    ? (this.m_bFinishedSearchingForward = !0)
                    : (this.m_bFinishedSearchingBackward = !0),
                  2
                );
              })),
            this.SetRequestInFlight(e, r),
            r
          );
        }
        BInternalInsertCalendarEventItem(e) {
          if (!e.unique_id)
            return (
              (0, w.w)(
                !1,
                "Attmpted to register a calendar event item with an invalid unique id!",
              ),
              !1
            );
          if (this.m_mapCalendarEventsByGid.has(e.unique_id)) return !1;
          const t = this.m_mapCalendarAppsByID.get(e.appid),
            r = this.m_mapCalendarClansByID.get(e.clanid);
          if (!t && !r)
            return console.log("No AppInfo or ClanInfo For: ", e), !1;
          const a = new g.NK();
          return (
            (a.clanid = e.clanid),
            (a.unique_id = e.unique_id),
            (a.event_type = e.event_type),
            (a.appid = e.appid),
            (a.start_time = e.start_time),
            (a.score = e.score),
            (a.appInfo = t),
            (a.clanInfo = r),
            this.m_rgSortedCalendarEvents.push(a),
            this.m_mapCalendarEventsByGid.set(a.unique_id, a),
            !0
          );
        }
        GetCalendarAppInfoForAppID(e) {
          return this.m_mapCalendarAppsByID.get(e);
        }
        RebuildSortedCalendarEventList() {
          const e = this.m_rgSortedCalendarEvents.slice();
          this.m_rgSortedCalendarEvents = e.sort(
            (e, t) => t.start_time - e.start_time,
          );
        }
        async UpdateEventBlockFromCalendarEvent(e, t) {
          let r = e.appInfo ? e.appid : void 0,
            a = e.clanInfo ? e.clanInfo.clanid : void 0;
          null != r || null != a
            ? (await G.Get().UpdateCommunitionSetting(t, r, a),
              E.V.RecordAppInteractionEvent(r, E.E.k_eMuted))
            : (0, w.w)(
                !1,
                "Both clan id and account id are missing, cannot change communication status",
              );
        }
        GetAllClans() {
          return Array.from(this.m_mapCalendarClansByID.keys());
        }
        GetAllApps() {
          return Array.from(this.m_mapCalendarAppsByID.keys());
        }
      }
      (0, m.Cg)([p.sH], M.prototype, "m_mapCalendarAppsByID", void 0),
        (0, m.Cg)([p.sH], M.prototype, "m_mapCalendarClansByID", void 0),
        (0, m.Cg)([p.sH], M.prototype, "m_mapCalendarEventsByGid", void 0),
        (0, m.Cg)([p.sH], M.prototype, "m_rgSortedCalendarEvents", void 0),
        (0, m.Cg)([p.sH], M.prototype, "m_bFinishedSearchingForward", void 0),
        (0, m.Cg)([p.sH], M.prototype, "m_bFinishedSearchingBackward", void 0),
        (0, m.Cg)([p.sH], M.prototype, "m_rgCalendarSections", void 0),
        (0, m.Cg)([p.sH], M.prototype, "m_rgFutureSections", void 0),
        (0, m.Cg)([p.sH], M.prototype, "m_collectionMetaData", void 0),
        (0, m.Cg)([p.XI], M.prototype, "InitCalendarSections", null),
        (0, m.Cg)([p.XI], M.prototype, "InitFutureCalendarSections", null),
        (0, m.Cg)([p.XI], M.prototype, "RegisterCalendarEventsAndModels", null),
        (0, m.Cg)([p.XI], M.prototype, "RegisterCalendarApps", null),
        (0, m.Cg)([p.XI], M.prototype, "RegisterCalendarClans", null),
        (0, m.Cg)([p.XI], M.prototype, "RegisterReadEvents", null),
        (0, m.Cg)([p.XI], M.prototype, "RegisterEventVotes", null),
        (0, m.Cg)([p.XI], M.prototype, "RegisterCalendarEvents", null),
        (0, m.Cg)([I.o], M.prototype, "BHitEventHorizon", null),
        (0, m.Cg)([p.XI.bound], M.prototype, "LoadAdditionalEvents", null),
        (0, m.Cg)(
          [p.XI],
          M.prototype,
          "UpdateEventBlockFromCalendarEvent",
          null,
        );
      class R {
        m_rgLoadedEventsBox = p.sH.box([]);
        m_lastLoadLatch = null;
        m_fnGetUnfilteredEvents;
        m_fnLoadAdditionalEvents;
        m_fnBHitEventHorizon;
        m_fnBIsEventInView;
        m_bSkipStorePreferenceCheck;
        m_bAllowMutedAndIgnoredSources;
        m_rgAutorunDisposer;
        constructor(e, t, r, a, n, i) {
          (0, p.Gn)(this),
            (this.m_fnGetUnfilteredEvents = e),
            (this.m_fnLoadAdditionalEvents = t),
            (this.m_fnBHitEventHorizon = r),
            (this.m_fnBIsEventInView = a),
            (this.m_bSkipStorePreferenceCheck = n),
            (this.m_bAllowMutedAndIgnoredSources = i),
            (this.m_rgAutorunDisposer = (0, p.fm)(async () => {
              const e = this.viewFilteredEvents.slice();
              if (!this.m_bSkipStorePreferenceCheck) {
                const t = Array.from(
                  new Set(e.map((e) => e.appid).filter(Boolean)),
                ).sort();
                if (
                  ((this.m_lastLoadLatch = e),
                  await f.A.Get().QueueMultipleAppRequests(t, {
                    ...b.jy,
                    include_assets: !0,
                  }),
                  this.m_lastLoadLatch != e)
                )
                  return;
                this.m_lastLoadLatch = null;
              }
              this.m_rgLoadedEventsBox.set(e);
            }));
        }
        dispose() {
          this.m_rgAutorunDisposer();
        }
        get viewFilteredEvents() {
          return this.m_fnGetUnfilteredEvents().filter((e) =>
            this.m_fnBIsEventInView(e),
          );
        }
        get filteredAndCheckedEvents() {
          return this.m_rgLoadedEventsBox.get().filter((e) => {
            if (e.appid) {
              if (
                !this.m_bAllowMutedAndIgnoredSources &&
                (G.Get().BIsMutedAppID(e.appid) ||
                  c.Fm.Get().BIsGameIgnored(e.appid))
              )
                return !1;
              if (
                !this.m_bSkipStorePreferenceCheck &&
                (0, b.Li)(f.A.Get().GetApp(e.appid))
              )
                return !1;
            } else if (
              !this.m_bAllowMutedAndIgnoredSources &&
              (G.Get().BIsMutedClanID(e.clanid) ||
                c.Fm.Get().BIsIgnoringCurator(o.b.InitFromClanID(e.clanid)))
            )
              return !1;
            return !0;
          });
        }
        BIsCompleteThroughTime(e, t) {
          if (this.m_fnBHitEventHorizon(e)) return !0;
          const r = this.m_fnGetUnfilteredEvents();
          return "forward" === e
            ? t && r.length > 0 && r[0].start_time > t
            : r.length > 0 && r[r.length - 1].start_time < t;
        }
        async EnsureRangeIsLoaded(e, t) {
          for (
            let e = 0;
            e < 100 && !this.BIsCompleteThroughTime("forward", t);
            e++
          )
            await this.m_fnLoadAdditionalEvents("forward");
          for (
            let t = 0;
            t < 100 && !this.BIsCompleteThroughTime("backward", e);
            t++
          )
            await this.m_fnLoadAdditionalEvents("backward");
        }
        GetCalendarItemsInTimeRange(e, t) {
          this.EnsureRangeIsLoaded(e, t);
          const r = this.filteredAndCheckedEvents.filter(
              (r) => r.start_time >= e && (!t || r.start_time < t),
            ),
            a = this.BIsCompleteThroughTime("forward", t),
            n = this.BIsCompleteThroughTime("backward", e);
          return { rgCalendarItems: r, bIsComplete: a && n };
        }
        GetCurrentlyLoadedEvents() {
          return this.filteredAndCheckedEvents;
        }
        GetCurrentlyLoadedEventCount(e, t) {
          let r = 0;
          this.filteredAndCheckedEvents.forEach((a) => {
            a.start_time >= e && (!t || a.start_time < t) && r++;
          });
          const a = this.BIsCompleteThroughTime("forward", t),
            n = this.BIsCompleteThroughTime("backward", e);
          return { nCount: r, bIsComplete: a && n };
        }
        BIsViewEmpty() {
          return this.filteredAndCheckedEvents.length > 0;
        }
        GetActiveEventsAt(e) {
          return this.filteredAndCheckedEvents
            .map((e) => S.O3.GetClanEventModel(e.unique_id))
            .filter((t) => {
              if (t) {
                const r = t.endTime || t.startTime + 3600;
                return e >= t.startTime && e < r;
              }
              return !1;
            });
        }
      }
      (0, m.Cg)([p.EW.struct], R.prototype, "viewFilteredEvents", null),
        (0, m.Cg)([p.EW.struct], R.prototype, "filteredAndCheckedEvents", null);
      const k = p.sH.box(null),
        F = new Map();
      function U() {
        return (
          null == k.get() &&
            (function (e, t) {
              let r = "";
              e.appids &&
                e.appids.length > 0 &&
                (r += "appids:" + e.appids.sort().join(",")),
                e.clanaccountids &&
                  e.clanaccountids.length > 0 &&
                  (r += "clanids:" + e.clanaccountids.sort().join(",")),
                e.collectionid && (r += "collection:" + e.collectionid),
                e.saleid && (r += "sale:" + e.saleid),
                e.bSectionByDay && (r += "_sectionbyday"),
                e.rtCalendarEnd && (r += "_end:" + e.rtCalendarEnd),
                e.rgTags &&
                  e.rgTags.length > 0 &&
                  (r += "_tags:" + e.rgTags.slice().sort().join(",")),
                e.hubtype &&
                  (r +=
                    "_hubtype:" +
                    e.hubtype +
                    "_" +
                    e.category_or_language +
                    "_" +
                    e.tag_name),
                k.get() !== r && (k.set(r), F.has(r) || F.set(r, new M(e, t)));
            })({}),
          F.get(k.get())
        );
      }
      window.g_EventCalendarMap = F;
      var L = r(52038),
        P = r(9154),
        O = r(738),
        z = r(39700),
        N = r(56524),
        W = r(86090),
        H = r(95695),
        j = r(82477),
        x = r(45699),
        V = r(12155),
        q = r(32754);
      const Y = (0, n.PA)((e) => {
        const { closeModal: t } = e;
        return s.createElement(P.o0, {
          strTitle: (0, B.we)(
            "#EventCalendar_GameSource_UnhideCuratorsDialog_Title",
          ),
          strDescription: (0, B.we)(
            "#EventCalendar_GameSource_UnhideCuratorsDialog_Description",
          ),
          strOKButtonText: (0, B.we)(
            "#EventCalendar_GameSource_UnhideCuratorsDialog_OKButton",
          ),
          strCancelButtonText: (0, B.we)(
            "#EventCalendar_GameSource_UnhideCuratorsDialog_CancelButton",
          ),
          onOK: () => {
            U().m_visibilityStore.SetGameSourceAllowed(T.FD.k_ECurator, !0),
              t();
          },
          onCancel: () => {
            U().m_visibilityStore.SetCuratorUnhideOnFollowDialogDismissed(!0),
              t();
          },
        });
      });
      function K(e) {
        e ||
          (null !== k &&
            (U().m_visibilityStore.BCuratorUnhideOnFollowDialogDismissed() ||
              U().m_visibilityStore.BIsGameSourceAllowed(T.FD.k_ECurator) ||
              (0, O.pg)(s.createElement(Y, null), window)));
      }
      function J() {
        return (
          !!y.KN.Get().BIsUserLoggedIn() ||
          ((0, O.pg)(
            s.createElement(P.o0, {
              strTitle: (0, B.we)("#EventDisplay_Share_NotLoggedIn"),
              strDescription: (0, B.we)(
                "#EventDisplay_Share_NotLoggedIn_Description",
              ),
              strOKButtonText: (0, B.we)("#MobileLogin_SignIn"),
              onOK: () => (0, j.vg)(),
            }),
            window,
          ),
          !1)
        );
      }
      function Q(e) {
        const t = o.b.InitFromClanID(e),
          r = y.KN.Get().GetPartnerEventPermissions(t);
        return (
          !r ||
          !r.limited_user ||
          ((0, O.pg)(s.createElement(W.g, null), window), !1)
        );
      }
      const Z = (e) => {
          const {
            className: t,
            bIgnored: r,
            bApplyingFollowing: a,
            bFollowing: n,
            onFollowClick: i,
          } = e;
          return A.HD.bIsFollowingEnabled
            ? s.createElement(
                q.he,
                {
                  toolTipContent:
                    r || n ? void 0 : (0, B.we)("#CreatorHome_Follow_tooltip"),
                },
                s.createElement(
                  x.ml,
                  {
                    className: (0, L.A)(
                      H.Button,
                      N.FollowButton,
                      "FollowButton",
                      t,
                      n ? "Followed" : "",
                    ),
                    onClick: i,
                  },
                  a && s.createElement(z.k, { size: 15 }),
                  !a && (n || r) && s.createElement(V.Jlk, null),
                  s.createElement(
                    "div",
                    { className: N.FollowBtnText },
                    !a &&
                      (n
                        ? (0, B.we)("#Button_Followed")
                        : r
                          ? (0, B.we)("#Button_Ignored")
                          : (0, B.we)("#Button_Follow")),
                  ),
                ),
              )
            : null;
        },
        X = (e) => {
          const [t, r] = s.useState(!1),
            { clanAccountID: a, className: n } = e,
            m = o.b.InitFromClanID(a),
            d = (0, i.q3)(() => c.Fm.Get().BIsFollowingCurator(m)),
            u = (0, i.q3)(() => !d && c.Fm.Get().BIsIgnoringCurator(m));
          return s.createElement(Z, {
            className: n,
            bIgnored: u,
            bFollowing: d,
            bApplyingFollowing: t,
            onFollowClick: () => {
              const { clanAccountID: t } = e;
              J() &&
                Q(t) &&
                (r(!0),
                (() => {
                  const { clanAccountID: t, creatorID: a } = e,
                    n = o.b.InitFromClanID(t),
                    i = c.Fm.Get().BIsFollowingCurator(n),
                    s = !i && c.Fm.Get().BIsIgnoringCurator(n);
                  c.Fm.Get()
                    .UpdateFollowOrIgnoreCurator(n, !s, !(s || i))
                    .then((e) => {
                      if (a) {
                        let e = l.pF.GetCreatorHomeByID(a);
                        s || e.AdjustFollower(i ? -1 : 1);
                      }
                      r(!1);
                    })
                    .then(() => {
                      K(i);
                    })
                    .catch((e) => {
                      r(!1);
                      let t = (0, v.H)(e);
                      console.error(
                        "CuratorFollowButton hit error: " + t.strErrorMsg,
                        t,
                      );
                    });
                })());
            },
          });
        },
        $ = (e) => {
          const [t, r] = s.useState(!1),
            { appid: a, className: n } = e,
            i = c.Fm.Get().BFollowsApp(a),
            o = !i && c.Fm.Get().BIsGameIgnored(a);
          return s.createElement(Z, {
            className: n,
            bIgnored: o,
            bFollowing: i,
            bApplyingFollowing: t,
            onFollowClick: () => {
              J() &&
                (r(!0),
                (() => {
                  const { appid: t } = e,
                    a = c.Fm.Get().BFollowsApp(t),
                    n = !a && c.Fm.Get().BIsGameIgnored(t);
                  c.Fm.Get()
                    .UpdateFollowingApp(t, !(n || a))
                    .then(() => {
                      r(!1);
                    })
                    .catch((e) => {
                      r(!1);
                      const t = (0, v.H)(e);
                      console.error(
                        "AppFollowButton hit error: " + t.strErrorMsg,
                        t,
                      );
                    });
                })());
            },
          });
        };
    },
    29863: (e, t, r) => {
      "use strict";
      r.d(t, { Jz: () => Z, EP: () => X, JU: () => ie, Qf: () => ae });
      var a = r(14947),
        n = r(75844),
        i = r(90626),
        s = r(72739);
      const o =
        r.p +
        "images/applications/appmgmt/defaultappheader.png?v=valveisgoodatcaching";
      var l = r(6336),
        c = r(85044),
        m = r(55963),
        d = r(4796),
        u = r(67165),
        p = r(30894),
        _ = r(82097),
        h = r(62792),
        g = r(55263),
        y = r(54906),
        S = r(84811),
        f = r(2193),
        b = r(3661),
        w = r(72237),
        v = r(94095),
        I = r(99956),
        B = r(90595),
        C = r(47235),
        E = r(12155),
        T = r(32754),
        A = r(44332),
        G = r(6144),
        D = r(52038),
        M = r(61859),
        R = r(73745),
        k = r(78327),
        F = r(84364),
        U = r(83284),
        L = r.n(U),
        P = r(82477),
        O = r(18654),
        z = r.n(O),
        N = r(4434),
        W = r(60014),
        H = r(10050);
      const j = "DEBUG_UseNewGameHover";
      function x() {
        return window.sessionStorage?.getItem(j) || "default";
      }
      window.SetHoverPresentation = function (e) {
        window.sessionStorage.setItem(j, e);
      };
      const V = 5500,
        q = 2e3,
        Y = 10;
      function K(e, t, r) {
        const n = [];
        if (1 == e.length) {
          const t = _.A.Get().GetApp(e[0]);
          t.GetMicroTrailer() &&
            n.push({
              rctImage: i.createElement(b.m, {
                appInfo: { id: t.GetID(), type: "game" },
              }),
              nDurationMs: V,
            }),
            t
              .GetOnlyAllAgesSafeScreenshots()
              .slice(0, Y)
              .forEach((e, t) => {
                n.push({
                  rctImage: i.createElement("img", {
                    key: e,
                    className: L().FullDivImage,
                    loading: "lazy",
                    src: e,
                    alt: "screenshot " + (t + 1),
                  }),
                  nDurationMs: q,
                });
              });
        }
        if (0 == n.length)
          for (const t of e) {
            const e = _.A.Get().GetApp(t),
              r = e?.GetAssets()?.GetMainCapsuleURL();
            r &&
              n.push({
                rctImage: i.createElement("img", {
                  key: "fallback",
                  className: L().FullDivImage,
                  loading: "lazy",
                  src: r,
                  alt: e.GetName(),
                }),
                nDurationMs: q,
              });
          }
        n.length > 0
          ? (t(n), r(!0))
          : ("dev" != k.TS.WEB_UNIVERSE && "beta" != k.TS.WEB_UNIVERSE) ||
            console.error(
              "DEV ONLY OUTPUT: GameHoverImages for id/type no images: (might be not age safe screenshots)",
              (0, a.HO)(e),
            );
      }
      function J(e) {
        const { info: t } = e,
          r = (0, i.useRef)({
            include_assets: !0,
            include_trailers: !0,
            include_screenshots: !0,
          }),
          [a, n] = (0, g.G6)(t.id, (0, h.SW)(t.type), r.current),
          s = (0, i.useRef)(a),
          [l, c] = (0, i.useState)([]),
          m = (0, i.useRef)(0),
          d = (0, R.CH)(),
          [u] = i.useState(new G.LU()),
          p = (0, i.useCallback)(
            (e = !1) => {
              if ((e && (m.current = 0), l?.length > 0)) {
                const e = l[m.current].nDurationMs;
                u.Schedule(e, () => {
                  const e = m.current;
                  (m.current = (m.current + 1) % l.length),
                    e != m.current && (p(), d());
                });
              }
            },
            [l, u, d],
          );
        return (
          (0, i.useEffect)(
            () => (
              !a || (l && 0 != l.length && s.current === a)
                ? 2 == n && 0 == l.length
                  ? c([
                      {
                        rctImage: i.createElement("img", {
                          key: "default",
                          className: L().FullDivImage,
                          loading: "lazy",
                          src: o,
                          alt: "default",
                        }),
                        nDurationMs: q,
                      },
                    ])
                  : l?.length && p()
                : ((s.current = a),
                  2 == a.GetStoreItemType() || 1 == a.GetStoreItemType()
                    ? ((0, A.w)(
                        a.GetIncludedAppIDs().length > 0,
                        "expected included apps " +
                          a.GetID() +
                          " " +
                          a.GetStoreItemType(),
                      ),
                      _.A.Get()
                        .QueueMultipleAppRequests(a.GetIncludedAppIDs(), {
                          include_assets: !0,
                        })
                        .then(() => K(a.GetIncludedAppIDs(), c, p)))
                    : 1 == a.GetAppType() &&
                        a.GetParentAppID() &&
                        !a.GetAllTrailers().BHasTrailers()
                      ? _.A.Get()
                          .QueueAppRequest(a.GetParentAppID(), r.current)
                          .then(() =>
                            (function (e, t, r, a) {
                              const n = [],
                                s = _.A.Get().GetApp(t);
                              s.GetMicroTrailer() &&
                                n.push({
                                  rctImage: i.createElement(b.m, {
                                    appInfo: { id: s.GetID(), type: "game" },
                                  }),
                                  nDurationMs: V,
                                });
                              const o = _.A.Get()
                                .GetApp(e)
                                .GetOnlyAllAgesSafeScreenshots();
                              o.slice(0, Y).forEach((e, t) => {
                                n.push({
                                  rctImage: i.createElement("img", {
                                    key: e,
                                    className: L().FullDivImage,
                                    loading: "lazy",
                                    src: e,
                                    alt: "screenshot " + (t + 1),
                                  }),
                                  nDurationMs: q,
                                });
                              }),
                                Y - o.length > 0 &&
                                  s
                                    .GetOnlyAllAgesSafeScreenshots()
                                    .slice(0, Y)
                                    .forEach((e, t) => {
                                      n.push({
                                        rctImage: i.createElement("img", {
                                          key: e,
                                          className: L().FullDivImage,
                                          loading: "lazy",
                                          src: e,
                                          alt: "screenshot " + (t + 1),
                                        }),
                                        nDurationMs: q,
                                      });
                                    }),
                                n.length > 0
                                  ? (r(n), a(!0))
                                  : ("dev" != k.TS.WEB_UNIVERSE &&
                                      "beta" != k.TS.WEB_UNIVERSE) ||
                                    console.error(
                                      "DEV ONLY OUTPUT: Demo GameHoverImages for id/type no images: (might be not age safe screenshots)",
                                      e,
                                      t,
                                    );
                            })(a.GetID(), a.GetParentAppID(), c, p),
                          )
                      : K([a.GetID()], c, p)),
              () => u.Cancel()
            ),
            [l, a, n, u, p, s],
          ),
          i.createElement(
            "div",
            { className: L().TrailerCtn },
            l?.map((e, r) =>
              i.createElement(
                "div",
                {
                  key: "e-" + r + "-" + t.id + "_" + t.type,
                  className: (0, D.A)(
                    L().FullDivImage,
                    r != m.current && L().Transparent,
                  ),
                },
                e.rctImage,
              ),
            ),
          )
        );
      }
      function Q(e) {
        const { rgTagIDs: t } = e;
        return i.createElement(
          "div",
          { className: L().TagRow },
          i.createElement(
            "div",
            { className: L().Tags },
            t.map((e) =>
              i.createElement(I.p, {
                key: "tag_" + e,
                tagid: e,
                className: L().Tag,
              }),
            ),
          ),
        );
      }
      function Z(e) {
        const { appInfo: t, bTruncateTotalReviews: r, bShowTooltip: a } = e,
          [n] = (0, g.G6)(t?.id, (0, h.SW)(t?.type), { include_reviews: !0 });
        if (!n) return null;
        const s = p.Fm.Get().BShowFilteredUserReviewScores()
          ? n.GetFilteredReviewSummary()
          : n.GetUnfilteredReviewSummary();
        if (!s || 0 == s.review_score) return null;
        let o = L().ReviewScoreNone;
        o =
          s.review_score > 0 && s.review_score < 5
            ? L().ReviewScoreLow
            : 5 == s.review_score
              ? L().ReviewScoreMixed
              : L().ReviewScoreHigh;
        const l = `${k.TS.STORE_BASE_URL}app/${t.id}/#app_reviews_hash`,
          c = i.createElement(
            "div",
            { className: (0, D.A)(L().ReviewScoreValue, o) },
            i.createElement(
              "div",
              { className: L().ReviewScoreLabel },
              s.review_score_label,
            ),
            i.createElement(
              "div",
              { className: L().ReviewScoreDivider },
              " | ",
            ),
            i.createElement(
              "div",
              { className: L().ReviewScoreCount },
              r
                ? "(" + s.review_count.toLocaleString() + ")"
                : (0, M.we)(
                    "#GameHover_UserReviewCount",
                    s.review_count.toLocaleString(),
                  ),
            ),
            !r &&
              i.createElement(
                "div",
                { className: L().ReviewScoreHeader },
                " ",
                (0, M.we)("#GameHover_UserReviewsHeader"),
              ),
          );
        let m = "#ReviewScore_PercentPositive";
        if (2 === n.GetStoreItemType())
          m = "#ReviewScore_PercentPositive_bundle";
        else if (0 === n.GetStoreItemType())
          switch (n.GetAppType()) {
            case 6:
              m = "#ReviewScore_PercentPositive_software";
              break;
            case 7:
              m = "#ReviewScore_PercentPositive_video";
              break;
            case 10:
              m = "#ReviewScore_PercentPositive_hardware";
              break;
            case 8:
              m = "#ReviewScore_PercentPositive_series";
          }
        return i.createElement(
          B.q,
          { url: l, className: (0, D.A)(L().ReviewScore, "ReviewScore") },
          a &&
            null != s.percent_positive &&
            null != s.review_count &&
            Boolean(m)
            ? i.createElement(
                T.he,
                {
                  bTopmost: !0,
                  toolTipContent: (0, M.we)(
                    m,
                    s.percent_positive,
                    s.review_count,
                  ),
                },
                c,
              )
            : c,
        );
      }
      const X = (0, n.PA)((e) => {
          const { appID: t, snr: r, classOverride: a } = e,
            [n] = (0, g.t7)(t, {}),
            [s, o] = (0, i.useState)(() =>
              !n || (1 != n?.GetAppType() && 12 != n?.GetAppType())
                ? t
                : n.GetParentAppID() || t,
            ),
            l = s && p.Fm.Get().BIsGameWishlisted(s),
            c = s && p.Fm.Get().BOwnsApp(s),
            [m, d] = (0, i.useState)(!1),
            u = (0, N.m)("GameHoverWishlistButton");
          if (
            ((0, i.useEffect)(() => {
              (1 != n?.GetAppType() && 12 != n?.GetAppType()) ||
                o(n.GetParentAppID() || t);
            }, [t, n]),
            c)
          )
            return null;
          return i.createElement(
            "div",
            {
              className: (0, D.A)(L().WishlistButton, a),
              onClick: async (e) => {
                e.preventDefault(),
                  e.stopPropagation(),
                  k.iA.logged_in
                    ? (d(!0),
                      await p.Fm.Get().UpdateGameWishlist(s, !l, r),
                      u.token.reason || d(!1))
                    : (0, P.vg)();
              },
            },
            l ? i.createElement(E.qnF, null) : i.createElement(E.T4m, null),
            i.createElement(
              "div",
              {
                className: (0, D.A)(
                  L().WishlistButtonText,
                  m && L().WishlistLoadingText,
                ),
              },
              (0, M.we)(l ? "#Sale_RemoveFromWishlist" : "#Sale_AddToWishlist"),
            ),
          );
        }),
        $ = (e) => {
          const { nCreatorAccountID: t } = e,
            [r, a] = (0, d.TB)(t),
            n = (0, u.FV)(t);
          return i.createElement(
            "div",
            { className: L().GameHoverCreatorFollowButtonCtn },
            i.createElement(
              "a",
              { href: n?.GetCreatorHomeURL("developer") },
              i.createElement("img", {
                src: r ? (0, c.t)(null, "medium") : a.avatar_medium_url,
              }),
            ),
            i.createElement(f.of, { clanAccountID: t }),
          );
        },
        ee = (0, n.PA)((e) => {
          const {
              info: t,
              displayInfo: r,
              name: a,
              strStoreUrl: n,
              elElementToAppend: s,
              bShowDemoButton: o,
              bHideBottomHalf: l,
              bHidePrice: c,
              bShowDeckCompatibilityDialog: m,
              bUseSubscriptionLayout: d,
              nCreatorAccountID: u,
              bPreventNavigation: p,
            } = e,
            [_, S] = (0, i.useState)(!1),
            [f, b] = (0, i.useState)(""),
            [I] = (0, g.G6)(t.id, (0, h.SW)(t.type), {
              include_release: !0,
              include_platforms: !0,
              include_reviews: !0,
              include_tag_count: 20,
            }),
            [B] = (0, g.G6)(r.id, (0, h.SW)(r.type), { include_assets: !0 }),
            E = !d && !o && !s,
            T = 0 == I?.GetStoreItemType();
          return i.createElement(
            "div",
            {
              className: L().BottomShelf,
              style: { transform: l && _ ? f : "" },
              onMouseEnter: () => S(!0),
              onFocus: () => S(!0),
              onMouseLeave: () => S(!1),
              onBlur: () => S(!1),
            },
            i.createElement(
              "a",
              {
                href: p ? null : n,
                target: k.TS.IN_CLIENT ? void 0 : "_blank",
                className: L().Midline,
              },
              Boolean(B) &&
                i.createElement(
                  "div",
                  { className: L().CapsuleImageAnchorPoint },
                  i.createElement(
                    "div",
                    {
                      className: (0, D.A)(
                        L().CapsuleImageCtn,
                        L().WithCornerShine,
                      ),
                    },
                    i.createElement("img", {
                      loading: "lazy",
                      src: B?.GetAssets().GetHeaderURL(),
                      alt: I?.GetName(),
                    }),
                  ),
                ),
              Boolean(!c && !d) &&
                i.createElement(
                  "div",
                  { className: L().Price },
                  i.createElement(v.wc, { info: t, onlyOneDiscountPct: !0 }),
                ),
            ),
            i.createElement(
              "div",
              {
                className: L().BottomShelfOffScreen,
                ref: (e) => b(`translateY( -${e?.clientHeight || 0}px )`),
              },
              i.createElement(
                "div",
                { className: L().TextContent },
                i.createElement(
                  "a",
                  {
                    href: p ? null : n,
                    target: k.TS.IN_CLIENT ? void 0 : "_blank",
                  },
                  i.createElement(
                    "div",
                    { className: L().GameTitle },
                    I?.GetName() || a,
                  ),
                ),
                Boolean(I) && i.createElement(Q, { rgTagIDs: I.GetTagIDs() }),
                Boolean(!m && I) && i.createElement(Z, { appInfo: t }),
                Boolean(!m && E) &&
                  i.createElement(
                    "div",
                    { className: L().ReviewsAndRelease },
                    i.createElement(w.Q, {
                      item: t,
                      strClassName: L().PlatformDisplay,
                    }),
                    Boolean(I?.GetFormattedSteamReleaseDate()) &&
                      i.createElement(
                        "div",
                        { className: L().ReleaseDate },
                        I?.GetFormattedSteamReleaseDate(),
                      ),
                  ),
                o &&
                  i.createElement(F.j, { info: t, className: L().DemoButton }),
                Boolean(m && T) && i.createElement(y.Q8, { storeItem: I }),
                Boolean(s) && s,
                Boolean(d && T) &&
                  i.createElement(C.E, { appid: t.id, bIsMuted: !1 }),
                u && i.createElement($, { nCreatorAccountID: u }),
              ),
            ),
          );
        }),
        te = (0, n.PA)((e) => {
          i.useEffect(() => {
            p.Fm.Get().HintLoad();
          }, []);
          const {
            info: t,
            displayInfo: r,
            strStoreUrl: a,
            bHideBottomHalf: n,
            bShowDeckCompatibilityDialog: s,
            bShowWishlistButton: o = !0,
          } = e;
          let l;
          return (
            t.overrideNavigation && (l = (e) => t.overrideNavigation()),
            i.createElement(
              "div",
              {
                className: (0, D.A)(
                  L().GameHoverCapsuleCtn,
                  z().InGameHover,
                  n && L().UseHidingBottomHalf,
                ),
                onClick: l,
              },
              i.createElement(
                "a",
                {
                  href: l ? null : a,
                  target: k.TS.IN_CLIENT ? void 0 : "_blank",
                  className: L().TrailerAnchorStoreLink,
                },
                Boolean(o && !s && !l) &&
                  i.createElement(X, { appID: r.id, snr: e.strSNR }),
                i.createElement(J, { info: r }),
              ),
              i.createElement(ee, { ...e, bPreventNavigation: Boolean(l) }),
            )
          );
        }),
        re = 150;
      function ae(e) {
        const {
            item: t,
            name: r,
            bPreventNavigation: a,
            elElementToAppend: n,
            bShowDemoButton: s,
            bPreferDemoStorePage: o,
            bHidePrice: l,
            bUseSubscriptionLayout: c,
            strExtraParams: d,
            nCreatorAccountID: u,
            bShowDeckCompatibilityDialog: p,
            bShowWishlistButton: _ = !0,
            ...y
          } = e,
          [S] = (0, g.G6)(t.id, (0, h.SW)(t.type), {}),
          f = (0, W.n9)(),
          b = (0, m.L3)(f),
          w = (0, k.Qn)();
        if (!S && !r) return null;
        if (w) return i.createElement(i.Fragment, null, e.children);
        let v = { id: t.id, type: t.type };
        1 == S?.GetStoreItemType() &&
          1 == S?.GetIncludedAppIDs().length &&
          (v = { id: S.GetIncludedAppIDs()[0], type: "game" });
        const I = "hiding" == x(),
          B =
            a || !S
              ? null
              : (0, m.wJ)(`${S?.GetStorePageURL(o)}${d ? `?${d}` : ""}`, f),
          C = i.createElement(te, {
            info: t,
            displayInfo: v,
            name: r,
            bPreventNavigation: a,
            strStoreUrl: B,
            elElementToAppend: n,
            bShowDemoButton: s,
            bPreferDemoStorePage: o,
            bShowDeckCompatibilityDialog: p,
            bHideBottomHalf: I,
            bHidePrice: l,
            bUseSubscriptionLayout: c,
            strSNR: b,
            nCreatorAccountID: u,
            bShowWishlistButton: _,
          });
        return i.createElement(
          ie,
          { hoverContent: C, strClickUrl: B, ...y },
          e.children,
        );
      }
      function ne(e) {
        const { hoverProps: t, children: r } = e,
          a = i.useCallback((e) => e?.focus(), []);
        return i.createElement(
          l.g,
          { ...t },
          i.createElement(
            H.M,
            {
              timeout: 500,
              in: !0,
              appear: !0,
              classNames: { appearActive: L().Opening, enterDone: L().Open },
            },
            (e) =>
              i.createElement(
                "div",
                {
                  ref: (0, R.XB)(e, a),
                  className: L().HoverContentTransition,
                  tabIndex: -1,
                },
                r,
              ),
          ),
        );
      }
      function ie(e) {
        const {
            hoverContent: t,
            hoverProps: r,
            nDelayShowMs: a,
            strClickUrl: n,
            children: s,
            className: o,
            ...l
          } = e,
          c = (0, k.Qn)(),
          [m, d] = i.useState(!c),
          [u, p] = i.useState(!1),
          [_, h] = i.useState(void 0),
          g = i.useCallback((e) => {
            p(!0), h(e.currentTarget);
          }, []),
          y = i.useCallback(() => p(!1), []),
          f = i.useCallback((e) => {
            27 == e.keyCode && (p(!1), e.preventDefault(), e.stopPropagation());
          }, []),
          b = i.useCallback(
            (e) => {
              d(!1),
                (window.location.href = n),
                e.preventDefault(),
                e.stopPropagation();
            },
            [n],
          ),
          w = i.useCallback(() => d(!1), []);
        return i.createElement(
          "div",
          {
            "data-key": "hover div",
            className: (0, D.A)(L().ItemHoverSource, n && L().Selectable, o),
            ...l,
            onMouseEnter: g,
            onMouseLeave: y,
            onFocus: g,
            onClick: n ? b : void 0,
            onTouchStart: w,
            onKeyDown: f,
          },
          m &&
            i.createElement(
              se,
              { visible: u, target: _, nDelayShowMs: a, hoverProps: r },
              t,
            ),
          i.createElement(S.tH, null, s),
        );
      }
      function se(e) {
        const {
            hoverProps: t,
            nDelayShowMs: r = re,
            target: a,
            visible: n,
            children: o,
          } = e,
          [l, c] = i.useState(n);
        if (
          (i.useEffect(() => {
            if (n) {
              if (r) {
                const e = window.setTimeout(() => c(!0), r);
                return () => window.clearTimeout(e);
              }
              c(!0);
            } else c(!1);
          }, [n]),
          i.useEffect(() => {
            if (!l) return;
            const e = a.ownerDocument.defaultView,
              t = e.scrollY,
              r = () => {
                Math.abs(e.scrollY - t) > 50 && c(!1);
              };
            return (
              window.addEventListener("scroll", r),
              () => window.removeEventListener("scroll", r)
            );
          }, [l, a?.ownerDocument.defaultView]),
          !a || !o || !l)
        )
          return null;
        const m = a.clientWidth < 200 ? "8px" : "10px",
          d = {
            direction: "overlay-center",
            bEnablePointerEvents: !0,
            ...t,
            style: {
              zIndex: 98,
              width: 1.15 * a.clientWidth,
              fontSize: m,
              minHeight: "hiding" == x() ? void 0 : 300,
              height:
                "hiding" == x() ? 1.15 * a.clientWidth * (125 / 184) : void 0,
              ...t?.style,
            },
            target: a,
          };
        return s.createPortal(
          i.createElement(
            ne,
            { hoverProps: d },
            i.createElement(S.tH, null, o),
          ),
          a.ownerDocument.body,
        );
      }
    },
    86090: (e, t, r) => {
      "use strict";
      r.d(t, { g: () => o });
      var a = r(90626),
        n = r(9154),
        i = r(61859),
        s = r(78327);
      const o = (e) => {
        let t = s.TS.HELP_BASE_URL + "wizard/HelpWithLimitedAccount";
        return a.createElement(
          n.o0,
          {
            strTitle: (0, i.we)("#Informational_Message"),
            onCancel: e.closeModal,
            onOK: e.closeModal,
            bAlertDialog: !0,
          },
          a.createElement(
            "div",
            null,
            (0, i.PP)(
              e.strTokenOverride || "#User_LimitedAccount",
              a.createElement(
                "a",
                { href: t, target: s.TS.IN_CLIENT ? void 0 : "_blank" },
                (0, i.we)("#User_LimitedAccount_UrlInfo"),
              ),
            ),
          ),
        );
      };
    },
    82477: (e, t, r) => {
      "use strict";
      r.d(t, { vg: () => d });
      var a = r(90626),
        n = r(738),
        i = r(61859),
        s = r(78327),
        o = r(97436),
        l = r(96059),
        c = r(28240);
      r(9154);
      function m(e) {
        return a.createElement(
          n.x_,
          { onEscKeypress: e.closeModal, bDisableBackgroundDismiss: !0 },
          a.createElement(u, {
            redirectURL: e.redirectURL,
            guestOption: e.guestOption,
          }),
        );
      }
      function d() {
        (0, n.pg)(
          a.createElement(m, {
            ownerWin: window,
            redirectURL: window.location.href,
          }),
          window,
          { strTitle: (0, i.we)("#Login_SignInTitle") },
        );
      }
      function u(e) {
        const { redirectURL: t, guestOption: r } = e,
          [n] = (0, a.useState)(
            new l.D(s.TS.WEBAPI_BASE_URL).GetAnonymousServiceTransport(),
          ),
          [i, m] = (0, a.useState)(!1);
        return a.createElement(
          "div",
          null,
          i
            ? a.createElement(o.Fn, null)
            : a.createElement(
                o.YN,
                {
                  autoFocus: !0,
                  transport: n,
                  platform: 2,
                  onComplete: (e) => {
                    e == c.wI.k_PrimaryDomainFail
                      ? m(!0)
                      : window.location.assign(t);
                  },
                  redirectUrl: t,
                  theme: "modal",
                },
                r && a.createElement(o.Mk, { redirectURL: t }),
              ),
        );
      }
    },
    99032: (e, t, r) => {
      "use strict";
      r.d(t, {
        AX: () => h,
        H2: () => u,
        Li: () => _,
        S7: () => d,
        a9: () => g,
        jy: () => p,
        sd: () => m,
      });
      var a = r(57876),
        n = r(62792),
        i = r(81886),
        s = r(30894),
        o = r(82097),
        l = r(78327),
        c = r(36837);
      function m(e) {
        return o.A.Get().BIsStoreItemMissing(e.id, (0, n.SW)(e.type));
      }
      function d(e, t, r) {
        const a = new Array();
        return (
          e?.forEach((e) => a.push({ id: e, type: "game" })),
          t?.forEach((e) => a.push({ id: e, type: "sub" })),
          r?.forEach((e) => a.push({ id: e, type: "bundle" })),
          a
        );
      }
      async function u(e, t, r) {
        if (!e || 0 == e.length) return [];
        const a = e.filter((e) => (0, i.f)(e.type)).map((e) => e.id),
          n = e.filter((e) => "sub" === e.type).map((e) => e.id),
          s = e.filter((e) => "bundle" === e.type).map((e) => e.id);
        await Promise.all([
          o.A.Get().QueueMultipleAppRequests(a, t),
          o.A.Get().QueueMultiplePackageRequests(n, t),
          o.A.Get().QueueMultipleBundleRequests(s, t),
        ]);
        const l = new Set();
        if (
          (s?.forEach((e) => {
            const t = o.A.Get().GetBundle(e);
            t?.GetIncludedAppIDs().forEach((e) => l.add(e));
          }),
          n?.forEach((e) => {
            const t = o.A.Get().GetPackage(e);
            t?.GetIncludedAppIDs().forEach((e) => l.add(e));
          }),
          await o.A.Get().QueueMultipleAppRequests(Array.from(l), t),
          a.forEach((e) => l.add(e)),
          r)
        ) {
          const e = Array.from(l)
            .map((e) => {
              const t = o.A.Get().GetApp(e);
              return t?.GetParentAppID()
                ? (l.add(t.GetParentAppID()), t.GetParentAppID())
                : null;
            })
            .filter(Boolean);
          await o.A.Get().QueueMultipleAppRequests(e, t);
        }
        return Array.from(l).filter((e) => {
          const t = o.A.Get().GetApp(e);
          return t && !t.GetParentAppID();
        });
      }
      const p = {
        include_tag_count: 20,
        include_basic_info: !0,
        include_supported_languages: !0,
      };
      function _(e) {
        const t = s.Fm.Get(),
          r = e?.GetAllLanguagesWithSomeSupport() || [],
          a = c.f.Get().GetHomeView()?.localized;
        return (
          !e ||
          (0 == e.GetStoreItemType() &&
            (t.BIsGameIgnored(e.GetAppID()) ||
              t.BIsGameIgnored(e.GetParentAppID()))) ||
          t.BExcludesContentDescriptor(e.GetContentDescriptorIDs()) ||
          t.BExcludeTagIDs(e.GetTagIDs()) ||
          e.GetAllCreatorClanIDs().some((e) => t.BIsIgnoringCurator(e)) ||
          (a &&
            !(
              0 == r.length ||
              e.BHasSomeLanguageSupport(0) ||
              t.BIsAnyLanguageEnabled(r)
            ))
        );
      }
      async function h(e, t, r, i) {
        let s = 0,
          c = 0;
        const m = [];
        await u(e, a.Xh, t);
        for (const a of e) {
          const e = o.A.Get().GetStoreItem(a.id, (0, n.SW)(a.type));
          if (!e) {
            s++;
            continue;
          }
          const l = e
            .GetIncludedAppIDs()
            .map((e) => o.A.Get().GetApp(e))
            .filter(Boolean);
          if ((l.push(e), t)) {
            const e = new Set(l.map((e) => e.GetParentAppID()).filter(Boolean)),
              t = Array.from(e)
                .map((e) => o.A.Get().GetApp(e))
                .filter(Boolean);
            t && l.push(...t);
          }
          l.some(i || _) ? (c++, r && r.push(a)) : m.push(a);
        }
        return (
          "dev" === l.TS.WEB_UNIVERSE &&
            0 === m.length &&
            console.log(
              "ApplyStorePreferenceFilters: " +
                s +
                " failed to load, " +
                c +
                " hidden by user filter.",
            ),
          m
        );
      }
      async function g(e, t, r, a, i, l, c) {
        let m = await h(
          e,
          t,
          c,
          i
            ? (e) =>
                !e ||
                s.Fm.Get().BExcludesContentDescriptor(
                  e.GetContentDescriptorIDs(),
                ) ||
                s.Fm.Get().BExcludeTagIDs(e.GetTagIDs())
            : _,
        );
        const d = [];
        for (const e of m) {
          const t = o.A.Get().GetStoreItem(e.id, (0, n.SW)(e.type));
          if (!t) continue;
          const i = t?.GetIncludedAppIDsOrSelf();
          let m = !1;
          r && (m = m || i.every((e) => s.Fm.Get().BIsGameOwned(e))),
            a && (m = m || i.every((e) => s.Fm.Get().BIsGameWishlisted(e))),
            l && (m = m || i.every((e) => s.Fm.Get().BIsGameIgnored(e))),
            m ? c && c.push(e) : d.push(e);
        }
        return d;
      }
    },
    79849: (e, t, r) => {
      "use strict";
      r.d(t, { qn: () => te, aU: () => ae, pb: () => Z });
      var a = r(75844),
        n = r(90626),
        i = r(6866),
        s = r(45699),
        o = r(76217),
        l = r(89350),
        c = r(85044),
        m = r(91822),
        d = r(55963),
        u = r(27666),
        p = r(4796),
        _ = r(82097),
        h = r(62792),
        g = r(55263),
        y = r(83284),
        S = r.n(y),
        f = r(3661),
        b = r(72237),
        w = r(37346),
        v = r(41735),
        I = r.n(v),
        B = r(57876),
        C = r(30894),
        E = r(92532);
      class T {
        static instance_count = 0;
      }
      var A = r(94095),
        G = r(72860),
        D = r(99956),
        M = r(90595),
        R = r(47235),
        k = r(26296),
        F = r(18654),
        U = r.n(F),
        L = r(52038);
      function P(e) {
        const { info: t, bPreferLibrary: r } = e,
          [a] = (0, g.G6)(t.id, (0, h.SW)(t.type), { include_assets: !0 }),
          [i, s] = n.useState(0);
        if (!a)
          return n.createElement("div", {
            className: U().HeroCapsuleImageContainer,
          });
        let o = a.GetAssets().GetHeroCapsuleURL(),
          l = a.GetAssets().GetLibraryCapsuleURL();
        if (a.GetIncludedAppIDs()?.length > 0 && !o) {
          const e = _.A.Get().GetApp(a.GetIncludedAppIDs()[0]);
          e &&
            (o || (o = e.GetAssets().GetHeroCapsuleURL()),
            l || (l = e.GetAssets().GetLibraryCapsuleURL()));
        }
        if (o && (!r || !l))
          return n.createElement(
            "div",
            {
              className: (0, L.A)(
                U().HeroCapsuleImageContainer,
                "HeroCapsuleImageContainer",
              ),
            },
            n.createElement("img", {
              src: o,
              className: U().CapsuleImage,
              alt: a.GetName(),
            }),
          );
        if (l)
          return n.createElement(
            "div",
            {
              className: (0, L.A)(
                U().LibraryFallbackAssetImageContainer,
                U().VerticalCapsule,
                r ? U().ForceLibrarySizing : "",
              ),
            },
            n.createElement("div", {
              className: U().FallbackBackground,
              style: { backgroundImage: `url(${l})` },
            }),
            n.createElement("img", {
              src: l,
              className: U().CapsuleImage,
              alt: a.GetName(),
            }),
          );
        const c = O(a, !0),
          m = c.length - 1,
          d = (e) => {
            const t = c.indexOf(e);
            t >= m && t < c.length - 1 && s(t + 1);
          };
        if (i < c.length) {
          const e = c[i];
          return n.createElement(
            "div",
            { className: U().LibraryFallbackAssetImageContainer },
            n.createElement("div", {
              className: U().FallbackBackground,
              style: { backgroundImage: `url(${e})` },
            }),
            n.createElement(k.o, {
              lazyLoad: !0,
              srcs: c,
              className: U().CapsuleImage,
              alt: a.GetName(),
              onImageError: d,
            }),
          );
        }
        return n.createElement("div", {
          className: U().HeroCapsuleImageContainer,
        });
      }
      function O(e, t) {
        let r = [];
        return (
          e.GetAssets() &&
            (t
              ? r.push(
                  e.GetAssets().GetHeaderURL(),
                  e.GetAssets().GetMainCapsuleURL(),
                )
              : r.push(
                  e.GetAssets().GetMainCapsuleURL(),
                  e.GetAssets().GetHeaderURL(),
                )),
          r.filter((e) => !!e)
        );
      }
      var z = r(54492),
        N = r(61859),
        W = r(78327),
        H = r(22797),
        j = r(29863),
        x = r(37076),
        V = r(56681),
        q = r(60014),
        Y = r(65937),
        K = r(14326),
        J = r(81393),
        Q = r(79613);
      const Z = (0, a.PA)((e) => {
          const {
              bIsHovered: t,
              setIsHovered: r,
              displayStoreItem: a,
              baseGameStoreItem: c,
              displayInfo: u,
              purchaseInfo: p,
              artworkInfo: _,
            } = (function (e, t) {
              const r = (0, n.useRef)(I().CancelToken.source()),
                { id: a, type: i } = e,
                s = t ? { ...B.Xh, ...t } : B.Xh,
                o = (0, n.useMemo)(() => ({ id: a, type: i }), [a, i]),
                [l] = (0, g.G6)(o.id, (0, h.SW)(o.type), s),
                [c, m] = (0, n.useState)({ id: a, type: i }),
                [d] = (0, g.G6)(c?.id, (0, h.SW)(c?.type), s),
                u = (0, n.useMemo)(
                  () =>
                    d?.GetIncludedAppIDs()?.length > 1 &&
                    null == d?.GetAssets().GetMainCapsuleURL() &&
                    null == d?.GetAssets().GetHeaderURL()
                      ? { id: d.GetIncludedAppIDs()[0], type: "game" }
                      : c,
                  [c, d],
                ),
                [p] = (0, g.t7)(u?.id, s),
                _ = (0, n.useMemo)(
                  () => ({
                    id:
                      d?.GetParentAppID() != d?.GetID()
                        ? d?.GetParentAppID()
                        : void 0,
                    type: "game",
                  }),
                  [d],
                ),
                [y] = (0, g.t7)(_.id, s),
                [S] = (0, n.useState)(++T.instance_count),
                [f, b] = (0, n.useState)(!1),
                [w, v] = (0, n.useState)((0, E.qr)(i)),
                [A, G] = (0, n.useState)(a);
              return (
                (0, n.useEffect)(() => {
                  if (
                    (C.Fm.Get().HintLoad(),
                    1 == l?.GetStoreItemType() &&
                      1 == l.GetIncludedAppIDs().length &&
                      (c.id != l.GetIncludedAppIDs()[0] || "game" != c.type) &&
                      10 != l.GetAppType() &&
                      !r?.current.token.reason)
                  ) {
                    const e = l.GetIncludedAppIDs()[0];
                    m({ id: e, type: "game" }), v("app"), G(e);
                  }
                }, [c.id, c.type, l]),
                (0, n.useEffect)(
                  () => () =>
                    r?.current.cancel("StoreSalePreviewWidget: unmounting"),
                  [],
                ),
                {
                  myInstance: S,
                  bIsHovered: f,
                  setIsHovered: b,
                  purchaseInfo: o,
                  displayInfo: c,
                  displayStoreItem: d,
                  baseGameStoreItem: y,
                  baseGameInfo: _,
                  hoverType: w,
                  nHoverId: A,
                  artworkInfo: u,
                  artworkStoreItem: p,
                }
              );
            })(e),
            {
              bShowDemoButton: y,
              bPreferDemoStorePage: v,
              bHidePrice: M,
              bUseSubscriptionLayout: k,
              bHidePlatforms: F,
              bHideContainedApps: P,
              bAllowTwoLinesForHeader: O,
              bShowReviewSummary: H,
              bShowDeckCompatibilityDialog: x,
              bAutoFocus: V,
              fnOnClickOverride: Y,
              bIsMarketingMessage: K,
            } = e,
            J = (0, q.n9)(),
            Z = n.useMemo(() => a?.GetIncludedAppIDsOrSelf(), [a]),
            X = (0, n.useRef)(null),
            [ee, te] = (0, n.useState)(!1),
            re = (0, W.Qn)();
          if (
            ((0, n.useEffect)(() => {
              X.current && te(X.current.offsetWidth < 370);
            }, [X]),
            !a)
          )
            return null;
          const ne = a.GetBestPurchaseOption().discount_pct,
            ie = a.GetIncludedAppIDs().length;
          let se = a.GetShortDescription();
          (2 != a.GetStoreItemType() && 1 != a.GetStoreItemType()) ||
            (se = ne
              ? (0, N.we)("#Sale_BundleSave_WithDiscount", ne, ie)
              : (0, N.we)("#Sale_BundleSave", ie));
          const oe = (0, d.L3)(J),
            le = (0, i.tB)(a.GetStorePageURL(v)),
            ce = Boolean(!P && ie > 0),
            me = a.BHasTags()
              ? a.GetTagIDs()
              : c?.BHasTags()
                ? c.GetTagIDs()
                : [],
            de = 0 == a.GetStoreItemType(),
            ue = (0, d.wJ)(le, J),
            pe = (0, Q.Ae)(),
            _e = re || a.BIsReleased() || a.BIsPrePurchase();
          return n.createElement(
            E.oj,
            { appid: de ? a.GetAppID() : void 0 },
            n.createElement(
              o.Z,
              {
                className: (0, L.A)({
                  [U().StoreSaleWidgetOuterContainer]: !0,
                  [U().AllowTwoLineHeader]: O,
                }),
                onMouseEnter: () => !pe && r(!0),
                onMouseLeave: () => !pe && r(!1),
                "flow-children": "grid",
                navEntryPreferPosition: l.iU.PREFERRED_CHILD,
                autoFocus: V,
                navKey: "preview_widget_" + a.GetID(),
              },
              n.createElement(
                s.ml,
                {
                  onClick: K ? Y : null,
                  className: (0, L.A)(
                    U().StoreSaleWidgetContainer,
                    U().SaleItemDefaultCapsuleDisplay,
                    K ? U().MarketingMessage : "",
                  ),
                  ...(0, G.S)(a, J, re, v, void 0, Y),
                  preferredFocus: ce,
                },
                n.createElement(
                  "div",
                  { className: (0, L.A)(U().StoreSaleWidgetHalfLeft) },
                  n.createElement(
                    "a",
                    {
                      href: Y ? void 0 : ue,
                      target: W.TS.IN_CLIENT || Y ? void 0 : "_blank",
                      onClick: Y,
                    },
                    n.createElement(
                      "div",
                      { className: U().StoreSaleWidgetImage },
                      n.createElement(w.V, { appids: Z }),
                      n.createElement(ae, { info: _, imageType: "header" }),
                      n.createElement(z.S, {
                        eDeckCompatibilityCategory:
                          a.GetPlatforms()?.steam_deck_compat_category,
                      }),
                      Boolean(u && t) && n.createElement(f.m, { appInfo: u }),
                    ),
                  ),
                ),
                n.createElement(
                  "div",
                  {
                    className: (0, L.A)(
                      U().StoreSaleWidgetRight,
                      ce ? U().Bundle : "",
                    ),
                  },
                  Boolean(de && !Y) &&
                    n.createElement(j.EP, {
                      appID: u.id,
                      classOverride: (0, L.A)(
                        S().WishlistButtonNotTop,
                        "WishlistButton",
                      ),
                      snr: oe,
                    }),
                  n.createElement(
                    "div",
                    { className: U().TitleCtn },
                    n.createElement(
                      "a",
                      {
                        href: Y ? void 0 : ue,
                        target: W.TS.IN_CLIENT ? void 0 : "_blank",
                        onClick: Y,
                      },
                      n.createElement(
                        "div",
                        {
                          className: (0, L.A)(
                            U().StoreSaleWidgetTitle,
                            "StoreSaleWidgetTitle",
                          ),
                        },
                        a.GetName(),
                      ),
                    ),
                  ),
                  n.createElement(
                    "div",
                    { className: U().StoreSaleWidgetReleaseAndTags },
                    me &&
                      n.createElement(
                        "div",
                        { className: U().StoreSaleWidgetTags },
                        me.map((e) =>
                          n.createElement(D.p, {
                            key: "tag_" + e,
                            tagid: e,
                            className: U().AppTag,
                          }),
                        ),
                      ),
                    n.createElement(
                      "div",
                      {
                        className: U().WidgetReleaseDateAndPlatformCtn,
                        ref: X,
                      },
                      de &&
                        n.createElement(
                          "div",
                          { className: U().StoreSaleWidgetRelease },
                          a.GetFormattedSteamReleaseDate(),
                        ),
                      !F &&
                        n.createElement(
                          n.Fragment,
                          null,
                          n.createElement(b.Q, {
                            item: u,
                            bMinimizePlatforms: ee,
                          }),
                          Boolean(
                            x && 0 == a?.GetStoreItemType() && a.GetPlatforms(),
                          ) &&
                            n.createElement(m.$o, {
                              className: U().DeckCompatIcon,
                              category:
                                a.GetPlatforms().steam_deck_compat_category,
                            }),
                        ),
                    ),
                    H && n.createElement(j.Jz, { appInfo: u }),
                  ),
                  ce && n.createElement($, { info: p }),
                  Boolean(de && se) &&
                    n.createElement(
                      "div",
                      {
                        className: (0, L.A)(
                          U().StoreSaleWidgetShortDesc,
                          "StoreSaleWidgetShortDesc",
                        ),
                      },
                      Boolean(se.startsWith("#") && -1 == se.indexOf(" "))
                        ? n.createElement(
                            "span",
                            { className: U().LocalizationSpan },
                            (0, N.oW)(
                              se,
                              n.createElement("i", null),
                              n.createElement("i", null),
                              n.createElement("i", null),
                              n.createElement("i", null),
                            ),
                          )
                        : se,
                    ),
                  Boolean(!Y)
                    ? n.createElement(
                        n.Fragment,
                        null,
                        Boolean(k && de)
                          ? n.createElement(R.E, { appid: u.id, bIsMuted: t })
                          : n.createElement(A.wD, {
                              info: p,
                              bShowDemoButton: y,
                              bHidePrice: M,
                              bHideWishlistButton: _e,
                              bShowDeckCompatibilityDialog: x,
                            }),
                      )
                    : n.createElement(
                        "div",
                        { className: U().StoreActionWidgetContainer },
                        n.createElement(
                          "div",
                          {
                            className: U().StoreSalePriceActionWidgetContainer,
                          },
                          n.createElement(A.wc, { info: p }),
                        ),
                      ),
                  n.createElement(
                    "div",
                    { className: U().StoreSaleWidgetBgTint },
                    n.createElement(ae, { info: u, imageType: "header" }),
                  ),
                ),
              ),
            ),
            Boolean(e.strReason) &&
              e.strReason.length > 0 &&
              n.createElement(
                "div",
                { className: U().RecommendationReason },
                e.strReason,
              ),
          );
        }),
        X = 6;
      function $(e) {
        const { info: t } = e,
          [r] = (0, g.G6)(t.id, (0, h.SW)(t.type), {}),
          [a, i] = n.useState(null);
        return (
          n.useEffect(() => {
            r &&
              (1 == r.GetStoreItemType() || 2 == r.GetStoreItemType()
                ? i(r.GetIncludedAppIDs().map((e) => ({ id: e, type: "game" })))
                : console.error(
                    "ContentsPreviewList unexpected store item type: ",
                    r.GetStoreItemType(),
                  ));
          }, [r]),
          a
            ? n.createElement(
                "div",
                { className: U().BundleContentPreview },
                n.createElement(
                  "div",
                  { className: U().ContentsCount },
                  (0, N.Yp)("#Sale_ContentPreview", a.length),
                ),
                n.createElement(
                  "div",
                  { className: U().PreviewCtn },
                  a
                    .slice(0, X)
                    .map((e) =>
                      n.createElement(ee, {
                        key: `preview${e.id}_${e.type}`,
                        info: e,
                      }),
                    ),
                ),
              )
            : null
        );
      }
      function ee(e) {
        const { info: t } = e,
          [r] = (0, g.mZ)(t.id, (0, h.SW)(t.type), { include_assets: !0 }),
          a = r?.GetAssets().GetSmallCapsuleURL();
        return n.createElement(
          x.u,
          {
            type: (0, E.qr)(t.type),
            id: t.id,
            hoverClassName: U().PreviewItem,
          },
          n.createElement("img", {
            src: a,
            className: U().PreviewImg,
            loading: "lazy",
            alt: r?.GetName(),
          }),
        );
      }
      const te = (e) => {
          const {
              info: t,
              bShowAsMuted: r,
              bHidePrice: a,
              bShowInLibraryInsteadOfPrice: i,
              bHidePlatforms: s,
              strClassName: o,
              creatorAccountID: l,
              bShowName: c,
              onlyOneDiscountPct: m,
              bShowAddToCart: d,
              bShowWishlistButton: u,
            } = e,
            p = (0, n.useRef)(null),
            [h, g] = (0, n.useState)(!1),
            y = (0, n.useMemo)(
              () => c && _.A.Get().GetApp(t.id)?.GetName(),
              [c, t.id],
            );
          return (
            (0, n.useEffect)(() => {
              p.current && g(p.current.offsetWidth < 370);
            }, [p]),
            n.createElement(
              n.Fragment,
              null,
              n.createElement(
                "div",
                {
                  ref: p,
                  className: (0, L.A)(
                    U().CapsuleBottomBar,
                    "CapsuleBottomBar",
                    r && U().Muted,
                    o,
                  ),
                },
                l && n.createElement(re, { creatorAccountID: l, ...e }),
                d &&
                  n.createElement(Y.h, {
                    info: t,
                    className: (0, L.A)(
                      U().MaxActionButtonWidth,
                      U().AddToCartButton,
                    ),
                  }),
                Boolean(u && "sub" != t.type && "bundle" != t.type) &&
                  n.createElement(K.r, {
                    appid: t.id,
                    className: (0, L.A)(
                      U().MaxActionButtonWidth,
                      U().AddToWishlistButton,
                    ),
                  }),
                !s && n.createElement(b.Q, { item: t, bMinimizePlatforms: h }),
                !a &&
                  n.createElement(
                    "span",
                    { className: U().BottomBarPriceInfo },
                    n.createElement(A.wc, {
                      info: t,
                      bShowInLibrary: i,
                      onlyOneDiscountPct: m,
                    }),
                  ),
              ),
              c && n.createElement("div", { className: U().CapsuleName }, y),
            )
          );
        },
        re = (e) => {
          const { creatorAccountID: t, bShowAsMuted: r, strClassName: a } = e,
            [i, s] = (0, p.TB)(t),
            o = i || !s ? (0, c.t)(null, "medium") : s.avatar_medium_url;
          return n.createElement(
            "div",
            { className: (0, L.A)(U().BottomCreatorRow, r && U().Muted, a) },
            n.createElement("img", {
              className: (0, L.A)(U().CreatorLogo),
              src: o,
            }),
            n.createElement(
              "span",
              { className: U().CreatorName },
              s?.group_name,
            ),
          );
        };
      function ae(e) {
        const { info: t, imageType: r } = e,
          [a] = (0, g.G6)(t.id, (0, h.SW)(t.type), { include_assets: !0 });
        let i;
        a &&
          1 == a.GetIncludedAppIDs().length &&
          !(function (e, t) {
            const r = e?.GetAssets();
            if (!r) return !1;
            switch (t) {
              case "header":
                return !!r.GetHeaderURL();
              case "main":
                return !!r.GetMainCapsuleURL();
              case "library":
                return !!r.GetHeroCapsuleURL() || !!r.GetLibraryCapsuleURL();
              default:
                return (0, J.z)(t, `Unhandled imageType: ${t}`), !1;
            }
          })(a, r) &&
          [1, 2].includes(a.GetStoreItemType()) &&
          (i = a.GetIncludedAppIDs()[0]);
        const [s] = (0, g.t7)(i, { include_assets: !0 }),
          o = s?.BIsVisible() ? s : a;
        if (!o)
          return n.createElement(H.t, {
            size: "small",
            position: "center",
            string: (0, N.we)("#Loading"),
          });
        if ("library" === r) return n.createElement(P, { info: t });
        let l,
          c,
          m = O(o, "header" === r),
          d = "";
        if ("main" === r)
          (l = U().mainCapsuleImgWidth),
            (c = U().mainCapsuleImgHeight),
            (d = U().MainCapsuleImageContainer);
        else
          (l = U().headerCapsuleImgWidth),
            (c = U().headerCapsuleImgHeight),
            (d = U().HeaderCapsuleImageContainer);
        return n.createElement(
          "div",
          { className: (0, L.A)(d, "CapsuleImageCtn") },
          n.createElement(k.o, {
            lazyLoad: !0,
            srcs: m,
            className: (0, L.A)(U().CapsuleImage),
            width: l,
            height: c,
            alt: o.GetName(),
          }),
        );
      }
      (0, a.PA)((e) => {
        const t = N.NT.GetWithFallback(
          e.link.localized_link_capsule,
          e.language,
        );
        return n.createElement(
          M.q,
          {
            url: e.link.url,
            className: e.strClassName ? e.strClassName : void 0,
            bSkipForcingStoreLink: !0,
          },
          n.createElement(
            "div",
            { className: U().CapsuleContainer },
            Boolean(e.link.localized_link_capsule) &&
              n.createElement(V.o, {
                className: U().LinkCapsuleImage,
                src: `${(0, u.mJ)()}${e.clanAccountID}/${t}`,
              }),
            Boolean(e.link.materialized_link_capsule) &&
              n.createElement("img", {
                className: U().LinkCapsuleImage,
                src: e.link.materialized_link_capsule,
              }),
          ),
        );
      });
    },
    94011: (e, t, r) => {
      "use strict";
      r.d(t, { K: () => s });
      var a = r(90626),
        n = r(61859),
        i = r(35050);
      function s() {
        return a.createElement(
          "div",
          { className: i.bordered_live_stream_icon },
          (0, n.we)("#home_page_live_broadcast"),
        );
      }
    },
    3661: (e, t, r) => {
      "use strict";
      r.d(t, { m: () => c });
      var a = r(90626),
        n = r(62792),
        i = r(55263),
        s = r(18654),
        o = r.n(s),
        l = r(78327);
      function c(e) {
        const { appInfo: t } = e,
          r = (0, a.useRef)({ include_trailers: !0 }),
          [s] = (0, i.G6)(t?.id, (0, n.SW)(t?.type), r.current);
        if (!s) return null;
        const m = s.GetMicroTrailer();
        return m
          ? a.createElement(
              "video",
              {
                className: o().CapsuleMicroTrailer,
                loop: !0,
                muted: !0,
                autoPlay: !0,
                key: "mtv-" + m.strMP4URL,
              },
              a.createElement("source", {
                src: m.strWebMURL,
                type: "video/webm",
              }),
              !l.TS.IN_CLIENT &&
                a.createElement("source", {
                  src: m.strMP4URL,
                  type: "video/mp4",
                }),
            )
          : !s.GetParentAppID() || (1 != s.GetAppType() && 12 != s.GetAppType())
            ? null
            : a.createElement(c, {
                appInfo: { id: s.GetParentAppID(), type: "game" },
              });
      }
    },
    72237: (e, t, r) => {
      "use strict";
      r.d(t, { Q: () => u });
      var a = r(90626),
        n = r(62792),
        i = r(55263),
        s = r(12155),
        o = r(52038),
        l = r(18654),
        c = r.n(l),
        m = r(61859),
        d = r(78327);
      function u(e) {
        const { item: t, strClassName: r, bMinimizePlatforms: l } = e,
          [u] = (0, i.G6)(t?.id, (0, n.SW)(t?.type), { include_platforms: !0 });
        if (!u) return null;
        const p = u.GetPlatforms();
        if (l) {
          let e =
            p.windows &&
            a.createElement(
              "span",
              { title: (0, m.we)("#Platform_Windows") },
              a.createElement(s.Xz0, null),
            );
          return (
            (0, d.Pr)() && p.mac
              ? (e = a.createElement(
                  "span",
                  { title: (0, m.we)("#Platform_Mac") },
                  a.createElement(s.kPc, null),
                ))
              : ((0, d.CI)() || (0, d.Hn)() || (0, d.rf)()) &&
                p.steamos_linux &&
                (e = a.createElement(
                  "span",
                  { title: (0, m.we)("#Platform_Linux") },
                  a.createElement(s.Qte, null),
                )),
            e
              ? a.createElement(
                  "span",
                  { className: (0, o.A)(c().CapsulePlatform, r) },
                  e,
                )
              : null
          );
        }
        return a.createElement(
          "span",
          { className: (0, o.A)(c().CapsulePlatform, r) },
          p.windows &&
            a.createElement(
              "span",
              { title: (0, m.we)("#Platform_Windows") },
              a.createElement(s.Xz0, null),
            ),
          p.mac &&
            a.createElement(
              "span",
              { title: (0, m.we)("#Platform_Mac") },
              a.createElement(s.kPc, null),
            ),
          p.steamos_linux &&
            a.createElement(
              "span",
              { title: (0, m.we)("#Platform_Linux") },
              a.createElement(s.Qte, null),
            ),
          p.vr_support?.vrhmd &&
            a.createElement(
              "span",
              { title: (0, m.we)("#Platform_VR") },
              a.createElement(s.VR, null),
            ),
        );
      }
    },
    37346: (e, t, r) => {
      "use strict";
      r.d(t, { V: () => p });
      var a = r(90626);
      var n = r(34010),
        i = r(30894),
        s = r(82097),
        o = r(12155),
        l = r(18654),
        c = r.n(l),
        m = r(52038),
        d = r(61859),
        u = r(94011);
      const p = (0, r(75844).PA)(function (e) {
        const { appids: t, hide_status_banners: r } = e,
          l = t.every((e) => i.Fm.Get().BOwnsApp(e)),
          p = t.every((e) => i.Fm.Get().BIsGameWishlisted(e)),
          _ = t.some((e) => {
            const t = s.A.Get().GetApp(e);
            return (
              t &&
              (function (e, t) {
                if (t || e) {
                  const r = t || e;
                  return r && n.j.Get().BIsAppStreaming(r);
                }
                return !1;
              })(e, t?.GetParentAppID())
            );
          }),
          h = l && !r,
          g = p && !r;
        return a.createElement(
          "div",
          { className: (0, m.A)(c().CapsuleDecorators, "CapsuleDecorators") },
          h &&
            a.createElement(
              "span",
              { className: (0, m.A)(c().Banner, c().Blue) },
              a.createElement("img", {
                src: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAKCAYAAABi8KSDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUNDNzBFNTUyMUM0MTFFNDk1REVFODRBNUU5RjA2MUYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUNDNzBFNTYyMUM0MTFFNDk1REVFODRBNUU5RjA2MUYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5Q0M3MEU1MzIxQzQxMUU0OTVERUU4NEE1RTlGMDYxRiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5Q0M3MEU1NDIxQzQxMUU0OTVERUU4NEE1RTlGMDYxRiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv3vUKAAAAAlSURBVHjaYvz//z8DsYARpFhISAivjnfv3jGSp3jUGeQ4AyDAADZHNe2nyOBrAAAAAElFTkSuQmCC",
                className: c().LinesImg,
              }),
              (0, d.we)("#Sale_InLibrary"),
            ),
          g &&
            a.createElement(
              "span",
              { className: c().Banner },
              a.createElement(o.qnF, { className: c().LinesImg }),
              (0, d.we)("#Sale_OnWishlist"),
            ),
          _ && a.createElement(u.K, null),
        );
      });
    },
    94095: (e, t, r) => {
      "use strict";
      r.d(t, { Bq: () => T, wD: () => v, wc: () => B });
      var a = r(90626),
        n = r(75844),
        i = r(81886),
        s = r(62792),
        o = r(55263),
        l = r(54906),
        c = r(65937),
        m = r(84364),
        d = (r(79849), r(18654)),
        u = r.n(d),
        p = r(14326),
        _ = r(52038),
        h = r(61859),
        g = r(12155),
        y = r(44165),
        S = r(14771),
        f = r(91675),
        b = r(26408),
        w = r(30894);
      const v = (0, n.PA)((e) => {
        const {
            info: t,
            bShowDemoButton: r,
            bShowPurchaseOptionsButton: n,
            fnOnPurchaseOptionsClick: d,
            bHidePrice: g,
            bHideWishlistButton: y,
            bShowDeckCompatibilityDialog: S,
            className: v,
          } = e,
          C = (0, a.useRef)({ include_release: !0 }),
          [E] = (0, o.G6)(t.id, (0, s.SW)(t.type), C.current),
          T = (0, w.Lg)(E?.GetAppID());
        if (!E) return null;
        const A = 1 === E.GetAppType() || E.BHasDemo(),
          G = (0, i.f)(t.type),
          D = r && G && A;
        let M = null;
        if (
          !T &&
          E?.GetBestPurchaseOption().is_free_to_keep &&
          E?.GetBestPurchaseOption().free_to_keep_ends
        ) {
          const e = E.GetBestPurchaseOption().free_to_keep_ends,
            t = (0, h.we)(
              "#Sale_default_label_Free_Promo_Description_Short",
              (0, h.$z)(e) + " @ " + (0, f.KC)(e, { bForce24HourClock: !1 }),
            );
          M = a.createElement(
            "div",
            { className: u().PurchaseOptionDetails },
            t,
            a.createElement(b.o, {
              tooltip: (0, h.we)("#Sale_default_Tooltip_Free_Promo_Limitation"),
            }),
          );
        }
        return a.createElement(
          "div",
          { className: (0, _.A)(u().StoreActionWidgetContainer, v) },
          M,
          a.createElement(
            "div",
            { className: u().StoreSalePriceActionWidgetContainer },
            Boolean(!y && (0, i.f)(t.type)) &&
              a.createElement(p._, {
                appid: t.id,
                bIsFree: E.BIsFree(),
                bIsComingSoon: E.BIsComingSoon(),
                className: "WishlistBtn",
              }),
            Boolean(D) &&
              a.createElement(m.j, { info: t, className: u().Action }),
            Boolean(!g) &&
              1 !== E?.GetAppType() &&
              (Boolean(n && !E.BIsFree())
                ? a.createElement(I, { fnOnPurchaseOptionsClick: d })
                : a.createElement(c.h, { info: t, className: "CartBtn" })),
            Boolean(!g) && a.createElement(B, { info: t }),
            Boolean(S) && a.createElement(l.Q8, { storeItem: E }),
          ),
        );
      });
      function I(e) {
        return a.createElement(
          "div",
          { className: u().Action, onClick: e.fnOnPurchaseOptionsClick },
          a.createElement(
            "span",
            null,
            (0, h.we)("#EventDisplay_CallToAction_ShowPurchaseOptions_Button"),
          ),
        );
      }
      function B(e) {
        const { info: t, ...r } = e,
          [n] = (0, o.G6)(t?.id, (0, s.SW)(t?.type), { include_release: !0 });
        return a.createElement(E, { ...r, storeItem: n });
      }
      const C = 7;
      function E(e) {
        const { bSingleLineMode: t, storeItem: r, onlyOneDiscountPct: n } = e,
          i = (0, y.f1)();
        if (!r) return null;
        const s =
            !r.BIsComingSoon() && r.GetReleaseDateRTime() + C * S.Kp.PerDay > i,
          o = (0, _.A)(
            u().StoreSalePriceWidgetContainer,
            t && u().SingleLineMode,
            "StoreSalePriceWidgetContainer",
            s && u().NewItem,
          );
        if (e.bShowInLibrary)
          return a.createElement(
            "div",
            { className: o },
            a.createElement(
              "div",
              { className: u().StoreSalePriceBox },
              (0, h.we)("#EventDisplay_CallToAction_InLibrary"),
            ),
          );
        if (r.BIsComingSoon() && !r.GetBestPurchaseOption()?.packageid)
          return a.createElement(
            "div",
            { className: o },
            a.createElement(
              "div",
              { className: u().StoreSalePriceBox },
              (0, h.we)("#EventDisplay_CallToAction_ComingSoon"),
            ),
          );
        if (r.BIsFree()) {
          if (!r.BIsFreeTemporary())
            return 0 == r.GetStoreItemType() && 1 == r.GetAppType()
              ? a.createElement(
                  "div",
                  { className: o },
                  s &&
                    a.createElement(
                      "div",
                      { className: u().StoreSaleNewItem },
                      (0, h.we)("#Flag_New"),
                    ),
                  a.createElement(
                    "div",
                    { className: u().StoreSalePriceBox },
                    (0, h.we)("#EventDisplay_CallToAction_FreeDemo"),
                  ),
                )
              : a.createElement(
                  "div",
                  { className: o },
                  s &&
                    a.createElement(
                      "div",
                      { className: u().StoreSaleNewItem },
                      (0, h.we)("#Flag_New"),
                    ),
                  a.createElement(
                    "div",
                    { className: u().StoreSalePriceBox },
                    (0, h.we)("#EventDisplay_CallToAction_FreeToPlay"),
                  ),
                );
          if (
            r.GetBestPurchaseOption()?.is_free_to_keep &&
            !r.GetBestPurchaseOption()?.formatted_original_price
          )
            return a.createElement(
              "div",
              { className: o },
              a.createElement(
                "div",
                { className: u().StoreSalePriceBox },
                (0, h.we)("#EventDisplay_CallToAction_Free"),
              ),
            );
        }
        const l = r.GetBestPurchaseOption();
        if (!l || !l.formatted_final_price) return null;
        let c = l.discount_pct,
          m = n || 2 != r.GetStoreItemType() ? void 0 : l.bundle_discount_pct,
          d = l.formatted_final_price;
        return a.createElement(T, {
          bSingleLineMode: t,
          nBaseDiscountPercentage: m,
          nDiscountPercentage: c,
          bIsPrePurchase: r.BIsPrePurchase(),
          strBestPurchaseOriginalPriceFormatted: l.formatted_original_price,
          strBestPurchasePriceFormatted: d,
          bHideDiscountPercentForCompliance: l.hide_discount_pct_for_compliance,
          bShowNewFlag: s,
        });
      }
      function T(e) {
        const {
            bSingleLineMode: t,
            nDiscountPercentage: r,
            bIsPrePurchase: n,
            nBaseDiscountPercentage: i,
            strBestPurchaseOriginalPriceFormatted: s,
            strBestPurchasePriceFormatted: o,
            bHideDiscountPercentForCompliance: l,
            bShowNewFlag: c,
          } = e,
          m = l && !0;
        return a.createElement(
          "div",
          {
            className: (0, _.A)({
              [u().StoreSalePriceWidgetContainer]: !0,
              [u().SingleLineMode]: t,
              StoreSalePriceWidgetContainer: !0,
              [u().Discounted]: Boolean(r),
              Discounted: Boolean(r),
              [u().PrePurchase]: Boolean(n),
              [u().NewItem]: Boolean(c),
            }),
          },
          Boolean(n) &&
            a.createElement(
              "div",
              {
                className: (0, _.A)(
                  u().StoreSalePriceBox,
                  u().StoreSalePrepurchaseLabel,
                ),
              },
              a.createElement(
                "span",
                null,
                (0, h.we)("#EventDisplay_CallToAction_Prepurchase_Short"),
              ),
            ),
          Boolean(!n && c) &&
            a.createElement(
              "div",
              { className: u().StoreSaleNewItem },
              (0, h.we)("#Flag_New"),
            ),
          Boolean(i && r && !m) &&
            a.createElement(
              "span",
              { className: (0, _.A)(u().BaseDiscount) },
              `-${i}%`,
            ),
          Boolean(r && !m) &&
            a.createElement(
              "div",
              { className: u().StoreSaleDiscountBox },
              `-${r}%`,
            ),
          Boolean(m) &&
            a.createElement(
              "div",
              { className: u().DiscountIconCtn },
              a.createElement(g.XH_, null),
            ),
          Boolean(r && s && !m)
            ? a.createElement(
                "div",
                { className: (0, _.A)(u().StoreSaleDiscountedPriceCtn) },
                a.createElement(
                  "div",
                  {
                    className: (0, _.A)({
                      [u().SingleLineOriginalPrice]: t,
                      [u().StoreOriginalPrice]: !t,
                    }),
                  },
                  s,
                ),
                a.createElement(
                  "div",
                  {
                    className: (0, _.A)({
                      [u().StoreSalePriceBox]: !0,
                      [u().SingleLineMode]: t,
                    }),
                  },
                  o,
                ),
              )
            : a.createElement("div", { className: u().StoreSalePriceBox }, o),
        );
      }
    },
    72860: (e, t, r) => {
      "use strict";
      r.d(t, { S: () => c });
      var a = r(55963),
        n = r(92532),
        i = r(44332),
        s = r(56011),
        o = r(61859),
        l = r(61336);
      function c(e, t, r, c, m, d) {
        if (!r) return;
        if (!(0, n.nz)(e.GetStoreItemType()))
          return void (0, i.w)(
            !1,
            "StoreItemWidgetSalePageAction: unexpected type: " +
              e.GetStoreItemType(),
          );
        const u = (0, a.wJ)(`${e.GetStorePageURL(c)}${m ? `?${m}` : ""}`, t);
        return {
          onClick: (e) => {
            let t = (0, s.uX)(e) || window;
            d
              ? d(void 0)
              : u.startsWith("steam://") || (t.location.href = (0, l.NT)(u));
          },
          onOKActionDescription: (0, o.we)("#Sale_Gamepad_Action_Select"),
        };
      }
    },
    99956: (e, t, r) => {
      "use strict";
      r.d(t, { n: () => u, p: () => p });
      var a = r(90626),
        n = r(22837),
        i = r(80782),
        s = r(18654),
        o = r.n(s),
        l = r(90595),
        c = r(52038),
        m = r(61859),
        d = r(78327);
      function u(e) {
        const {
            rgTagIDs: t,
            instanceNum: r,
            bShowEvenIfNoTags: n,
            bHideTitle: s,
          } = e,
          l = (0, i.LG)(t);
        return l?.length > 0 || n
          ? a.createElement(
              "div",
              { className: (0, c.A)(o().SaleTagBlockCtn, "SaleTagBlockCtn") },
              Boolean(!s) &&
                a.createElement(
                  "div",
                  { className: (0, c.A)(o().TagTitle, "WidgetTagTitle") },
                  (0, m.we)("#GameHover_Tags"),
                ),
              Boolean(l?.length > 0)
                ? a.createElement(
                    "div",
                    { className: (0, c.A)(o().TagBox, "TagBox") },
                    l.map((e) =>
                      a.createElement(_, {
                        key: "tag_" + r + "_" + e.tagid,
                        tag: e,
                      }),
                    ),
                  )
                : a.createElement("div", null, (0, m.we)("#Broadcast_None")),
            )
          : null;
      }
      function p(e) {
        const { tagid: t, className: r } = e,
          s = (0, i.MB)(t);
        if (!s) return null;
        const m = (0, n.ww)((0, n.sf)(d.TS.LANGUAGE)),
          u = `${d.TS.STORE_BASE_URL}tags/${m}/${s?.name}`;
        return a.createElement(
          l.q,
          { url: u, className: (0, c.A)(o().Tag, "WidgetTag", r) },
          s.name,
        );
      }
      function _(e) {
        const { tag: t, className: r } = e,
          i = (0, n.ww)((0, n.sf)(d.TS.LANGUAGE)),
          s = `${d.TS.STORE_BASE_URL}tags/${i}/${t.name}`;
        return a.createElement(
          l.q,
          { url: s, className: (0, c.A)(o().Tag, "WidgetTag", r) },
          t.name,
        );
      }
    },
    92532: (e, t, r) => {
      "use strict";
      r.d(t, { oj: () => u, qr: () => m, nz: () => d });
      var a = r(90626),
        n = r(81886),
        i = r(60014);
      const s = a.createContext({
        AddImpression: () => {
          console.log("Impression Tracking not enabled");
        },
        BIsValid: () => !1,
      });
      var o = r(30600),
        l = r(8871);
      function c(e) {
        const { appID: t, feature: r, depth: n, children: c } = e,
          m = (0, i.ru)(r, n),
          d = a.useContext(s),
          [u, p] = a.useState(void 0),
          _ = a.useCallback(
            (e) => {
              e.isIntersecting &&
                p((e) =>
                  e?.appID == t && e.snr == m ? e : { appID: t, snr: m },
                );
            },
            [t, m],
          );
        (0, a.useEffect)(() => {
          u && d.AddImpression(u.appID, u.snr);
        }, [d, u]);
        const h = (0, o.BL)(_),
          g = t && (!u || (u.appID != t && u.snr != m)),
          y = (0, l.Ue)(c.ref, g ? h : void 0);
        return a.cloneElement(c, { ref: y });
      }
      function m(e) {
        return "bundle" == e
          ? "bundle"
          : "sub" == e
            ? "sub"
            : (0, n.f)(e)
              ? "app"
              : null;
      }
      function d(e) {
        return 2 == e ? "bundle" : 1 == e ? "sub" : 0 == e ? "app" : null;
      }
      const u = (e) => {
        const { appid: t } = e,
          r = a.createElement(
            "div",
            { className: "ImpressionTrackedElement" },
            e.children,
          );
        return t ? a.createElement(c, { appID: t }, r) : r;
      };
    },
    14326: (e, t, r) => {
      "use strict";
      r.d(t, { _: () => E, r: () => C });
      var a = r(65946),
        n = r(90626),
        i = r(55963),
        s = r(30894),
        o = r(55263),
        l = r(18654),
        c = r.n(l),
        m = r(95695),
        d = r.n(m),
        u = r(82477),
        p = r(9154),
        _ = r(738),
        h = r(12155),
        g = r(60014),
        y = r(39700),
        S = r(68797),
        f = r(52038),
        b = r(61859),
        w = r(78327),
        v = r(32754);
      function I(e) {
        (0, _.pg)(
          n.createElement(
            p.KG,
            {
              strTitle: (0, b.we)("#Wishlist_Error"),
              strDescription: (0, b.we)("#Wishlist_Error_Desc"),
            },
            n.createElement("br", null),
            n.createElement("br", null),
            e,
          ),
          window,
        );
      }
      const B = { include_release: !0 };
      function C(e) {
        const { appid: t, className: r } = e,
          [a] = (0, o.t7)(t, B);
        return n.createElement(E, {
          appid: t,
          bIsFree: a?.BIsFree(),
          bIsComingSoon: a?.BIsComingSoon(),
          className: r,
        });
      }
      function E(e) {
        const [t, r] = n.useState(!1),
          [o, l] = n.useState(!s.Fm.Get().BIsLoaded()),
          m = (0, g.n9)(),
          { appid: p, bIsFree: _, bIsComingSoon: B, className: C } = e,
          [E, A] = (0, a.q3)(() => [
            s.Fm.Get().BIsGameWishlisted(p),
            s.Fm.Get().BOwnsApp(p),
          ]);
        n.useEffect(() => {
          (async () => {
            await s.Fm.Get().HintLoad(), l(!1);
          })();
        }, []);
        return A || (!B && _)
          ? _
            ? n.createElement(T, { possibleDemoAppID: p })
            : null
          : n.createElement(
              v.he,
              { toolTipContent: (0, b.we)("#AddToWishlist_ttip") },
              n.createElement(
                "div",
                {
                  className: (0, f.A)(c().WishList, d().FlexRowContainer, C),
                  onClick: async () => {
                    if (w.iA.logged_in) {
                      if (!t) {
                        r(!0);
                        const e = !E;
                        try {
                          const t = await s.Fm.Get().UpdateGameWishlist(
                            p,
                            e,
                            (0, i.L3)(m),
                          );
                          r(!1), 1 != t.success && I((0, S.H)(t).strErrorMsg);
                        } catch (e) {
                          r(!1), I((0, S.H)(e).strErrorMsg);
                        }
                      }
                    } else (0, u.vg)();
                  },
                },
                (o || t) && n.createElement(y.k, { size: 18 }),
                !t && E && n.createElement(h.qnF, null),
                !t && !E && n.createElement(h.T4m, null),
              ),
            );
      }
      function T(e) {
        const { possibleDemoAppID: t, className: r } = e,
          [a] = (0, o.t7)(t, {});
        return (1 == a?.GetAppType() || 12 == a?.GetAppType()) &&
          a?.GetParentAppID() > 0
          ? n.createElement(A, {
              parentAppID: a?.GetParentAppID(),
              className: r,
            })
          : null;
      }
      function A(e) {
        const { parentAppID: t, className: r } = e,
          [a] = (0, o.t7)(t, { include_release: !0 });
        return a
          ? n.createElement(E, {
              appid: t,
              bIsComingSoon: a.BIsComingSoon(),
              bIsFree: a.BIsFree(),
              className: r,
            })
          : null;
      }
    },
    90595: (e, t, r) => {
      "use strict";
      r.d(t, { q: () => c });
      var a = r(90626),
        n = r(45699),
        i = r(55963),
        s = (r(52393), r(60014)),
        o = (r(61859), r(61336)),
        l = r(78327);
      function c(e) {
        const {
            className: t,
            url: r,
            style: c,
            children: m,
            bSkipForcingStoreLink: d,
          } = e,
          u = (0, s.n9)(),
          p = d ? r : (0, o.Ps)(r, l.TS.STORE_BASE_URL);
        if (p) {
          const e = (0, i.wJ)(p, u);
          return a.createElement(
            n.Ii,
            {
              href: e,
              target: l.TS.IN_CLIENT ? void 0 : "_blank",
              className: t,
              style: c,
            },
            m,
          );
        }
        return a.createElement("span", { style: c, className: t }, m);
      }
    },
    47235: (e, t, r) => {
      "use strict";
      r.d(t, { E: () => d });
      var a = r(75844),
        n = r(90626),
        i = r(82415),
        s = r(30894),
        o = r(52038),
        l = r(61859),
        c = r(18654),
        m = r.n(c);
      const d = (0, a.PA)((e) => {
        const { appid: t, bIsMuted: r } = e,
          a = s.Fm.Get().BOwnsApp(t),
          c = (0, o.A)(
            m().CapsuleBottomBar,
            r && m().Muted,
            a ? m().PlayNowButton : m().AddToLibraryButton,
          );
        return n.createElement(
          "div",
          {
            onClick: (e) => {
              e.preventDefault(),
                a ? (0, i.o)(t) : s.Fm.Get().AddLicenseForFreeGame(t);
            },
            className: c,
          },
          (0, l.we)(a ? "#Sale_PlayNow" : "#Sale_AddToLibrary"),
        );
      });
    },
    37076: (e, t, r) => {
      "use strict";
      r.d(t, { j: () => c, u: () => m });
      var a = r(90626),
        n = r(45699),
        i = r(55963),
        s = r(60014),
        o = r(44332),
        l = r(78327);
      function c(e) {
        const {
            type: t,
            id: r,
            hoverClassName: n,
            fnGetIDOverride: i,
            fnHoverState: s,
            children: c,
          } = e,
          m = a.useRef(null),
          d = a.useCallback(
            (e) => {
              "clan" != t &&
                (s && s(!0),
                window.GameHover &&
                  window.GameHover(i ? i() : m.current, e, "global_hover", {
                    type: t,
                    id: r,
                    v6: 1,
                  }));
            },
            [t, s, i, r],
          ),
          u = a.useCallback(
            (e) => {
              "clan" != t &&
                (s && e.relatedTarget && s(!1),
                window.HideGameHover &&
                  window.HideGameHover(i ? i() : m.current, e, "global_hover"));
            },
            [t, s, i],
          );
        return (
          "dev" == l.TS.WEB_UNIVERSE &&
            (0, o.w)(
              "store" == (0, l.yK)(),
              "StoreGameHoverAnchorSource only works on Store web properties",
            ),
          a.createElement(
            "div",
            {
              ref: m,
              className: n,
              onMouseEnter: d,
              onMouseLeave: u,
              onFocus: d,
              onBlur: u,
            },
            c,
          )
        );
      }
      function m(e) {
        const { id: t, type: r, strExtraParams: o } = e,
          m = (0, s.n9)(),
          d =
            "clan" == r
              ? (0, i.wJ)(
                  `${l.TS.STORE_BASE_URL}curator/${t}${o ? `?${o}` : ""}`,
                  m,
                )
              : (0, i.wJ)(
                  `${l.TS.STORE_BASE_URL}${r}/${t}${o ? `?${o}` : ""}`,
                  m,
                );
        return a.createElement(
          c,
          { ...e },
          a.createElement(
            n.Ii,
            {
              className: e.className,
              href: d,
              target: l.TS.IN_CLIENT ? void 0 : "_blank",
              rel: "noopener noreferrer",
            },
            e.children,
          ),
        );
      }
    },
    93267: (e, t, r) => {
      "use strict";
      r.d(t, { L: () => u });
      var a = r(34629),
        n = r(90626),
        i = r(22837),
        s = r(2160),
        o = r(61859),
        l = r(61336),
        c = r(78327),
        m = r(73745);
      class d {
        m_bUserHasVolumePreference = !1;
        m_flVolumePreference = 0;
        BUserHasVolumePreference() {
          return this.m_bUserHasVolumePreference;
        }
        SetVolumePreference(e) {
          (this.m_flVolumePreference = e),
            (this.m_bUserHasVolumePreference = !0);
        }
        GetVolumePreference() {
          return this.m_flVolumePreference;
        }
        BVolumePreferenceMuted() {
          return this.m_flVolumePreference < 0.001;
        }
        static s_Singleton;
        static Get() {
          return d.s_Singleton || (d.s_Singleton = new d()), d.s_Singleton;
        }
      }
      (0, a.Cg)([m.oI], d.prototype, "BUserHasVolumePreference", null),
        (0, a.Cg)([m.oI], d.prototype, "SetVolumePreference", null);
      const u = (0, n.forwardRef)(function (e, t) {
        const { video: r, bAutoPlay: a, bControls: m, bLoop: u, bMuted: p } = e,
          _ = (0, n.useMemo)(
            () =>
              Boolean(
                r.rgVideoTracks?.some(
                  (e) => "subtitles" == e.sKind || "captions" == e.sKind,
                ),
              ),
            [r.rgVideoTracks],
          ),
          [h, g] = n.useState(!1);
        if (!r.rgVideoSources || !r.rgVideoSources.length) return null;
        const y = (e) => {
            const t = new URL(e);
            return (
              (t.search =
                (t.search ? t.search + "&" : "?") + "origin=" + (0, c.xv)()),
              t.toString()
            );
          },
          S = r.rgVideoSources
            .filter((e) => Boolean(e.sURL))
            .map((e) =>
              n.createElement("source", {
                key: e.sURL,
                src: y(e.sURL),
                type: e.sFormat,
              }),
            ),
          f = r.rgVideoTracks
            ? r.rgVideoTracks.map((e) => {
                let t = e.eLanguage;
                if ((0, c.Y2)())
                  if (o.A0.IsELanguageValidInRealm(t, s.TU.k_ESteamRealmChina))
                    t = o.A0.GetELanguageFallback(t);
                  else {
                    if (6 !== t) return null;
                    if (
                      r.rgVideoTracks.find(
                        (e) => o.A0.GetELanguageFallback(e.eLanguage) === t,
                      )
                    )
                      return null;
                  }
                else if (
                  !o.A0.IsELanguageValidInRealm(t, s.TU.k_ESteamRealmGlobal)
                )
                  return null;
                return n.createElement("track", {
                  key: e.sURL + t,
                  src: y(e.sURL),
                  kind: e.sKind,
                  default: e.bDefault,
                  srcLang: (0, i.ww)(t),
                  label: (0, o.we)("#language_selection_" + (0, i.Lg)(t)),
                });
              })
            : null,
          b = (function (e) {
            return !(
              !(0, l.ZF)(e.sPoster) ||
              (e.rgVideoSources &&
                e.rgVideoSources.some((e) => !(0, l.ZF)(e.sURL))) ||
              (e.rgVideoTracks &&
                e.rgVideoTracks.some((e) => !(0, l.ZF)(e.sURL)))
            );
          })(r);
        let w;
        (!b || (_ && "public" == c.TS.WEB_UNIVERSE)) && (w = "anonymous");
        const v = p || (a && d.Get().BVolumePreferenceMuted()),
          I = r.sPoster ? y(r.sPoster) : "";
        return n.createElement(
          "video",
          {
            width: "100%",
            height: "auto",
            autoPlay: a,
            muted: v,
            playsInline: !0,
            controls: m,
            poster: I,
            loop: u,
            crossOrigin: w,
            onVolumeChange: (e) => {
              const t = e.target,
                r = t.muted ? 0 : t.volume;
              h && d.Get().SetVolumePreference(r);
            },
            onPlay: (e) => {
              const t = e.target,
                r = 0 == t.currentTime,
                n = d.Get().BUserHasVolumePreference();
              if ((g(!0), r))
                if (n || a)
                  n &&
                    ((t.volume = d.Get().GetVolumePreference()),
                    (t.muted = d.Get().BVolumePreferenceMuted()));
                else {
                  const e = t.muted ? 0 : t.volume;
                  d.Get().SetVolumePreference(e);
                }
            },
            ref: t,
          },
          S,
          f,
        );
      });
    },
    54492: (e, t, r) => {
      "use strict";
      r.d(t, { S: () => o });
      var a = r(90626),
        n = r(78327),
        i = r(52038),
        s = r(58855);
      function o(e) {
        const { bAllowOutsideOfDeck: t } = e;
        if (!(0, n.Qn)() && !t) return null;
        let r = "unknown";
        switch (e.eDeckCompatibilityCategory) {
          case 3:
            r = "verified";
            break;
          case 2:
            r = "playable";
            break;
          case 1:
            r = "unsupported";
        }
        return a.createElement("div", {
          className: (0, i.A)(
            s.CompatIcon,
            "ds_steam_deck_compat",
            r,
            e.className,
          ),
        });
      }
    },
    26296: (e, t, r) => {
      "use strict";
      r.d(t, { i: () => l, o: () => o });
      var a = r(90626),
        n = r(61859),
        i = r(67523),
        s = r(56681);
      function o(e) {
        const {
            className: t,
            srcs: r,
            lazyLoad: n,
            width: i,
            height: s,
            alt: o,
            crossOrigin: l,
          } = e,
          [c, m] = a.useState(r.length),
          [d, u] = a.useState(0);
        a.useEffect(() => {
          c != r.length && (m(r.length), u(0));
        }, [c, r.length]);
        const p = a.useCallback(() => {
          e.onImageError && e.onImageError(e.srcs[d]),
            d + 1 < e.srcs.length && u(d + 1);
        }, [d, e]);
        return 0 == r.length
          ? null
          : a.createElement("img", {
              className: t,
              src: r[d],
              crossOrigin: l,
              onError: p,
              loading: n ? "lazy" : void 0,
              width: i,
              height: s,
              alt: o,
            });
      }
      function l(e) {
        const [t, r] = a.useState(!1),
          {
            className: o,
            src: l,
            lazyLoad: c,
            width: m,
            height: d,
            alt: u,
            crossOrigin: p,
          } = e;
        return t
          ? a.createElement(
              "div",
              { className: i.ErrorDiv },
              a.createElement("p", null, (0, n.we)("#Image_ErrorTitle", l)),
              a.createElement(
                "ul",
                null,
                a.createElement("li", null, (0, n.we)("#Image_Error_msg1")),
                a.createElement("li", null, (0, n.we)("#Image_Error_msg2")),
                a.createElement("li", null, (0, n.we)("#Image_Error_msg3")),
              ),
              a.createElement("p", null, (0, n.we)("#Image_Error_suggestion")),
            )
          : a.createElement(s.o, {
              className: o,
              src: l,
              onError: () => r(!0),
              crossOrigin: p,
              loading: c ? "lazy" : void 0,
              width: m,
              height: d,
              alt: u,
            });
      }
    },
    56681: (e, t, r) => {
      "use strict";
      r.d(t, { o: () => y });
      var a = r(90626),
        n = r(12155),
        i = r(52038),
        s = r(44691),
        o = r(9154),
        l = r(39449),
        c = r.n(l);
      function m(e) {
        const { closeModal: t, rgImageURL: r } = e,
          [n, i] = a.useState(0),
          s = a.useCallback(() => {
            i(0 == n ? r.length - 1 : n - 1);
          }, [n, r.length]),
          l = a.useCallback(() => {
            n + 1 >= r.length ? i(0) : i(n + 1);
          }, [n, r.length]);
        return a.createElement(
          o.eV,
          {
            bAllowFullSize: !0,
            bOKDisabled: !0,
            closeModal: t,
            bHideCloseIcon: !0,
            modalClassName: c().PopupScreenshotModal,
          },
          a.createElement(d, {
            index: n,
            numElements: r.length,
            fnForward: l,
            fnBackwards: s,
            fnClose: t,
            bCircular: !0,
          }),
          a.createElement(
            "div",
            { className: c().PopupScreenshotContainer },
            a.createElement("img", {
              className: c().PopupScreenshot,
              src: r[n],
            }),
          ),
        );
      }
      function d(e) {
        const {
          index: t,
          numElements: r,
          fnForward: o,
          fnBackwards: l,
          fnClose: m,
          bCircular: d,
        } = e;
        (0, s.E)("ArrowLeft", l),
          (0, s.E)("Left", l),
          (0, s.E)("ArrowRight", o),
          (0, s.E)("Right", o),
          (0, s.E)("Escape", () => m && m()),
          (0, s.E)("Esc", () => m && m());
        let u = r > 1;
        return a.createElement(
          "div",
          { className: c().ButtonCtn },
          u &&
            a.createElement(
              a.Fragment,
              null,
              a.createElement(
                "div",
                {
                  className: (0, i.A)(
                    c().ButtonIcon,
                    0 !== t || d ? null : c().Disabled,
                  ),
                  onClick: l,
                },
                a.createElement(n.V5W, { angle: 270 }),
              ),
              a.createElement(
                "div",
                {
                  className: (0, i.A)(
                    c().ButtonIcon,
                    t !== r - 1 || d ? null : c().Disabled,
                  ),
                  onClick: o,
                },
                a.createElement(n.V5W, { angle: 90 }),
              ),
            ),
          a.createElement(
            "div",
            { className: c().ButtonIcon, onClick: m },
            a.createElement(n.X, null),
          ),
        );
      }
      var u = r(10224),
        p = r(21038);
      const _ = 1.3,
        h = 3,
        g = 256;
      function y(e) {
        const [t, r] = (0, a.useState)(!1),
          [s, l] = (0, a.useState)({
            naturalWidth: 0,
            naturalHeight: 0,
            displayWidth: 0,
            displayHeight: 0,
          }),
          c = (0, a.useRef)(),
          [d, y] = (function () {
            const [e, t] = a.useState(void 0),
              r = a.useCallback(() => t(void 0), []),
              n = a.createElement(
                o.EN,
                { active: void 0 !== e },
                a.createElement(m, { closeModal: r, rgImageURL: e }),
              );
            return [t, n];
          })();
        return (
          (0, a.useEffect)(() => {
            if (
              s.naturalWidth > s.displayWidth * _ &&
              s.naturalHeight > s.displayHeight * _ &&
              s.naturalWidth > g
            ) {
              s.naturalWidth / s.naturalHeight < h && r(!0);
            }
          }, [s]),
          t
            ? a.createElement(
                "span",
                { className: p.PreviewCtn },
                y,
                a.createElement(
                  "span",
                  { className: p.SVG },
                  a.createElement(n.YNO, null),
                ),
                a.createElement("img", {
                  ...e,
                  className: (0, i.A)({
                    [e.className]: Boolean(e.className),
                    [p.ExpandableHover]: !0,
                  }),
                  onClick: (t) => d([e.src]),
                }),
              )
            : a.createElement("img", {
                ...e,
                ref: c,
                onLoad: (e) => {
                  if (!e.currentTarget.closest("a") && !(0, u.c)()) {
                    const {
                      naturalWidth: t,
                      naturalHeight: r,
                      width: a,
                      height: n,
                    } = e.currentTarget;
                    l({
                      naturalWidth: t,
                      naturalHeight: r,
                      displayWidth: a,
                      displayHeight: n,
                    });
                  }
                },
              })
        );
      }
    },
    39700: (e, t, r) => {
      "use strict";
      r.d(t, { k: () => s });
      var a = r(90626),
        n = r(52038),
        i = r(37999);
      function s(e) {
        const { size: t, color: r, trackColor: s } = e,
          o = { borderColor: s, borderLeftColor: r };
        if ("number" == typeof t) {
          const e = `${t}px`;
          (o.width = e),
            (o.height = e),
            (o.minHeight = e),
            (o.minWidth = e),
            (o.borderWidth = t / 10 + "px");
        }
        return a.createElement("div", {
          className: (0, n.A)(
            i.Loading,
            "small" == t && i.Small,
            ("medium" == t || !t) && i.Medium,
            "large" == t && i.Large,
          ),
          style: o,
        });
      }
    },
    76684: (e, t, r) => {
      "use strict";
      r.d(t, {
        K4: () => g,
        X0: () => w,
        gS: () => y,
        l1: () => b,
        pg: () => _,
        u1: () => f,
        v9: () => S,
        yi: () => h,
      });
      var a = r(34629),
        n = r(90626),
        i = r(32754),
        s = r(61859),
        o = r(75844),
        l = r(52038),
        c = r(14771),
        m = r(55351),
        d = r.n(m),
        u = r(44165);
      const p = r(87937);
      function _(e) {
        const t = p.tz.guess(),
          r = p.unix(e).tz(t),
          a = (0, s.l4)();
        return a && r.locale(a), r.format("LT");
      }
      function h(e, t) {
        const r = p.tz.guess(),
          a = p.unix(e).tz(r),
          o = (0, s.l4)();
        return (
          o && a.locale(o),
          n.createElement(
            n.Fragment,
            null,
            a.format("LT"),
            t
              ? n.createElement(
                  i.Gq,
                  { toolTipContent: a.format("Z") + ", " + r },
                  n.createElement("span", null, " ", a.zoneAbbr()),
                )
              : null,
          )
        );
      }
      const g = (0, o.PA)((e) => {
          const {
              dateAndTime: t,
              bSingleLine: r,
              bOnlyTime: a,
              bOnlyDate: i,
            } = e,
            o = !a && Boolean(t),
            l = !i && Boolean(t),
            c = o && (0, s.TW)(t),
            m = e.stylesmodule ? { ...d(), ...e.stylesmodule } : d();
          return r
            ? n.createElement(
                "span",
                { className: a || i ? m.DateAndTimeInline : m.DateAndTime },
                o && c,
                o && l ? n.createElement("span", null, " ") : void 0,
                Boolean(t && l) && h(t, l),
              )
            : n.createElement(
                "div",
                { className: m.DateAndTime },
                o &&
                  n.createElement(
                    n.Fragment,
                    null,
                    n.createElement("div", { className: m.LocalizedDate }, c),
                    " ",
                    n.createElement("span", { className: m.At }, "@"),
                  ),
                n.createElement(
                  "div",
                  { className: m.LocalizedTime },
                  Boolean(t && l) && h(t, l),
                ),
              );
        }),
        y = (e) => {
          const t = n.createElement(
            "div",
            { className: e.stylesmodule.DateToolTip },
            n.createElement(g, {
              dateAndTime: e.rtFullDate,
              bSingleLine: !0,
              stylesmodule: e.stylesmodule,
            }),
          );
          return n.createElement(
            i.m9,
            {
              toolTipContent: t,
              direction: "top",
              className: e.className,
              bTopmost: !0,
            },
            e.children,
          );
        };
      let S = class extends n.Component {
        render() {
          const { startDateAndTime: e, endDateAndTime: t } = this.props,
            r = this.props.stylesmodule
              ? { ...d(), ...this.props.stylesmodule }
              : d();
          let a =
            this.props.bHideEndTime ||
            null == this.props.endDateAndTime ||
            this.props.endDateAndTime < 1;
          if (null == e || 0 == e)
            return n.createElement(
              "div",
              { className: r.DateAndTime },
              n.createElement(
                "span",
                { className: r.RightSideTitles },
                (0, s.we)("#EventDisplay_TimeRange"),
              ),
              (0, s.we)("#EventDisplay_TimeDisplayNone"),
            );
          let i = u.HD.GetTimeNowWithOverride();
          if (a)
            return n.createElement(
              "div",
              { className: r.StartDate },
              n.createElement(
                "div",
                { className: r.RightSideTitles },
                (0, s.we)(
                  e < i
                    ? "#EventDisplay_TimeInPast"
                    : "#EventDisplay_TimeUpcoming",
                ),
                " ",
              ),
              n.createElement(g, { stylesmodule: r, dateAndTime: e }),
            );
          let o = e <= i && i <= t;
          const m = (0, c.JD)(new Date(1e3 * e), new Date(1e3 * t));
          return n.createElement(
            "div",
            { className: r.MultiDateAndTime },
            n.createElement(
              "div",
              { className: r.StartDate },
              n.createElement(
                "span",
                { className: r.RightSideTitles },
                (0, s.we)(
                  e >= i
                    ? "#EventDisplay_TimeBeginsOn"
                    : t >= i
                      ? "#EventDisplay_TimeBeginsOn_Past"
                      : "#EventDisplay_TimeBeginsOn_StartAndEnd_Past",
                ),
              ),
              n.createElement(g, {
                stylesmodule: r,
                bSingleLine: !0,
                dateAndTime: e,
              }),
            ),
            n.createElement(
              "div",
              { className: r.EndDate },
              n.createElement(
                "span",
                { className: r.RightSideTitles },
                (0, s.we)(
                  t < i
                    ? "#EventDisplay_TimeEndsOn_Past"
                    : "#EventDisplay_TimeEndsOn",
                ),
              ),
              n.createElement(g, {
                stylesmodule: r,
                bSingleLine: !0,
                bOnlyTime: m,
                dateAndTime: t,
              }),
            ),
            o &&
              n.createElement(
                "span",
                { className: r.ActiveEvent },
                n.createElement(
                  "span",
                  {
                    className: (0, l.A)(
                      r.RightSideTitles,
                      r.ActiveEventCallOut,
                    ),
                  },
                  (0, s.we)("#Time_Now"),
                ),
              ),
          );
        }
      };
      S = (0, a.Cg)([o.PA], S);
      let f = class extends n.Component {
        render() {
          const {
              startDateAndTime: e,
              endDateAndTime: t,
              bHideEndTime: r,
            } = this.props,
            a = this.props.stylesmodule
              ? { ...d(), ...this.props.stylesmodule }
              : d();
          if (null == e || 0 == e)
            return n.createElement(
              "div",
              { className: a.DateAndTime },
              n.createElement(
                "span",
                { className: a.RightSideTitles },
                (0, s.we)("#EventDisplay_TimeRange"),
              ),
              (0, s.we)("#EventDisplay_TimeDisplayNone"),
            );
          const i = u.HD.GetTimeNowWithOverrideAsDate(),
            o = u.HD.GetTimeNowWithOverride(),
            l = (0, c.Ct)(new Date(1e3 * e), i),
            m = n.createElement(
              "div",
              { className: a.ShortDateAndTime },
              (0, s.TW)(e, l),
            );
          let p = n.createElement(
            y,
            { rtFullDate: e, stylesmodule: a },
            n.createElement(
              "div",
              { className: a.RightSideTitles },
              (0, s.we)(
                e < o
                  ? "#EventDisplay_TimeInPast"
                  : "#EventDisplay_TimeUpcoming",
              ),
            ),
            m,
          );
          if (
            (o < e &&
              e < o + c.Kp.PerWeek &&
              (p = n.createElement(
                y,
                { rtFullDate: e, stylesmodule: a },
                n.createElement(
                  "div",
                  { className: a.RightSideTitles },
                  (0, s.PP)(
                    "#EventDisplay_EventUpcoming_WithDateAndTime",
                    m,
                    n.createElement(
                      "div",
                      { className: a.ShortDateAndTime },
                      h(e),
                      " ",
                    ),
                  ),
                ),
              )),
            r || null == t || t < 1)
          )
            return p;
          const _ = e <= o && o <= t;
          _ &&
            (p = n.createElement(
              y,
              { rtFullDate: e, className: a.ActiveEvent, stylesmodule: a },
              n.createElement(
                "span",
                { className: a.ActiveEventCallOut },
                (0, s.we)("#Time_Now"),
              ),
            ));
          let g = null;
          const S = _ ? t - o : t - e;
          if (S <= c.Kp.PerDay) {
            const e = n.createElement(
              "div",
              { className: a.ShortDateAndTime },
              (0, s.Hq)(S, !0),
            );
            g =
              t < o
                ? n.createElement(
                    "div",
                    { className: a.RightSideTitles },
                    (0, s.we)("#EventDisplay_TimeEndsOn_Ran"),
                    e,
                  )
                : n.createElement(
                    "div",
                    { className: a.RightSideTitles },
                    (0, s.PP)(
                      _
                        ? "#EventDisplay_TimeLeft"
                        : "#EventDisplay_RunsForDuration",
                      e,
                    ),
                  );
          } else {
            const e = i.getFullYear() == new Date(1e3 * t).getFullYear();
            g = n.createElement(
              n.Fragment,
              null,
              n.createElement(
                "div",
                { className: a.RightSideTitles },
                (0, s.we)(
                  t < o
                    ? "#EventDisplay_TimeEndsOn_Past"
                    : "#EventDisplay_TimeEndsOn",
                ),
              ),
              n.createElement(
                "div",
                { className: a.ShortDateAndTime },
                (0, s.TW)(t, e),
              ),
            );
          }
          const f = n.createElement(y, { rtFullDate: t, stylesmodule: a }, g);
          return n.createElement("div", { className: a.ShortDateRange }, p, f);
        }
      };
      function b(e, t, r) {
        const a = u.HD.GetTimeNowWithOverrideAsDate(),
          n = new Date(1e3 * e),
          i = new Date(1e3 * t),
          o = a.getFullYear() == n.getFullYear(),
          l = a.getFullYear() == i.getFullYear(),
          c = n.getFullYear() == i.getFullYear(),
          m = c && n.getMonth() == i.getMonth(),
          d = m && n.getDate() == i.getDate(),
          p = {
            day: "numeric",
            month: r ?? "long",
            year: o ? void 0 : "numeric",
          },
          _ = n.toLocaleDateString(s.pf.GetPreferredLocales(), p);
        if (d) return _;
        {
          const e = {
            day: "numeric",
            month: m && l ? void 0 : (r ?? "long"),
            year: c ? void 0 : "numeric",
          };
          return (
            _ + " - " + i.toLocaleDateString(s.pf.GetPreferredLocales(), e)
          );
        }
      }
      function w(e) {
        const {
          rtStartDate: t,
          rtEndDate: r,
          strMonthFormat: a,
          className: i,
        } = e;
        return n.createElement("div", { className: i }, b(t, r, a), " ");
      }
      f = (0, a.Cg)([o.PA], f);
    },
    10224: (e, t, r) => {
      "use strict";
      r.d(t, { c: () => o, z: () => l });
      var a = r(90626),
        n = r(45387),
        i = r.n(n),
        s = r(73745);
      function o() {
        return window.innerWidth < parseInt(i().strMaxMobileWidth);
      }
      function l() {
        const e = (0, s.CH)();
        return (
          a.useEffect(
            () => (
              window.addEventListener("resize", e),
              () => window.removeEventListener("resize", e)
            ),
            [e],
          ),
          window.innerWidth < parseInt(i().strMaxMobileWidth)
        );
      }
    },
    27543: (e, t, r) => {
      "use strict";
      r.d(t, { JS: () => n, rG: () => i });
      var a = r(61859);
      function n(e) {
        switch (e) {
          case 29:
          case 27:
          case 2:
          case 4:
          case 5:
          case 6:
          case 8:
          case 7:
          case 9:
          case 11:
          case 17:
          case 18:
          case 19:
          case 20:
          case 21:
          case 22:
          case 23:
          case 24:
          case 35:
          case 25:
          case 26:
          case 31:
          case 32:
          case 1:
          case 34:
            return !0;
        }
        return !1;
      }
      function i(e) {
        let t = "#PartnerEvent_" + e,
          r = (0, a.we)(t);
        return r != t ? r : (0, a.we)("#PartnerEvent_Other");
      }
    },
    44691: (e, t, r) => {
      "use strict";
      r.d(t, { E: () => n });
      var a = r(90626);
      r(13871);
      function n(e, t) {
        a.useEffect(() => {
          const r = (r) => {
            r.key === e && t(r);
          };
          return (
            document.addEventListener("keydown", r),
            () => document.removeEventListener("keydown", r)
          );
        }, [e, t]);
      }
    },
  },
]);
