{"version":3,"file":"main.B09zvW.js","sources":["theme-62/virtual:theme","theme-62/discourse/connectors/topic-list-before-activity/activity-icon.gjs","theme-62/discourse/connectors/topic-list-before-reply-count/comment-icon-new.gjs","theme-62/discourse/connectors/topic-list-before-status/vote-count-new.gjs","theme-62/discourse/connectors/topic-list-before-views/views-icon.gjs","theme-62/discourse/connectors/topic-list-header-before-activity/activity-icon.gjs","theme-62/discourse/connectors/topic-list-header-before-posters/poster-icon.gjs","theme-62/discourse/connectors/topic-list-header-before-views/views-icon.gjs","theme-62/discourse/initializers/init-alt-vote-cat-style.js","theme-62/discourse/initializers/voting-category-navigation.js","theme-62/virtual:entrypoint:main"],"sourcesContent":["import { getObjectForTheme } from \"discourse/lib/theme-settings-store\";\n\nexport const settings = getObjectForTheme(62);\n\nexport function themePrefix(key) {\n  return `theme_translations.62.${key}`;\n}\n","import Component from \"@glimmer/component\";\nimport { service } from \"@ember/service\";\nimport icon from \"discourse/helpers/d-icon\";\n\nexport default class ActivityIcon extends Component {\n  @service discovery;\n  @service site;\n\n  get showActivityIcon() {\n    const id = this.discovery.category?.id;\n\n    if (this.site.desktopView && id && settings.add_column_icons) {\n      const votingCategories = settings.voting_categories\n        .split(\"|\")\n        .map(Number);\n      return votingCategories.some((category) => category === id);\n    }\n  }\n\n  <template>\n    {{#if this.showActivityIcon}}\n      {{icon \"clock\"}}\n    {{/if}}\n  </template>\n} ","import Component from \"@glimmer/component\";\nimport { service } from \"@ember/service\";\nimport icon from \"discourse/helpers/d-icon\";\n\nexport default class CommentIcon extends Component {\n  @service discovery;\n  @service site;\n\n  get showCommentIcon() {\n    const id = this.discovery.category?.id;\n\n    if (this.site.desktopView && id && settings.add_column_icons) {\n      const votingCategories = settings.voting_categories\n        .split(\"|\")\n        .map(Number);\n      return votingCategories.some((category) => category === id);\n    }\n  }\n\n  <template>\n    {{#if this.showCommentIcon}}\n      {{icon \"far-comment\"}}\n    {{/if}}\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { on } from \"@ember/modifier\";\nimport { action } from \"@ember/object\";\nimport { service } from \"@ember/service\";\nimport bodyClass from \"discourse/helpers/body-class\";\nimport concatClass from \"discourse/helpers/concat-class\";\nimport icon from \"discourse/helpers/d-icon\";\nimport { ajax } from \"discourse/lib/ajax\";\nimport { popupAjaxError } from \"discourse/lib/ajax-error\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default class VoteCount extends Component {\n  @service currentUser;\n  @service discovery;\n  @service site;\n  @service router;\n\n  get topic() {\n    return this.args.outletArgs.topic;\n  }\n\n  get showVoteCount() {\n    const votingCategories = settings.voting_categories.split(\"|\").map(Number);\n    const id = this.discovery.category?.id;\n\n    return (\n      this.site.desktopView &&\n      this.topic.get(\"can_vote\") &&\n      id &&\n      votingCategories.some((category) => category === id)\n    );\n  }\n\n  get votingDisabled() {\n    // Don't disable if user is not logged in and redirect setting is enabled\n    if (!this.currentUser && settings.redirect_to_login_on_vote) {\n      return false;\n    }\n    \n    return (\n      (this.currentUser?.get(\"votes_left\") <= 0 &&\n        !this.topic.get(\"user_voted\")) ||\n      this.topic.get(\"closed\") ||\n      this.topic.get(\"unread\") === undefined\n    );\n  }\n\n  get votedStatus() {\n    if (!settings.vote_from_topic_list) {\n      return;\n    }\n\n    // No tooltip for non-logged-in users\n    if (!this.currentUser) {\n      return;\n    }\n\n    if (this.topic.get(\"closed\")) {\n      return i18n(themePrefix(\"closed\"));\n    } else if (\n      this.currentUser?.get(\"votes_left\") <= 0 &&\n      !this.topic.get(\"user_voted\")\n    ) {\n      return i18n(themePrefix(\"out_of_votes\"));\n    } else {\n      return this.topic.get(\"user_voted\")\n        ? i18n(themePrefix(\"user_vote\"))\n        : i18n(themePrefix(\"user_no_vote\"));\n    }\n  }\n\n  @action\n  async vote() {\n    // Redirect to login if user is not logged in and setting is enabled\n    if (!this.currentUser && settings.redirect_to_login_on_vote) {\n      this.router.transitionTo(\"login\");\n      return;\n    }\n\n    if (\n      !settings.vote_from_topic_list ||\n      (this.currentUser.get(\"votes_left\") <= 0 && !this.topic.user_voted) ||\n      this.topic.closed ||\n      this.topic.unread === undefined\n    ) {\n      return;\n    }\n\n    let voteType;\n\n    if (this.topic.user_voted) {\n      this.topic.set(\"vote_count\", this.topic.vote_count - 1);\n      voteType = \"unvote\";\n\n      this.currentUser.set(\"votes_left\", this.currentUser.votes_left + 1);\n      this.topic.set(\"user_voted\", false);\n    } else {\n      this.topic.set(\"vote_count\", this.topic.vote_count + 1);\n      voteType = \"vote\";\n\n      this.currentUser.set(\"votes_left\", this.currentUser.votes_left - 1);\n      this.topic.set(\"user_voted\", true);\n    }\n\n    try {\n      const result = await ajax(`/voting/${voteType}`, {\n        type: \"POST\",\n        data: { topic_id: this.topic.id },\n      });\n\n      this.currentUser.setProperties({\n        votes_exceeded: !result.can_vote,\n        votes_left: result.votes_left,\n      });\n    } catch (e) {\n      popupAjaxError(e);\n    }\n  }\n\n  <template>\n    {{#if this.showVoteCount}}\n      {{bodyClass \"voting-category\"}}\n\n      <div class=\"vote-count-before-title\">\n        <button\n          {{on \"click\" this.vote}}\n          type=\"button\"\n          title={{this.votedStatus}}\n          class={{concatClass\n            \"topic-list-vote-button btn-flat\"\n            (unless this.topic.user_voted \"can-vote\")\n            (if this.votingDisabled \"disabled\")\n          }}\n        >{{icon \"caret-up\"}}</button>\n        <span class=\"vote-count-value\">{{this.topic.vote_count}}</span>\n      </div>\n    {{/if}}\n  </template>\n}\n","import Component from \"@glimmer/component\";\nimport { service } from \"@ember/service\";\nimport icon from \"discourse/helpers/d-icon\";\n\nexport default class ViewsIcon extends Component {\n  @service discovery;\n  @service site;\n\n  get showViewsIcon() {\n    const id = this.discovery.category?.id;\n\n    if (this.site.desktopView && id && settings.add_column_icons) {\n      const votingCategories = settings.voting_categories\n        .split(\"|\")\n        .map(Number);\n      return votingCategories.some((category) => category === id);\n    }\n  }\n\n  <template>\n    {{#if this.showViewsIcon}}\n      {{icon \"far-eye\"}}\n    {{/if}}\n  </template>\n} ","import Component from \"@glimmer/component\";\nimport { service } from \"@ember/service\";\nimport icon from \"discourse/helpers/d-icon\";\n\nexport default class ActivityIcon extends Component {\n  @service discovery;\n  @service site;\n\n  get showActivityIcon() {\n    const id = this.discovery.category?.id;\n\n    if (this.site.desktopView && id && settings.add_column_icons) {\n      const votingCategories = settings.voting_categories\n        .split(\"|\")\n        .map(Number);\n      return votingCategories.some((category) => category === id);\n    }\n  }\n\n  <template>\n    {{#if this.showActivityIcon}}\n      {{icon \"clock\"}}\n    {{/if}}\n  </template>\n} ","import Component from \"@glimmer/component\";\nimport { service } from \"@ember/service\";\nimport icon from \"discourse/helpers/d-icon\";\n\nexport default class PosterIcon extends Component {\n  @service discovery;\n  @service site;\n\n  get showPosterIcon() {\n    const id = this.discovery.category?.id;\n\n    if (this.site.desktopView && id && settings.add_column_icons) {\n      const votingCategories = settings.voting_categories\n        .split(\"|\")\n        .map(Number);\n      return votingCategories.some((category) => category === id);\n    }\n  }\n\n  <template>\n    {{#if this.showPosterIcon}}\n      {{icon \"users\"}}\n    {{/if}}\n  </template>\n} ","import Component from \"@glimmer/component\";\nimport { service } from \"@ember/service\";\nimport icon from \"discourse/helpers/d-icon\";\n\nexport default class ViewsIcon extends Component {\n  @service discovery;\n  @service site;\n\n  get showViewsIcon() {\n    const id = this.discovery.category?.id;\n\n    if (this.site.desktopView && id && settings.add_column_icons) {\n      const votingCategories = settings.voting_categories\n        .split(\"|\")\n        .map(Number);\n      return votingCategories.some((category) => category === id);\n    }\n  }\n\n  <template>\n    {{#if this.showViewsIcon}}\n      {{icon \"far-eye\"}}\n    {{/if}}\n  </template>\n} ","import { apiInitializer } from \"discourse/lib/api\";\nimport NavItem from \"discourse/models/nav-item\";\nimport { clearNavItems } from \"discourse/models/nav-item\";\nimport { i18n } from \"discourse-i18n\";\n\nconst votingCategories = settings.voting_categories.split(\"|\").map(Number);\n\nexport default apiInitializer(\"1.1\", (api) => {\n  const discovery = api.container.lookup(\"service:discovery\");\n\n  function isVotingCategory() {\n    const currentCategoryId = discovery.category?.id;\n    return (\n      currentCategoryId && votingCategories.some((c) => c === currentCategoryId)\n    );\n  }\n\n  clearNavItems();\n\n  api.addNavigationBarItem({\n    name: \"open\",\n    displayName: \"Open\",\n    after: \"new\",\n    customFilter: (category) => {\n      return category && votingCategories.includes(category.id);\n    },\n    customHref: (category, args) => {\n      const path = NavItem.pathFor(\"latest\", args);\n      return `${path}?solved=no`;\n    },\n    forceActive: (category, args, router) => {\n      const queryParams = router.currentRoute.queryParams;\n      return (\n        queryParams &&\n        Object.keys(queryParams).length === 1 &&\n        queryParams[\"solved\"] === \"no\"\n      );\n    },\n  });\n\n  api.addNavigationBarItem({\n    name: \"solved\",\n    displayName: \"Solved\",\n    after: \"open\",\n    customFilter: (category) => {\n      return category && votingCategories.includes(category.id);\n    },\n    customHref: (category, args) => {\n      const path = NavItem.pathFor(\"latest\", args);\n      return `${path}?solved=yes`; // You'll need to provide the correct URL for solved topics\n    },\n    forceActive: (category, args, router) => {\n      const queryParams = router.currentRoute.queryParams;\n      return (\n        queryParams &&\n        Object.keys(queryParams).length === 1 &&\n        queryParams[\"solved\"] === \"yes\"\n      );\n    },\n  });\n\n  api.addNavigationBarItem({\n    name: \"your_votes\", \n    displayName: \"Your Votes\",\n    after: \"solved\",\n    customFilter: (category) => {\n      return category && votingCategories.includes(category.id) && api.getCurrentUser();\n    },\n    customHref: (category, args) => {\n      const path = NavItem.pathFor(\"latest\", args);\n      return `${path}?state=my_votes`;\n    },\n    forceActive: (category, args, router) => {\n      const queryParams = router.currentRoute.queryParams;\n      return (\n        queryParams &&\n        Object.keys(queryParams).length === 1 &&\n        queryParams[\"state\"] === \"my_votes\"\n      );\n    },\n  });\n\n  api.registerValueTransformer(\"topic-list-columns\", ({ value: columns }) => {\n    if (isVotingCategory()) {\n      if (!settings.show_activity_column) {\n        columns.delete(\"activity\");\n      }\n      if (!settings.show_views_column) {\n        columns.delete(\"views\");\n      }\n      // Always delete posters since it's replaced by replies\n      columns.delete(\"posters\");\n    }\n  });\n\n  api.registerValueTransformer(\n    \"topic-list-item-class\",\n    ({ value, context }) => {\n      if (!context.topic.get(\"can_vote\")) {\n        value.push(\"non-voting\");\n      }\n      return value;\n    }\n  );\n\n  api.registerValueTransformer(\"topic-list-item-expand-pinned\", ({ value }) => {\n    return (\n      ((settings.include_excerpts || settings.vote_from_topic_list) &&\n        isVotingCategory()) ||\n      value\n    );\n  });\n});\n","import { withPluginApi } from \"discourse/lib/plugin-api\";\nimport NavItem from \"discourse/models/nav-item\";\nimport { i18n } from \"discourse-i18n\";\n\nexport default {\n  name: \"voting-category-navigation\",\n\n  initialize() {\n    withPluginApi(\"0.8.32\", (api) => {\n      // Only add navigation if setting is enabled\n      if (!settings.show_navigation_tabs) return;\n      \n      const currentUser = api.getCurrentUser();\n      \n      // Helper function to check if we're in a voting category\n      const isVotingCategory = (category) => {\n        if (!category) return false;\n        const votingCategories = settings.voting_categories\n          .split(\"|\")\n          .map(Number);\n        return votingCategories.some((catId) => catId === category.id);\n      };\n\n      NavItem.clearNavItems();\n\n      // Popular - Algorithmic (top posts)\n      api.addNavigationBarItem({\n        name: \"popular\",\n        displayName: \"Popular\",\n        before: \"latest\",\n        customFilter: (category) => {\n          return isVotingCategory(category);\n        },\n        customHref: (category, args) => {\n          const path = NavItem.pathFor(\"latest\", args);\n          return `${path}?period=all`; // You'll need to confirm this URL\n        },\n        forceActive: (category, args, router) => {\n          const queryParams = router.currentRoute.queryParams;\n          return (\n            queryParams &&\n            queryParams[\"period\"] === \"all\"\n          );\n        },\n      });\n\n      // Top - Sorted by votes\n      api.addNavigationBarItem({\n        name: \"top_votes\",\n        displayName: \"Top\",\n        before: \"latest\",\n        customFilter: (category) => {\n          return isVotingCategory(category);\n        },\n        customHref: (category, args) => {\n          const path = NavItem.pathFor(\"latest\", args);\n          return `${path}?order=votes`;\n        },\n        forceActive: (category, args, router) => {\n          const queryParams = router.currentRoute.queryParams;\n          return (\n            queryParams &&\n            Object.keys(queryParams).length === 1 &&\n            queryParams[\"order\"] === \"votes\"\n          );\n        },\n      });\n\n      // Solved - All solved feature requests\n      api.addNavigationBarItem({\n        name: \"solved\",\n        displayName: \"Solved\",\n        before: \"latest\",\n        customFilter: (category) => {\n          return isVotingCategory(category);\n        },\n        customHref: (category, args) => {\n          const path = NavItem.pathFor(\"latest\", args);\n          return `${path}?solved=yes`; // You'll need to confirm this URL\n        },\n        forceActive: (category, args, router) => {\n          const queryParams = router.currentRoute.queryParams;\n          return (\n            queryParams &&\n            queryParams[\"solved\"] === \"yes\"\n          );\n        },\n      });\n\n      // Latest - Newest first (default)\n      api.addNavigationBarItem({\n        name: \"latest_voting\",\n        displayName: \"Latest\",\n        before: \"top\",\n        customFilter: (category) => {\n          return isVotingCategory(category);\n        },\n        customHref: (category, args) => {\n          return NavItem.pathFor(\"latest\", args);\n        },\n        forceActive: (category, args, router) => {\n          const queryParams = router.currentRoute.queryParams;\n          return !queryParams || Object.keys(queryParams).length === 0;\n        },\n      });\n\n      // Your Votes - User's voted topics\n      api.addNavigationBarItem({\n        name: \"your_votes\",\n        displayName: \"Your Votes\",\n        before: \"latest\",\n        customFilter: (category) => {\n          return isVotingCategory(category) && currentUser;\n        },\n        customHref: (category, args) => {\n          const path = NavItem.pathFor(\"latest\", args);\n          return `${path}?state=my_votes`;\n        },\n        forceActive: (category, args, router) => {\n          const queryParams = router.currentRoute.queryParams;\n          return (\n            queryParams &&\n            Object.keys(queryParams).length === 1 &&\n            queryParams[\"state\"] === \"my_votes\"\n          );\n        },\n      });\n    });\n  },\n}; ","import * as Mod1 from \"./discourse/connectors/topic-list-before-activity/activity-icon.gjs\";\nimport * as Mod2 from \"./discourse/connectors/topic-list-before-reply-count/comment-icon-new.gjs\";\nimport * as Mod3 from \"./discourse/connectors/topic-list-before-status/vote-count-new.gjs\";\nimport * as Mod4 from \"./discourse/connectors/topic-list-before-views/views-icon.gjs\";\nimport * as Mod5 from \"./discourse/connectors/topic-list-header-before-activity/activity-icon.gjs\";\nimport * as Mod6 from \"./discourse/connectors/topic-list-header-before-posters/poster-icon.gjs\";\nimport * as Mod7 from \"./discourse/connectors/topic-list-header-before-views/views-icon.gjs\";\nimport * as Mod8 from \"./discourse/initializers/init-alt-vote-cat-style\";\nimport * as Mod9 from \"./discourse/initializers/voting-category-navigation\";\nconst compatModules = {\n  \"discourse/connectors/topic-list-before-activity/activity-icon\": Mod1,\n  \"discourse/connectors/topic-list-before-reply-count/comment-icon-new\": Mod2,\n  \"discourse/connectors/topic-list-before-status/vote-count-new\": Mod3,\n  \"discourse/connectors/topic-list-before-views/views-icon\": Mod4,\n  \"discourse/connectors/topic-list-header-before-activity/activity-icon\": Mod5,\n  \"discourse/connectors/topic-list-header-before-posters/poster-icon\": Mod6,\n  \"discourse/connectors/topic-list-header-before-views/views-icon\": Mod7,\n  \"discourse/initializers/init-alt-vote-cat-style\": Mod8,\n  \"discourse/initializers/voting-category-navigation\": Mod9,\n};\nexport { compatModules };\nexport default compatModules;\n"],"names":["settings","getObjectForTheme","themePrefix","key","Component","dt7948","g","this","prototype","service","discovery","i","site","showActivityIcon","id","category","desktopView","add_column_icons","voting_categories","split","map","Number","some","setComponentTemplate","createTemplateFactory","block","moduleName","scope","icon","isStrictMode","CommentIcon","showCommentIcon","VoteCount","currentUser","router","topic","args","outletArgs","showVoteCount","votingCategories","get","votingDisabled","redirect_to_login_on_vote","undefined","votedStatus","vote_from_topic_list","i18n","vote","transitionTo","user_voted","closed","unread","voteType","set","vote_count","votes_left","result","ajax","type","data","topic_id","setProperties","votes_exceeded","can_vote","e","popupAjaxError","n","action","bodyClass","concatClass","on","showViewsIcon","ActivityIcon","PosterIcon","showPosterIcon","ViewsIcon","initAltVoteCatStyle","apiInitializer","api","container","lookup","isVotingCategory","currentCategoryId","c","clearNavItems","addNavigationBarItem","name","displayName","after","customFilter","includes","customHref","NavItem","pathFor","forceActive","queryParams","currentRoute","Object","keys","length","getCurrentUser","registerValueTransformer","value","columns","show_activity_column","delete","show_views_column","context","push","include_excerpts","votingCategoryNavigation","initialize","withPluginApi","show_navigation_tabs","catId","before","compatModules","Mod1","Mod2","Mod3","Mod4","Mod5","Mod6","Mod7","Mod8"],"mappings":"0lCAEaA,EAAWC,EAAkB;AAEnC,SAASC,EAAYC,GAC1B,MAAO,yBAAyBA,GAClC,OCFe,cAA2BC,SAAAC,OAAAC,EAAAC,KAAAC,uBACvCC,GAAA,CAAAC,QAAAL,OAAAM,EAAAJ,KAAA;OAAAF,OAAAC,EAAAC,KAAAC,kBACAC,GAAA,CAAAG,QAAAP,OAAAM,EAAAJ,KAAA;AAED,oBAAIM,GACF,MAAMC,EAAKP,KAAKG,UAAUK,UAAUD;AAEpC,GAAIP,KAAKK,KAAKI,aAAeF,GAAMd,EAASiB,iBAAkB,CAI5D,OAHyBjB,EAASkB,kBAC/BC,MAAM,KACNC,IAAIC,QACiBC,KAAMP,GAAaA,IAAaD,EAC1D,CACF,QAEAS,EAAAC,EAAA,CAAAV,GAAA,KAAAW,MAAA,+GAAAC,WAAA,4BAAAC,MAAAA,KAAAA,CAAAC,SAAAC,cAAA,IAIAtB,KAAU;;ACnBG,MAAMuB,UAAoB1B,SAAAC,OAAAC,EAAAC,KAAAC,uBACtCC,GAAA,CAAAC,QAAAL,OAAAM,EAAAJ,KAAA;OAAAF,OAAAC,EAAAC,KAAAC,kBACAC,GAAA,CAAAG,QAAAP,OAAAM,EAAAJ,KAAA;AAED,mBAAIwB,GACF,MAAMjB,EAAKP,KAAKG,UAAUK,UAAUD;AAEpC,GAAIP,KAAKK,KAAKI,aAAeF,GAAMd,EAASiB,iBAAkB,CAI5D,OAHyBjB,EAASkB,kBAC/BC,MAAM,KACNC,IAAIC,QACiBC,KAAMP,GAAaA,IAAaD,EAC1D,CACF,QAEAS,EAAAC,EAAA,CAAAV,GAAA,KAAAW,MAAA,oHAAAC,WAAA,4BAAAC,MAAAA,KAAAA,CAAAC,SAAAC,cAAA,IAIAtB,KAAU;ACZG,MAAMyB,UAAkB5B,SAAAC,OAAAC,EAAAC,KAAAC,yBACpCC,GAAA,CAAAwB,QAAA5B,OAAAM,EAAAJ,KAAA;OAAAF,OAAAC,EAAAC,KAAAC,uBACAC,GAAA,CAAAC,QAAAL,OAAAM,EAAAJ,KAAA;OAAAF,OAAAC,EAAAC,KAAAC,kBACAC,GAAA,CAAAG,QAAAP,OAAAM,EAAAJ,KAAA;OAAAF,OAAAC,EAAAC,KAAAC,oBACAC,GAAA,CAAAyB,QAAA7B,OAAAM,EAAAJ,KAAA;AAED,SAAI4B,GACF,OAAO5B,KAAK6B,KAAKC,WAAWF,KAC9B,CAEA,iBAAIG,GACF,MAAMC,EAAmBvC,EAASkB,kBAAkBC,MAAM,KAAKC,IAAIC,QAC7DP,EAAKP,KAAKG,UAAUK,UAAUD;AAEpC,OACEP,KAAKK,KAAKI,aACVT,KAAK4B,MAAMK,IAAI,aACf1B,GACAyB,EAAiBjB,KAAMP,GAAaA,IAAaD,EAErD,CAEA,kBAAI2B,GAEF,SAAKlC,KAAK0B,aAAejC,EAAS0C,6BAK/BnC,KAAK0B,aAAaO,IAAI,eAAiB,IACrCjC,KAAK4B,MAAMK,IAAI,eAClBjC,KAAK4B,MAAMK,IAAI,gBACcG,IAA7BpC,KAAK4B,MAAMK,IAAI,UAEnB,CAEA,eAAII,GACF,GAAK5C,EAAS6C,sBAKTtC,KAAK0B,YAIV,OAAI1B,KAAK4B,MAAMK,IAAI,UACVM,EAAK5C,EAAY,WAExBK,KAAK0B,aAAaO,IAAI,eAAiB,IACtCjC,KAAK4B,MAAMK,IAAI,cAETM,EAAK5C,EAAY,iBAEjBK,KAAK4B,MAAMK,IAAI,cAClBM,EAAK5C,EAAY,cACjB4C,EAAK5C,EAAY,gBAEzB,CAEA,UACM6C,GAEJ,IAAKxC,KAAK0B,aAAejC,EAAS0C,0BAEhC,YADAnC,KAAK2B,OAAOc,aAAa;AAI3B,IACGhD,EAAS6C,sBACTtC,KAAK0B,YAAYO,IAAI,eAAiB,IAAMjC,KAAK4B,MAAMc,YACxD1C,KAAK4B,MAAMe,aACWP,IAAtBpC,KAAK4B,MAAMgB,OAEX;AAGF,IAAIC;AAEA7C,KAAK4B,MAAMc,YACb1C,KAAK4B,MAAMkB,IAAI,aAAc9C,KAAK4B,MAAMmB,WAAa,GACrDF,EAAW,SAEX7C,KAAK0B,YAAYoB,IAAI,aAAc9C,KAAK0B,YAAYsB,WAAa,GACjEhD,KAAK4B,MAAMkB,IAAI,cAAc,KAE7B9C,KAAK4B,MAAMkB,IAAI,aAAc9C,KAAK4B,MAAMmB,WAAa,GACrDF,EAAW,OAEX7C,KAAK0B,YAAYoB,IAAI,aAAc9C,KAAK0B,YAAYsB,WAAa,GACjEhD,KAAK4B,MAAMkB,IAAI,cAAc;AAG/B,IACE,MAAMG,QAAeC,EAAK,WAAWL,IAAY,CAC/CM,KAAM,OACNC,KAAM,CAAEC,SAAUrD,KAAK4B,MAAMrB;AAG/BP,KAAK0B,YAAY4B,cAAc,CAC7BC,gBAAiBN,EAAOO,SACxBR,WAAYC,EAAOD,YAEvB,CAAE,MAAOS,GACPC,EAAeD,EACjB,CACF,QAAA3D,OAAA6D,EAAA3D,KAAAC,kBA9CC2D,GAAA,QAgDD5C,EAAAC,EAAA,CAAAV,GAAA,KAAAW,MAAA,smBAAAC,WAAA,4BAAAC,MAAAA,KAAAA,CAAAyC,YAAAC,cAAAC,KAAA1C,SAAAC,cAAA,IAkBAtB,KAAU;MCrIG,cAAwBH,SAAAC,OAAAC,EAAAC,KAAAC,uBACpCC,GAAA,CAAAC,QAAAL,OAAAM,EAAAJ,KAAA;OAAAF,OAAAC,EAAAC,KAAAC,kBACAC,GAAA,CAAAG,QAAAP,OAAAM,EAAAJ,KAAA;AAED,iBAAIgE,GACF,MAAMzD,EAAKP,KAAKG,UAAUK,UAAUD;AAEpC,GAAIP,KAAKK,KAAKI,aAAeF,GAAMd,EAASiB,iBAAkB,CAI5D,OAHyBjB,EAASkB,kBAC/BC,MAAM,KACNC,IAAIC,QACiBC,KAAMP,GAAaA,IAAaD,EAC1D,CACF,QAEAS,EAAAC,EAAA,CAAAV,GAAA,KAAAW,MAAA,8GAAAC,WAAA,4BAAAC,MAAAA,KAAAA,CAAAC,SAAAC,cAAA,IAIAtB,KAAU;;ACnBG,MAAMiE,UAAqBpE,SAAAC,OAAAC,EAAAC,KAAAC,uBACvCC,GAAA,CAAAC,QAAAL,OAAAM,EAAAJ,KAAA;OAAAF,OAAAC,EAAAC,KAAAC,kBACAC,GAAA,CAAAG,QAAAP,OAAAM,EAAAJ,KAAA;AAED,oBAAIM,GACF,MAAMC,EAAKP,KAAKG,UAAUK,UAAUD;AAEpC,GAAIP,KAAKK,KAAKI,aAAeF,GAAMd,EAASiB,iBAAkB,CAI5D,OAHyBjB,EAASkB,kBAC/BC,MAAM,KACNC,IAAIC,QACiBC,KAAMP,GAAaA,IAAaD,EAC1D,CACF,QAEAS,EAAAC,EAAA,CAAAV,GAAA,KAAAW,MAAA,+GAAAC,WAAA,4BAAAC,MAAAA,KAAAA,CAAAC,SAAAC,cAAA,IAIAtB,KAAU;ACnBG,MAAMkE,UAAmBrE,SAAAC,OAAAC,EAAAC,KAAAC,uBACrCC,GAAA,CAAAC,QAAAL,OAAAM,EAAAJ,KAAA;OAAAF,OAAAC,EAAAC,KAAAC,kBACAC,GAAA,CAAAG,QAAAP,OAAAM,EAAAJ,KAAA;AAED,kBAAImE,GACF,MAAM5D,EAAKP,KAAKG,UAAUK,UAAUD;AAEpC,GAAIP,KAAKK,KAAKI,aAAeF,GAAMd,EAASiB,iBAAkB,CAI5D,OAHyBjB,EAASkB,kBAC/BC,MAAM,KACNC,IAAIC,QACiBC,KAAMP,GAAaA,IAAaD,EAC1D,CACF,QAEAS,EAAAC,EAAA,CAAAV,GAAA,KAAAW,MAAA,6GAAAC,WAAA,4BAAAC,MAAAA,KAAAA,CAAAC,SAAAC,cAAA,IAIAtB,KAAU;ACnBG,MAAMoE,UAAkBvE,SAAAC,OAAAC,EAAAC,KAAAC,uBACpCC,GAAA,CAAAC,QAAAL,OAAAM,EAAAJ,KAAA;OAAAF,OAAAC,EAAAC,KAAAC,kBACAC,GAAA,CAAAG,QAAAP,OAAAM,EAAAJ,KAAA;AAED,iBAAIgE,GACF,MAAMzD,EAAKP,KAAKG,UAAUK,UAAUD;AAEpC,GAAIP,KAAKK,KAAKI,aAAeF,GAAMd,EAASiB,iBAAkB,CAI5D,OAHyBjB,EAASkB,kBAC/BC,MAAM,KACNC,IAAIC,QACiBC,KAAMP,GAAaA,IAAaD,EAC1D,CACF,QAEAS,EAAAC,EAAA,CAAAV,GAAA,KAAAW,MAAA,8GAAAC,WAAA,4BAAAC,MAAAA,KAAAA,CAAAC,SAAAC,cAAA,IAIAtB,KAAU;;AClBZ,MAAMgC,EAAmBvC,EAASkB,kBAAkBC,MAAM,KAAKC,IAAIC;AAEnE,IAAAuD;oCAAeC,CAAe,MAAQC,IACpC,MAAMpE,EAAYoE,EAAIC,UAAUC,OAAO;AAEvC,SAASC,IACP,MAAMC,EAAoBxE,EAAUK,UAAUD;AAC9C,OACEoE,GAAqB3C,EAAiBjB,KAAM6D,GAAMA,IAAMD,EAE5D,CAEAE,IAEAN,EAAIO,qBAAqB,CACvBC,KAAM,OACNC,YAAa,OACbC,MAAO,MACPC,aAAe1E,GACNA,GAAYwB,EAAiBmD,SAAS3E,EAASD,IAExD6E,WAAYA,CAAC5E,EAAUqB,IAEd,GADMwD,EAAQC,QAAQ,SAAUzD,eAGzC0D,YAAaA,CAAC/E,EAAUqB,EAAMF,KAC5B,MAAM6D,EAAc7D,EAAO8D,aAAaD;AACxC,OACEA,GACoC,IAApCE,OAAOC,KAAKH,GAAaI,QACC,OAA1BJ,EAAoB,UAK1BjB,EAAIO,qBAAqB,CACvBC,KAAM,SACNC,YAAa,SACbC,MAAO,OACPC,aAAe1E,GACNA,GAAYwB,EAAiBmD,SAAS3E,EAASD,IAExD6E,WAAYA,CAAC5E,EAAUqB,IAEd,GADMwD,EAAQC,QAAQ,SAAUzD,gBAGzC0D,YAAaA,CAAC/E,EAAUqB,EAAMF,KAC5B,MAAM6D,EAAc7D,EAAO8D,aAAaD;AACxC,OACEA,GACoC,IAApCE,OAAOC,KAAKH,GAAaI,QACC,QAA1BJ,EAAoB,UAK1BjB,EAAIO,qBAAqB,CACvBC,KAAM,aACNC,YAAa,aACbC,MAAO,SACPC,aAAe1E,GACNA,GAAYwB,EAAiBmD,SAAS3E,EAASD,KAAOgE,EAAIsB,iBAEnET,WAAYA,CAAC5E,EAAUqB,IAEd,GADMwD,EAAQC,QAAQ,SAAUzD,oBAGzC0D,YAAaA,CAAC/E,EAAUqB,EAAMF,KAC5B,MAAM6D,EAAc7D,EAAO8D,aAAaD;AACxC,OACEA,GACoC,IAApCE,OAAOC,KAAKH,GAAaI,QACA,aAAzBJ,EAAmB,SAKzBjB,EAAIuB,yBAAyB,qBAAsB,EAAGC,MAAOC,MACvDtB,MACGjF,EAASwG,sBACZD,EAAQE,OAAO,YAEZzG,EAAS0G,mBACZH,EAAQE,OAAO,SAGjBF,EAAQE,OAAO,cAInB3B,EAAIuB,yBACF,wBACA,EAAGC,QAAOK,cACHA,EAAQxE,MAAMK,IAAI,aACrB8D,EAAMM,KAAK,cAENN,IAIXxB,EAAIuB,yBAAyB,gCAAiC,EAAGC,YAE3DtG,EAAS6G,kBAAoB7G,EAAS6C,uBACtCoC,KACFqB;;ACzGN,IAAAQ,EAAe,CACbxB,KAAM,6BAENyB,UAAAA;8BACEC,CAAc,SAAWlC,IAEvB,IAAK9E,EAASiH,qBAAsB;AAEpC,MAAMhF,EAAc6C,EAAIsB,iBAGlBnB,EAAoBlE,IACxB,IAAKA,EAAU,OAAO;AAItB,OAHyBf,EAASkB,kBAC/BC,MAAM,KACNC,IAAIC,QACiBC,KAAM4F,GAAUA,IAAUnG,EAASD;AAG7D8E,EAAQR,gBAGRN,EAAIO,qBAAqB,CACvBC,KAAM,UACNC,YAAa,UACb4B,OAAQ,SACR1B,aAAe1E,GACNkE,EAAiBlE,GAE1B4E,WAAYA,CAAC5E,EAAUqB,IAEd,GADMwD,EAAQC,QAAQ,SAAUzD,gBAGzC0D,YAAaA,CAAC/E,EAAUqB,EAAMF,KAC5B,MAAM6D,EAAc7D,EAAO8D,aAAaD;AACxC,OACEA,GAC0B,QAA1BA,EAAoB,UAM1BjB,EAAIO,qBAAqB,CACvBC,KAAM,YACNC,YAAa,MACb4B,OAAQ,SACR1B,aAAe1E,GACNkE,EAAiBlE,GAE1B4E,WAAYA,CAAC5E,EAAUqB,IAEd,GADMwD,EAAQC,QAAQ,SAAUzD,iBAGzC0D,YAAaA,CAAC/E,EAAUqB,EAAMF,KAC5B,MAAM6D,EAAc7D,EAAO8D,aAAaD;AACxC,OACEA,GACoC,IAApCE,OAAOC,KAAKH,GAAaI,QACA,UAAzBJ,EAAmB,SAMzBjB,EAAIO,qBAAqB,CACvBC,KAAM,SACNC,YAAa,SACb4B,OAAQ,SACR1B,aAAe1E,GACNkE,EAAiBlE,GAE1B4E,WAAYA,CAAC5E,EAAUqB,IAEd,GADMwD,EAAQC,QAAQ,SAAUzD,gBAGzC0D,YAAaA,CAAC/E,EAAUqB,EAAMF,KAC5B,MAAM6D,EAAc7D,EAAO8D,aAAaD;AACxC,OACEA,GAC0B,QAA1BA,EAAoB,UAM1BjB,EAAIO,qBAAqB,CACvBC,KAAM,gBACNC,YAAa,SACb4B,OAAQ,MACR1B,aAAe1E,GACNkE,EAAiBlE,GAE1B4E,WAAYA,CAAC5E,EAAUqB,IACdwD,EAAQC,QAAQ,SAAUzD,GAEnC0D,YAAaA,CAAC/E,EAAUqB,EAAMF,KAC5B,MAAM6D,EAAc7D,EAAO8D,aAAaD;AACxC,OAAQA,GAAmD,IAApCE,OAAOC,KAAKH,GAAaI,UAKpDrB,EAAIO,qBAAqB,CACvBC,KAAM,aACNC,YAAa,aACb4B,OAAQ,SACR1B,aAAe1E,GACNkE,EAAiBlE,IAAakB,EAEvC0D,WAAYA,CAAC5E,EAAUqB,IAEd,GADMwD,EAAQC,QAAQ,SAAUzD,oBAGzC0D,YAAaA,CAAC/E,EAAUqB,EAAMF,KAC5B,MAAM6D,EAAc7D,EAAO8D,aAAaD;AACxC,OACEA,GACoC,IAApCE,OAAOC,KAAKH,GAAaI,QACA,aAAzBJ,EAAmB,UAK7B;ACvHG,MAACqB,EAAgB,CACpB,gEAAiEC,EACjE,sEAAuEC,EACvE,+DAAgEC,EAChE,0DAA2DC,EAC3D,uEAAwEC,EACxE,oEAAqEC,EACrE,iEAAkEC,EAClE,iDAAkDC,EAClD;"}