{"version":3,"file":"index.cjs","sources":["../src/styles/commonStyles.ts?inline","../src/mixins/ChatbotMixin.ts","../../../node_modules/.pnpm/i18next@25.8.13_typescript@5.8.3/node_modules/i18next/dist/esm/i18next.js","../src/commands/index.ts","../../../node_modules/.pnpm/marked@13.0.3/node_modules/marked/lib/marked.esm.js","../../../node_modules/.pnpm/i18next-browser-languagedetector@8.2.1/node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","../src/i18n/i18n.ts","../src/chat-ui/LinkPreviewCard.ts","../src/chat-ui/DefaultTextMessage.ts","../src/chat-ui/QuickReplyMessage.ts","../src/chat-ui/ImageMessage.ts","../src/chat-ui/CardMessage.ts","../src/chat-ui/ButtonsMessage.ts","../src/chat-ui/FileMessage.ts","../src/chat-ui/VideoMessage.ts","../src/chat-ui/CarouselMessage.ts","../src/chat-ui/EmojiPicker.ts","../src/chat-ui/ChatInput.ts","../src/chat-ui/ToolCallCard.ts","../src/chat-ui/ToolCallActivity.ts","../src/chat-ui/ChatMessageList.ts","../src/chat-ui/ChatHeader.ts","../src/chat-ui/ConversationList.ts","../src/chat-ui/EndOfConversationSurvey.ts","../src/chat-ui/ChatWidget.ts","../src/chat-ui/AgentPanel.ts","../src/chat-ui/ChatBotButton.ts","../src/render.ts","../../genui/dist/index.js","../src/index.ts"],"sourcesContent":["// chatbot-sizes.ts\nimport { css } from 'lit';\n\nexport default css`\n.grid {\n  display: flex;\n  flex-wrap: wrap;\n  margin-right: -0.5rem;\n  margin-left: -0.5rem;\n  margin-top: -0.5rem;\n}\n\n.grid > .col,\n.grid > [class*=col] {\n  box-sizing: border-box;\n}\n\n.grid-nogutter {\n  margin-right: 0;\n  margin-left: 0;\n  margin-top: 0;\n}\n\n.grid-nogutter > .col,\n.grid-nogutter > [class*=col-] {\n  padding: 0;\n}\n\n.col {\n  flex-grow: 1;\n  flex-basis: 0;\n  padding: 0.5rem;\n}\n\n.col-fixed {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 8.3333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 16.6667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 33.3333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 41.6667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 58.3333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 66.6667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 83.3333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 91.6667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  padding: 0.5rem;\n  width: 100%;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:col {\n    flex-grow: 1;\n    flex-basis: 0;\n    padding: 0.5rem;\n  }\n  .sm\\:col-fixed {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n  }\n  .sm\\:col-1 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 8.3333%;\n  }\n  .sm\\:col-2 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 16.6667%;\n  }\n  .sm\\:col-3 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 25%;\n  }\n  .sm\\:col-4 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 33.3333%;\n  }\n  .sm\\:col-5 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 41.6667%;\n  }\n  .sm\\:col-6 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 50%;\n  }\n  .sm\\:col-7 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 58.3333%;\n  }\n  .sm\\:col-8 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 66.6667%;\n  }\n  .sm\\:col-9 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 75%;\n  }\n  .sm\\:col-10 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 83.3333%;\n  }\n  .sm\\:col-11 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 91.6667%;\n  }\n  .sm\\:col-12 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 100%;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:col {\n    flex-grow: 1;\n    flex-basis: 0;\n    padding: 0.5rem;\n  }\n  .md\\:col-fixed {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n  }\n  .md\\:col-1 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 8.3333%;\n  }\n  .md\\:col-2 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 16.6667%;\n  }\n  .md\\:col-3 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 25%;\n  }\n  .md\\:col-4 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 33.3333%;\n  }\n  .md\\:col-5 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 41.6667%;\n  }\n  .md\\:col-6 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 50%;\n  }\n  .md\\:col-7 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 58.3333%;\n  }\n  .md\\:col-8 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 66.6667%;\n  }\n  .md\\:col-9 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 75%;\n  }\n  .md\\:col-10 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 83.3333%;\n  }\n  .md\\:col-11 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 91.6667%;\n  }\n  .md\\:col-12 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 100%;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:col {\n    flex-grow: 1;\n    flex-basis: 0;\n    padding: 0.5rem;\n  }\n  .lg\\:col-fixed {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n  }\n  .lg\\:col-1 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 8.3333%;\n  }\n  .lg\\:col-2 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 16.6667%;\n  }\n  .lg\\:col-3 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 25%;\n  }\n  .lg\\:col-4 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 33.3333%;\n  }\n  .lg\\:col-5 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 41.6667%;\n  }\n  .lg\\:col-6 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 50%;\n  }\n  .lg\\:col-7 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 58.3333%;\n  }\n  .lg\\:col-8 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 66.6667%;\n  }\n  .lg\\:col-9 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 75%;\n  }\n  .lg\\:col-10 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 83.3333%;\n  }\n  .lg\\:col-11 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 91.6667%;\n  }\n  .lg\\:col-12 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 100%;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:col {\n    flex-grow: 1;\n    flex-basis: 0;\n    padding: 0.5rem;\n  }\n  .xl\\:col-fixed {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n  }\n  .xl\\:col-1 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 8.3333%;\n  }\n  .xl\\:col-2 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 16.6667%;\n  }\n  .xl\\:col-3 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 25%;\n  }\n  .xl\\:col-4 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 33.3333%;\n  }\n  .xl\\:col-5 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 41.6667%;\n  }\n  .xl\\:col-6 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 50%;\n  }\n  .xl\\:col-7 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 58.3333%;\n  }\n  .xl\\:col-8 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 66.6667%;\n  }\n  .xl\\:col-9 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 75%;\n  }\n  .xl\\:col-10 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 83.3333%;\n  }\n  .xl\\:col-11 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 91.6667%;\n  }\n  .xl\\:col-12 {\n    flex: 0 0 auto;\n    padding: 0.5rem;\n    width: 100%;\n  }\n}\n.col-offset-0 {\n  margin-left: 0 !important;\n}\n\n.col-offset-1 {\n  margin-left: 8.3333% !important;\n}\n\n.col-offset-2 {\n  margin-left: 16.6667% !important;\n}\n\n.col-offset-3 {\n  margin-left: 25% !important;\n}\n\n.col-offset-4 {\n  margin-left: 33.3333% !important;\n}\n\n.col-offset-5 {\n  margin-left: 41.6667% !important;\n}\n\n.col-offset-6 {\n  margin-left: 50% !important;\n}\n\n.col-offset-7 {\n  margin-left: 58.3333% !important;\n}\n\n.col-offset-8 {\n  margin-left: 66.6667% !important;\n}\n\n.col-offset-9 {\n  margin-left: 75% !important;\n}\n\n.col-offset-10 {\n  margin-left: 83.3333% !important;\n}\n\n.col-offset-11 {\n  margin-left: 91.6667% !important;\n}\n\n.col-offset-12 {\n  margin-left: 100% !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:col-offset-0 {\n    margin-left: 0 !important;\n  }\n  .sm\\:col-offset-1 {\n    margin-left: 8.3333% !important;\n  }\n  .sm\\:col-offset-2 {\n    margin-left: 16.6667% !important;\n  }\n  .sm\\:col-offset-3 {\n    margin-left: 25% !important;\n  }\n  .sm\\:col-offset-4 {\n    margin-left: 33.3333% !important;\n  }\n  .sm\\:col-offset-5 {\n    margin-left: 41.6667% !important;\n  }\n  .sm\\:col-offset-6 {\n    margin-left: 50% !important;\n  }\n  .sm\\:col-offset-7 {\n    margin-left: 58.3333% !important;\n  }\n  .sm\\:col-offset-8 {\n    margin-left: 66.6667% !important;\n  }\n  .sm\\:col-offset-9 {\n    margin-left: 75% !important;\n  }\n  .sm\\:col-offset-10 {\n    margin-left: 83.3333% !important;\n  }\n  .sm\\:col-offset-11 {\n    margin-left: 91.6667% !important;\n  }\n  .sm\\:col-offset-12 {\n    margin-left: 100% !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:col-offset-0 {\n    margin-left: 0 !important;\n  }\n  .md\\:col-offset-1 {\n    margin-left: 8.3333% !important;\n  }\n  .md\\:col-offset-2 {\n    margin-left: 16.6667% !important;\n  }\n  .md\\:col-offset-3 {\n    margin-left: 25% !important;\n  }\n  .md\\:col-offset-4 {\n    margin-left: 33.3333% !important;\n  }\n  .md\\:col-offset-5 {\n    margin-left: 41.6667% !important;\n  }\n  .md\\:col-offset-6 {\n    margin-left: 50% !important;\n  }\n  .md\\:col-offset-7 {\n    margin-left: 58.3333% !important;\n  }\n  .md\\:col-offset-8 {\n    margin-left: 66.6667% !important;\n  }\n  .md\\:col-offset-9 {\n    margin-left: 75% !important;\n  }\n  .md\\:col-offset-10 {\n    margin-left: 83.3333% !important;\n  }\n  .md\\:col-offset-11 {\n    margin-left: 91.6667% !important;\n  }\n  .md\\:col-offset-12 {\n    margin-left: 100% !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:col-offset-0 {\n    margin-left: 0 !important;\n  }\n  .lg\\:col-offset-1 {\n    margin-left: 8.3333% !important;\n  }\n  .lg\\:col-offset-2 {\n    margin-left: 16.6667% !important;\n  }\n  .lg\\:col-offset-3 {\n    margin-left: 25% !important;\n  }\n  .lg\\:col-offset-4 {\n    margin-left: 33.3333% !important;\n  }\n  .lg\\:col-offset-5 {\n    margin-left: 41.6667% !important;\n  }\n  .lg\\:col-offset-6 {\n    margin-left: 50% !important;\n  }\n  .lg\\:col-offset-7 {\n    margin-left: 58.3333% !important;\n  }\n  .lg\\:col-offset-8 {\n    margin-left: 66.6667% !important;\n  }\n  .lg\\:col-offset-9 {\n    margin-left: 75% !important;\n  }\n  .lg\\:col-offset-10 {\n    margin-left: 83.3333% !important;\n  }\n  .lg\\:col-offset-11 {\n    margin-left: 91.6667% !important;\n  }\n  .lg\\:col-offset-12 {\n    margin-left: 100% !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:col-offset-0 {\n    margin-left: 0 !important;\n  }\n  .xl\\:col-offset-1 {\n    margin-left: 8.3333% !important;\n  }\n  .xl\\:col-offset-2 {\n    margin-left: 16.6667% !important;\n  }\n  .xl\\:col-offset-3 {\n    margin-left: 25% !important;\n  }\n  .xl\\:col-offset-4 {\n    margin-left: 33.3333% !important;\n  }\n  .xl\\:col-offset-5 {\n    margin-left: 41.6667% !important;\n  }\n  .xl\\:col-offset-6 {\n    margin-left: 50% !important;\n  }\n  .xl\\:col-offset-7 {\n    margin-left: 58.3333% !important;\n  }\n  .xl\\:col-offset-8 {\n    margin-left: 66.6667% !important;\n  }\n  .xl\\:col-offset-9 {\n    margin-left: 75% !important;\n  }\n  .xl\\:col-offset-10 {\n    margin-left: 83.3333% !important;\n  }\n  .xl\\:col-offset-11 {\n    margin-left: 91.6667% !important;\n  }\n  .xl\\:col-offset-12 {\n    margin-left: 100% !important;\n  }\n}\n.text-0 {\n  color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.text-50 {\n  color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.text-100 {\n  color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.text-200 {\n  color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.text-300 {\n  color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.text-400 {\n  color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.text-500 {\n  color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.text-600 {\n  color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.text-700 {\n  color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.text-800 {\n  color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.text-900 {\n  color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.focus\\:text-0:focus {\n  color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.hover\\:text-0:hover {\n  color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.active\\:text-0:active {\n  color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.focus\\:text-50:focus {\n  color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.hover\\:text-50:hover {\n  color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.active\\:text-50:active {\n  color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.focus\\:text-100:focus {\n  color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.hover\\:text-100:hover {\n  color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.active\\:text-100:active {\n  color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.focus\\:text-200:focus {\n  color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.hover\\:text-200:hover {\n  color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.active\\:text-200:active {\n  color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.focus\\:text-300:focus {\n  color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.hover\\:text-300:hover {\n  color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.active\\:text-300:active {\n  color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.focus\\:text-400:focus {\n  color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.hover\\:text-400:hover {\n  color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.active\\:text-400:active {\n  color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.focus\\:text-500:focus {\n  color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.hover\\:text-500:hover {\n  color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.active\\:text-500:active {\n  color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.focus\\:text-600:focus {\n  color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.hover\\:text-600:hover {\n  color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.active\\:text-600:active {\n  color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.focus\\:text-700:focus {\n  color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.hover\\:text-700:hover {\n  color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.active\\:text-700:active {\n  color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.focus\\:text-800:focus {\n  color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.hover\\:text-800:hover {\n  color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.active\\:text-800:active {\n  color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.focus\\:text-900:focus {\n  color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.hover\\:text-900:hover {\n  color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.active\\:text-900:active {\n  color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.surface-0 {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.surface-50 {\n  background-color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.surface-100 {\n  background-color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.surface-200 {\n  background-color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.surface-300 {\n  background-color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.surface-400 {\n  background-color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.surface-500 {\n  background-color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.surface-600 {\n  background-color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.surface-700 {\n  background-color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.surface-800 {\n  background-color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.surface-900 {\n  background-color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.focus\\:surface-0:focus {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.hover\\:surface-0:hover {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.active\\:surface-0:active {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.focus\\:surface-50:focus {\n  background-color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.hover\\:surface-50:hover {\n  background-color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.active\\:surface-50:active {\n  background-color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.focus\\:surface-100:focus {\n  background-color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.hover\\:surface-100:hover {\n  background-color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.active\\:surface-100:active {\n  background-color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.focus\\:surface-200:focus {\n  background-color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.hover\\:surface-200:hover {\n  background-color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.active\\:surface-200:active {\n  background-color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.focus\\:surface-300:focus {\n  background-color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.hover\\:surface-300:hover {\n  background-color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.active\\:surface-300:active {\n  background-color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.focus\\:surface-400:focus {\n  background-color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.hover\\:surface-400:hover {\n  background-color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.active\\:surface-400:active {\n  background-color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.focus\\:surface-500:focus {\n  background-color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.hover\\:surface-500:hover {\n  background-color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.active\\:surface-500:active {\n  background-color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.focus\\:surface-600:focus {\n  background-color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.hover\\:surface-600:hover {\n  background-color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.active\\:surface-600:active {\n  background-color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.focus\\:surface-700:focus {\n  background-color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.hover\\:surface-700:hover {\n  background-color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.active\\:surface-700:active {\n  background-color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.focus\\:surface-800:focus {\n  background-color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.hover\\:surface-800:hover {\n  background-color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.active\\:surface-800:active {\n  background-color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.focus\\:surface-900:focus {\n  background-color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.hover\\:surface-900:hover {\n  background-color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.active\\:surface-900:active {\n  background-color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.border-0 {\n  border-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.border-50 {\n  border-color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.border-100 {\n  border-color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.border-200 {\n  border-color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.border-300 {\n  border-color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.border-400 {\n  border-color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.border-500 {\n  border-color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.border-600 {\n  border-color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.border-700 {\n  border-color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.border-800 {\n  border-color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.border-900 {\n  border-color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.focus\\:border-0:focus {\n  border-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.hover\\:border-0:hover {\n  border-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.active\\:border-0:active {\n  border-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.focus\\:border-50:focus {\n  border-color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.hover\\:border-50:hover {\n  border-color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.active\\:border-50:active {\n  border-color: light-dark(var(--p-surface-50), var(--p-surface-800)) !important;\n}\n\n.focus\\:border-100:focus {\n  border-color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.hover\\:border-100:hover {\n  border-color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.active\\:border-100:active {\n  border-color: light-dark(var(--p-surface-100), var(--p-surface-700)) !important;\n}\n\n.focus\\:border-200:focus {\n  border-color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.hover\\:border-200:hover {\n  border-color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.active\\:border-200:active {\n  border-color: light-dark(var(--p-surface-200), var(--p-surface-600)) !important;\n}\n\n.focus\\:border-300:focus {\n  border-color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.hover\\:border-300:hover {\n  border-color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.active\\:border-300:active {\n  border-color: light-dark(var(--p-surface-300), var(--p-surface-500)) !important;\n}\n\n.focus\\:border-400:focus {\n  border-color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.hover\\:border-400:hover {\n  border-color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.active\\:border-400:active {\n  border-color: light-dark(var(--p-surface-400), var(--p-surface-400)) !important;\n}\n\n.focus\\:border-500:focus {\n  border-color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.hover\\:border-500:hover {\n  border-color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.active\\:border-500:active {\n  border-color: light-dark(var(--p-surface-500), var(--p-surface-300)) !important;\n}\n\n.focus\\:border-600:focus {\n  border-color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.hover\\:border-600:hover {\n  border-color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.active\\:border-600:active {\n  border-color: light-dark(var(--p-surface-600), var(--p-surface-200)) !important;\n}\n\n.focus\\:border-700:focus {\n  border-color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.hover\\:border-700:hover {\n  border-color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.active\\:border-700:active {\n  border-color: light-dark(var(--p-surface-700), var(--p-surface-100)) !important;\n}\n\n.focus\\:border-800:focus {\n  border-color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.hover\\:border-800:hover {\n  border-color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.active\\:border-800:active {\n  border-color: light-dark(var(--p-surface-800), var(--p-surface-50)) !important;\n}\n\n.focus\\:border-900:focus {\n  border-color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.hover\\:border-900:hover {\n  border-color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.active\\:border-900:active {\n  border-color: light-dark(var(--p-surface-900), var(--p-surface-0)) !important;\n}\n\n.bg-transparent {\n  background-color: transparent !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:bg-transparent {\n    background-color: transparent !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:bg-transparent {\n    background-color: transparent !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:bg-transparent {\n    background-color: transparent !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:bg-transparent {\n    background-color: transparent !important;\n  }\n}\n.border-transparent {\n  border-color: transparent !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:border-transparent {\n    border-color: transparent !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:border-transparent {\n    border-color: transparent !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:border-transparent {\n    border-color: transparent !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:border-transparent {\n    border-color: transparent !important;\n  }\n}\n.text-blue-50 {\n  color: var(--p-blue-50) !important;\n}\n.text-blue-100 {\n  color: var(--p-blue-100) !important;\n}\n.text-blue-200 {\n  color: var(--p-blue-200) !important;\n}\n.text-blue-300 {\n  color: var(--p-blue-300) !important;\n}\n.text-blue-400 {\n  color: var(--p-blue-400) !important;\n}\n.text-blue-500 {\n  color: var(--p-blue-500) !important;\n}\n.text-blue-600 {\n  color: var(--p-blue-600) !important;\n}\n.text-blue-700 {\n  color: var(--p-blue-700) !important;\n}\n.text-blue-800 {\n  color: var(--p-blue-800) !important;\n}\n.text-blue-900 {\n  color: var(--p-blue-900) !important;\n}\n\n.focus\\:text-blue-50:focus {\n  color: var(--p-blue-50) !important;\n}\n.focus\\:text-blue-100:focus {\n  color: var(--p-blue-100) !important;\n}\n.focus\\:text-blue-200:focus {\n  color: var(--p-blue-200) !important;\n}\n.focus\\:text-blue-300:focus {\n  color: var(--p-blue-300) !important;\n}\n.focus\\:text-blue-400:focus {\n  color: var(--p-blue-400) !important;\n}\n.focus\\:text-blue-500:focus {\n  color: var(--p-blue-500) !important;\n}\n.focus\\:text-blue-600:focus {\n  color: var(--p-blue-600) !important;\n}\n.focus\\:text-blue-700:focus {\n  color: var(--p-blue-700) !important;\n}\n.focus\\:text-blue-800:focus {\n  color: var(--p-blue-800) !important;\n}\n.focus\\:text-blue-900:focus {\n  color: var(--p-blue-900) !important;\n}\n\n.hover\\:text-blue-50:hover {\n  color: var(--p-blue-50) !important;\n}\n.hover\\:text-blue-100:hover {\n  color: var(--p-blue-100) !important;\n}\n.hover\\:text-blue-200:hover {\n  color: var(--p-blue-200) !important;\n}\n.hover\\:text-blue-300:hover {\n  color: var(--p-blue-300) !important;\n}\n.hover\\:text-blue-400:hover {\n  color: var(--p-blue-400) !important;\n}\n.hover\\:text-blue-500:hover {\n  color: var(--p-blue-500) !important;\n}\n.hover\\:text-blue-600:hover {\n  color: var(--p-blue-600) !important;\n}\n.hover\\:text-blue-700:hover {\n  color: var(--p-blue-700) !important;\n}\n.hover\\:text-blue-800:hover {\n  color: var(--p-blue-800) !important;\n}\n.hover\\:text-blue-900:hover {\n  color: var(--p-blue-900) !important;\n}\n\n.active\\:text-blue-50:active {\n  color: var(--p-blue-50) !important;\n}\n.active\\:text-blue-100:active {\n  color: var(--p-blue-100) !important;\n}\n.active\\:text-blue-200:active {\n  color: var(--p-blue-200) !important;\n}\n.active\\:text-blue-300:active {\n  color: var(--p-blue-300) !important;\n}\n.active\\:text-blue-400:active {\n  color: var(--p-blue-400) !important;\n}\n.active\\:text-blue-500:active {\n  color: var(--p-blue-500) !important;\n}\n.active\\:text-blue-600:active {\n  color: var(--p-blue-600) !important;\n}\n.active\\:text-blue-700:active {\n  color: var(--p-blue-700) !important;\n}\n.active\\:text-blue-800:active {\n  color: var(--p-blue-800) !important;\n}\n.active\\:text-blue-900:active {\n  color: var(--p-blue-900) !important;\n}\n\n.text-green-50 {\n  color: var(--p-green-50) !important;\n}\n.text-green-100 {\n  color: var(--p-green-100) !important;\n}\n.text-green-200 {\n  color: var(--p-green-200) !important;\n}\n.text-green-300 {\n  color: var(--p-green-300) !important;\n}\n.text-green-400 {\n  color: var(--p-green-400) !important;\n}\n.text-green-500 {\n  color: var(--p-green-500) !important;\n}\n.text-green-600 {\n  color: var(--p-green-600) !important;\n}\n.text-green-700 {\n  color: var(--p-green-700) !important;\n}\n.text-green-800 {\n  color: var(--p-green-800) !important;\n}\n.text-green-900 {\n  color: var(--p-green-900) !important;\n}\n\n.focus\\:text-green-50:focus {\n  color: var(--p-green-50) !important;\n}\n.focus\\:text-green-100:focus {\n  color: var(--p-green-100) !important;\n}\n.focus\\:text-green-200:focus {\n  color: var(--p-green-200) !important;\n}\n.focus\\:text-green-300:focus {\n  color: var(--p-green-300) !important;\n}\n.focus\\:text-green-400:focus {\n  color: var(--p-green-400) !important;\n}\n.focus\\:text-green-500:focus {\n  color: var(--p-green-500) !important;\n}\n.focus\\:text-green-600:focus {\n  color: var(--p-green-600) !important;\n}\n.focus\\:text-green-700:focus {\n  color: var(--p-green-700) !important;\n}\n.focus\\:text-green-800:focus {\n  color: var(--p-green-800) !important;\n}\n.focus\\:text-green-900:focus {\n  color: var(--p-green-900) !important;\n}\n\n.hover\\:text-green-50:hover {\n  color: var(--p-green-50) !important;\n}\n.hover\\:text-green-100:hover {\n  color: var(--p-green-100) !important;\n}\n.hover\\:text-green-200:hover {\n  color: var(--p-green-200) !important;\n}\n.hover\\:text-green-300:hover {\n  color: var(--p-green-300) !important;\n}\n.hover\\:text-green-400:hover {\n  color: var(--p-green-400) !important;\n}\n.hover\\:text-green-500:hover {\n  color: var(--p-green-500) !important;\n}\n.hover\\:text-green-600:hover {\n  color: var(--p-green-600) !important;\n}\n.hover\\:text-green-700:hover {\n  color: var(--p-green-700) !important;\n}\n.hover\\:text-green-800:hover {\n  color: var(--p-green-800) !important;\n}\n.hover\\:text-green-900:hover {\n  color: var(--p-green-900) !important;\n}\n\n.active\\:text-green-50:active {\n  color: var(--p-green-50) !important;\n}\n.active\\:text-green-100:active {\n  color: var(--p-green-100) !important;\n}\n.active\\:text-green-200:active {\n  color: var(--p-green-200) !important;\n}\n.active\\:text-green-300:active {\n  color: var(--p-green-300) !important;\n}\n.active\\:text-green-400:active {\n  color: var(--p-green-400) !important;\n}\n.active\\:text-green-500:active {\n  color: var(--p-green-500) !important;\n}\n.active\\:text-green-600:active {\n  color: var(--p-green-600) !important;\n}\n.active\\:text-green-700:active {\n  color: var(--p-green-700) !important;\n}\n.active\\:text-green-800:active {\n  color: var(--p-green-800) !important;\n}\n.active\\:text-green-900:active {\n  color: var(--p-green-900) !important;\n}\n\n.text-yellow-50 {\n  color: var(--p-yellow-50) !important;\n}\n.text-yellow-100 {\n  color: var(--p-yellow-100) !important;\n}\n.text-yellow-200 {\n  color: var(--p-yellow-200) !important;\n}\n.text-yellow-300 {\n  color: var(--p-yellow-300) !important;\n}\n.text-yellow-400 {\n  color: var(--p-yellow-400) !important;\n}\n.text-yellow-500 {\n  color: var(--p-yellow-500) !important;\n}\n.text-yellow-600 {\n  color: var(--p-yellow-600) !important;\n}\n.text-yellow-700 {\n  color: var(--p-yellow-700) !important;\n}\n.text-yellow-800 {\n  color: var(--p-yellow-800) !important;\n}\n.text-yellow-900 {\n  color: var(--p-yellow-900) !important;\n}\n\n.focus\\:text-yellow-50:focus {\n  color: var(--p-yellow-50) !important;\n}\n.focus\\:text-yellow-100:focus {\n  color: var(--p-yellow-100) !important;\n}\n.focus\\:text-yellow-200:focus {\n  color: var(--p-yellow-200) !important;\n}\n.focus\\:text-yellow-300:focus {\n  color: var(--p-yellow-300) !important;\n}\n.focus\\:text-yellow-400:focus {\n  color: var(--p-yellow-400) !important;\n}\n.focus\\:text-yellow-500:focus {\n  color: var(--p-yellow-500) !important;\n}\n.focus\\:text-yellow-600:focus {\n  color: var(--p-yellow-600) !important;\n}\n.focus\\:text-yellow-700:focus {\n  color: var(--p-yellow-700) !important;\n}\n.focus\\:text-yellow-800:focus {\n  color: var(--p-yellow-800) !important;\n}\n.focus\\:text-yellow-900:focus {\n  color: var(--p-yellow-900) !important;\n}\n\n.hover\\:text-yellow-50:hover {\n  color: var(--p-yellow-50) !important;\n}\n.hover\\:text-yellow-100:hover {\n  color: var(--p-yellow-100) !important;\n}\n.hover\\:text-yellow-200:hover {\n  color: var(--p-yellow-200) !important;\n}\n.hover\\:text-yellow-300:hover {\n  color: var(--p-yellow-300) !important;\n}\n.hover\\:text-yellow-400:hover {\n  color: var(--p-yellow-400) !important;\n}\n.hover\\:text-yellow-500:hover {\n  color: var(--p-yellow-500) !important;\n}\n.hover\\:text-yellow-600:hover {\n  color: var(--p-yellow-600) !important;\n}\n.hover\\:text-yellow-700:hover {\n  color: var(--p-yellow-700) !important;\n}\n.hover\\:text-yellow-800:hover {\n  color: var(--p-yellow-800) !important;\n}\n.hover\\:text-yellow-900:hover {\n  color: var(--p-yellow-900) !important;\n}\n\n.active\\:text-yellow-50:active {\n  color: var(--p-yellow-50) !important;\n}\n.active\\:text-yellow-100:active {\n  color: var(--p-yellow-100) !important;\n}\n.active\\:text-yellow-200:active {\n  color: var(--p-yellow-200) !important;\n}\n.active\\:text-yellow-300:active {\n  color: var(--p-yellow-300) !important;\n}\n.active\\:text-yellow-400:active {\n  color: var(--p-yellow-400) !important;\n}\n.active\\:text-yellow-500:active {\n  color: var(--p-yellow-500) !important;\n}\n.active\\:text-yellow-600:active {\n  color: var(--p-yellow-600) !important;\n}\n.active\\:text-yellow-700:active {\n  color: var(--p-yellow-700) !important;\n}\n.active\\:text-yellow-800:active {\n  color: var(--p-yellow-800) !important;\n}\n.active\\:text-yellow-900:active {\n  color: var(--p-yellow-900) !important;\n}\n\n.text-cyan-50 {\n  color: var(--p-cyan-50) !important;\n}\n.text-cyan-100 {\n  color: var(--p-cyan-100) !important;\n}\n.text-cyan-200 {\n  color: var(--p-cyan-200) !important;\n}\n.text-cyan-300 {\n  color: var(--p-cyan-300) !important;\n}\n.text-cyan-400 {\n  color: var(--p-cyan-400) !important;\n}\n.text-cyan-500 {\n  color: var(--p-cyan-500) !important;\n}\n.text-cyan-600 {\n  color: var(--p-cyan-600) !important;\n}\n.text-cyan-700 {\n  color: var(--p-cyan-700) !important;\n}\n.text-cyan-800 {\n  color: var(--p-cyan-800) !important;\n}\n.text-cyan-900 {\n  color: var(--p-cyan-900) !important;\n}\n\n.focus\\:text-cyan-50:focus {\n  color: var(--p-cyan-50) !important;\n}\n.focus\\:text-cyan-100:focus {\n  color: var(--p-cyan-100) !important;\n}\n.focus\\:text-cyan-200:focus {\n  color: var(--p-cyan-200) !important;\n}\n.focus\\:text-cyan-300:focus {\n  color: var(--p-cyan-300) !important;\n}\n.focus\\:text-cyan-400:focus {\n  color: var(--p-cyan-400) !important;\n}\n.focus\\:text-cyan-500:focus {\n  color: var(--p-cyan-500) !important;\n}\n.focus\\:text-cyan-600:focus {\n  color: var(--p-cyan-600) !important;\n}\n.focus\\:text-cyan-700:focus {\n  color: var(--p-cyan-700) !important;\n}\n.focus\\:text-cyan-800:focus {\n  color: var(--p-cyan-800) !important;\n}\n.focus\\:text-cyan-900:focus {\n  color: var(--p-cyan-900) !important;\n}\n\n.hover\\:text-cyan-50:hover {\n  color: var(--p-cyan-50) !important;\n}\n.hover\\:text-cyan-100:hover {\n  color: var(--p-cyan-100) !important;\n}\n.hover\\:text-cyan-200:hover {\n  color: var(--p-cyan-200) !important;\n}\n.hover\\:text-cyan-300:hover {\n  color: var(--p-cyan-300) !important;\n}\n.hover\\:text-cyan-400:hover {\n  color: var(--p-cyan-400) !important;\n}\n.hover\\:text-cyan-500:hover {\n  color: var(--p-cyan-500) !important;\n}\n.hover\\:text-cyan-600:hover {\n  color: var(--p-cyan-600) !important;\n}\n.hover\\:text-cyan-700:hover {\n  color: var(--p-cyan-700) !important;\n}\n.hover\\:text-cyan-800:hover {\n  color: var(--p-cyan-800) !important;\n}\n.hover\\:text-cyan-900:hover {\n  color: var(--p-cyan-900) !important;\n}\n\n.active\\:text-cyan-50:active {\n  color: var(--p-cyan-50) !important;\n}\n.active\\:text-cyan-100:active {\n  color: var(--p-cyan-100) !important;\n}\n.active\\:text-cyan-200:active {\n  color: var(--p-cyan-200) !important;\n}\n.active\\:text-cyan-300:active {\n  color: var(--p-cyan-300) !important;\n}\n.active\\:text-cyan-400:active {\n  color: var(--p-cyan-400) !important;\n}\n.active\\:text-cyan-500:active {\n  color: var(--p-cyan-500) !important;\n}\n.active\\:text-cyan-600:active {\n  color: var(--p-cyan-600) !important;\n}\n.active\\:text-cyan-700:active {\n  color: var(--p-cyan-700) !important;\n}\n.active\\:text-cyan-800:active {\n  color: var(--p-cyan-800) !important;\n}\n.active\\:text-cyan-900:active {\n  color: var(--p-cyan-900) !important;\n}\n\n.text-pink-50 {\n  color: var(--p-pink-50) !important;\n}\n.text-pink-100 {\n  color: var(--p-pink-100) !important;\n}\n.text-pink-200 {\n  color: var(--p-pink-200) !important;\n}\n.text-pink-300 {\n  color: var(--p-pink-300) !important;\n}\n.text-pink-400 {\n  color: var(--p-pink-400) !important;\n}\n.text-pink-500 {\n  color: var(--p-pink-500) !important;\n}\n.text-pink-600 {\n  color: var(--p-pink-600) !important;\n}\n.text-pink-700 {\n  color: var(--p-pink-700) !important;\n}\n.text-pink-800 {\n  color: var(--p-pink-800) !important;\n}\n.text-pink-900 {\n  color: var(--p-pink-900) !important;\n}\n\n.focus\\:text-pink-50:focus {\n  color: var(--p-pink-50) !important;\n}\n.focus\\:text-pink-100:focus {\n  color: var(--p-pink-100) !important;\n}\n.focus\\:text-pink-200:focus {\n  color: var(--p-pink-200) !important;\n}\n.focus\\:text-pink-300:focus {\n  color: var(--p-pink-300) !important;\n}\n.focus\\:text-pink-400:focus {\n  color: var(--p-pink-400) !important;\n}\n.focus\\:text-pink-500:focus {\n  color: var(--p-pink-500) !important;\n}\n.focus\\:text-pink-600:focus {\n  color: var(--p-pink-600) !important;\n}\n.focus\\:text-pink-700:focus {\n  color: var(--p-pink-700) !important;\n}\n.focus\\:text-pink-800:focus {\n  color: var(--p-pink-800) !important;\n}\n.focus\\:text-pink-900:focus {\n  color: var(--p-pink-900) !important;\n}\n\n.hover\\:text-pink-50:hover {\n  color: var(--p-pink-50) !important;\n}\n.hover\\:text-pink-100:hover {\n  color: var(--p-pink-100) !important;\n}\n.hover\\:text-pink-200:hover {\n  color: var(--p-pink-200) !important;\n}\n.hover\\:text-pink-300:hover {\n  color: var(--p-pink-300) !important;\n}\n.hover\\:text-pink-400:hover {\n  color: var(--p-pink-400) !important;\n}\n.hover\\:text-pink-500:hover {\n  color: var(--p-pink-500) !important;\n}\n.hover\\:text-pink-600:hover {\n  color: var(--p-pink-600) !important;\n}\n.hover\\:text-pink-700:hover {\n  color: var(--p-pink-700) !important;\n}\n.hover\\:text-pink-800:hover {\n  color: var(--p-pink-800) !important;\n}\n.hover\\:text-pink-900:hover {\n  color: var(--p-pink-900) !important;\n}\n\n.active\\:text-pink-50:active {\n  color: var(--p-pink-50) !important;\n}\n.active\\:text-pink-100:active {\n  color: var(--p-pink-100) !important;\n}\n.active\\:text-pink-200:active {\n  color: var(--p-pink-200) !important;\n}\n.active\\:text-pink-300:active {\n  color: var(--p-pink-300) !important;\n}\n.active\\:text-pink-400:active {\n  color: var(--p-pink-400) !important;\n}\n.active\\:text-pink-500:active {\n  color: var(--p-pink-500) !important;\n}\n.active\\:text-pink-600:active {\n  color: var(--p-pink-600) !important;\n}\n.active\\:text-pink-700:active {\n  color: var(--p-pink-700) !important;\n}\n.active\\:text-pink-800:active {\n  color: var(--p-pink-800) !important;\n}\n.active\\:text-pink-900:active {\n  color: var(--p-pink-900) !important;\n}\n\n.text-indigo-50 {\n  color: var(--p-indigo-50) !important;\n}\n.text-indigo-100 {\n  color: var(--p-indigo-100) !important;\n}\n.text-indigo-200 {\n  color: var(--p-indigo-200) !important;\n}\n.text-indigo-300 {\n  color: var(--p-indigo-300) !important;\n}\n.text-indigo-400 {\n  color: var(--p-indigo-400) !important;\n}\n.text-indigo-500 {\n  color: var(--p-indigo-500) !important;\n}\n.text-indigo-600 {\n  color: var(--p-indigo-600) !important;\n}\n.text-indigo-700 {\n  color: var(--p-indigo-700) !important;\n}\n.text-indigo-800 {\n  color: var(--p-indigo-800) !important;\n}\n.text-indigo-900 {\n  color: var(--p-indigo-900) !important;\n}\n\n.focus\\:text-indigo-50:focus {\n  color: var(--p-indigo-50) !important;\n}\n.focus\\:text-indigo-100:focus {\n  color: var(--p-indigo-100) !important;\n}\n.focus\\:text-indigo-200:focus {\n  color: var(--p-indigo-200) !important;\n}\n.focus\\:text-indigo-300:focus {\n  color: var(--p-indigo-300) !important;\n}\n.focus\\:text-indigo-400:focus {\n  color: var(--p-indigo-400) !important;\n}\n.focus\\:text-indigo-500:focus {\n  color: var(--p-indigo-500) !important;\n}\n.focus\\:text-indigo-600:focus {\n  color: var(--p-indigo-600) !important;\n}\n.focus\\:text-indigo-700:focus {\n  color: var(--p-indigo-700) !important;\n}\n.focus\\:text-indigo-800:focus {\n  color: var(--p-indigo-800) !important;\n}\n.focus\\:text-indigo-900:focus {\n  color: var(--p-indigo-900) !important;\n}\n\n.hover\\:text-indigo-50:hover {\n  color: var(--p-indigo-50) !important;\n}\n.hover\\:text-indigo-100:hover {\n  color: var(--p-indigo-100) !important;\n}\n.hover\\:text-indigo-200:hover {\n  color: var(--p-indigo-200) !important;\n}\n.hover\\:text-indigo-300:hover {\n  color: var(--p-indigo-300) !important;\n}\n.hover\\:text-indigo-400:hover {\n  color: var(--p-indigo-400) !important;\n}\n.hover\\:text-indigo-500:hover {\n  color: var(--p-indigo-500) !important;\n}\n.hover\\:text-indigo-600:hover {\n  color: var(--p-indigo-600) !important;\n}\n.hover\\:text-indigo-700:hover {\n  color: var(--p-indigo-700) !important;\n}\n.hover\\:text-indigo-800:hover {\n  color: var(--p-indigo-800) !important;\n}\n.hover\\:text-indigo-900:hover {\n  color: var(--p-indigo-900) !important;\n}\n\n.active\\:text-indigo-50:active {\n  color: var(--p-indigo-50) !important;\n}\n.active\\:text-indigo-100:active {\n  color: var(--p-indigo-100) !important;\n}\n.active\\:text-indigo-200:active {\n  color: var(--p-indigo-200) !important;\n}\n.active\\:text-indigo-300:active {\n  color: var(--p-indigo-300) !important;\n}\n.active\\:text-indigo-400:active {\n  color: var(--p-indigo-400) !important;\n}\n.active\\:text-indigo-500:active {\n  color: var(--p-indigo-500) !important;\n}\n.active\\:text-indigo-600:active {\n  color: var(--p-indigo-600) !important;\n}\n.active\\:text-indigo-700:active {\n  color: var(--p-indigo-700) !important;\n}\n.active\\:text-indigo-800:active {\n  color: var(--p-indigo-800) !important;\n}\n.active\\:text-indigo-900:active {\n  color: var(--p-indigo-900) !important;\n}\n\n.text-teal-50 {\n  color: var(--p-teal-50) !important;\n}\n.text-teal-100 {\n  color: var(--p-teal-100) !important;\n}\n.text-teal-200 {\n  color: var(--p-teal-200) !important;\n}\n.text-teal-300 {\n  color: var(--p-teal-300) !important;\n}\n.text-teal-400 {\n  color: var(--p-teal-400) !important;\n}\n.text-teal-500 {\n  color: var(--p-teal-500) !important;\n}\n.text-teal-600 {\n  color: var(--p-teal-600) !important;\n}\n.text-teal-700 {\n  color: var(--p-teal-700) !important;\n}\n.text-teal-800 {\n  color: var(--p-teal-800) !important;\n}\n.text-teal-900 {\n  color: var(--p-teal-900) !important;\n}\n\n.focus\\:text-teal-50:focus {\n  color: var(--p-teal-50) !important;\n}\n.focus\\:text-teal-100:focus {\n  color: var(--p-teal-100) !important;\n}\n.focus\\:text-teal-200:focus {\n  color: var(--p-teal-200) !important;\n}\n.focus\\:text-teal-300:focus {\n  color: var(--p-teal-300) !important;\n}\n.focus\\:text-teal-400:focus {\n  color: var(--p-teal-400) !important;\n}\n.focus\\:text-teal-500:focus {\n  color: var(--p-teal-500) !important;\n}\n.focus\\:text-teal-600:focus {\n  color: var(--p-teal-600) !important;\n}\n.focus\\:text-teal-700:focus {\n  color: var(--p-teal-700) !important;\n}\n.focus\\:text-teal-800:focus {\n  color: var(--p-teal-800) !important;\n}\n.focus\\:text-teal-900:focus {\n  color: var(--p-teal-900) !important;\n}\n\n.hover\\:text-teal-50:hover {\n  color: var(--p-teal-50) !important;\n}\n.hover\\:text-teal-100:hover {\n  color: var(--p-teal-100) !important;\n}\n.hover\\:text-teal-200:hover {\n  color: var(--p-teal-200) !important;\n}\n.hover\\:text-teal-300:hover {\n  color: var(--p-teal-300) !important;\n}\n.hover\\:text-teal-400:hover {\n  color: var(--p-teal-400) !important;\n}\n.hover\\:text-teal-500:hover {\n  color: var(--p-teal-500) !important;\n}\n.hover\\:text-teal-600:hover {\n  color: var(--p-teal-600) !important;\n}\n.hover\\:text-teal-700:hover {\n  color: var(--p-teal-700) !important;\n}\n.hover\\:text-teal-800:hover {\n  color: var(--p-teal-800) !important;\n}\n.hover\\:text-teal-900:hover {\n  color: var(--p-teal-900) !important;\n}\n\n.active\\:text-teal-50:active {\n  color: var(--p-teal-50) !important;\n}\n.active\\:text-teal-100:active {\n  color: var(--p-teal-100) !important;\n}\n.active\\:text-teal-200:active {\n  color: var(--p-teal-200) !important;\n}\n.active\\:text-teal-300:active {\n  color: var(--p-teal-300) !important;\n}\n.active\\:text-teal-400:active {\n  color: var(--p-teal-400) !important;\n}\n.active\\:text-teal-500:active {\n  color: var(--p-teal-500) !important;\n}\n.active\\:text-teal-600:active {\n  color: var(--p-teal-600) !important;\n}\n.active\\:text-teal-700:active {\n  color: var(--p-teal-700) !important;\n}\n.active\\:text-teal-800:active {\n  color: var(--p-teal-800) !important;\n}\n.active\\:text-teal-900:active {\n  color: var(--p-teal-900) !important;\n}\n\n.text-orange-50 {\n  color: var(--p-orange-50) !important;\n}\n.text-orange-100 {\n  color: var(--p-orange-100) !important;\n}\n.text-orange-200 {\n  color: var(--p-orange-200) !important;\n}\n.text-orange-300 {\n  color: var(--p-orange-300) !important;\n}\n.text-orange-400 {\n  color: var(--p-orange-400) !important;\n}\n.text-orange-500 {\n  color: var(--p-orange-500) !important;\n}\n.text-orange-600 {\n  color: var(--p-orange-600) !important;\n}\n.text-orange-700 {\n  color: var(--p-orange-700) !important;\n}\n.text-orange-800 {\n  color: var(--p-orange-800) !important;\n}\n.text-orange-900 {\n  color: var(--p-orange-900) !important;\n}\n\n.focus\\:text-orange-50:focus {\n  color: var(--p-orange-50) !important;\n}\n.focus\\:text-orange-100:focus {\n  color: var(--p-orange-100) !important;\n}\n.focus\\:text-orange-200:focus {\n  color: var(--p-orange-200) !important;\n}\n.focus\\:text-orange-300:focus {\n  color: var(--p-orange-300) !important;\n}\n.focus\\:text-orange-400:focus {\n  color: var(--p-orange-400) !important;\n}\n.focus\\:text-orange-500:focus {\n  color: var(--p-orange-500) !important;\n}\n.focus\\:text-orange-600:focus {\n  color: var(--p-orange-600) !important;\n}\n.focus\\:text-orange-700:focus {\n  color: var(--p-orange-700) !important;\n}\n.focus\\:text-orange-800:focus {\n  color: var(--p-orange-800) !important;\n}\n.focus\\:text-orange-900:focus {\n  color: var(--p-orange-900) !important;\n}\n\n.hover\\:text-orange-50:hover {\n  color: var(--p-orange-50) !important;\n}\n.hover\\:text-orange-100:hover {\n  color: var(--p-orange-100) !important;\n}\n.hover\\:text-orange-200:hover {\n  color: var(--p-orange-200) !important;\n}\n.hover\\:text-orange-300:hover {\n  color: var(--p-orange-300) !important;\n}\n.hover\\:text-orange-400:hover {\n  color: var(--p-orange-400) !important;\n}\n.hover\\:text-orange-500:hover {\n  color: var(--p-orange-500) !important;\n}\n.hover\\:text-orange-600:hover {\n  color: var(--p-orange-600) !important;\n}\n.hover\\:text-orange-700:hover {\n  color: var(--p-orange-700) !important;\n}\n.hover\\:text-orange-800:hover {\n  color: var(--p-orange-800) !important;\n}\n.hover\\:text-orange-900:hover {\n  color: var(--p-orange-900) !important;\n}\n\n.active\\:text-orange-50:active {\n  color: var(--p-orange-50) !important;\n}\n.active\\:text-orange-100:active {\n  color: var(--p-orange-100) !important;\n}\n.active\\:text-orange-200:active {\n  color: var(--p-orange-200) !important;\n}\n.active\\:text-orange-300:active {\n  color: var(--p-orange-300) !important;\n}\n.active\\:text-orange-400:active {\n  color: var(--p-orange-400) !important;\n}\n.active\\:text-orange-500:active {\n  color: var(--p-orange-500) !important;\n}\n.active\\:text-orange-600:active {\n  color: var(--p-orange-600) !important;\n}\n.active\\:text-orange-700:active {\n  color: var(--p-orange-700) !important;\n}\n.active\\:text-orange-800:active {\n  color: var(--p-orange-800) !important;\n}\n.active\\:text-orange-900:active {\n  color: var(--p-orange-900) !important;\n}\n\n.text-bluegray-50 {\n  color: var(--p-bluegray-50) !important;\n}\n.text-bluegray-100 {\n  color: var(--p-bluegray-100) !important;\n}\n.text-bluegray-200 {\n  color: var(--p-bluegray-200) !important;\n}\n.text-bluegray-300 {\n  color: var(--p-bluegray-300) !important;\n}\n.text-bluegray-400 {\n  color: var(--p-bluegray-400) !important;\n}\n.text-bluegray-500 {\n  color: var(--p-bluegray-500) !important;\n}\n.text-bluegray-600 {\n  color: var(--p-bluegray-600) !important;\n}\n.text-bluegray-700 {\n  color: var(--p-bluegray-700) !important;\n}\n.text-bluegray-800 {\n  color: var(--p-bluegray-800) !important;\n}\n.text-bluegray-900 {\n  color: var(--p-bluegray-900) !important;\n}\n\n.focus\\:text-bluegray-50:focus {\n  color: var(--p-bluegray-50) !important;\n}\n.focus\\:text-bluegray-100:focus {\n  color: var(--p-bluegray-100) !important;\n}\n.focus\\:text-bluegray-200:focus {\n  color: var(--p-bluegray-200) !important;\n}\n.focus\\:text-bluegray-300:focus {\n  color: var(--p-bluegray-300) !important;\n}\n.focus\\:text-bluegray-400:focus {\n  color: var(--p-bluegray-400) !important;\n}\n.focus\\:text-bluegray-500:focus {\n  color: var(--p-bluegray-500) !important;\n}\n.focus\\:text-bluegray-600:focus {\n  color: var(--p-bluegray-600) !important;\n}\n.focus\\:text-bluegray-700:focus {\n  color: var(--p-bluegray-700) !important;\n}\n.focus\\:text-bluegray-800:focus {\n  color: var(--p-bluegray-800) !important;\n}\n.focus\\:text-bluegray-900:focus {\n  color: var(--p-bluegray-900) !important;\n}\n\n.hover\\:text-bluegray-50:hover {\n  color: var(--p-bluegray-50) !important;\n}\n.hover\\:text-bluegray-100:hover {\n  color: var(--p-bluegray-100) !important;\n}\n.hover\\:text-bluegray-200:hover {\n  color: var(--p-bluegray-200) !important;\n}\n.hover\\:text-bluegray-300:hover {\n  color: var(--p-bluegray-300) !important;\n}\n.hover\\:text-bluegray-400:hover {\n  color: var(--p-bluegray-400) !important;\n}\n.hover\\:text-bluegray-500:hover {\n  color: var(--p-bluegray-500) !important;\n}\n.hover\\:text-bluegray-600:hover {\n  color: var(--p-bluegray-600) !important;\n}\n.hover\\:text-bluegray-700:hover {\n  color: var(--p-bluegray-700) !important;\n}\n.hover\\:text-bluegray-800:hover {\n  color: var(--p-bluegray-800) !important;\n}\n.hover\\:text-bluegray-900:hover {\n  color: var(--p-bluegray-900) !important;\n}\n\n.active\\:text-bluegray-50:active {\n  color: var(--p-bluegray-50) !important;\n}\n.active\\:text-bluegray-100:active {\n  color: var(--p-bluegray-100) !important;\n}\n.active\\:text-bluegray-200:active {\n  color: var(--p-bluegray-200) !important;\n}\n.active\\:text-bluegray-300:active {\n  color: var(--p-bluegray-300) !important;\n}\n.active\\:text-bluegray-400:active {\n  color: var(--p-bluegray-400) !important;\n}\n.active\\:text-bluegray-500:active {\n  color: var(--p-bluegray-500) !important;\n}\n.active\\:text-bluegray-600:active {\n  color: var(--p-bluegray-600) !important;\n}\n.active\\:text-bluegray-700:active {\n  color: var(--p-bluegray-700) !important;\n}\n.active\\:text-bluegray-800:active {\n  color: var(--p-bluegray-800) !important;\n}\n.active\\:text-bluegray-900:active {\n  color: var(--p-bluegray-900) !important;\n}\n\n.text-purple-50 {\n  color: var(--p-purple-50) !important;\n}\n.text-purple-100 {\n  color: var(--p-purple-100) !important;\n}\n.text-purple-200 {\n  color: var(--p-purple-200) !important;\n}\n.text-purple-300 {\n  color: var(--p-purple-300) !important;\n}\n.text-purple-400 {\n  color: var(--p-purple-400) !important;\n}\n.text-purple-500 {\n  color: var(--p-purple-500) !important;\n}\n.text-purple-600 {\n  color: var(--p-purple-600) !important;\n}\n.text-purple-700 {\n  color: var(--p-purple-700) !important;\n}\n.text-purple-800 {\n  color: var(--p-purple-800) !important;\n}\n.text-purple-900 {\n  color: var(--p-purple-900) !important;\n}\n\n.focus\\:text-purple-50:focus {\n  color: var(--p-purple-50) !important;\n}\n.focus\\:text-purple-100:focus {\n  color: var(--p-purple-100) !important;\n}\n.focus\\:text-purple-200:focus {\n  color: var(--p-purple-200) !important;\n}\n.focus\\:text-purple-300:focus {\n  color: var(--p-purple-300) !important;\n}\n.focus\\:text-purple-400:focus {\n  color: var(--p-purple-400) !important;\n}\n.focus\\:text-purple-500:focus {\n  color: var(--p-purple-500) !important;\n}\n.focus\\:text-purple-600:focus {\n  color: var(--p-purple-600) !important;\n}\n.focus\\:text-purple-700:focus {\n  color: var(--p-purple-700) !important;\n}\n.focus\\:text-purple-800:focus {\n  color: var(--p-purple-800) !important;\n}\n.focus\\:text-purple-900:focus {\n  color: var(--p-purple-900) !important;\n}\n\n.hover\\:text-purple-50:hover {\n  color: var(--p-purple-50) !important;\n}\n.hover\\:text-purple-100:hover {\n  color: var(--p-purple-100) !important;\n}\n.hover\\:text-purple-200:hover {\n  color: var(--p-purple-200) !important;\n}\n.hover\\:text-purple-300:hover {\n  color: var(--p-purple-300) !important;\n}\n.hover\\:text-purple-400:hover {\n  color: var(--p-purple-400) !important;\n}\n.hover\\:text-purple-500:hover {\n  color: var(--p-purple-500) !important;\n}\n.hover\\:text-purple-600:hover {\n  color: var(--p-purple-600) !important;\n}\n.hover\\:text-purple-700:hover {\n  color: var(--p-purple-700) !important;\n}\n.hover\\:text-purple-800:hover {\n  color: var(--p-purple-800) !important;\n}\n.hover\\:text-purple-900:hover {\n  color: var(--p-purple-900) !important;\n}\n\n.active\\:text-purple-50:active {\n  color: var(--p-purple-50) !important;\n}\n.active\\:text-purple-100:active {\n  color: var(--p-purple-100) !important;\n}\n.active\\:text-purple-200:active {\n  color: var(--p-purple-200) !important;\n}\n.active\\:text-purple-300:active {\n  color: var(--p-purple-300) !important;\n}\n.active\\:text-purple-400:active {\n  color: var(--p-purple-400) !important;\n}\n.active\\:text-purple-500:active {\n  color: var(--p-purple-500) !important;\n}\n.active\\:text-purple-600:active {\n  color: var(--p-purple-600) !important;\n}\n.active\\:text-purple-700:active {\n  color: var(--p-purple-700) !important;\n}\n.active\\:text-purple-800:active {\n  color: var(--p-purple-800) !important;\n}\n.active\\:text-purple-900:active {\n  color: var(--p-purple-900) !important;\n}\n\n.text-gray-50 {\n  color: var(--p-gray-50) !important;\n}\n.text-gray-100 {\n  color: var(--p-gray-100) !important;\n}\n.text-gray-200 {\n  color: var(--p-gray-200) !important;\n}\n.text-gray-300 {\n  color: var(--p-gray-300) !important;\n}\n.text-gray-400 {\n  color: var(--p-gray-400) !important;\n}\n.text-gray-500 {\n  color: var(--p-gray-500) !important;\n}\n.text-gray-600 {\n  color: var(--p-gray-600) !important;\n}\n.text-gray-700 {\n  color: var(--p-gray-700) !important;\n}\n.text-gray-800 {\n  color: var(--p-gray-800) !important;\n}\n.text-gray-900 {\n  color: var(--p-gray-900) !important;\n}\n\n.focus\\:text-gray-50:focus {\n  color: var(--p-gray-50) !important;\n}\n.focus\\:text-gray-100:focus {\n  color: var(--p-gray-100) !important;\n}\n.focus\\:text-gray-200:focus {\n  color: var(--p-gray-200) !important;\n}\n.focus\\:text-gray-300:focus {\n  color: var(--p-gray-300) !important;\n}\n.focus\\:text-gray-400:focus {\n  color: var(--p-gray-400) !important;\n}\n.focus\\:text-gray-500:focus {\n  color: var(--p-gray-500) !important;\n}\n.focus\\:text-gray-600:focus {\n  color: var(--p-gray-600) !important;\n}\n.focus\\:text-gray-700:focus {\n  color: var(--p-gray-700) !important;\n}\n.focus\\:text-gray-800:focus {\n  color: var(--p-gray-800) !important;\n}\n.focus\\:text-gray-900:focus {\n  color: var(--p-gray-900) !important;\n}\n\n.hover\\:text-gray-50:hover {\n  color: var(--p-gray-50) !important;\n}\n.hover\\:text-gray-100:hover {\n  color: var(--p-gray-100) !important;\n}\n.hover\\:text-gray-200:hover {\n  color: var(--p-gray-200) !important;\n}\n.hover\\:text-gray-300:hover {\n  color: var(--p-gray-300) !important;\n}\n.hover\\:text-gray-400:hover {\n  color: var(--p-gray-400) !important;\n}\n.hover\\:text-gray-500:hover {\n  color: var(--p-gray-500) !important;\n}\n.hover\\:text-gray-600:hover {\n  color: var(--p-gray-600) !important;\n}\n.hover\\:text-gray-700:hover {\n  color: var(--p-gray-700) !important;\n}\n.hover\\:text-gray-800:hover {\n  color: var(--p-gray-800) !important;\n}\n.hover\\:text-gray-900:hover {\n  color: var(--p-gray-900) !important;\n}\n\n.active\\:text-gray-50:active {\n  color: var(--p-gray-50) !important;\n}\n.active\\:text-gray-100:active {\n  color: var(--p-gray-100) !important;\n}\n.active\\:text-gray-200:active {\n  color: var(--p-gray-200) !important;\n}\n.active\\:text-gray-300:active {\n  color: var(--p-gray-300) !important;\n}\n.active\\:text-gray-400:active {\n  color: var(--p-gray-400) !important;\n}\n.active\\:text-gray-500:active {\n  color: var(--p-gray-500) !important;\n}\n.active\\:text-gray-600:active {\n  color: var(--p-gray-600) !important;\n}\n.active\\:text-gray-700:active {\n  color: var(--p-gray-700) !important;\n}\n.active\\:text-gray-800:active {\n  color: var(--p-gray-800) !important;\n}\n.active\\:text-gray-900:active {\n  color: var(--p-gray-900) !important;\n}\n\n.text-red-50 {\n  color: var(--p-red-50) !important;\n}\n.text-red-100 {\n  color: var(--p-red-100) !important;\n}\n.text-red-200 {\n  color: var(--p-red-200) !important;\n}\n.text-red-300 {\n  color: var(--p-red-300) !important;\n}\n.text-red-400 {\n  color: var(--p-red-400) !important;\n}\n.text-red-500 {\n  color: var(--p-red-500) !important;\n}\n.text-red-600 {\n  color: var(--p-red-600) !important;\n}\n.text-red-700 {\n  color: var(--p-red-700) !important;\n}\n.text-red-800 {\n  color: var(--p-red-800) !important;\n}\n.text-red-900 {\n  color: var(--p-red-900) !important;\n}\n\n.focus\\:text-red-50:focus {\n  color: var(--p-red-50) !important;\n}\n.focus\\:text-red-100:focus {\n  color: var(--p-red-100) !important;\n}\n.focus\\:text-red-200:focus {\n  color: var(--p-red-200) !important;\n}\n.focus\\:text-red-300:focus {\n  color: var(--p-red-300) !important;\n}\n.focus\\:text-red-400:focus {\n  color: var(--p-red-400) !important;\n}\n.focus\\:text-red-500:focus {\n  color: var(--p-red-500) !important;\n}\n.focus\\:text-red-600:focus {\n  color: var(--p-red-600) !important;\n}\n.focus\\:text-red-700:focus {\n  color: var(--p-red-700) !important;\n}\n.focus\\:text-red-800:focus {\n  color: var(--p-red-800) !important;\n}\n.focus\\:text-red-900:focus {\n  color: var(--p-red-900) !important;\n}\n\n.hover\\:text-red-50:hover {\n  color: var(--p-red-50) !important;\n}\n.hover\\:text-red-100:hover {\n  color: var(--p-red-100) !important;\n}\n.hover\\:text-red-200:hover {\n  color: var(--p-red-200) !important;\n}\n.hover\\:text-red-300:hover {\n  color: var(--p-red-300) !important;\n}\n.hover\\:text-red-400:hover {\n  color: var(--p-red-400) !important;\n}\n.hover\\:text-red-500:hover {\n  color: var(--p-red-500) !important;\n}\n.hover\\:text-red-600:hover {\n  color: var(--p-red-600) !important;\n}\n.hover\\:text-red-700:hover {\n  color: var(--p-red-700) !important;\n}\n.hover\\:text-red-800:hover {\n  color: var(--p-red-800) !important;\n}\n.hover\\:text-red-900:hover {\n  color: var(--p-red-900) !important;\n}\n\n.active\\:text-red-50:active {\n  color: var(--p-red-50) !important;\n}\n.active\\:text-red-100:active {\n  color: var(--p-red-100) !important;\n}\n.active\\:text-red-200:active {\n  color: var(--p-red-200) !important;\n}\n.active\\:text-red-300:active {\n  color: var(--p-red-300) !important;\n}\n.active\\:text-red-400:active {\n  color: var(--p-red-400) !important;\n}\n.active\\:text-red-500:active {\n  color: var(--p-red-500) !important;\n}\n.active\\:text-red-600:active {\n  color: var(--p-red-600) !important;\n}\n.active\\:text-red-700:active {\n  color: var(--p-red-700) !important;\n}\n.active\\:text-red-800:active {\n  color: var(--p-red-800) !important;\n}\n.active\\:text-red-900:active {\n  color: var(--p-red-900) !important;\n}\n\n.text-primary-50 {\n  color: var(--p-primary-50) !important;\n}\n.text-primary-100 {\n  color: var(--p-primary-100) !important;\n}\n.text-primary-200 {\n  color: var(--p-primary-200) !important;\n}\n.text-primary-300 {\n  color: var(--p-primary-300) !important;\n}\n.text-primary-400 {\n  color: var(--p-primary-400) !important;\n}\n.text-primary-500 {\n  color: var(--p-primary-500) !important;\n}\n.text-primary-600 {\n  color: var(--p-primary-600) !important;\n}\n.text-primary-700 {\n  color: var(--p-primary-700) !important;\n}\n.text-primary-800 {\n  color: var(--p-primary-800) !important;\n}\n.text-primary-900 {\n  color: var(--p-primary-900) !important;\n}\n\n.focus\\:text-primary-50:focus {\n  color: var(--p-primary-50) !important;\n}\n.focus\\:text-primary-100:focus {\n  color: var(--p-primary-100) !important;\n}\n.focus\\:text-primary-200:focus {\n  color: var(--p-primary-200) !important;\n}\n.focus\\:text-primary-300:focus {\n  color: var(--p-primary-300) !important;\n}\n.focus\\:text-primary-400:focus {\n  color: var(--p-primary-400) !important;\n}\n.focus\\:text-primary-500:focus {\n  color: var(--p-primary-500) !important;\n}\n.focus\\:text-primary-600:focus {\n  color: var(--p-primary-600) !important;\n}\n.focus\\:text-primary-700:focus {\n  color: var(--p-primary-700) !important;\n}\n.focus\\:text-primary-800:focus {\n  color: var(--p-primary-800) !important;\n}\n.focus\\:text-primary-900:focus {\n  color: var(--p-primary-900) !important;\n}\n\n.hover\\:text-primary-50:hover {\n  color: var(--p-primary-50) !important;\n}\n.hover\\:text-primary-100:hover {\n  color: var(--p-primary-100) !important;\n}\n.hover\\:text-primary-200:hover {\n  color: var(--p-primary-200) !important;\n}\n.hover\\:text-primary-300:hover {\n  color: var(--p-primary-300) !important;\n}\n.hover\\:text-primary-400:hover {\n  color: var(--p-primary-400) !important;\n}\n.hover\\:text-primary-500:hover {\n  color: var(--p-primary-500) !important;\n}\n.hover\\:text-primary-600:hover {\n  color: var(--p-primary-600) !important;\n}\n.hover\\:text-primary-700:hover {\n  color: var(--p-primary-700) !important;\n}\n.hover\\:text-primary-800:hover {\n  color: var(--p-primary-800) !important;\n}\n.hover\\:text-primary-900:hover {\n  color: var(--p-primary-900) !important;\n}\n\n.active\\:text-primary-50:active {\n  color: var(--p-primary-50) !important;\n}\n.active\\:text-primary-100:active {\n  color: var(--p-primary-100) !important;\n}\n.active\\:text-primary-200:active {\n  color: var(--p-primary-200) !important;\n}\n.active\\:text-primary-300:active {\n  color: var(--p-primary-300) !important;\n}\n.active\\:text-primary-400:active {\n  color: var(--p-primary-400) !important;\n}\n.active\\:text-primary-500:active {\n  color: var(--p-primary-500) !important;\n}\n.active\\:text-primary-600:active {\n  color: var(--p-primary-600) !important;\n}\n.active\\:text-primary-700:active {\n  color: var(--p-primary-700) !important;\n}\n.active\\:text-primary-800:active {\n  color: var(--p-primary-800) !important;\n}\n.active\\:text-primary-900:active {\n  color: var(--p-primary-900) !important;\n}\n\n.bg-blue-50 {\n  background-color: var(--p-blue-50) !important;\n}\n.bg-blue-100 {\n  background-color: var(--p-blue-100) !important;\n}\n.bg-blue-200 {\n  background-color: var(--p-blue-200) !important;\n}\n.bg-blue-300 {\n  background-color: var(--p-blue-300) !important;\n}\n.bg-blue-400 {\n  background-color: var(--p-blue-400) !important;\n}\n.bg-blue-500 {\n  background-color: var(--p-blue-500) !important;\n}\n.bg-blue-600 {\n  background-color: var(--p-blue-600) !important;\n}\n.bg-blue-700 {\n  background-color: var(--p-blue-700) !important;\n}\n.bg-blue-800 {\n  background-color: var(--p-blue-800) !important;\n}\n.bg-blue-900 {\n  background-color: var(--p-blue-900) !important;\n}\n\n.focus\\:bg-blue-50:focus {\n  background-color: var(--p-blue-50) !important;\n}\n.focus\\:bg-blue-100:focus {\n  background-color: var(--p-blue-100) !important;\n}\n.focus\\:bg-blue-200:focus {\n  background-color: var(--p-blue-200) !important;\n}\n.focus\\:bg-blue-300:focus {\n  background-color: var(--p-blue-300) !important;\n}\n.focus\\:bg-blue-400:focus {\n  background-color: var(--p-blue-400) !important;\n}\n.focus\\:bg-blue-500:focus {\n  background-color: var(--p-blue-500) !important;\n}\n.focus\\:bg-blue-600:focus {\n  background-color: var(--p-blue-600) !important;\n}\n.focus\\:bg-blue-700:focus {\n  background-color: var(--p-blue-700) !important;\n}\n.focus\\:bg-blue-800:focus {\n  background-color: var(--p-blue-800) !important;\n}\n.focus\\:bg-blue-900:focus {\n  background-color: var(--p-blue-900) !important;\n}\n\n.hover\\:bg-blue-50:hover {\n  background-color: var(--p-blue-50) !important;\n}\n.hover\\:bg-blue-100:hover {\n  background-color: var(--p-blue-100) !important;\n}\n.hover\\:bg-blue-200:hover {\n  background-color: var(--p-blue-200) !important;\n}\n.hover\\:bg-blue-300:hover {\n  background-color: var(--p-blue-300) !important;\n}\n.hover\\:bg-blue-400:hover {\n  background-color: var(--p-blue-400) !important;\n}\n.hover\\:bg-blue-500:hover {\n  background-color: var(--p-blue-500) !important;\n}\n.hover\\:bg-blue-600:hover {\n  background-color: var(--p-blue-600) !important;\n}\n.hover\\:bg-blue-700:hover {\n  background-color: var(--p-blue-700) !important;\n}\n.hover\\:bg-blue-800:hover {\n  background-color: var(--p-blue-800) !important;\n}\n.hover\\:bg-blue-900:hover {\n  background-color: var(--p-blue-900) !important;\n}\n\n.active\\:bg-blue-50:active {\n  background-color: var(--p-blue-50) !important;\n}\n.active\\:bg-blue-100:active {\n  background-color: var(--p-blue-100) !important;\n}\n.active\\:bg-blue-200:active {\n  background-color: var(--p-blue-200) !important;\n}\n.active\\:bg-blue-300:active {\n  background-color: var(--p-blue-300) !important;\n}\n.active\\:bg-blue-400:active {\n  background-color: var(--p-blue-400) !important;\n}\n.active\\:bg-blue-500:active {\n  background-color: var(--p-blue-500) !important;\n}\n.active\\:bg-blue-600:active {\n  background-color: var(--p-blue-600) !important;\n}\n.active\\:bg-blue-700:active {\n  background-color: var(--p-blue-700) !important;\n}\n.active\\:bg-blue-800:active {\n  background-color: var(--p-blue-800) !important;\n}\n.active\\:bg-blue-900:active {\n  background-color: var(--p-blue-900) !important;\n}\n\n.bg-green-50 {\n  background-color: var(--p-green-50) !important;\n}\n.bg-green-100 {\n  background-color: var(--p-green-100) !important;\n}\n.bg-green-200 {\n  background-color: var(--p-green-200) !important;\n}\n.bg-green-300 {\n  background-color: var(--p-green-300) !important;\n}\n.bg-green-400 {\n  background-color: var(--p-green-400) !important;\n}\n.bg-green-500 {\n  background-color: var(--p-green-500) !important;\n}\n.bg-green-600 {\n  background-color: var(--p-green-600) !important;\n}\n.bg-green-700 {\n  background-color: var(--p-green-700) !important;\n}\n.bg-green-800 {\n  background-color: var(--p-green-800) !important;\n}\n.bg-green-900 {\n  background-color: var(--p-green-900) !important;\n}\n\n.focus\\:bg-green-50:focus {\n  background-color: var(--p-green-50) !important;\n}\n.focus\\:bg-green-100:focus {\n  background-color: var(--p-green-100) !important;\n}\n.focus\\:bg-green-200:focus {\n  background-color: var(--p-green-200) !important;\n}\n.focus\\:bg-green-300:focus {\n  background-color: var(--p-green-300) !important;\n}\n.focus\\:bg-green-400:focus {\n  background-color: var(--p-green-400) !important;\n}\n.focus\\:bg-green-500:focus {\n  background-color: var(--p-green-500) !important;\n}\n.focus\\:bg-green-600:focus {\n  background-color: var(--p-green-600) !important;\n}\n.focus\\:bg-green-700:focus {\n  background-color: var(--p-green-700) !important;\n}\n.focus\\:bg-green-800:focus {\n  background-color: var(--p-green-800) !important;\n}\n.focus\\:bg-green-900:focus {\n  background-color: var(--p-green-900) !important;\n}\n\n.hover\\:bg-green-50:hover {\n  background-color: var(--p-green-50) !important;\n}\n.hover\\:bg-green-100:hover {\n  background-color: var(--p-green-100) !important;\n}\n.hover\\:bg-green-200:hover {\n  background-color: var(--p-green-200) !important;\n}\n.hover\\:bg-green-300:hover {\n  background-color: var(--p-green-300) !important;\n}\n.hover\\:bg-green-400:hover {\n  background-color: var(--p-green-400) !important;\n}\n.hover\\:bg-green-500:hover {\n  background-color: var(--p-green-500) !important;\n}\n.hover\\:bg-green-600:hover {\n  background-color: var(--p-green-600) !important;\n}\n.hover\\:bg-green-700:hover {\n  background-color: var(--p-green-700) !important;\n}\n.hover\\:bg-green-800:hover {\n  background-color: var(--p-green-800) !important;\n}\n.hover\\:bg-green-900:hover {\n  background-color: var(--p-green-900) !important;\n}\n\n.active\\:bg-green-50:active {\n  background-color: var(--p-green-50) !important;\n}\n.active\\:bg-green-100:active {\n  background-color: var(--p-green-100) !important;\n}\n.active\\:bg-green-200:active {\n  background-color: var(--p-green-200) !important;\n}\n.active\\:bg-green-300:active {\n  background-color: var(--p-green-300) !important;\n}\n.active\\:bg-green-400:active {\n  background-color: var(--p-green-400) !important;\n}\n.active\\:bg-green-500:active {\n  background-color: var(--p-green-500) !important;\n}\n.active\\:bg-green-600:active {\n  background-color: var(--p-green-600) !important;\n}\n.active\\:bg-green-700:active {\n  background-color: var(--p-green-700) !important;\n}\n.active\\:bg-green-800:active {\n  background-color: var(--p-green-800) !important;\n}\n.active\\:bg-green-900:active {\n  background-color: var(--p-green-900) !important;\n}\n\n.bg-yellow-50 {\n  background-color: var(--p-yellow-50) !important;\n}\n.bg-yellow-100 {\n  background-color: var(--p-yellow-100) !important;\n}\n.bg-yellow-200 {\n  background-color: var(--p-yellow-200) !important;\n}\n.bg-yellow-300 {\n  background-color: var(--p-yellow-300) !important;\n}\n.bg-yellow-400 {\n  background-color: var(--p-yellow-400) !important;\n}\n.bg-yellow-500 {\n  background-color: var(--p-yellow-500) !important;\n}\n.bg-yellow-600 {\n  background-color: var(--p-yellow-600) !important;\n}\n.bg-yellow-700 {\n  background-color: var(--p-yellow-700) !important;\n}\n.bg-yellow-800 {\n  background-color: var(--p-yellow-800) !important;\n}\n.bg-yellow-900 {\n  background-color: var(--p-yellow-900) !important;\n}\n\n.focus\\:bg-yellow-50:focus {\n  background-color: var(--p-yellow-50) !important;\n}\n.focus\\:bg-yellow-100:focus {\n  background-color: var(--p-yellow-100) !important;\n}\n.focus\\:bg-yellow-200:focus {\n  background-color: var(--p-yellow-200) !important;\n}\n.focus\\:bg-yellow-300:focus {\n  background-color: var(--p-yellow-300) !important;\n}\n.focus\\:bg-yellow-400:focus {\n  background-color: var(--p-yellow-400) !important;\n}\n.focus\\:bg-yellow-500:focus {\n  background-color: var(--p-yellow-500) !important;\n}\n.focus\\:bg-yellow-600:focus {\n  background-color: var(--p-yellow-600) !important;\n}\n.focus\\:bg-yellow-700:focus {\n  background-color: var(--p-yellow-700) !important;\n}\n.focus\\:bg-yellow-800:focus {\n  background-color: var(--p-yellow-800) !important;\n}\n.focus\\:bg-yellow-900:focus {\n  background-color: var(--p-yellow-900) !important;\n}\n\n.hover\\:bg-yellow-50:hover {\n  background-color: var(--p-yellow-50) !important;\n}\n.hover\\:bg-yellow-100:hover {\n  background-color: var(--p-yellow-100) !important;\n}\n.hover\\:bg-yellow-200:hover {\n  background-color: var(--p-yellow-200) !important;\n}\n.hover\\:bg-yellow-300:hover {\n  background-color: var(--p-yellow-300) !important;\n}\n.hover\\:bg-yellow-400:hover {\n  background-color: var(--p-yellow-400) !important;\n}\n.hover\\:bg-yellow-500:hover {\n  background-color: var(--p-yellow-500) !important;\n}\n.hover\\:bg-yellow-600:hover {\n  background-color: var(--p-yellow-600) !important;\n}\n.hover\\:bg-yellow-700:hover {\n  background-color: var(--p-yellow-700) !important;\n}\n.hover\\:bg-yellow-800:hover {\n  background-color: var(--p-yellow-800) !important;\n}\n.hover\\:bg-yellow-900:hover {\n  background-color: var(--p-yellow-900) !important;\n}\n\n.active\\:bg-yellow-50:active {\n  background-color: var(--p-yellow-50) !important;\n}\n.active\\:bg-yellow-100:active {\n  background-color: var(--p-yellow-100) !important;\n}\n.active\\:bg-yellow-200:active {\n  background-color: var(--p-yellow-200) !important;\n}\n.active\\:bg-yellow-300:active {\n  background-color: var(--p-yellow-300) !important;\n}\n.active\\:bg-yellow-400:active {\n  background-color: var(--p-yellow-400) !important;\n}\n.active\\:bg-yellow-500:active {\n  background-color: var(--p-yellow-500) !important;\n}\n.active\\:bg-yellow-600:active {\n  background-color: var(--p-yellow-600) !important;\n}\n.active\\:bg-yellow-700:active {\n  background-color: var(--p-yellow-700) !important;\n}\n.active\\:bg-yellow-800:active {\n  background-color: var(--p-yellow-800) !important;\n}\n.active\\:bg-yellow-900:active {\n  background-color: var(--p-yellow-900) !important;\n}\n\n.bg-cyan-50 {\n  background-color: var(--p-cyan-50) !important;\n}\n.bg-cyan-100 {\n  background-color: var(--p-cyan-100) !important;\n}\n.bg-cyan-200 {\n  background-color: var(--p-cyan-200) !important;\n}\n.bg-cyan-300 {\n  background-color: var(--p-cyan-300) !important;\n}\n.bg-cyan-400 {\n  background-color: var(--p-cyan-400) !important;\n}\n.bg-cyan-500 {\n  background-color: var(--p-cyan-500) !important;\n}\n.bg-cyan-600 {\n  background-color: var(--p-cyan-600) !important;\n}\n.bg-cyan-700 {\n  background-color: var(--p-cyan-700) !important;\n}\n.bg-cyan-800 {\n  background-color: var(--p-cyan-800) !important;\n}\n.bg-cyan-900 {\n  background-color: var(--p-cyan-900) !important;\n}\n\n.focus\\:bg-cyan-50:focus {\n  background-color: var(--p-cyan-50) !important;\n}\n.focus\\:bg-cyan-100:focus {\n  background-color: var(--p-cyan-100) !important;\n}\n.focus\\:bg-cyan-200:focus {\n  background-color: var(--p-cyan-200) !important;\n}\n.focus\\:bg-cyan-300:focus {\n  background-color: var(--p-cyan-300) !important;\n}\n.focus\\:bg-cyan-400:focus {\n  background-color: var(--p-cyan-400) !important;\n}\n.focus\\:bg-cyan-500:focus {\n  background-color: var(--p-cyan-500) !important;\n}\n.focus\\:bg-cyan-600:focus {\n  background-color: var(--p-cyan-600) !important;\n}\n.focus\\:bg-cyan-700:focus {\n  background-color: var(--p-cyan-700) !important;\n}\n.focus\\:bg-cyan-800:focus {\n  background-color: var(--p-cyan-800) !important;\n}\n.focus\\:bg-cyan-900:focus {\n  background-color: var(--p-cyan-900) !important;\n}\n\n.hover\\:bg-cyan-50:hover {\n  background-color: var(--p-cyan-50) !important;\n}\n.hover\\:bg-cyan-100:hover {\n  background-color: var(--p-cyan-100) !important;\n}\n.hover\\:bg-cyan-200:hover {\n  background-color: var(--p-cyan-200) !important;\n}\n.hover\\:bg-cyan-300:hover {\n  background-color: var(--p-cyan-300) !important;\n}\n.hover\\:bg-cyan-400:hover {\n  background-color: var(--p-cyan-400) !important;\n}\n.hover\\:bg-cyan-500:hover {\n  background-color: var(--p-cyan-500) !important;\n}\n.hover\\:bg-cyan-600:hover {\n  background-color: var(--p-cyan-600) !important;\n}\n.hover\\:bg-cyan-700:hover {\n  background-color: var(--p-cyan-700) !important;\n}\n.hover\\:bg-cyan-800:hover {\n  background-color: var(--p-cyan-800) !important;\n}\n.hover\\:bg-cyan-900:hover {\n  background-color: var(--p-cyan-900) !important;\n}\n\n.active\\:bg-cyan-50:active {\n  background-color: var(--p-cyan-50) !important;\n}\n.active\\:bg-cyan-100:active {\n  background-color: var(--p-cyan-100) !important;\n}\n.active\\:bg-cyan-200:active {\n  background-color: var(--p-cyan-200) !important;\n}\n.active\\:bg-cyan-300:active {\n  background-color: var(--p-cyan-300) !important;\n}\n.active\\:bg-cyan-400:active {\n  background-color: var(--p-cyan-400) !important;\n}\n.active\\:bg-cyan-500:active {\n  background-color: var(--p-cyan-500) !important;\n}\n.active\\:bg-cyan-600:active {\n  background-color: var(--p-cyan-600) !important;\n}\n.active\\:bg-cyan-700:active {\n  background-color: var(--p-cyan-700) !important;\n}\n.active\\:bg-cyan-800:active {\n  background-color: var(--p-cyan-800) !important;\n}\n.active\\:bg-cyan-900:active {\n  background-color: var(--p-cyan-900) !important;\n}\n\n.bg-pink-50 {\n  background-color: var(--p-pink-50) !important;\n}\n.bg-pink-100 {\n  background-color: var(--p-pink-100) !important;\n}\n.bg-pink-200 {\n  background-color: var(--p-pink-200) !important;\n}\n.bg-pink-300 {\n  background-color: var(--p-pink-300) !important;\n}\n.bg-pink-400 {\n  background-color: var(--p-pink-400) !important;\n}\n.bg-pink-500 {\n  background-color: var(--p-pink-500) !important;\n}\n.bg-pink-600 {\n  background-color: var(--p-pink-600) !important;\n}\n.bg-pink-700 {\n  background-color: var(--p-pink-700) !important;\n}\n.bg-pink-800 {\n  background-color: var(--p-pink-800) !important;\n}\n.bg-pink-900 {\n  background-color: var(--p-pink-900) !important;\n}\n\n.focus\\:bg-pink-50:focus {\n  background-color: var(--p-pink-50) !important;\n}\n.focus\\:bg-pink-100:focus {\n  background-color: var(--p-pink-100) !important;\n}\n.focus\\:bg-pink-200:focus {\n  background-color: var(--p-pink-200) !important;\n}\n.focus\\:bg-pink-300:focus {\n  background-color: var(--p-pink-300) !important;\n}\n.focus\\:bg-pink-400:focus {\n  background-color: var(--p-pink-400) !important;\n}\n.focus\\:bg-pink-500:focus {\n  background-color: var(--p-pink-500) !important;\n}\n.focus\\:bg-pink-600:focus {\n  background-color: var(--p-pink-600) !important;\n}\n.focus\\:bg-pink-700:focus {\n  background-color: var(--p-pink-700) !important;\n}\n.focus\\:bg-pink-800:focus {\n  background-color: var(--p-pink-800) !important;\n}\n.focus\\:bg-pink-900:focus {\n  background-color: var(--p-pink-900) !important;\n}\n\n.hover\\:bg-pink-50:hover {\n  background-color: var(--p-pink-50) !important;\n}\n.hover\\:bg-pink-100:hover {\n  background-color: var(--p-pink-100) !important;\n}\n.hover\\:bg-pink-200:hover {\n  background-color: var(--p-pink-200) !important;\n}\n.hover\\:bg-pink-300:hover {\n  background-color: var(--p-pink-300) !important;\n}\n.hover\\:bg-pink-400:hover {\n  background-color: var(--p-pink-400) !important;\n}\n.hover\\:bg-pink-500:hover {\n  background-color: var(--p-pink-500) !important;\n}\n.hover\\:bg-pink-600:hover {\n  background-color: var(--p-pink-600) !important;\n}\n.hover\\:bg-pink-700:hover {\n  background-color: var(--p-pink-700) !important;\n}\n.hover\\:bg-pink-800:hover {\n  background-color: var(--p-pink-800) !important;\n}\n.hover\\:bg-pink-900:hover {\n  background-color: var(--p-pink-900) !important;\n}\n\n.active\\:bg-pink-50:active {\n  background-color: var(--p-pink-50) !important;\n}\n.active\\:bg-pink-100:active {\n  background-color: var(--p-pink-100) !important;\n}\n.active\\:bg-pink-200:active {\n  background-color: var(--p-pink-200) !important;\n}\n.active\\:bg-pink-300:active {\n  background-color: var(--p-pink-300) !important;\n}\n.active\\:bg-pink-400:active {\n  background-color: var(--p-pink-400) !important;\n}\n.active\\:bg-pink-500:active {\n  background-color: var(--p-pink-500) !important;\n}\n.active\\:bg-pink-600:active {\n  background-color: var(--p-pink-600) !important;\n}\n.active\\:bg-pink-700:active {\n  background-color: var(--p-pink-700) !important;\n}\n.active\\:bg-pink-800:active {\n  background-color: var(--p-pink-800) !important;\n}\n.active\\:bg-pink-900:active {\n  background-color: var(--p-pink-900) !important;\n}\n\n.bg-indigo-50 {\n  background-color: var(--p-indigo-50) !important;\n}\n.bg-indigo-100 {\n  background-color: var(--p-indigo-100) !important;\n}\n.bg-indigo-200 {\n  background-color: var(--p-indigo-200) !important;\n}\n.bg-indigo-300 {\n  background-color: var(--p-indigo-300) !important;\n}\n.bg-indigo-400 {\n  background-color: var(--p-indigo-400) !important;\n}\n.bg-indigo-500 {\n  background-color: var(--p-indigo-500) !important;\n}\n.bg-indigo-600 {\n  background-color: var(--p-indigo-600) !important;\n}\n.bg-indigo-700 {\n  background-color: var(--p-indigo-700) !important;\n}\n.bg-indigo-800 {\n  background-color: var(--p-indigo-800) !important;\n}\n.bg-indigo-900 {\n  background-color: var(--p-indigo-900) !important;\n}\n\n.focus\\:bg-indigo-50:focus {\n  background-color: var(--p-indigo-50) !important;\n}\n.focus\\:bg-indigo-100:focus {\n  background-color: var(--p-indigo-100) !important;\n}\n.focus\\:bg-indigo-200:focus {\n  background-color: var(--p-indigo-200) !important;\n}\n.focus\\:bg-indigo-300:focus {\n  background-color: var(--p-indigo-300) !important;\n}\n.focus\\:bg-indigo-400:focus {\n  background-color: var(--p-indigo-400) !important;\n}\n.focus\\:bg-indigo-500:focus {\n  background-color: var(--p-indigo-500) !important;\n}\n.focus\\:bg-indigo-600:focus {\n  background-color: var(--p-indigo-600) !important;\n}\n.focus\\:bg-indigo-700:focus {\n  background-color: var(--p-indigo-700) !important;\n}\n.focus\\:bg-indigo-800:focus {\n  background-color: var(--p-indigo-800) !important;\n}\n.focus\\:bg-indigo-900:focus {\n  background-color: var(--p-indigo-900) !important;\n}\n\n.hover\\:bg-indigo-50:hover {\n  background-color: var(--p-indigo-50) !important;\n}\n.hover\\:bg-indigo-100:hover {\n  background-color: var(--p-indigo-100) !important;\n}\n.hover\\:bg-indigo-200:hover {\n  background-color: var(--p-indigo-200) !important;\n}\n.hover\\:bg-indigo-300:hover {\n  background-color: var(--p-indigo-300) !important;\n}\n.hover\\:bg-indigo-400:hover {\n  background-color: var(--p-indigo-400) !important;\n}\n.hover\\:bg-indigo-500:hover {\n  background-color: var(--p-indigo-500) !important;\n}\n.hover\\:bg-indigo-600:hover {\n  background-color: var(--p-indigo-600) !important;\n}\n.hover\\:bg-indigo-700:hover {\n  background-color: var(--p-indigo-700) !important;\n}\n.hover\\:bg-indigo-800:hover {\n  background-color: var(--p-indigo-800) !important;\n}\n.hover\\:bg-indigo-900:hover {\n  background-color: var(--p-indigo-900) !important;\n}\n\n.active\\:bg-indigo-50:active {\n  background-color: var(--p-indigo-50) !important;\n}\n.active\\:bg-indigo-100:active {\n  background-color: var(--p-indigo-100) !important;\n}\n.active\\:bg-indigo-200:active {\n  background-color: var(--p-indigo-200) !important;\n}\n.active\\:bg-indigo-300:active {\n  background-color: var(--p-indigo-300) !important;\n}\n.active\\:bg-indigo-400:active {\n  background-color: var(--p-indigo-400) !important;\n}\n.active\\:bg-indigo-500:active {\n  background-color: var(--p-indigo-500) !important;\n}\n.active\\:bg-indigo-600:active {\n  background-color: var(--p-indigo-600) !important;\n}\n.active\\:bg-indigo-700:active {\n  background-color: var(--p-indigo-700) !important;\n}\n.active\\:bg-indigo-800:active {\n  background-color: var(--p-indigo-800) !important;\n}\n.active\\:bg-indigo-900:active {\n  background-color: var(--p-indigo-900) !important;\n}\n\n.bg-teal-50 {\n  background-color: var(--p-teal-50) !important;\n}\n.bg-teal-100 {\n  background-color: var(--p-teal-100) !important;\n}\n.bg-teal-200 {\n  background-color: var(--p-teal-200) !important;\n}\n.bg-teal-300 {\n  background-color: var(--p-teal-300) !important;\n}\n.bg-teal-400 {\n  background-color: var(--p-teal-400) !important;\n}\n.bg-teal-500 {\n  background-color: var(--p-teal-500) !important;\n}\n.bg-teal-600 {\n  background-color: var(--p-teal-600) !important;\n}\n.bg-teal-700 {\n  background-color: var(--p-teal-700) !important;\n}\n.bg-teal-800 {\n  background-color: var(--p-teal-800) !important;\n}\n.bg-teal-900 {\n  background-color: var(--p-teal-900) !important;\n}\n\n.focus\\:bg-teal-50:focus {\n  background-color: var(--p-teal-50) !important;\n}\n.focus\\:bg-teal-100:focus {\n  background-color: var(--p-teal-100) !important;\n}\n.focus\\:bg-teal-200:focus {\n  background-color: var(--p-teal-200) !important;\n}\n.focus\\:bg-teal-300:focus {\n  background-color: var(--p-teal-300) !important;\n}\n.focus\\:bg-teal-400:focus {\n  background-color: var(--p-teal-400) !important;\n}\n.focus\\:bg-teal-500:focus {\n  background-color: var(--p-teal-500) !important;\n}\n.focus\\:bg-teal-600:focus {\n  background-color: var(--p-teal-600) !important;\n}\n.focus\\:bg-teal-700:focus {\n  background-color: var(--p-teal-700) !important;\n}\n.focus\\:bg-teal-800:focus {\n  background-color: var(--p-teal-800) !important;\n}\n.focus\\:bg-teal-900:focus {\n  background-color: var(--p-teal-900) !important;\n}\n\n.hover\\:bg-teal-50:hover {\n  background-color: var(--p-teal-50) !important;\n}\n.hover\\:bg-teal-100:hover {\n  background-color: var(--p-teal-100) !important;\n}\n.hover\\:bg-teal-200:hover {\n  background-color: var(--p-teal-200) !important;\n}\n.hover\\:bg-teal-300:hover {\n  background-color: var(--p-teal-300) !important;\n}\n.hover\\:bg-teal-400:hover {\n  background-color: var(--p-teal-400) !important;\n}\n.hover\\:bg-teal-500:hover {\n  background-color: var(--p-teal-500) !important;\n}\n.hover\\:bg-teal-600:hover {\n  background-color: var(--p-teal-600) !important;\n}\n.hover\\:bg-teal-700:hover {\n  background-color: var(--p-teal-700) !important;\n}\n.hover\\:bg-teal-800:hover {\n  background-color: var(--p-teal-800) !important;\n}\n.hover\\:bg-teal-900:hover {\n  background-color: var(--p-teal-900) !important;\n}\n\n.active\\:bg-teal-50:active {\n  background-color: var(--p-teal-50) !important;\n}\n.active\\:bg-teal-100:active {\n  background-color: var(--p-teal-100) !important;\n}\n.active\\:bg-teal-200:active {\n  background-color: var(--p-teal-200) !important;\n}\n.active\\:bg-teal-300:active {\n  background-color: var(--p-teal-300) !important;\n}\n.active\\:bg-teal-400:active {\n  background-color: var(--p-teal-400) !important;\n}\n.active\\:bg-teal-500:active {\n  background-color: var(--p-teal-500) !important;\n}\n.active\\:bg-teal-600:active {\n  background-color: var(--p-teal-600) !important;\n}\n.active\\:bg-teal-700:active {\n  background-color: var(--p-teal-700) !important;\n}\n.active\\:bg-teal-800:active {\n  background-color: var(--p-teal-800) !important;\n}\n.active\\:bg-teal-900:active {\n  background-color: var(--p-teal-900) !important;\n}\n\n.bg-orange-50 {\n  background-color: var(--p-orange-50) !important;\n}\n.bg-orange-100 {\n  background-color: var(--p-orange-100) !important;\n}\n.bg-orange-200 {\n  background-color: var(--p-orange-200) !important;\n}\n.bg-orange-300 {\n  background-color: var(--p-orange-300) !important;\n}\n.bg-orange-400 {\n  background-color: var(--p-orange-400) !important;\n}\n.bg-orange-500 {\n  background-color: var(--p-orange-500) !important;\n}\n.bg-orange-600 {\n  background-color: var(--p-orange-600) !important;\n}\n.bg-orange-700 {\n  background-color: var(--p-orange-700) !important;\n}\n.bg-orange-800 {\n  background-color: var(--p-orange-800) !important;\n}\n.bg-orange-900 {\n  background-color: var(--p-orange-900) !important;\n}\n\n.focus\\:bg-orange-50:focus {\n  background-color: var(--p-orange-50) !important;\n}\n.focus\\:bg-orange-100:focus {\n  background-color: var(--p-orange-100) !important;\n}\n.focus\\:bg-orange-200:focus {\n  background-color: var(--p-orange-200) !important;\n}\n.focus\\:bg-orange-300:focus {\n  background-color: var(--p-orange-300) !important;\n}\n.focus\\:bg-orange-400:focus {\n  background-color: var(--p-orange-400) !important;\n}\n.focus\\:bg-orange-500:focus {\n  background-color: var(--p-orange-500) !important;\n}\n.focus\\:bg-orange-600:focus {\n  background-color: var(--p-orange-600) !important;\n}\n.focus\\:bg-orange-700:focus {\n  background-color: var(--p-orange-700) !important;\n}\n.focus\\:bg-orange-800:focus {\n  background-color: var(--p-orange-800) !important;\n}\n.focus\\:bg-orange-900:focus {\n  background-color: var(--p-orange-900) !important;\n}\n\n.hover\\:bg-orange-50:hover {\n  background-color: var(--p-orange-50) !important;\n}\n.hover\\:bg-orange-100:hover {\n  background-color: var(--p-orange-100) !important;\n}\n.hover\\:bg-orange-200:hover {\n  background-color: var(--p-orange-200) !important;\n}\n.hover\\:bg-orange-300:hover {\n  background-color: var(--p-orange-300) !important;\n}\n.hover\\:bg-orange-400:hover {\n  background-color: var(--p-orange-400) !important;\n}\n.hover\\:bg-orange-500:hover {\n  background-color: var(--p-orange-500) !important;\n}\n.hover\\:bg-orange-600:hover {\n  background-color: var(--p-orange-600) !important;\n}\n.hover\\:bg-orange-700:hover {\n  background-color: var(--p-orange-700) !important;\n}\n.hover\\:bg-orange-800:hover {\n  background-color: var(--p-orange-800) !important;\n}\n.hover\\:bg-orange-900:hover {\n  background-color: var(--p-orange-900) !important;\n}\n\n.active\\:bg-orange-50:active {\n  background-color: var(--p-orange-50) !important;\n}\n.active\\:bg-orange-100:active {\n  background-color: var(--p-orange-100) !important;\n}\n.active\\:bg-orange-200:active {\n  background-color: var(--p-orange-200) !important;\n}\n.active\\:bg-orange-300:active {\n  background-color: var(--p-orange-300) !important;\n}\n.active\\:bg-orange-400:active {\n  background-color: var(--p-orange-400) !important;\n}\n.active\\:bg-orange-500:active {\n  background-color: var(--p-orange-500) !important;\n}\n.active\\:bg-orange-600:active {\n  background-color: var(--p-orange-600) !important;\n}\n.active\\:bg-orange-700:active {\n  background-color: var(--p-orange-700) !important;\n}\n.active\\:bg-orange-800:active {\n  background-color: var(--p-orange-800) !important;\n}\n.active\\:bg-orange-900:active {\n  background-color: var(--p-orange-900) !important;\n}\n\n.bg-bluegray-50 {\n  background-color: var(--p-bluegray-50) !important;\n}\n.bg-bluegray-100 {\n  background-color: var(--p-bluegray-100) !important;\n}\n.bg-bluegray-200 {\n  background-color: var(--p-bluegray-200) !important;\n}\n.bg-bluegray-300 {\n  background-color: var(--p-bluegray-300) !important;\n}\n.bg-bluegray-400 {\n  background-color: var(--p-bluegray-400) !important;\n}\n.bg-bluegray-500 {\n  background-color: var(--p-bluegray-500) !important;\n}\n.bg-bluegray-600 {\n  background-color: var(--p-bluegray-600) !important;\n}\n.bg-bluegray-700 {\n  background-color: var(--p-bluegray-700) !important;\n}\n.bg-bluegray-800 {\n  background-color: var(--p-bluegray-800) !important;\n}\n.bg-bluegray-900 {\n  background-color: var(--p-bluegray-900) !important;\n}\n\n.focus\\:bg-bluegray-50:focus {\n  background-color: var(--p-bluegray-50) !important;\n}\n.focus\\:bg-bluegray-100:focus {\n  background-color: var(--p-bluegray-100) !important;\n}\n.focus\\:bg-bluegray-200:focus {\n  background-color: var(--p-bluegray-200) !important;\n}\n.focus\\:bg-bluegray-300:focus {\n  background-color: var(--p-bluegray-300) !important;\n}\n.focus\\:bg-bluegray-400:focus {\n  background-color: var(--p-bluegray-400) !important;\n}\n.focus\\:bg-bluegray-500:focus {\n  background-color: var(--p-bluegray-500) !important;\n}\n.focus\\:bg-bluegray-600:focus {\n  background-color: var(--p-bluegray-600) !important;\n}\n.focus\\:bg-bluegray-700:focus {\n  background-color: var(--p-bluegray-700) !important;\n}\n.focus\\:bg-bluegray-800:focus {\n  background-color: var(--p-bluegray-800) !important;\n}\n.focus\\:bg-bluegray-900:focus {\n  background-color: var(--p-bluegray-900) !important;\n}\n\n.hover\\:bg-bluegray-50:hover {\n  background-color: var(--p-bluegray-50) !important;\n}\n.hover\\:bg-bluegray-100:hover {\n  background-color: var(--p-bluegray-100) !important;\n}\n.hover\\:bg-bluegray-200:hover {\n  background-color: var(--p-bluegray-200) !important;\n}\n.hover\\:bg-bluegray-300:hover {\n  background-color: var(--p-bluegray-300) !important;\n}\n.hover\\:bg-bluegray-400:hover {\n  background-color: var(--p-bluegray-400) !important;\n}\n.hover\\:bg-bluegray-500:hover {\n  background-color: var(--p-bluegray-500) !important;\n}\n.hover\\:bg-bluegray-600:hover {\n  background-color: var(--p-bluegray-600) !important;\n}\n.hover\\:bg-bluegray-700:hover {\n  background-color: var(--p-bluegray-700) !important;\n}\n.hover\\:bg-bluegray-800:hover {\n  background-color: var(--p-bluegray-800) !important;\n}\n.hover\\:bg-bluegray-900:hover {\n  background-color: var(--p-bluegray-900) !important;\n}\n\n.active\\:bg-bluegray-50:active {\n  background-color: var(--p-bluegray-50) !important;\n}\n.active\\:bg-bluegray-100:active {\n  background-color: var(--p-bluegray-100) !important;\n}\n.active\\:bg-bluegray-200:active {\n  background-color: var(--p-bluegray-200) !important;\n}\n.active\\:bg-bluegray-300:active {\n  background-color: var(--p-bluegray-300) !important;\n}\n.active\\:bg-bluegray-400:active {\n  background-color: var(--p-bluegray-400) !important;\n}\n.active\\:bg-bluegray-500:active {\n  background-color: var(--p-bluegray-500) !important;\n}\n.active\\:bg-bluegray-600:active {\n  background-color: var(--p-bluegray-600) !important;\n}\n.active\\:bg-bluegray-700:active {\n  background-color: var(--p-bluegray-700) !important;\n}\n.active\\:bg-bluegray-800:active {\n  background-color: var(--p-bluegray-800) !important;\n}\n.active\\:bg-bluegray-900:active {\n  background-color: var(--p-bluegray-900) !important;\n}\n\n.bg-purple-50 {\n  background-color: var(--p-purple-50) !important;\n}\n.bg-purple-100 {\n  background-color: var(--p-purple-100) !important;\n}\n.bg-purple-200 {\n  background-color: var(--p-purple-200) !important;\n}\n.bg-purple-300 {\n  background-color: var(--p-purple-300) !important;\n}\n.bg-purple-400 {\n  background-color: var(--p-purple-400) !important;\n}\n.bg-purple-500 {\n  background-color: var(--p-purple-500) !important;\n}\n.bg-purple-600 {\n  background-color: var(--p-purple-600) !important;\n}\n.bg-purple-700 {\n  background-color: var(--p-purple-700) !important;\n}\n.bg-purple-800 {\n  background-color: var(--p-purple-800) !important;\n}\n.bg-purple-900 {\n  background-color: var(--p-purple-900) !important;\n}\n\n.focus\\:bg-purple-50:focus {\n  background-color: var(--p-purple-50) !important;\n}\n.focus\\:bg-purple-100:focus {\n  background-color: var(--p-purple-100) !important;\n}\n.focus\\:bg-purple-200:focus {\n  background-color: var(--p-purple-200) !important;\n}\n.focus\\:bg-purple-300:focus {\n  background-color: var(--p-purple-300) !important;\n}\n.focus\\:bg-purple-400:focus {\n  background-color: var(--p-purple-400) !important;\n}\n.focus\\:bg-purple-500:focus {\n  background-color: var(--p-purple-500) !important;\n}\n.focus\\:bg-purple-600:focus {\n  background-color: var(--p-purple-600) !important;\n}\n.focus\\:bg-purple-700:focus {\n  background-color: var(--p-purple-700) !important;\n}\n.focus\\:bg-purple-800:focus {\n  background-color: var(--p-purple-800) !important;\n}\n.focus\\:bg-purple-900:focus {\n  background-color: var(--p-purple-900) !important;\n}\n\n.hover\\:bg-purple-50:hover {\n  background-color: var(--p-purple-50) !important;\n}\n.hover\\:bg-purple-100:hover {\n  background-color: var(--p-purple-100) !important;\n}\n.hover\\:bg-purple-200:hover {\n  background-color: var(--p-purple-200) !important;\n}\n.hover\\:bg-purple-300:hover {\n  background-color: var(--p-purple-300) !important;\n}\n.hover\\:bg-purple-400:hover {\n  background-color: var(--p-purple-400) !important;\n}\n.hover\\:bg-purple-500:hover {\n  background-color: var(--p-purple-500) !important;\n}\n.hover\\:bg-purple-600:hover {\n  background-color: var(--p-purple-600) !important;\n}\n.hover\\:bg-purple-700:hover {\n  background-color: var(--p-purple-700) !important;\n}\n.hover\\:bg-purple-800:hover {\n  background-color: var(--p-purple-800) !important;\n}\n.hover\\:bg-purple-900:hover {\n  background-color: var(--p-purple-900) !important;\n}\n\n.active\\:bg-purple-50:active {\n  background-color: var(--p-purple-50) !important;\n}\n.active\\:bg-purple-100:active {\n  background-color: var(--p-purple-100) !important;\n}\n.active\\:bg-purple-200:active {\n  background-color: var(--p-purple-200) !important;\n}\n.active\\:bg-purple-300:active {\n  background-color: var(--p-purple-300) !important;\n}\n.active\\:bg-purple-400:active {\n  background-color: var(--p-purple-400) !important;\n}\n.active\\:bg-purple-500:active {\n  background-color: var(--p-purple-500) !important;\n}\n.active\\:bg-purple-600:active {\n  background-color: var(--p-purple-600) !important;\n}\n.active\\:bg-purple-700:active {\n  background-color: var(--p-purple-700) !important;\n}\n.active\\:bg-purple-800:active {\n  background-color: var(--p-purple-800) !important;\n}\n.active\\:bg-purple-900:active {\n  background-color: var(--p-purple-900) !important;\n}\n\n.bg-gray-50 {\n  background-color: var(--p-gray-50) !important;\n}\n.bg-gray-100 {\n  background-color: var(--p-gray-100) !important;\n}\n.bg-gray-200 {\n  background-color: var(--p-gray-200) !important;\n}\n.bg-gray-300 {\n  background-color: var(--p-gray-300) !important;\n}\n.bg-gray-400 {\n  background-color: var(--p-gray-400) !important;\n}\n.bg-gray-500 {\n  background-color: var(--p-gray-500) !important;\n}\n.bg-gray-600 {\n  background-color: var(--p-gray-600) !important;\n}\n.bg-gray-700 {\n  background-color: var(--p-gray-700) !important;\n}\n.bg-gray-800 {\n  background-color: var(--p-gray-800) !important;\n}\n.bg-gray-900 {\n  background-color: var(--p-gray-900) !important;\n}\n\n.focus\\:bg-gray-50:focus {\n  background-color: var(--p-gray-50) !important;\n}\n.focus\\:bg-gray-100:focus {\n  background-color: var(--p-gray-100) !important;\n}\n.focus\\:bg-gray-200:focus {\n  background-color: var(--p-gray-200) !important;\n}\n.focus\\:bg-gray-300:focus {\n  background-color: var(--p-gray-300) !important;\n}\n.focus\\:bg-gray-400:focus {\n  background-color: var(--p-gray-400) !important;\n}\n.focus\\:bg-gray-500:focus {\n  background-color: var(--p-gray-500) !important;\n}\n.focus\\:bg-gray-600:focus {\n  background-color: var(--p-gray-600) !important;\n}\n.focus\\:bg-gray-700:focus {\n  background-color: var(--p-gray-700) !important;\n}\n.focus\\:bg-gray-800:focus {\n  background-color: var(--p-gray-800) !important;\n}\n.focus\\:bg-gray-900:focus {\n  background-color: var(--p-gray-900) !important;\n}\n\n.hover\\:bg-gray-50:hover {\n  background-color: var(--p-gray-50) !important;\n}\n.hover\\:bg-gray-100:hover {\n  background-color: var(--p-gray-100) !important;\n}\n.hover\\:bg-gray-200:hover {\n  background-color: var(--p-gray-200) !important;\n}\n.hover\\:bg-gray-300:hover {\n  background-color: var(--p-gray-300) !important;\n}\n.hover\\:bg-gray-400:hover {\n  background-color: var(--p-gray-400) !important;\n}\n.hover\\:bg-gray-500:hover {\n  background-color: var(--p-gray-500) !important;\n}\n.hover\\:bg-gray-600:hover {\n  background-color: var(--p-gray-600) !important;\n}\n.hover\\:bg-gray-700:hover {\n  background-color: var(--p-gray-700) !important;\n}\n.hover\\:bg-gray-800:hover {\n  background-color: var(--p-gray-800) !important;\n}\n.hover\\:bg-gray-900:hover {\n  background-color: var(--p-gray-900) !important;\n}\n\n.active\\:bg-gray-50:active {\n  background-color: var(--p-gray-50) !important;\n}\n.active\\:bg-gray-100:active {\n  background-color: var(--p-gray-100) !important;\n}\n.active\\:bg-gray-200:active {\n  background-color: var(--p-gray-200) !important;\n}\n.active\\:bg-gray-300:active {\n  background-color: var(--p-gray-300) !important;\n}\n.active\\:bg-gray-400:active {\n  background-color: var(--p-gray-400) !important;\n}\n.active\\:bg-gray-500:active {\n  background-color: var(--p-gray-500) !important;\n}\n.active\\:bg-gray-600:active {\n  background-color: var(--p-gray-600) !important;\n}\n.active\\:bg-gray-700:active {\n  background-color: var(--p-gray-700) !important;\n}\n.active\\:bg-gray-800:active {\n  background-color: var(--p-gray-800) !important;\n}\n.active\\:bg-gray-900:active {\n  background-color: var(--p-gray-900) !important;\n}\n\n.bg-red-50 {\n  background-color: var(--p-red-50) !important;\n}\n.bg-red-100 {\n  background-color: var(--p-red-100) !important;\n}\n.bg-red-200 {\n  background-color: var(--p-red-200) !important;\n}\n.bg-red-300 {\n  background-color: var(--p-red-300) !important;\n}\n.bg-red-400 {\n  background-color: var(--p-red-400) !important;\n}\n.bg-red-500 {\n  background-color: var(--p-red-500) !important;\n}\n.bg-red-600 {\n  background-color: var(--p-red-600) !important;\n}\n.bg-red-700 {\n  background-color: var(--p-red-700) !important;\n}\n.bg-red-800 {\n  background-color: var(--p-red-800) !important;\n}\n.bg-red-900 {\n  background-color: var(--p-red-900) !important;\n}\n\n.focus\\:bg-red-50:focus {\n  background-color: var(--p-red-50) !important;\n}\n.focus\\:bg-red-100:focus {\n  background-color: var(--p-red-100) !important;\n}\n.focus\\:bg-red-200:focus {\n  background-color: var(--p-red-200) !important;\n}\n.focus\\:bg-red-300:focus {\n  background-color: var(--p-red-300) !important;\n}\n.focus\\:bg-red-400:focus {\n  background-color: var(--p-red-400) !important;\n}\n.focus\\:bg-red-500:focus {\n  background-color: var(--p-red-500) !important;\n}\n.focus\\:bg-red-600:focus {\n  background-color: var(--p-red-600) !important;\n}\n.focus\\:bg-red-700:focus {\n  background-color: var(--p-red-700) !important;\n}\n.focus\\:bg-red-800:focus {\n  background-color: var(--p-red-800) !important;\n}\n.focus\\:bg-red-900:focus {\n  background-color: var(--p-red-900) !important;\n}\n\n.hover\\:bg-red-50:hover {\n  background-color: var(--p-red-50) !important;\n}\n.hover\\:bg-red-100:hover {\n  background-color: var(--p-red-100) !important;\n}\n.hover\\:bg-red-200:hover {\n  background-color: var(--p-red-200) !important;\n}\n.hover\\:bg-red-300:hover {\n  background-color: var(--p-red-300) !important;\n}\n.hover\\:bg-red-400:hover {\n  background-color: var(--p-red-400) !important;\n}\n.hover\\:bg-red-500:hover {\n  background-color: var(--p-red-500) !important;\n}\n.hover\\:bg-red-600:hover {\n  background-color: var(--p-red-600) !important;\n}\n.hover\\:bg-red-700:hover {\n  background-color: var(--p-red-700) !important;\n}\n.hover\\:bg-red-800:hover {\n  background-color: var(--p-red-800) !important;\n}\n.hover\\:bg-red-900:hover {\n  background-color: var(--p-red-900) !important;\n}\n\n.active\\:bg-red-50:active {\n  background-color: var(--p-red-50) !important;\n}\n.active\\:bg-red-100:active {\n  background-color: var(--p-red-100) !important;\n}\n.active\\:bg-red-200:active {\n  background-color: var(--p-red-200) !important;\n}\n.active\\:bg-red-300:active {\n  background-color: var(--p-red-300) !important;\n}\n.active\\:bg-red-400:active {\n  background-color: var(--p-red-400) !important;\n}\n.active\\:bg-red-500:active {\n  background-color: var(--p-red-500) !important;\n}\n.active\\:bg-red-600:active {\n  background-color: var(--p-red-600) !important;\n}\n.active\\:bg-red-700:active {\n  background-color: var(--p-red-700) !important;\n}\n.active\\:bg-red-800:active {\n  background-color: var(--p-red-800) !important;\n}\n.active\\:bg-red-900:active {\n  background-color: var(--p-red-900) !important;\n}\n\n.bg-primary-50 {\n  background-color: var(--p-primary-50) !important;\n}\n.bg-primary-100 {\n  background-color: var(--p-primary-100) !important;\n}\n.bg-primary-200 {\n  background-color: var(--p-primary-200) !important;\n}\n.bg-primary-300 {\n  background-color: var(--p-primary-300) !important;\n}\n.bg-primary-400 {\n  background-color: var(--p-primary-400) !important;\n}\n.bg-primary-500 {\n  background-color: var(--p-primary-500) !important;\n}\n.bg-primary-600 {\n  background-color: var(--p-primary-600) !important;\n}\n.bg-primary-700 {\n  background-color: var(--p-primary-700) !important;\n}\n.bg-primary-800 {\n  background-color: var(--p-primary-800) !important;\n}\n.bg-primary-900 {\n  background-color: var(--p-primary-900) !important;\n}\n\n.focus\\:bg-primary-50:focus {\n  background-color: var(--p-primary-50) !important;\n}\n.focus\\:bg-primary-100:focus {\n  background-color: var(--p-primary-100) !important;\n}\n.focus\\:bg-primary-200:focus {\n  background-color: var(--p-primary-200) !important;\n}\n.focus\\:bg-primary-300:focus {\n  background-color: var(--p-primary-300) !important;\n}\n.focus\\:bg-primary-400:focus {\n  background-color: var(--p-primary-400) !important;\n}\n.focus\\:bg-primary-500:focus {\n  background-color: var(--p-primary-500) !important;\n}\n.focus\\:bg-primary-600:focus {\n  background-color: var(--p-primary-600) !important;\n}\n.focus\\:bg-primary-700:focus {\n  background-color: var(--p-primary-700) !important;\n}\n.focus\\:bg-primary-800:focus {\n  background-color: var(--p-primary-800) !important;\n}\n.focus\\:bg-primary-900:focus {\n  background-color: var(--p-primary-900) !important;\n}\n\n.hover\\:bg-primary-50:hover {\n  background-color: var(--p-primary-50) !important;\n}\n.hover\\:bg-primary-100:hover {\n  background-color: var(--p-primary-100) !important;\n}\n.hover\\:bg-primary-200:hover {\n  background-color: var(--p-primary-200) !important;\n}\n.hover\\:bg-primary-300:hover {\n  background-color: var(--p-primary-300) !important;\n}\n.hover\\:bg-primary-400:hover {\n  background-color: var(--p-primary-400) !important;\n}\n.hover\\:bg-primary-500:hover {\n  background-color: var(--p-primary-500) !important;\n}\n.hover\\:bg-primary-600:hover {\n  background-color: var(--p-primary-600) !important;\n}\n.hover\\:bg-primary-700:hover {\n  background-color: var(--p-primary-700) !important;\n}\n.hover\\:bg-primary-800:hover {\n  background-color: var(--p-primary-800) !important;\n}\n.hover\\:bg-primary-900:hover {\n  background-color: var(--p-primary-900) !important;\n}\n\n.active\\:bg-primary-50:active {\n  background-color: var(--p-primary-50) !important;\n}\n.active\\:bg-primary-100:active {\n  background-color: var(--p-primary-100) !important;\n}\n.active\\:bg-primary-200:active {\n  background-color: var(--p-primary-200) !important;\n}\n.active\\:bg-primary-300:active {\n  background-color: var(--p-primary-300) !important;\n}\n.active\\:bg-primary-400:active {\n  background-color: var(--p-primary-400) !important;\n}\n.active\\:bg-primary-500:active {\n  background-color: var(--p-primary-500) !important;\n}\n.active\\:bg-primary-600:active {\n  background-color: var(--p-primary-600) !important;\n}\n.active\\:bg-primary-700:active {\n  background-color: var(--p-primary-700) !important;\n}\n.active\\:bg-primary-800:active {\n  background-color: var(--p-primary-800) !important;\n}\n.active\\:bg-primary-900:active {\n  background-color: var(--p-primary-900) !important;\n}\n\n.border-blue-50 {\n  border-color: var(--p-blue-50) !important;\n}\n.border-blue-100 {\n  border-color: var(--p-blue-100) !important;\n}\n.border-blue-200 {\n  border-color: var(--p-blue-200) !important;\n}\n.border-blue-300 {\n  border-color: var(--p-blue-300) !important;\n}\n.border-blue-400 {\n  border-color: var(--p-blue-400) !important;\n}\n.border-blue-500 {\n  border-color: var(--p-blue-500) !important;\n}\n.border-blue-600 {\n  border-color: var(--p-blue-600) !important;\n}\n.border-blue-700 {\n  border-color: var(--p-blue-700) !important;\n}\n.border-blue-800 {\n  border-color: var(--p-blue-800) !important;\n}\n.border-blue-900 {\n  border-color: var(--p-blue-900) !important;\n}\n\n.focus\\:border-blue-50:focus {\n  border-color: var(--p-blue-50) !important;\n}\n.focus\\:border-blue-100:focus {\n  border-color: var(--p-blue-100) !important;\n}\n.focus\\:border-blue-200:focus {\n  border-color: var(--p-blue-200) !important;\n}\n.focus\\:border-blue-300:focus {\n  border-color: var(--p-blue-300) !important;\n}\n.focus\\:border-blue-400:focus {\n  border-color: var(--p-blue-400) !important;\n}\n.focus\\:border-blue-500:focus {\n  border-color: var(--p-blue-500) !important;\n}\n.focus\\:border-blue-600:focus {\n  border-color: var(--p-blue-600) !important;\n}\n.focus\\:border-blue-700:focus {\n  border-color: var(--p-blue-700) !important;\n}\n.focus\\:border-blue-800:focus {\n  border-color: var(--p-blue-800) !important;\n}\n.focus\\:border-blue-900:focus {\n  border-color: var(--p-blue-900) !important;\n}\n\n.hover\\:border-blue-50:hover {\n  border-color: var(--p-blue-50) !important;\n}\n.hover\\:border-blue-100:hover {\n  border-color: var(--p-blue-100) !important;\n}\n.hover\\:border-blue-200:hover {\n  border-color: var(--p-blue-200) !important;\n}\n.hover\\:border-blue-300:hover {\n  border-color: var(--p-blue-300) !important;\n}\n.hover\\:border-blue-400:hover {\n  border-color: var(--p-blue-400) !important;\n}\n.hover\\:border-blue-500:hover {\n  border-color: var(--p-blue-500) !important;\n}\n.hover\\:border-blue-600:hover {\n  border-color: var(--p-blue-600) !important;\n}\n.hover\\:border-blue-700:hover {\n  border-color: var(--p-blue-700) !important;\n}\n.hover\\:border-blue-800:hover {\n  border-color: var(--p-blue-800) !important;\n}\n.hover\\:border-blue-900:hover {\n  border-color: var(--p-blue-900) !important;\n}\n\n.active\\:border-blue-50:active {\n  border-color: var(--p-blue-50) !important;\n}\n.active\\:border-blue-100:active {\n  border-color: var(--p-blue-100) !important;\n}\n.active\\:border-blue-200:active {\n  border-color: var(--p-blue-200) !important;\n}\n.active\\:border-blue-300:active {\n  border-color: var(--p-blue-300) !important;\n}\n.active\\:border-blue-400:active {\n  border-color: var(--p-blue-400) !important;\n}\n.active\\:border-blue-500:active {\n  border-color: var(--p-blue-500) !important;\n}\n.active\\:border-blue-600:active {\n  border-color: var(--p-blue-600) !important;\n}\n.active\\:border-blue-700:active {\n  border-color: var(--p-blue-700) !important;\n}\n.active\\:border-blue-800:active {\n  border-color: var(--p-blue-800) !important;\n}\n.active\\:border-blue-900:active {\n  border-color: var(--p-blue-900) !important;\n}\n\n.border-green-50 {\n  border-color: var(--p-green-50) !important;\n}\n.border-green-100 {\n  border-color: var(--p-green-100) !important;\n}\n.border-green-200 {\n  border-color: var(--p-green-200) !important;\n}\n.border-green-300 {\n  border-color: var(--p-green-300) !important;\n}\n.border-green-400 {\n  border-color: var(--p-green-400) !important;\n}\n.border-green-500 {\n  border-color: var(--p-green-500) !important;\n}\n.border-green-600 {\n  border-color: var(--p-green-600) !important;\n}\n.border-green-700 {\n  border-color: var(--p-green-700) !important;\n}\n.border-green-800 {\n  border-color: var(--p-green-800) !important;\n}\n.border-green-900 {\n  border-color: var(--p-green-900) !important;\n}\n\n.focus\\:border-green-50:focus {\n  border-color: var(--p-green-50) !important;\n}\n.focus\\:border-green-100:focus {\n  border-color: var(--p-green-100) !important;\n}\n.focus\\:border-green-200:focus {\n  border-color: var(--p-green-200) !important;\n}\n.focus\\:border-green-300:focus {\n  border-color: var(--p-green-300) !important;\n}\n.focus\\:border-green-400:focus {\n  border-color: var(--p-green-400) !important;\n}\n.focus\\:border-green-500:focus {\n  border-color: var(--p-green-500) !important;\n}\n.focus\\:border-green-600:focus {\n  border-color: var(--p-green-600) !important;\n}\n.focus\\:border-green-700:focus {\n  border-color: var(--p-green-700) !important;\n}\n.focus\\:border-green-800:focus {\n  border-color: var(--p-green-800) !important;\n}\n.focus\\:border-green-900:focus {\n  border-color: var(--p-green-900) !important;\n}\n\n.hover\\:border-green-50:hover {\n  border-color: var(--p-green-50) !important;\n}\n.hover\\:border-green-100:hover {\n  border-color: var(--p-green-100) !important;\n}\n.hover\\:border-green-200:hover {\n  border-color: var(--p-green-200) !important;\n}\n.hover\\:border-green-300:hover {\n  border-color: var(--p-green-300) !important;\n}\n.hover\\:border-green-400:hover {\n  border-color: var(--p-green-400) !important;\n}\n.hover\\:border-green-500:hover {\n  border-color: var(--p-green-500) !important;\n}\n.hover\\:border-green-600:hover {\n  border-color: var(--p-green-600) !important;\n}\n.hover\\:border-green-700:hover {\n  border-color: var(--p-green-700) !important;\n}\n.hover\\:border-green-800:hover {\n  border-color: var(--p-green-800) !important;\n}\n.hover\\:border-green-900:hover {\n  border-color: var(--p-green-900) !important;\n}\n\n.active\\:border-green-50:active {\n  border-color: var(--p-green-50) !important;\n}\n.active\\:border-green-100:active {\n  border-color: var(--p-green-100) !important;\n}\n.active\\:border-green-200:active {\n  border-color: var(--p-green-200) !important;\n}\n.active\\:border-green-300:active {\n  border-color: var(--p-green-300) !important;\n}\n.active\\:border-green-400:active {\n  border-color: var(--p-green-400) !important;\n}\n.active\\:border-green-500:active {\n  border-color: var(--p-green-500) !important;\n}\n.active\\:border-green-600:active {\n  border-color: var(--p-green-600) !important;\n}\n.active\\:border-green-700:active {\n  border-color: var(--p-green-700) !important;\n}\n.active\\:border-green-800:active {\n  border-color: var(--p-green-800) !important;\n}\n.active\\:border-green-900:active {\n  border-color: var(--p-green-900) !important;\n}\n\n.border-yellow-50 {\n  border-color: var(--p-yellow-50) !important;\n}\n.border-yellow-100 {\n  border-color: var(--p-yellow-100) !important;\n}\n.border-yellow-200 {\n  border-color: var(--p-yellow-200) !important;\n}\n.border-yellow-300 {\n  border-color: var(--p-yellow-300) !important;\n}\n.border-yellow-400 {\n  border-color: var(--p-yellow-400) !important;\n}\n.border-yellow-500 {\n  border-color: var(--p-yellow-500) !important;\n}\n.border-yellow-600 {\n  border-color: var(--p-yellow-600) !important;\n}\n.border-yellow-700 {\n  border-color: var(--p-yellow-700) !important;\n}\n.border-yellow-800 {\n  border-color: var(--p-yellow-800) !important;\n}\n.border-yellow-900 {\n  border-color: var(--p-yellow-900) !important;\n}\n\n.focus\\:border-yellow-50:focus {\n  border-color: var(--p-yellow-50) !important;\n}\n.focus\\:border-yellow-100:focus {\n  border-color: var(--p-yellow-100) !important;\n}\n.focus\\:border-yellow-200:focus {\n  border-color: var(--p-yellow-200) !important;\n}\n.focus\\:border-yellow-300:focus {\n  border-color: var(--p-yellow-300) !important;\n}\n.focus\\:border-yellow-400:focus {\n  border-color: var(--p-yellow-400) !important;\n}\n.focus\\:border-yellow-500:focus {\n  border-color: var(--p-yellow-500) !important;\n}\n.focus\\:border-yellow-600:focus {\n  border-color: var(--p-yellow-600) !important;\n}\n.focus\\:border-yellow-700:focus {\n  border-color: var(--p-yellow-700) !important;\n}\n.focus\\:border-yellow-800:focus {\n  border-color: var(--p-yellow-800) !important;\n}\n.focus\\:border-yellow-900:focus {\n  border-color: var(--p-yellow-900) !important;\n}\n\n.hover\\:border-yellow-50:hover {\n  border-color: var(--p-yellow-50) !important;\n}\n.hover\\:border-yellow-100:hover {\n  border-color: var(--p-yellow-100) !important;\n}\n.hover\\:border-yellow-200:hover {\n  border-color: var(--p-yellow-200) !important;\n}\n.hover\\:border-yellow-300:hover {\n  border-color: var(--p-yellow-300) !important;\n}\n.hover\\:border-yellow-400:hover {\n  border-color: var(--p-yellow-400) !important;\n}\n.hover\\:border-yellow-500:hover {\n  border-color: var(--p-yellow-500) !important;\n}\n.hover\\:border-yellow-600:hover {\n  border-color: var(--p-yellow-600) !important;\n}\n.hover\\:border-yellow-700:hover {\n  border-color: var(--p-yellow-700) !important;\n}\n.hover\\:border-yellow-800:hover {\n  border-color: var(--p-yellow-800) !important;\n}\n.hover\\:border-yellow-900:hover {\n  border-color: var(--p-yellow-900) !important;\n}\n\n.active\\:border-yellow-50:active {\n  border-color: var(--p-yellow-50) !important;\n}\n.active\\:border-yellow-100:active {\n  border-color: var(--p-yellow-100) !important;\n}\n.active\\:border-yellow-200:active {\n  border-color: var(--p-yellow-200) !important;\n}\n.active\\:border-yellow-300:active {\n  border-color: var(--p-yellow-300) !important;\n}\n.active\\:border-yellow-400:active {\n  border-color: var(--p-yellow-400) !important;\n}\n.active\\:border-yellow-500:active {\n  border-color: var(--p-yellow-500) !important;\n}\n.active\\:border-yellow-600:active {\n  border-color: var(--p-yellow-600) !important;\n}\n.active\\:border-yellow-700:active {\n  border-color: var(--p-yellow-700) !important;\n}\n.active\\:border-yellow-800:active {\n  border-color: var(--p-yellow-800) !important;\n}\n.active\\:border-yellow-900:active {\n  border-color: var(--p-yellow-900) !important;\n}\n\n.border-cyan-50 {\n  border-color: var(--p-cyan-50) !important;\n}\n.border-cyan-100 {\n  border-color: var(--p-cyan-100) !important;\n}\n.border-cyan-200 {\n  border-color: var(--p-cyan-200) !important;\n}\n.border-cyan-300 {\n  border-color: var(--p-cyan-300) !important;\n}\n.border-cyan-400 {\n  border-color: var(--p-cyan-400) !important;\n}\n.border-cyan-500 {\n  border-color: var(--p-cyan-500) !important;\n}\n.border-cyan-600 {\n  border-color: var(--p-cyan-600) !important;\n}\n.border-cyan-700 {\n  border-color: var(--p-cyan-700) !important;\n}\n.border-cyan-800 {\n  border-color: var(--p-cyan-800) !important;\n}\n.border-cyan-900 {\n  border-color: var(--p-cyan-900) !important;\n}\n\n.focus\\:border-cyan-50:focus {\n  border-color: var(--p-cyan-50) !important;\n}\n.focus\\:border-cyan-100:focus {\n  border-color: var(--p-cyan-100) !important;\n}\n.focus\\:border-cyan-200:focus {\n  border-color: var(--p-cyan-200) !important;\n}\n.focus\\:border-cyan-300:focus {\n  border-color: var(--p-cyan-300) !important;\n}\n.focus\\:border-cyan-400:focus {\n  border-color: var(--p-cyan-400) !important;\n}\n.focus\\:border-cyan-500:focus {\n  border-color: var(--p-cyan-500) !important;\n}\n.focus\\:border-cyan-600:focus {\n  border-color: var(--p-cyan-600) !important;\n}\n.focus\\:border-cyan-700:focus {\n  border-color: var(--p-cyan-700) !important;\n}\n.focus\\:border-cyan-800:focus {\n  border-color: var(--p-cyan-800) !important;\n}\n.focus\\:border-cyan-900:focus {\n  border-color: var(--p-cyan-900) !important;\n}\n\n.hover\\:border-cyan-50:hover {\n  border-color: var(--p-cyan-50) !important;\n}\n.hover\\:border-cyan-100:hover {\n  border-color: var(--p-cyan-100) !important;\n}\n.hover\\:border-cyan-200:hover {\n  border-color: var(--p-cyan-200) !important;\n}\n.hover\\:border-cyan-300:hover {\n  border-color: var(--p-cyan-300) !important;\n}\n.hover\\:border-cyan-400:hover {\n  border-color: var(--p-cyan-400) !important;\n}\n.hover\\:border-cyan-500:hover {\n  border-color: var(--p-cyan-500) !important;\n}\n.hover\\:border-cyan-600:hover {\n  border-color: var(--p-cyan-600) !important;\n}\n.hover\\:border-cyan-700:hover {\n  border-color: var(--p-cyan-700) !important;\n}\n.hover\\:border-cyan-800:hover {\n  border-color: var(--p-cyan-800) !important;\n}\n.hover\\:border-cyan-900:hover {\n  border-color: var(--p-cyan-900) !important;\n}\n\n.active\\:border-cyan-50:active {\n  border-color: var(--p-cyan-50) !important;\n}\n.active\\:border-cyan-100:active {\n  border-color: var(--p-cyan-100) !important;\n}\n.active\\:border-cyan-200:active {\n  border-color: var(--p-cyan-200) !important;\n}\n.active\\:border-cyan-300:active {\n  border-color: var(--p-cyan-300) !important;\n}\n.active\\:border-cyan-400:active {\n  border-color: var(--p-cyan-400) !important;\n}\n.active\\:border-cyan-500:active {\n  border-color: var(--p-cyan-500) !important;\n}\n.active\\:border-cyan-600:active {\n  border-color: var(--p-cyan-600) !important;\n}\n.active\\:border-cyan-700:active {\n  border-color: var(--p-cyan-700) !important;\n}\n.active\\:border-cyan-800:active {\n  border-color: var(--p-cyan-800) !important;\n}\n.active\\:border-cyan-900:active {\n  border-color: var(--p-cyan-900) !important;\n}\n\n.border-pink-50 {\n  border-color: var(--p-pink-50) !important;\n}\n.border-pink-100 {\n  border-color: var(--p-pink-100) !important;\n}\n.border-pink-200 {\n  border-color: var(--p-pink-200) !important;\n}\n.border-pink-300 {\n  border-color: var(--p-pink-300) !important;\n}\n.border-pink-400 {\n  border-color: var(--p-pink-400) !important;\n}\n.border-pink-500 {\n  border-color: var(--p-pink-500) !important;\n}\n.border-pink-600 {\n  border-color: var(--p-pink-600) !important;\n}\n.border-pink-700 {\n  border-color: var(--p-pink-700) !important;\n}\n.border-pink-800 {\n  border-color: var(--p-pink-800) !important;\n}\n.border-pink-900 {\n  border-color: var(--p-pink-900) !important;\n}\n\n.focus\\:border-pink-50:focus {\n  border-color: var(--p-pink-50) !important;\n}\n.focus\\:border-pink-100:focus {\n  border-color: var(--p-pink-100) !important;\n}\n.focus\\:border-pink-200:focus {\n  border-color: var(--p-pink-200) !important;\n}\n.focus\\:border-pink-300:focus {\n  border-color: var(--p-pink-300) !important;\n}\n.focus\\:border-pink-400:focus {\n  border-color: var(--p-pink-400) !important;\n}\n.focus\\:border-pink-500:focus {\n  border-color: var(--p-pink-500) !important;\n}\n.focus\\:border-pink-600:focus {\n  border-color: var(--p-pink-600) !important;\n}\n.focus\\:border-pink-700:focus {\n  border-color: var(--p-pink-700) !important;\n}\n.focus\\:border-pink-800:focus {\n  border-color: var(--p-pink-800) !important;\n}\n.focus\\:border-pink-900:focus {\n  border-color: var(--p-pink-900) !important;\n}\n\n.hover\\:border-pink-50:hover {\n  border-color: var(--p-pink-50) !important;\n}\n.hover\\:border-pink-100:hover {\n  border-color: var(--p-pink-100) !important;\n}\n.hover\\:border-pink-200:hover {\n  border-color: var(--p-pink-200) !important;\n}\n.hover\\:border-pink-300:hover {\n  border-color: var(--p-pink-300) !important;\n}\n.hover\\:border-pink-400:hover {\n  border-color: var(--p-pink-400) !important;\n}\n.hover\\:border-pink-500:hover {\n  border-color: var(--p-pink-500) !important;\n}\n.hover\\:border-pink-600:hover {\n  border-color: var(--p-pink-600) !important;\n}\n.hover\\:border-pink-700:hover {\n  border-color: var(--p-pink-700) !important;\n}\n.hover\\:border-pink-800:hover {\n  border-color: var(--p-pink-800) !important;\n}\n.hover\\:border-pink-900:hover {\n  border-color: var(--p-pink-900) !important;\n}\n\n.active\\:border-pink-50:active {\n  border-color: var(--p-pink-50) !important;\n}\n.active\\:border-pink-100:active {\n  border-color: var(--p-pink-100) !important;\n}\n.active\\:border-pink-200:active {\n  border-color: var(--p-pink-200) !important;\n}\n.active\\:border-pink-300:active {\n  border-color: var(--p-pink-300) !important;\n}\n.active\\:border-pink-400:active {\n  border-color: var(--p-pink-400) !important;\n}\n.active\\:border-pink-500:active {\n  border-color: var(--p-pink-500) !important;\n}\n.active\\:border-pink-600:active {\n  border-color: var(--p-pink-600) !important;\n}\n.active\\:border-pink-700:active {\n  border-color: var(--p-pink-700) !important;\n}\n.active\\:border-pink-800:active {\n  border-color: var(--p-pink-800) !important;\n}\n.active\\:border-pink-900:active {\n  border-color: var(--p-pink-900) !important;\n}\n\n.border-indigo-50 {\n  border-color: var(--p-indigo-50) !important;\n}\n.border-indigo-100 {\n  border-color: var(--p-indigo-100) !important;\n}\n.border-indigo-200 {\n  border-color: var(--p-indigo-200) !important;\n}\n.border-indigo-300 {\n  border-color: var(--p-indigo-300) !important;\n}\n.border-indigo-400 {\n  border-color: var(--p-indigo-400) !important;\n}\n.border-indigo-500 {\n  border-color: var(--p-indigo-500) !important;\n}\n.border-indigo-600 {\n  border-color: var(--p-indigo-600) !important;\n}\n.border-indigo-700 {\n  border-color: var(--p-indigo-700) !important;\n}\n.border-indigo-800 {\n  border-color: var(--p-indigo-800) !important;\n}\n.border-indigo-900 {\n  border-color: var(--p-indigo-900) !important;\n}\n\n.focus\\:border-indigo-50:focus {\n  border-color: var(--p-indigo-50) !important;\n}\n.focus\\:border-indigo-100:focus {\n  border-color: var(--p-indigo-100) !important;\n}\n.focus\\:border-indigo-200:focus {\n  border-color: var(--p-indigo-200) !important;\n}\n.focus\\:border-indigo-300:focus {\n  border-color: var(--p-indigo-300) !important;\n}\n.focus\\:border-indigo-400:focus {\n  border-color: var(--p-indigo-400) !important;\n}\n.focus\\:border-indigo-500:focus {\n  border-color: var(--p-indigo-500) !important;\n}\n.focus\\:border-indigo-600:focus {\n  border-color: var(--p-indigo-600) !important;\n}\n.focus\\:border-indigo-700:focus {\n  border-color: var(--p-indigo-700) !important;\n}\n.focus\\:border-indigo-800:focus {\n  border-color: var(--p-indigo-800) !important;\n}\n.focus\\:border-indigo-900:focus {\n  border-color: var(--p-indigo-900) !important;\n}\n\n.hover\\:border-indigo-50:hover {\n  border-color: var(--p-indigo-50) !important;\n}\n.hover\\:border-indigo-100:hover {\n  border-color: var(--p-indigo-100) !important;\n}\n.hover\\:border-indigo-200:hover {\n  border-color: var(--p-indigo-200) !important;\n}\n.hover\\:border-indigo-300:hover {\n  border-color: var(--p-indigo-300) !important;\n}\n.hover\\:border-indigo-400:hover {\n  border-color: var(--p-indigo-400) !important;\n}\n.hover\\:border-indigo-500:hover {\n  border-color: var(--p-indigo-500) !important;\n}\n.hover\\:border-indigo-600:hover {\n  border-color: var(--p-indigo-600) !important;\n}\n.hover\\:border-indigo-700:hover {\n  border-color: var(--p-indigo-700) !important;\n}\n.hover\\:border-indigo-800:hover {\n  border-color: var(--p-indigo-800) !important;\n}\n.hover\\:border-indigo-900:hover {\n  border-color: var(--p-indigo-900) !important;\n}\n\n.active\\:border-indigo-50:active {\n  border-color: var(--p-indigo-50) !important;\n}\n.active\\:border-indigo-100:active {\n  border-color: var(--p-indigo-100) !important;\n}\n.active\\:border-indigo-200:active {\n  border-color: var(--p-indigo-200) !important;\n}\n.active\\:border-indigo-300:active {\n  border-color: var(--p-indigo-300) !important;\n}\n.active\\:border-indigo-400:active {\n  border-color: var(--p-indigo-400) !important;\n}\n.active\\:border-indigo-500:active {\n  border-color: var(--p-indigo-500) !important;\n}\n.active\\:border-indigo-600:active {\n  border-color: var(--p-indigo-600) !important;\n}\n.active\\:border-indigo-700:active {\n  border-color: var(--p-indigo-700) !important;\n}\n.active\\:border-indigo-800:active {\n  border-color: var(--p-indigo-800) !important;\n}\n.active\\:border-indigo-900:active {\n  border-color: var(--p-indigo-900) !important;\n}\n\n.border-teal-50 {\n  border-color: var(--p-teal-50) !important;\n}\n.border-teal-100 {\n  border-color: var(--p-teal-100) !important;\n}\n.border-teal-200 {\n  border-color: var(--p-teal-200) !important;\n}\n.border-teal-300 {\n  border-color: var(--p-teal-300) !important;\n}\n.border-teal-400 {\n  border-color: var(--p-teal-400) !important;\n}\n.border-teal-500 {\n  border-color: var(--p-teal-500) !important;\n}\n.border-teal-600 {\n  border-color: var(--p-teal-600) !important;\n}\n.border-teal-700 {\n  border-color: var(--p-teal-700) !important;\n}\n.border-teal-800 {\n  border-color: var(--p-teal-800) !important;\n}\n.border-teal-900 {\n  border-color: var(--p-teal-900) !important;\n}\n\n.focus\\:border-teal-50:focus {\n  border-color: var(--p-teal-50) !important;\n}\n.focus\\:border-teal-100:focus {\n  border-color: var(--p-teal-100) !important;\n}\n.focus\\:border-teal-200:focus {\n  border-color: var(--p-teal-200) !important;\n}\n.focus\\:border-teal-300:focus {\n  border-color: var(--p-teal-300) !important;\n}\n.focus\\:border-teal-400:focus {\n  border-color: var(--p-teal-400) !important;\n}\n.focus\\:border-teal-500:focus {\n  border-color: var(--p-teal-500) !important;\n}\n.focus\\:border-teal-600:focus {\n  border-color: var(--p-teal-600) !important;\n}\n.focus\\:border-teal-700:focus {\n  border-color: var(--p-teal-700) !important;\n}\n.focus\\:border-teal-800:focus {\n  border-color: var(--p-teal-800) !important;\n}\n.focus\\:border-teal-900:focus {\n  border-color: var(--p-teal-900) !important;\n}\n\n.hover\\:border-teal-50:hover {\n  border-color: var(--p-teal-50) !important;\n}\n.hover\\:border-teal-100:hover {\n  border-color: var(--p-teal-100) !important;\n}\n.hover\\:border-teal-200:hover {\n  border-color: var(--p-teal-200) !important;\n}\n.hover\\:border-teal-300:hover {\n  border-color: var(--p-teal-300) !important;\n}\n.hover\\:border-teal-400:hover {\n  border-color: var(--p-teal-400) !important;\n}\n.hover\\:border-teal-500:hover {\n  border-color: var(--p-teal-500) !important;\n}\n.hover\\:border-teal-600:hover {\n  border-color: var(--p-teal-600) !important;\n}\n.hover\\:border-teal-700:hover {\n  border-color: var(--p-teal-700) !important;\n}\n.hover\\:border-teal-800:hover {\n  border-color: var(--p-teal-800) !important;\n}\n.hover\\:border-teal-900:hover {\n  border-color: var(--p-teal-900) !important;\n}\n\n.active\\:border-teal-50:active {\n  border-color: var(--p-teal-50) !important;\n}\n.active\\:border-teal-100:active {\n  border-color: var(--p-teal-100) !important;\n}\n.active\\:border-teal-200:active {\n  border-color: var(--p-teal-200) !important;\n}\n.active\\:border-teal-300:active {\n  border-color: var(--p-teal-300) !important;\n}\n.active\\:border-teal-400:active {\n  border-color: var(--p-teal-400) !important;\n}\n.active\\:border-teal-500:active {\n  border-color: var(--p-teal-500) !important;\n}\n.active\\:border-teal-600:active {\n  border-color: var(--p-teal-600) !important;\n}\n.active\\:border-teal-700:active {\n  border-color: var(--p-teal-700) !important;\n}\n.active\\:border-teal-800:active {\n  border-color: var(--p-teal-800) !important;\n}\n.active\\:border-teal-900:active {\n  border-color: var(--p-teal-900) !important;\n}\n\n.border-orange-50 {\n  border-color: var(--p-orange-50) !important;\n}\n.border-orange-100 {\n  border-color: var(--p-orange-100) !important;\n}\n.border-orange-200 {\n  border-color: var(--p-orange-200) !important;\n}\n.border-orange-300 {\n  border-color: var(--p-orange-300) !important;\n}\n.border-orange-400 {\n  border-color: var(--p-orange-400) !important;\n}\n.border-orange-500 {\n  border-color: var(--p-orange-500) !important;\n}\n.border-orange-600 {\n  border-color: var(--p-orange-600) !important;\n}\n.border-orange-700 {\n  border-color: var(--p-orange-700) !important;\n}\n.border-orange-800 {\n  border-color: var(--p-orange-800) !important;\n}\n.border-orange-900 {\n  border-color: var(--p-orange-900) !important;\n}\n\n.focus\\:border-orange-50:focus {\n  border-color: var(--p-orange-50) !important;\n}\n.focus\\:border-orange-100:focus {\n  border-color: var(--p-orange-100) !important;\n}\n.focus\\:border-orange-200:focus {\n  border-color: var(--p-orange-200) !important;\n}\n.focus\\:border-orange-300:focus {\n  border-color: var(--p-orange-300) !important;\n}\n.focus\\:border-orange-400:focus {\n  border-color: var(--p-orange-400) !important;\n}\n.focus\\:border-orange-500:focus {\n  border-color: var(--p-orange-500) !important;\n}\n.focus\\:border-orange-600:focus {\n  border-color: var(--p-orange-600) !important;\n}\n.focus\\:border-orange-700:focus {\n  border-color: var(--p-orange-700) !important;\n}\n.focus\\:border-orange-800:focus {\n  border-color: var(--p-orange-800) !important;\n}\n.focus\\:border-orange-900:focus {\n  border-color: var(--p-orange-900) !important;\n}\n\n.hover\\:border-orange-50:hover {\n  border-color: var(--p-orange-50) !important;\n}\n.hover\\:border-orange-100:hover {\n  border-color: var(--p-orange-100) !important;\n}\n.hover\\:border-orange-200:hover {\n  border-color: var(--p-orange-200) !important;\n}\n.hover\\:border-orange-300:hover {\n  border-color: var(--p-orange-300) !important;\n}\n.hover\\:border-orange-400:hover {\n  border-color: var(--p-orange-400) !important;\n}\n.hover\\:border-orange-500:hover {\n  border-color: var(--p-orange-500) !important;\n}\n.hover\\:border-orange-600:hover {\n  border-color: var(--p-orange-600) !important;\n}\n.hover\\:border-orange-700:hover {\n  border-color: var(--p-orange-700) !important;\n}\n.hover\\:border-orange-800:hover {\n  border-color: var(--p-orange-800) !important;\n}\n.hover\\:border-orange-900:hover {\n  border-color: var(--p-orange-900) !important;\n}\n\n.active\\:border-orange-50:active {\n  border-color: var(--p-orange-50) !important;\n}\n.active\\:border-orange-100:active {\n  border-color: var(--p-orange-100) !important;\n}\n.active\\:border-orange-200:active {\n  border-color: var(--p-orange-200) !important;\n}\n.active\\:border-orange-300:active {\n  border-color: var(--p-orange-300) !important;\n}\n.active\\:border-orange-400:active {\n  border-color: var(--p-orange-400) !important;\n}\n.active\\:border-orange-500:active {\n  border-color: var(--p-orange-500) !important;\n}\n.active\\:border-orange-600:active {\n  border-color: var(--p-orange-600) !important;\n}\n.active\\:border-orange-700:active {\n  border-color: var(--p-orange-700) !important;\n}\n.active\\:border-orange-800:active {\n  border-color: var(--p-orange-800) !important;\n}\n.active\\:border-orange-900:active {\n  border-color: var(--p-orange-900) !important;\n}\n\n.border-bluegray-50 {\n  border-color: var(--p-bluegray-50) !important;\n}\n.border-bluegray-100 {\n  border-color: var(--p-bluegray-100) !important;\n}\n.border-bluegray-200 {\n  border-color: var(--p-bluegray-200) !important;\n}\n.border-bluegray-300 {\n  border-color: var(--p-bluegray-300) !important;\n}\n.border-bluegray-400 {\n  border-color: var(--p-bluegray-400) !important;\n}\n.border-bluegray-500 {\n  border-color: var(--p-bluegray-500) !important;\n}\n.border-bluegray-600 {\n  border-color: var(--p-bluegray-600) !important;\n}\n.border-bluegray-700 {\n  border-color: var(--p-bluegray-700) !important;\n}\n.border-bluegray-800 {\n  border-color: var(--p-bluegray-800) !important;\n}\n.border-bluegray-900 {\n  border-color: var(--p-bluegray-900) !important;\n}\n\n.focus\\:border-bluegray-50:focus {\n  border-color: var(--p-bluegray-50) !important;\n}\n.focus\\:border-bluegray-100:focus {\n  border-color: var(--p-bluegray-100) !important;\n}\n.focus\\:border-bluegray-200:focus {\n  border-color: var(--p-bluegray-200) !important;\n}\n.focus\\:border-bluegray-300:focus {\n  border-color: var(--p-bluegray-300) !important;\n}\n.focus\\:border-bluegray-400:focus {\n  border-color: var(--p-bluegray-400) !important;\n}\n.focus\\:border-bluegray-500:focus {\n  border-color: var(--p-bluegray-500) !important;\n}\n.focus\\:border-bluegray-600:focus {\n  border-color: var(--p-bluegray-600) !important;\n}\n.focus\\:border-bluegray-700:focus {\n  border-color: var(--p-bluegray-700) !important;\n}\n.focus\\:border-bluegray-800:focus {\n  border-color: var(--p-bluegray-800) !important;\n}\n.focus\\:border-bluegray-900:focus {\n  border-color: var(--p-bluegray-900) !important;\n}\n\n.hover\\:border-bluegray-50:hover {\n  border-color: var(--p-bluegray-50) !important;\n}\n.hover\\:border-bluegray-100:hover {\n  border-color: var(--p-bluegray-100) !important;\n}\n.hover\\:border-bluegray-200:hover {\n  border-color: var(--p-bluegray-200) !important;\n}\n.hover\\:border-bluegray-300:hover {\n  border-color: var(--p-bluegray-300) !important;\n}\n.hover\\:border-bluegray-400:hover {\n  border-color: var(--p-bluegray-400) !important;\n}\n.hover\\:border-bluegray-500:hover {\n  border-color: var(--p-bluegray-500) !important;\n}\n.hover\\:border-bluegray-600:hover {\n  border-color: var(--p-bluegray-600) !important;\n}\n.hover\\:border-bluegray-700:hover {\n  border-color: var(--p-bluegray-700) !important;\n}\n.hover\\:border-bluegray-800:hover {\n  border-color: var(--p-bluegray-800) !important;\n}\n.hover\\:border-bluegray-900:hover {\n  border-color: var(--p-bluegray-900) !important;\n}\n\n.active\\:border-bluegray-50:active {\n  border-color: var(--p-bluegray-50) !important;\n}\n.active\\:border-bluegray-100:active {\n  border-color: var(--p-bluegray-100) !important;\n}\n.active\\:border-bluegray-200:active {\n  border-color: var(--p-bluegray-200) !important;\n}\n.active\\:border-bluegray-300:active {\n  border-color: var(--p-bluegray-300) !important;\n}\n.active\\:border-bluegray-400:active {\n  border-color: var(--p-bluegray-400) !important;\n}\n.active\\:border-bluegray-500:active {\n  border-color: var(--p-bluegray-500) !important;\n}\n.active\\:border-bluegray-600:active {\n  border-color: var(--p-bluegray-600) !important;\n}\n.active\\:border-bluegray-700:active {\n  border-color: var(--p-bluegray-700) !important;\n}\n.active\\:border-bluegray-800:active {\n  border-color: var(--p-bluegray-800) !important;\n}\n.active\\:border-bluegray-900:active {\n  border-color: var(--p-bluegray-900) !important;\n}\n\n.border-purple-50 {\n  border-color: var(--p-purple-50) !important;\n}\n.border-purple-100 {\n  border-color: var(--p-purple-100) !important;\n}\n.border-purple-200 {\n  border-color: var(--p-purple-200) !important;\n}\n.border-purple-300 {\n  border-color: var(--p-purple-300) !important;\n}\n.border-purple-400 {\n  border-color: var(--p-purple-400) !important;\n}\n.border-purple-500 {\n  border-color: var(--p-purple-500) !important;\n}\n.border-purple-600 {\n  border-color: var(--p-purple-600) !important;\n}\n.border-purple-700 {\n  border-color: var(--p-purple-700) !important;\n}\n.border-purple-800 {\n  border-color: var(--p-purple-800) !important;\n}\n.border-purple-900 {\n  border-color: var(--p-purple-900) !important;\n}\n\n.focus\\:border-purple-50:focus {\n  border-color: var(--p-purple-50) !important;\n}\n.focus\\:border-purple-100:focus {\n  border-color: var(--p-purple-100) !important;\n}\n.focus\\:border-purple-200:focus {\n  border-color: var(--p-purple-200) !important;\n}\n.focus\\:border-purple-300:focus {\n  border-color: var(--p-purple-300) !important;\n}\n.focus\\:border-purple-400:focus {\n  border-color: var(--p-purple-400) !important;\n}\n.focus\\:border-purple-500:focus {\n  border-color: var(--p-purple-500) !important;\n}\n.focus\\:border-purple-600:focus {\n  border-color: var(--p-purple-600) !important;\n}\n.focus\\:border-purple-700:focus {\n  border-color: var(--p-purple-700) !important;\n}\n.focus\\:border-purple-800:focus {\n  border-color: var(--p-purple-800) !important;\n}\n.focus\\:border-purple-900:focus {\n  border-color: var(--p-purple-900) !important;\n}\n\n.hover\\:border-purple-50:hover {\n  border-color: var(--p-purple-50) !important;\n}\n.hover\\:border-purple-100:hover {\n  border-color: var(--p-purple-100) !important;\n}\n.hover\\:border-purple-200:hover {\n  border-color: var(--p-purple-200) !important;\n}\n.hover\\:border-purple-300:hover {\n  border-color: var(--p-purple-300) !important;\n}\n.hover\\:border-purple-400:hover {\n  border-color: var(--p-purple-400) !important;\n}\n.hover\\:border-purple-500:hover {\n  border-color: var(--p-purple-500) !important;\n}\n.hover\\:border-purple-600:hover {\n  border-color: var(--p-purple-600) !important;\n}\n.hover\\:border-purple-700:hover {\n  border-color: var(--p-purple-700) !important;\n}\n.hover\\:border-purple-800:hover {\n  border-color: var(--p-purple-800) !important;\n}\n.hover\\:border-purple-900:hover {\n  border-color: var(--p-purple-900) !important;\n}\n\n.active\\:border-purple-50:active {\n  border-color: var(--p-purple-50) !important;\n}\n.active\\:border-purple-100:active {\n  border-color: var(--p-purple-100) !important;\n}\n.active\\:border-purple-200:active {\n  border-color: var(--p-purple-200) !important;\n}\n.active\\:border-purple-300:active {\n  border-color: var(--p-purple-300) !important;\n}\n.active\\:border-purple-400:active {\n  border-color: var(--p-purple-400) !important;\n}\n.active\\:border-purple-500:active {\n  border-color: var(--p-purple-500) !important;\n}\n.active\\:border-purple-600:active {\n  border-color: var(--p-purple-600) !important;\n}\n.active\\:border-purple-700:active {\n  border-color: var(--p-purple-700) !important;\n}\n.active\\:border-purple-800:active {\n  border-color: var(--p-purple-800) !important;\n}\n.active\\:border-purple-900:active {\n  border-color: var(--p-purple-900) !important;\n}\n\n.border-gray-50 {\n  border-color: var(--p-gray-50) !important;\n}\n.border-gray-100 {\n  border-color: var(--p-gray-100) !important;\n}\n.border-gray-200 {\n  border-color: var(--p-gray-200) !important;\n}\n.border-gray-300 {\n  border-color: var(--p-gray-300) !important;\n}\n.border-gray-400 {\n  border-color: var(--p-gray-400) !important;\n}\n.border-gray-500 {\n  border-color: var(--p-gray-500) !important;\n}\n.border-gray-600 {\n  border-color: var(--p-gray-600) !important;\n}\n.border-gray-700 {\n  border-color: var(--p-gray-700) !important;\n}\n.border-gray-800 {\n  border-color: var(--p-gray-800) !important;\n}\n.border-gray-900 {\n  border-color: var(--p-gray-900) !important;\n}\n\n.focus\\:border-gray-50:focus {\n  border-color: var(--p-gray-50) !important;\n}\n.focus\\:border-gray-100:focus {\n  border-color: var(--p-gray-100) !important;\n}\n.focus\\:border-gray-200:focus {\n  border-color: var(--p-gray-200) !important;\n}\n.focus\\:border-gray-300:focus {\n  border-color: var(--p-gray-300) !important;\n}\n.focus\\:border-gray-400:focus {\n  border-color: var(--p-gray-400) !important;\n}\n.focus\\:border-gray-500:focus {\n  border-color: var(--p-gray-500) !important;\n}\n.focus\\:border-gray-600:focus {\n  border-color: var(--p-gray-600) !important;\n}\n.focus\\:border-gray-700:focus {\n  border-color: var(--p-gray-700) !important;\n}\n.focus\\:border-gray-800:focus {\n  border-color: var(--p-gray-800) !important;\n}\n.focus\\:border-gray-900:focus {\n  border-color: var(--p-gray-900) !important;\n}\n\n.hover\\:border-gray-50:hover {\n  border-color: var(--p-gray-50) !important;\n}\n.hover\\:border-gray-100:hover {\n  border-color: var(--p-gray-100) !important;\n}\n.hover\\:border-gray-200:hover {\n  border-color: var(--p-gray-200) !important;\n}\n.hover\\:border-gray-300:hover {\n  border-color: var(--p-gray-300) !important;\n}\n.hover\\:border-gray-400:hover {\n  border-color: var(--p-gray-400) !important;\n}\n.hover\\:border-gray-500:hover {\n  border-color: var(--p-gray-500) !important;\n}\n.hover\\:border-gray-600:hover {\n  border-color: var(--p-gray-600) !important;\n}\n.hover\\:border-gray-700:hover {\n  border-color: var(--p-gray-700) !important;\n}\n.hover\\:border-gray-800:hover {\n  border-color: var(--p-gray-800) !important;\n}\n.hover\\:border-gray-900:hover {\n  border-color: var(--p-gray-900) !important;\n}\n\n.active\\:border-gray-50:active {\n  border-color: var(--p-gray-50) !important;\n}\n.active\\:border-gray-100:active {\n  border-color: var(--p-gray-100) !important;\n}\n.active\\:border-gray-200:active {\n  border-color: var(--p-gray-200) !important;\n}\n.active\\:border-gray-300:active {\n  border-color: var(--p-gray-300) !important;\n}\n.active\\:border-gray-400:active {\n  border-color: var(--p-gray-400) !important;\n}\n.active\\:border-gray-500:active {\n  border-color: var(--p-gray-500) !important;\n}\n.active\\:border-gray-600:active {\n  border-color: var(--p-gray-600) !important;\n}\n.active\\:border-gray-700:active {\n  border-color: var(--p-gray-700) !important;\n}\n.active\\:border-gray-800:active {\n  border-color: var(--p-gray-800) !important;\n}\n.active\\:border-gray-900:active {\n  border-color: var(--p-gray-900) !important;\n}\n\n.border-red-50 {\n  border-color: var(--p-red-50) !important;\n}\n.border-red-100 {\n  border-color: var(--p-red-100) !important;\n}\n.border-red-200 {\n  border-color: var(--p-red-200) !important;\n}\n.border-red-300 {\n  border-color: var(--p-red-300) !important;\n}\n.border-red-400 {\n  border-color: var(--p-red-400) !important;\n}\n.border-red-500 {\n  border-color: var(--p-red-500) !important;\n}\n.border-red-600 {\n  border-color: var(--p-red-600) !important;\n}\n.border-red-700 {\n  border-color: var(--p-red-700) !important;\n}\n.border-red-800 {\n  border-color: var(--p-red-800) !important;\n}\n.border-red-900 {\n  border-color: var(--p-red-900) !important;\n}\n\n.focus\\:border-red-50:focus {\n  border-color: var(--p-red-50) !important;\n}\n.focus\\:border-red-100:focus {\n  border-color: var(--p-red-100) !important;\n}\n.focus\\:border-red-200:focus {\n  border-color: var(--p-red-200) !important;\n}\n.focus\\:border-red-300:focus {\n  border-color: var(--p-red-300) !important;\n}\n.focus\\:border-red-400:focus {\n  border-color: var(--p-red-400) !important;\n}\n.focus\\:border-red-500:focus {\n  border-color: var(--p-red-500) !important;\n}\n.focus\\:border-red-600:focus {\n  border-color: var(--p-red-600) !important;\n}\n.focus\\:border-red-700:focus {\n  border-color: var(--p-red-700) !important;\n}\n.focus\\:border-red-800:focus {\n  border-color: var(--p-red-800) !important;\n}\n.focus\\:border-red-900:focus {\n  border-color: var(--p-red-900) !important;\n}\n\n.hover\\:border-red-50:hover {\n  border-color: var(--p-red-50) !important;\n}\n.hover\\:border-red-100:hover {\n  border-color: var(--p-red-100) !important;\n}\n.hover\\:border-red-200:hover {\n  border-color: var(--p-red-200) !important;\n}\n.hover\\:border-red-300:hover {\n  border-color: var(--p-red-300) !important;\n}\n.hover\\:border-red-400:hover {\n  border-color: var(--p-red-400) !important;\n}\n.hover\\:border-red-500:hover {\n  border-color: var(--p-red-500) !important;\n}\n.hover\\:border-red-600:hover {\n  border-color: var(--p-red-600) !important;\n}\n.hover\\:border-red-700:hover {\n  border-color: var(--p-red-700) !important;\n}\n.hover\\:border-red-800:hover {\n  border-color: var(--p-red-800) !important;\n}\n.hover\\:border-red-900:hover {\n  border-color: var(--p-red-900) !important;\n}\n\n.active\\:border-red-50:active {\n  border-color: var(--p-red-50) !important;\n}\n.active\\:border-red-100:active {\n  border-color: var(--p-red-100) !important;\n}\n.active\\:border-red-200:active {\n  border-color: var(--p-red-200) !important;\n}\n.active\\:border-red-300:active {\n  border-color: var(--p-red-300) !important;\n}\n.active\\:border-red-400:active {\n  border-color: var(--p-red-400) !important;\n}\n.active\\:border-red-500:active {\n  border-color: var(--p-red-500) !important;\n}\n.active\\:border-red-600:active {\n  border-color: var(--p-red-600) !important;\n}\n.active\\:border-red-700:active {\n  border-color: var(--p-red-700) !important;\n}\n.active\\:border-red-800:active {\n  border-color: var(--p-red-800) !important;\n}\n.active\\:border-red-900:active {\n  border-color: var(--p-red-900) !important;\n}\n\n.border-primary-50 {\n  border-color: var(--p-primary-50) !important;\n}\n.border-primary-100 {\n  border-color: var(--p-primary-100) !important;\n}\n.border-primary-200 {\n  border-color: var(--p-primary-200) !important;\n}\n.border-primary-300 {\n  border-color: var(--p-primary-300) !important;\n}\n.border-primary-400 {\n  border-color: var(--p-primary-400) !important;\n}\n.border-primary-500 {\n  border-color: var(--p-primary-500) !important;\n}\n.border-primary-600 {\n  border-color: var(--p-primary-600) !important;\n}\n.border-primary-700 {\n  border-color: var(--p-primary-700) !important;\n}\n.border-primary-800 {\n  border-color: var(--p-primary-800) !important;\n}\n.border-primary-900 {\n  border-color: var(--p-primary-900) !important;\n}\n\n.focus\\:border-primary-50:focus {\n  border-color: var(--p-primary-50) !important;\n}\n.focus\\:border-primary-100:focus {\n  border-color: var(--p-primary-100) !important;\n}\n.focus\\:border-primary-200:focus {\n  border-color: var(--p-primary-200) !important;\n}\n.focus\\:border-primary-300:focus {\n  border-color: var(--p-primary-300) !important;\n}\n.focus\\:border-primary-400:focus {\n  border-color: var(--p-primary-400) !important;\n}\n.focus\\:border-primary-500:focus {\n  border-color: var(--p-primary-500) !important;\n}\n.focus\\:border-primary-600:focus {\n  border-color: var(--p-primary-600) !important;\n}\n.focus\\:border-primary-700:focus {\n  border-color: var(--p-primary-700) !important;\n}\n.focus\\:border-primary-800:focus {\n  border-color: var(--p-primary-800) !important;\n}\n.focus\\:border-primary-900:focus {\n  border-color: var(--p-primary-900) !important;\n}\n\n.hover\\:border-primary-50:hover {\n  border-color: var(--p-primary-50) !important;\n}\n.hover\\:border-primary-100:hover {\n  border-color: var(--p-primary-100) !important;\n}\n.hover\\:border-primary-200:hover {\n  border-color: var(--p-primary-200) !important;\n}\n.hover\\:border-primary-300:hover {\n  border-color: var(--p-primary-300) !important;\n}\n.hover\\:border-primary-400:hover {\n  border-color: var(--p-primary-400) !important;\n}\n.hover\\:border-primary-500:hover {\n  border-color: var(--p-primary-500) !important;\n}\n.hover\\:border-primary-600:hover {\n  border-color: var(--p-primary-600) !important;\n}\n.hover\\:border-primary-700:hover {\n  border-color: var(--p-primary-700) !important;\n}\n.hover\\:border-primary-800:hover {\n  border-color: var(--p-primary-800) !important;\n}\n.hover\\:border-primary-900:hover {\n  border-color: var(--p-primary-900) !important;\n}\n\n.active\\:border-primary-50:active {\n  border-color: var(--p-primary-50) !important;\n}\n.active\\:border-primary-100:active {\n  border-color: var(--p-primary-100) !important;\n}\n.active\\:border-primary-200:active {\n  border-color: var(--p-primary-200) !important;\n}\n.active\\:border-primary-300:active {\n  border-color: var(--p-primary-300) !important;\n}\n.active\\:border-primary-400:active {\n  border-color: var(--p-primary-400) !important;\n}\n.active\\:border-primary-500:active {\n  border-color: var(--p-primary-500) !important;\n}\n.active\\:border-primary-600:active {\n  border-color: var(--p-primary-600) !important;\n}\n.active\\:border-primary-700:active {\n  border-color: var(--p-primary-700) !important;\n}\n.active\\:border-primary-800:active {\n  border-color: var(--p-primary-800) !important;\n}\n.active\\:border-primary-900:active {\n  border-color: var(--p-primary-900) !important;\n}\n\n.bg-white-alpha-10 {\n  background-color: rgba(255,255,255,0.1) !important;\n}\n.bg-white-alpha-20 {\n  background-color: rgba(255,255,255,0.2) !important;\n}\n.bg-white-alpha-30 {\n  background-color: rgba(255,255,255,0.3) !important;\n}\n.bg-white-alpha-40 {\n  background-color: rgba(255,255,255,0.4) !important;\n}\n.bg-white-alpha-50 {\n  background-color: rgba(255,255,255,0.5) !important;\n}\n.bg-white-alpha-60 {\n  background-color: rgba(255,255,255,0.6) !important;\n}\n.bg-white-alpha-70 {\n  background-color: rgba(255,255,255,0.7) !important;\n}\n.bg-white-alpha-80 {\n  background-color: rgba(255,255,255,0.8) !important;\n}\n.bg-white-alpha-90 {\n  background-color: rgba(255,255,255,0.9) !important;\n}\n\n.hover\\:bg-white-alpha-10:hover {\n  background-color: rgba(255,255,255,0.1) !important;\n}\n.hover\\:bg-white-alpha-20:hover {\n  background-color: rgba(255,255,255,0.2) !important;\n}\n.hover\\:bg-white-alpha-30:hover {\n  background-color: rgba(255,255,255,0.3) !important;\n}\n.hover\\:bg-white-alpha-40:hover {\n  background-color: rgba(255,255,255,0.4) !important;\n}\n.hover\\:bg-white-alpha-50:hover {\n  background-color: rgba(255,255,255,0.5) !important;\n}\n.hover\\:bg-white-alpha-60:hover {\n  background-color: rgba(255,255,255,0.6) !important;\n}\n.hover\\:bg-white-alpha-70:hover {\n  background-color: rgba(255,255,255,0.7) !important;\n}\n.hover\\:bg-white-alpha-80:hover {\n  background-color: rgba(255,255,255,0.8) !important;\n}\n.hover\\:bg-white-alpha-90:hover {\n  background-color: rgba(255,255,255,0.9) !important;\n}\n\n.focus\\:bg-white-alpha-10:focus {\n  background-color: rgba(255,255,255,0.1) !important;\n}\n.focus\\:bg-white-alpha-20:focus {\n  background-color: rgba(255,255,255,0.2) !important;\n}\n.focus\\:bg-white-alpha-30:focus {\n  background-color: rgba(255,255,255,0.3) !important;\n}\n.focus\\:bg-white-alpha-40:focus {\n  background-color: rgba(255,255,255,0.4) !important;\n}\n.focus\\:bg-white-alpha-50:focus {\n  background-color: rgba(255,255,255,0.5) !important;\n}\n.focus\\:bg-white-alpha-60:focus {\n  background-color: rgba(255,255,255,0.6) !important;\n}\n.focus\\:bg-white-alpha-70:focus {\n  background-color: rgba(255,255,255,0.7) !important;\n}\n.focus\\:bg-white-alpha-80:focus {\n  background-color: rgba(255,255,255,0.8) !important;\n}\n.focus\\:bg-white-alpha-90:focus {\n  background-color: rgba(255,255,255,0.9) !important;\n}\n\n.active\\:bg-white-alpha-10:active {\n  background-color: rgba(255,255,255,0.1) !important;\n}\n.active\\:bg-white-alpha-20:active {\n  background-color: rgba(255,255,255,0.2) !important;\n}\n.active\\:bg-white-alpha-30:active {\n  background-color: rgba(255,255,255,0.3) !important;\n}\n.active\\:bg-white-alpha-40:active {\n  background-color: rgba(255,255,255,0.4) !important;\n}\n.active\\:bg-white-alpha-50:active {\n  background-color: rgba(255,255,255,0.5) !important;\n}\n.active\\:bg-white-alpha-60:active {\n  background-color: rgba(255,255,255,0.6) !important;\n}\n.active\\:bg-white-alpha-70:active {\n  background-color: rgba(255,255,255,0.7) !important;\n}\n.active\\:bg-white-alpha-80:active {\n  background-color: rgba(255,255,255,0.8) !important;\n}\n.active\\:bg-white-alpha-90:active {\n  background-color: rgba(255,255,255,0.9) !important;\n}\n\n.bg-black-alpha-10 {\n  background-color: rgba(0,0,0,0.1) !important;\n}\n.bg-black-alpha-20 {\n  background-color: rgba(0,0,0,0.2) !important;\n}\n.bg-black-alpha-30 {\n  background-color: rgba(0,0,0,0.3) !important;\n}\n.bg-black-alpha-40 {\n  background-color: rgba(0,0,0,0.4) !important;\n}\n.bg-black-alpha-50 {\n  background-color: rgba(0,0,0,0.5) !important;\n}\n.bg-black-alpha-60 {\n  background-color: rgba(0,0,0,0.6) !important;\n}\n.bg-black-alpha-70 {\n  background-color: rgba(0,0,0,0.7) !important;\n}\n.bg-black-alpha-80 {\n  background-color: rgba(0,0,0,0.8) !important;\n}\n.bg-black-alpha-90 {\n  background-color: rgba(0,0,0,0.9) !important;\n}\n\n.hover\\:bg-black-alpha-10:hover {\n  background-color: rgba(0,0,0,0.1) !important;\n}\n.hover\\:bg-black-alpha-20:hover {\n  background-color: rgba(0,0,0,0.2) !important;\n}\n.hover\\:bg-black-alpha-30:hover {\n  background-color: rgba(0,0,0,0.3) !important;\n}\n.hover\\:bg-black-alpha-40:hover {\n  background-color: rgba(0,0,0,0.4) !important;\n}\n.hover\\:bg-black-alpha-50:hover {\n  background-color: rgba(0,0,0,0.5) !important;\n}\n.hover\\:bg-black-alpha-60:hover {\n  background-color: rgba(0,0,0,0.6) !important;\n}\n.hover\\:bg-black-alpha-70:hover {\n  background-color: rgba(0,0,0,0.7) !important;\n}\n.hover\\:bg-black-alpha-80:hover {\n  background-color: rgba(0,0,0,0.8) !important;\n}\n.hover\\:bg-black-alpha-90:hover {\n  background-color: rgba(0,0,0,0.9) !important;\n}\n\n.focus\\:bg-black-alpha-10:focus {\n  background-color: rgba(0,0,0,0.1) !important;\n}\n.focus\\:bg-black-alpha-20:focus {\n  background-color: rgba(0,0,0,0.2) !important;\n}\n.focus\\:bg-black-alpha-30:focus {\n  background-color: rgba(0,0,0,0.3) !important;\n}\n.focus\\:bg-black-alpha-40:focus {\n  background-color: rgba(0,0,0,0.4) !important;\n}\n.focus\\:bg-black-alpha-50:focus {\n  background-color: rgba(0,0,0,0.5) !important;\n}\n.focus\\:bg-black-alpha-60:focus {\n  background-color: rgba(0,0,0,0.6) !important;\n}\n.focus\\:bg-black-alpha-70:focus {\n  background-color: rgba(0,0,0,0.7) !important;\n}\n.focus\\:bg-black-alpha-80:focus {\n  background-color: rgba(0,0,0,0.8) !important;\n}\n.focus\\:bg-black-alpha-90:focus {\n  background-color: rgba(0,0,0,0.9) !important;\n}\n\n.active\\:bg-black-alpha-10:active {\n  background-color: rgba(0,0,0,0.1) !important;\n}\n.active\\:bg-black-alpha-20:active {\n  background-color: rgba(0,0,0,0.2) !important;\n}\n.active\\:bg-black-alpha-30:active {\n  background-color: rgba(0,0,0,0.3) !important;\n}\n.active\\:bg-black-alpha-40:active {\n  background-color: rgba(0,0,0,0.4) !important;\n}\n.active\\:bg-black-alpha-50:active {\n  background-color: rgba(0,0,0,0.5) !important;\n}\n.active\\:bg-black-alpha-60:active {\n  background-color: rgba(0,0,0,0.6) !important;\n}\n.active\\:bg-black-alpha-70:active {\n  background-color: rgba(0,0,0,0.7) !important;\n}\n.active\\:bg-black-alpha-80:active {\n  background-color: rgba(0,0,0,0.8) !important;\n}\n.active\\:bg-black-alpha-90:active {\n  background-color: rgba(0,0,0,0.9) !important;\n}\n\n.border-white-alpha-10 {\n  border-color: rgba(255,255,255,0.1) !important;\n}\n.border-white-alpha-20 {\n  border-color: rgba(255,255,255,0.2) !important;\n}\n.border-white-alpha-30 {\n  border-color: rgba(255,255,255,0.3) !important;\n}\n.border-white-alpha-40 {\n  border-color: rgba(255,255,255,0.4) !important;\n}\n.border-white-alpha-50 {\n  border-color: rgba(255,255,255,0.5) !important;\n}\n.border-white-alpha-60 {\n  border-color: rgba(255,255,255,0.6) !important;\n}\n.border-white-alpha-70 {\n  border-color: rgba(255,255,255,0.7) !important;\n}\n.border-white-alpha-80 {\n  border-color: rgba(255,255,255,0.8) !important;\n}\n.border-white-alpha-90 {\n  border-color: rgba(255,255,255,0.9) !important;\n}\n\n.hover\\:border-white-alpha-10:hover {\n  border-color: rgba(255,255,255,0.1) !important;\n}\n.hover\\:border-white-alpha-20:hover {\n  border-color: rgba(255,255,255,0.2) !important;\n}\n.hover\\:border-white-alpha-30:hover {\n  border-color: rgba(255,255,255,0.3) !important;\n}\n.hover\\:border-white-alpha-40:hover {\n  border-color: rgba(255,255,255,0.4) !important;\n}\n.hover\\:border-white-alpha-50:hover {\n  border-color: rgba(255,255,255,0.5) !important;\n}\n.hover\\:border-white-alpha-60:hover {\n  border-color: rgba(255,255,255,0.6) !important;\n}\n.hover\\:border-white-alpha-70:hover {\n  border-color: rgba(255,255,255,0.7) !important;\n}\n.hover\\:border-white-alpha-80:hover {\n  border-color: rgba(255,255,255,0.8) !important;\n}\n.hover\\:border-white-alpha-90:hover {\n  border-color: rgba(255,255,255,0.9) !important;\n}\n\n.focus\\:border-white-alpha-10:focus {\n  border-color: rgba(255,255,255,0.1) !important;\n}\n.focus\\:border-white-alpha-20:focus {\n  border-color: rgba(255,255,255,0.2) !important;\n}\n.focus\\:border-white-alpha-30:focus {\n  border-color: rgba(255,255,255,0.3) !important;\n}\n.focus\\:border-white-alpha-40:focus {\n  border-color: rgba(255,255,255,0.4) !important;\n}\n.focus\\:border-white-alpha-50:focus {\n  border-color: rgba(255,255,255,0.5) !important;\n}\n.focus\\:border-white-alpha-60:focus {\n  border-color: rgba(255,255,255,0.6) !important;\n}\n.focus\\:border-white-alpha-70:focus {\n  border-color: rgba(255,255,255,0.7) !important;\n}\n.focus\\:border-white-alpha-80:focus {\n  border-color: rgba(255,255,255,0.8) !important;\n}\n.focus\\:border-white-alpha-90:focus {\n  border-color: rgba(255,255,255,0.9) !important;\n}\n\n.active\\:border-white-alpha-10:active {\n  border-color: rgba(255,255,255,0.1) !important;\n}\n.active\\:border-white-alpha-20:active {\n  border-color: rgba(255,255,255,0.2) !important;\n}\n.active\\:border-white-alpha-30:active {\n  border-color: rgba(255,255,255,0.3) !important;\n}\n.active\\:border-white-alpha-40:active {\n  border-color: rgba(255,255,255,0.4) !important;\n}\n.active\\:border-white-alpha-50:active {\n  border-color: rgba(255,255,255,0.5) !important;\n}\n.active\\:border-white-alpha-60:active {\n  border-color: rgba(255,255,255,0.6) !important;\n}\n.active\\:border-white-alpha-70:active {\n  border-color: rgba(255,255,255,0.7) !important;\n}\n.active\\:border-white-alpha-80:active {\n  border-color: rgba(255,255,255,0.8) !important;\n}\n.active\\:border-white-alpha-90:active {\n  border-color: rgba(255,255,255,0.9) !important;\n}\n\n.border-black-alpha-10 {\n  border-color: rgba(0,0,0,0.1) !important;\n}\n.border-black-alpha-20 {\n  border-color: rgba(0,0,0,0.2) !important;\n}\n.border-black-alpha-30 {\n  border-color: rgba(0,0,0,0.3) !important;\n}\n.border-black-alpha-40 {\n  border-color: rgba(0,0,0,0.4) !important;\n}\n.border-black-alpha-50 {\n  border-color: rgba(0,0,0,0.5) !important;\n}\n.border-black-alpha-60 {\n  border-color: rgba(0,0,0,0.6) !important;\n}\n.border-black-alpha-70 {\n  border-color: rgba(0,0,0,0.7) !important;\n}\n.border-black-alpha-80 {\n  border-color: rgba(0,0,0,0.8) !important;\n}\n.border-black-alpha-90 {\n  border-color: rgba(0,0,0,0.9) !important;\n}\n\n.hover\\:border-black-alpha-10:hover {\n  border-color: rgba(0,0,0,0.1) !important;\n}\n.hover\\:border-black-alpha-20:hover {\n  border-color: rgba(0,0,0,0.2) !important;\n}\n.hover\\:border-black-alpha-30:hover {\n  border-color: rgba(0,0,0,0.3) !important;\n}\n.hover\\:border-black-alpha-40:hover {\n  border-color: rgba(0,0,0,0.4) !important;\n}\n.hover\\:border-black-alpha-50:hover {\n  border-color: rgba(0,0,0,0.5) !important;\n}\n.hover\\:border-black-alpha-60:hover {\n  border-color: rgba(0,0,0,0.6) !important;\n}\n.hover\\:border-black-alpha-70:hover {\n  border-color: rgba(0,0,0,0.7) !important;\n}\n.hover\\:border-black-alpha-80:hover {\n  border-color: rgba(0,0,0,0.8) !important;\n}\n.hover\\:border-black-alpha-90:hover {\n  border-color: rgba(0,0,0,0.9) !important;\n}\n\n.focus\\:border-black-alpha-10:focus {\n  border-color: rgba(0,0,0,0.1) !important;\n}\n.focus\\:border-black-alpha-20:focus {\n  border-color: rgba(0,0,0,0.2) !important;\n}\n.focus\\:border-black-alpha-30:focus {\n  border-color: rgba(0,0,0,0.3) !important;\n}\n.focus\\:border-black-alpha-40:focus {\n  border-color: rgba(0,0,0,0.4) !important;\n}\n.focus\\:border-black-alpha-50:focus {\n  border-color: rgba(0,0,0,0.5) !important;\n}\n.focus\\:border-black-alpha-60:focus {\n  border-color: rgba(0,0,0,0.6) !important;\n}\n.focus\\:border-black-alpha-70:focus {\n  border-color: rgba(0,0,0,0.7) !important;\n}\n.focus\\:border-black-alpha-80:focus {\n  border-color: rgba(0,0,0,0.8) !important;\n}\n.focus\\:border-black-alpha-90:focus {\n  border-color: rgba(0,0,0,0.9) !important;\n}\n\n.active\\:border-black-alpha-10:active {\n  border-color: rgba(0,0,0,0.1) !important;\n}\n.active\\:border-black-alpha-20:active {\n  border-color: rgba(0,0,0,0.2) !important;\n}\n.active\\:border-black-alpha-30:active {\n  border-color: rgba(0,0,0,0.3) !important;\n}\n.active\\:border-black-alpha-40:active {\n  border-color: rgba(0,0,0,0.4) !important;\n}\n.active\\:border-black-alpha-50:active {\n  border-color: rgba(0,0,0,0.5) !important;\n}\n.active\\:border-black-alpha-60:active {\n  border-color: rgba(0,0,0,0.6) !important;\n}\n.active\\:border-black-alpha-70:active {\n  border-color: rgba(0,0,0,0.7) !important;\n}\n.active\\:border-black-alpha-80:active {\n  border-color: rgba(0,0,0,0.8) !important;\n}\n.active\\:border-black-alpha-90:active {\n  border-color: rgba(0,0,0,0.9) !important;\n}\n\n.text-white-alpha-10 {\n  color: rgba(255,255,255,0.1) !important;\n}\n.text-white-alpha-20 {\n  color: rgba(255,255,255,0.2) !important;\n}\n.text-white-alpha-30 {\n  color: rgba(255,255,255,0.3) !important;\n}\n.text-white-alpha-40 {\n  color: rgba(255,255,255,0.4) !important;\n}\n.text-white-alpha-50 {\n  color: rgba(255,255,255,0.5) !important;\n}\n.text-white-alpha-60 {\n  color: rgba(255,255,255,0.6) !important;\n}\n.text-white-alpha-70 {\n  color: rgba(255,255,255,0.7) !important;\n}\n.text-white-alpha-80 {\n  color: rgba(255,255,255,0.8) !important;\n}\n.text-white-alpha-90 {\n  color: rgba(255,255,255,0.9) !important;\n}\n\n.hover\\:text-white-alpha-10:hover {\n  color: rgba(255,255,255,0.1) !important;\n}\n.hover\\:text-white-alpha-20:hover {\n  color: rgba(255,255,255,0.2) !important;\n}\n.hover\\:text-white-alpha-30:hover {\n  color: rgba(255,255,255,0.3) !important;\n}\n.hover\\:text-white-alpha-40:hover {\n  color: rgba(255,255,255,0.4) !important;\n}\n.hover\\:text-white-alpha-50:hover {\n  color: rgba(255,255,255,0.5) !important;\n}\n.hover\\:text-white-alpha-60:hover {\n  color: rgba(255,255,255,0.6) !important;\n}\n.hover\\:text-white-alpha-70:hover {\n  color: rgba(255,255,255,0.7) !important;\n}\n.hover\\:text-white-alpha-80:hover {\n  color: rgba(255,255,255,0.8) !important;\n}\n.hover\\:text-white-alpha-90:hover {\n  color: rgba(255,255,255,0.9) !important;\n}\n\n.focus\\:text-white-alpha-10:focus {\n  color: rgba(255,255,255,0.1) !important;\n}\n.focus\\:text-white-alpha-20:focus {\n  color: rgba(255,255,255,0.2) !important;\n}\n.focus\\:text-white-alpha-30:focus {\n  color: rgba(255,255,255,0.3) !important;\n}\n.focus\\:text-white-alpha-40:focus {\n  color: rgba(255,255,255,0.4) !important;\n}\n.focus\\:text-white-alpha-50:focus {\n  color: rgba(255,255,255,0.5) !important;\n}\n.focus\\:text-white-alpha-60:focus {\n  color: rgba(255,255,255,0.6) !important;\n}\n.focus\\:text-white-alpha-70:focus {\n  color: rgba(255,255,255,0.7) !important;\n}\n.focus\\:text-white-alpha-80:focus {\n  color: rgba(255,255,255,0.8) !important;\n}\n.focus\\:text-white-alpha-90:focus {\n  color: rgba(255,255,255,0.9) !important;\n}\n\n.active\\:text-white-alpha-10:active {\n  color: rgba(255,255,255,0.1) !important;\n}\n.active\\:text-white-alpha-20:active {\n  color: rgba(255,255,255,0.2) !important;\n}\n.active\\:text-white-alpha-30:active {\n  color: rgba(255,255,255,0.3) !important;\n}\n.active\\:text-white-alpha-40:active {\n  color: rgba(255,255,255,0.4) !important;\n}\n.active\\:text-white-alpha-50:active {\n  color: rgba(255,255,255,0.5) !important;\n}\n.active\\:text-white-alpha-60:active {\n  color: rgba(255,255,255,0.6) !important;\n}\n.active\\:text-white-alpha-70:active {\n  color: rgba(255,255,255,0.7) !important;\n}\n.active\\:text-white-alpha-80:active {\n  color: rgba(255,255,255,0.8) !important;\n}\n.active\\:text-white-alpha-90:active {\n  color: rgba(255,255,255,0.9) !important;\n}\n\n.text-black-alpha-10 {\n  color: rgba(0,0,0,0.1) !important;\n}\n.text-black-alpha-20 {\n  color: rgba(0,0,0,0.2) !important;\n}\n.text-black-alpha-30 {\n  color: rgba(0,0,0,0.3) !important;\n}\n.text-black-alpha-40 {\n  color: rgba(0,0,0,0.4) !important;\n}\n.text-black-alpha-50 {\n  color: rgba(0,0,0,0.5) !important;\n}\n.text-black-alpha-60 {\n  color: rgba(0,0,0,0.6) !important;\n}\n.text-black-alpha-70 {\n  color: rgba(0,0,0,0.7) !important;\n}\n.text-black-alpha-80 {\n  color: rgba(0,0,0,0.8) !important;\n}\n.text-black-alpha-90 {\n  color: rgba(0,0,0,0.9) !important;\n}\n\n.hover\\:text-black-alpha-10:hover {\n  color: rgba(0,0,0,0.1) !important;\n}\n.hover\\:text-black-alpha-20:hover {\n  color: rgba(0,0,0,0.2) !important;\n}\n.hover\\:text-black-alpha-30:hover {\n  color: rgba(0,0,0,0.3) !important;\n}\n.hover\\:text-black-alpha-40:hover {\n  color: rgba(0,0,0,0.4) !important;\n}\n.hover\\:text-black-alpha-50:hover {\n  color: rgba(0,0,0,0.5) !important;\n}\n.hover\\:text-black-alpha-60:hover {\n  color: rgba(0,0,0,0.6) !important;\n}\n.hover\\:text-black-alpha-70:hover {\n  color: rgba(0,0,0,0.7) !important;\n}\n.hover\\:text-black-alpha-80:hover {\n  color: rgba(0,0,0,0.8) !important;\n}\n.hover\\:text-black-alpha-90:hover {\n  color: rgba(0,0,0,0.9) !important;\n}\n\n.focus\\:text-black-alpha-10:focus {\n  color: rgba(0,0,0,0.1) !important;\n}\n.focus\\:text-black-alpha-20:focus {\n  color: rgba(0,0,0,0.2) !important;\n}\n.focus\\:text-black-alpha-30:focus {\n  color: rgba(0,0,0,0.3) !important;\n}\n.focus\\:text-black-alpha-40:focus {\n  color: rgba(0,0,0,0.4) !important;\n}\n.focus\\:text-black-alpha-50:focus {\n  color: rgba(0,0,0,0.5) !important;\n}\n.focus\\:text-black-alpha-60:focus {\n  color: rgba(0,0,0,0.6) !important;\n}\n.focus\\:text-black-alpha-70:focus {\n  color: rgba(0,0,0,0.7) !important;\n}\n.focus\\:text-black-alpha-80:focus {\n  color: rgba(0,0,0,0.8) !important;\n}\n.focus\\:text-black-alpha-90:focus {\n  color: rgba(0,0,0,0.9) !important;\n}\n\n.active\\:text-black-alpha-10:active {\n  color: rgba(0,0,0,0.1) !important;\n}\n.active\\:text-black-alpha-20:active {\n  color: rgba(0,0,0,0.2) !important;\n}\n.active\\:text-black-alpha-30:active {\n  color: rgba(0,0,0,0.3) !important;\n}\n.active\\:text-black-alpha-40:active {\n  color: rgba(0,0,0,0.4) !important;\n}\n.active\\:text-black-alpha-50:active {\n  color: rgba(0,0,0,0.5) !important;\n}\n.active\\:text-black-alpha-60:active {\n  color: rgba(0,0,0,0.6) !important;\n}\n.active\\:text-black-alpha-70:active {\n  color: rgba(0,0,0,0.7) !important;\n}\n.active\\:text-black-alpha-80:active {\n  color: rgba(0,0,0,0.8) !important;\n}\n.active\\:text-black-alpha-90:active {\n  color: rgba(0,0,0,0.9) !important;\n}\n\n.text-primary {\n  color: var(--p-primary-color) !important;\n}\n\n.bg-primary {\n  color: var(--p-primary-contrast-color) !important;\n  background-color: var(--p-primary-color) !important;\n}\n\n.bg-primary-reverse {\n  color: var(--p-primary-color) !important;\n  background-color: var(--p-primary-contrast-color) !important;\n}\n\n.bg-white {\n  background-color: #ffffff !important;\n}\n\n.border-primary {\n  border-color: var(--p-primary-color) !important;\n}\n\n.text-white {\n  color: #ffffff !important;\n}\n\n.border-white {\n  border-color: #ffffff !important;\n}\n\n.text-color {\n  color: var(--p-text-color) !important;\n}\n\n.text-color-secondary {\n  color: var(--p-text-muted-color) !important;\n}\n\n.surface-ground {\n  background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n}\n\n.surface-section {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n}\n\n.surface-card {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.surface-overlay {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.surface-hover {\n  background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n}\n\n.surface-border {\n  border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n}\n\n.focus\\:text-primary:focus {\n  color: var(--p-primary-color) !important;\n}\n\n.hover\\:text-primary:hover {\n  color: var(--p-primary-color) !important;\n}\n\n.active\\:text-primary:active {\n  color: var(--p-primary-color) !important;\n}\n\n.focus\\:bg-primary:focus {\n  color: var(--p-primary-contrast-color) !important;\n  background-color: var(--p-primary-color) !important;\n}\n\n.hover\\:bg-primary:hover {\n  color: var(--p-primary-contrast-color) !important;\n  background-color: var(--p-primary-color) !important;\n}\n\n.active\\:bg-primary:active {\n  color: var(--p-primary-contrast-color) !important;\n  background-color: var(--p-primary-color) !important;\n}\n\n.focus\\:bg-primary-reverse:focus {\n  color: var(--p-primary-color) !important;\n  background-color: var(--p-primary-contrast-color) !important;\n}\n\n.hover\\:bg-primary-reverse:hover {\n  color: var(--p-primary-color) !important;\n  background-color: var(--p-primary-contrast-color) !important;\n}\n\n.active\\:bg-primary-reverse:active {\n  color: var(--p-primary-color) !important;\n  background-color: var(--p-primary-contrast-color) !important;\n}\n\n.focus\\:bg-white:focus {\n  background-color: #ffffff !important;\n}\n\n.hover\\:bg-white:hover {\n  background-color: #ffffff !important;\n}\n\n.active\\:bg-white:active {\n  background-color: #ffffff !important;\n}\n\n.focus\\:border-primary:focus {\n  border-color: var(--p-primary-color) !important;\n}\n\n.hover\\:border-primary:hover {\n  border-color: var(--p-primary-color) !important;\n}\n\n.active\\:border-primary:active {\n  border-color: var(--p-primary-color) !important;\n}\n\n.focus\\:text-white:focus {\n  color: #ffffff !important;\n}\n\n.hover\\:text-white:hover {\n  color: #ffffff !important;\n}\n\n.active\\:text-white:active {\n  color: #ffffff !important;\n}\n\n.focus\\:border-white:focus {\n  border-color: #ffffff !important;\n}\n\n.hover\\:border-white:hover {\n  border-color: #ffffff !important;\n}\n\n.active\\:border-white:active {\n  border-color: #ffffff !important;\n}\n\n.focus\\:text-color:focus {\n  color: var(--p-text-color) !important;\n}\n\n.hover\\:text-color:hover {\n  color: var(--p-text-color) !important;\n}\n\n.active\\:text-color:active {\n  color: var(--p-text-color) !important;\n}\n\n.focus\\:text-color-secondary:focus {\n  color: var(--p-text-muted-color) !important;\n}\n\n.hover\\:text-color-secondary:hover {\n  color: var(--p-text-muted-color) !important;\n}\n\n.active\\:text-color-secondary:active {\n  color: var(--p-text-muted-color) !important;\n}\n\n.focus\\:surface-ground:focus {\n  background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n}\n\n.hover\\:surface-ground:hover {\n  background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n}\n\n.active\\:surface-ground:active {\n  background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n}\n\n.focus\\:surface-section:focus {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n}\n\n.hover\\:surface-section:hover {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n}\n\n.active\\:surface-section:active {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n}\n\n.focus\\:surface-card:focus {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.hover\\:surface-card:hover {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.active\\:surface-card:active {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.focus\\:surface-overlay:focus {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.hover\\:surface-overlay:hover {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.active\\:surface-overlay:active {\n  background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n}\n\n.focus\\:surface-hover:focus {\n  background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n}\n\n.hover\\:surface-hover:hover {\n  background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n}\n\n.active\\:surface-hover:active {\n  background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n}\n\n.focus\\:surface-border:focus {\n  border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n}\n\n.hover\\:surface-border:hover {\n  border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n}\n\n.active\\:surface-border:active {\n  border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:text-primary {\n    color: var(--p-primary-color) !important;\n  }\n  .sm\\:bg-primary {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .sm\\:bg-primary-reverse {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .sm\\:bg-white {\n    background-color: #ffffff !important;\n  }\n  .sm\\:border-primary {\n    border-color: var(--p-primary-color) !important;\n  }\n  .sm\\:text-white {\n    color: #ffffff !important;\n  }\n  .sm\\:border-white {\n    border-color: #ffffff !important;\n  }\n  .sm\\:text-color {\n    color: var(--p-text-color) !important;\n  }\n  .sm\\:text-color-secondary {\n    color: var(--p-text-muted-color) !important;\n  }\n  .sm\\:surface-ground {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .sm\\:surface-section {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .sm\\:surface-card {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .sm\\:surface-overlay {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .sm\\:surface-hover {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .sm\\:surface-border {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .sm\\:focus\\:text-primary:focus {\n    color: var(--p-primary-color) !important;\n  }\n  .sm\\:hover\\:text-primary:hover {\n    color: var(--p-primary-color) !important;\n  }\n  .sm\\:active\\:text-primary:active {\n    color: var(--p-primary-color) !important;\n  }\n  .sm\\:focus\\:bg-primary:focus {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .sm\\:hover\\:bg-primary:hover {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .sm\\:active\\:bg-primary:active {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .sm\\:focus\\:bg-primary-reverse:focus {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .sm\\:hover\\:bg-primary-reverse:hover {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .sm\\:active\\:bg-primary-reverse:active {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .sm\\:focus\\:bg-white:focus {\n    background-color: #ffffff !important;\n  }\n  .sm\\:hover\\:bg-white:hover {\n    background-color: #ffffff !important;\n  }\n  .sm\\:active\\:bg-white:active {\n    background-color: #ffffff !important;\n  }\n  .sm\\:focus\\:border-primary:focus {\n    border-color: var(--p-primary-color) !important;\n  }\n  .sm\\:hover\\:border-primary:hover {\n    border-color: var(--p-primary-color) !important;\n  }\n  .sm\\:active\\:border-primary:active {\n    border-color: var(--p-primary-color) !important;\n  }\n  .sm\\:focus\\:text-white:focus {\n    color: #ffffff !important;\n  }\n  .sm\\:hover\\:text-white:hover {\n    color: #ffffff !important;\n  }\n  .sm\\:active\\:text-white:active {\n    color: #ffffff !important;\n  }\n  .sm\\:focus\\:border-white:focus {\n    border-color: #ffffff !important;\n  }\n  .sm\\:hover\\:border-white:hover {\n    border-color: #ffffff !important;\n  }\n  .sm\\:active\\:border-white:active {\n    border-color: #ffffff !important;\n  }\n  .sm\\:focus\\:text-color:focus {\n    color: var(--p-text-color) !important;\n  }\n  .sm\\:hover\\:text-color:hover {\n    color: var(--p-text-color) !important;\n  }\n  .sm\\:active\\:text-color:active {\n    color: var(--p-text-color) !important;\n  }\n  .sm\\:focus\\:text-color-secondary:focus {\n    color: var(--p-text-muted-color) !important;\n  }\n  .sm\\:hover\\:text-color-secondary:hover {\n    color: var(--p-text-muted-color) !important;\n  }\n  .sm\\:active\\:text-color-secondary:active {\n    color: var(--p-text-muted-color) !important;\n  }\n  .sm\\:focus\\:surface-ground:focus {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .sm\\:hover\\:surface-ground:hover {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .sm\\:active\\:surface-ground:active {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .sm\\:focus\\:surface-section:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .sm\\:hover\\:surface-section:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .sm\\:active\\:surface-section:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .sm\\:focus\\:surface-card:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .sm\\:hover\\:surface-card:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .sm\\:active\\:surface-card:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .sm\\:focus\\:surface-overlay:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .sm\\:hover\\:surface-overlay:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .sm\\:active\\:surface-overlay:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .sm\\:focus\\:surface-hover:focus {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .sm\\:hover\\:surface-hover:hover {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .sm\\:active\\:surface-hover:active {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .sm\\:focus\\:surface-border:focus {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .sm\\:hover\\:surface-border:hover {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .sm\\:active\\:surface-border:active {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:text-primary {\n    color: var(--p-primary-color) !important;\n  }\n  .md\\:bg-primary {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .md\\:bg-primary-reverse {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .md\\:bg-white {\n    background-color: #ffffff !important;\n  }\n  .md\\:border-primary {\n    border-color: var(--p-primary-color) !important;\n  }\n  .md\\:text-white {\n    color: #ffffff !important;\n  }\n  .md\\:border-white {\n    border-color: #ffffff !important;\n  }\n  .md\\:text-color {\n    color: var(--p-text-color) !important;\n  }\n  .md\\:text-color-secondary {\n    color: var(--p-text-muted-color) !important;\n  }\n  .md\\:surface-ground {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .md\\:surface-section {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .md\\:surface-card {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .md\\:surface-overlay {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .md\\:surface-hover {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .md\\:surface-border {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .md\\:focus\\:text-primary:focus {\n    color: var(--p-primary-color) !important;\n  }\n  .md\\:hover\\:text-primary:hover {\n    color: var(--p-primary-color) !important;\n  }\n  .md\\:active\\:text-primary:active {\n    color: var(--p-primary-color) !important;\n  }\n  .md\\:focus\\:bg-primary:focus {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .md\\:hover\\:bg-primary:hover {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .md\\:active\\:bg-primary:active {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .md\\:focus\\:bg-primary-reverse:focus {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .md\\:hover\\:bg-primary-reverse:hover {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .md\\:active\\:bg-primary-reverse:active {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .md\\:focus\\:bg-white:focus {\n    background-color: #ffffff !important;\n  }\n  .md\\:hover\\:bg-white:hover {\n    background-color: #ffffff !important;\n  }\n  .md\\:active\\:bg-white:active {\n    background-color: #ffffff !important;\n  }\n  .md\\:focus\\:border-primary:focus {\n    border-color: var(--p-primary-color) !important;\n  }\n  .md\\:hover\\:border-primary:hover {\n    border-color: var(--p-primary-color) !important;\n  }\n  .md\\:active\\:border-primary:active {\n    border-color: var(--p-primary-color) !important;\n  }\n  .md\\:focus\\:text-white:focus {\n    color: #ffffff !important;\n  }\n  .md\\:hover\\:text-white:hover {\n    color: #ffffff !important;\n  }\n  .md\\:active\\:text-white:active {\n    color: #ffffff !important;\n  }\n  .md\\:focus\\:border-white:focus {\n    border-color: #ffffff !important;\n  }\n  .md\\:hover\\:border-white:hover {\n    border-color: #ffffff !important;\n  }\n  .md\\:active\\:border-white:active {\n    border-color: #ffffff !important;\n  }\n  .md\\:focus\\:text-color:focus {\n    color: var(--p-text-color) !important;\n  }\n  .md\\:hover\\:text-color:hover {\n    color: var(--p-text-color) !important;\n  }\n  .md\\:active\\:text-color:active {\n    color: var(--p-text-color) !important;\n  }\n  .md\\:focus\\:text-color-secondary:focus {\n    color: var(--p-text-muted-color) !important;\n  }\n  .md\\:hover\\:text-color-secondary:hover {\n    color: var(--p-text-muted-color) !important;\n  }\n  .md\\:active\\:text-color-secondary:active {\n    color: var(--p-text-muted-color) !important;\n  }\n  .md\\:focus\\:surface-ground:focus {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .md\\:hover\\:surface-ground:hover {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .md\\:active\\:surface-ground:active {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .md\\:focus\\:surface-section:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .md\\:hover\\:surface-section:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .md\\:active\\:surface-section:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .md\\:focus\\:surface-card:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .md\\:hover\\:surface-card:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .md\\:active\\:surface-card:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .md\\:focus\\:surface-overlay:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .md\\:hover\\:surface-overlay:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .md\\:active\\:surface-overlay:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .md\\:focus\\:surface-hover:focus {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .md\\:hover\\:surface-hover:hover {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .md\\:active\\:surface-hover:active {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .md\\:focus\\:surface-border:focus {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .md\\:hover\\:surface-border:hover {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .md\\:active\\:surface-border:active {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:text-primary {\n    color: var(--p-primary-color) !important;\n  }\n  .lg\\:bg-primary {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .lg\\:bg-primary-reverse {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .lg\\:bg-white {\n    background-color: #ffffff !important;\n  }\n  .lg\\:border-primary {\n    border-color: var(--p-primary-color) !important;\n  }\n  .lg\\:text-white {\n    color: #ffffff !important;\n  }\n  .lg\\:border-white {\n    border-color: #ffffff !important;\n  }\n  .lg\\:text-color {\n    color: var(--p-text-color) !important;\n  }\n  .lg\\:text-color-secondary {\n    color: var(--p-text-muted-color) !important;\n  }\n  .lg\\:surface-ground {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .lg\\:surface-section {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .lg\\:surface-card {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .lg\\:surface-overlay {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .lg\\:surface-hover {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .lg\\:surface-border {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .lg\\:focus\\:text-primary:focus {\n    color: var(--p-primary-color) !important;\n  }\n  .lg\\:hover\\:text-primary:hover {\n    color: var(--p-primary-color) !important;\n  }\n  .lg\\:active\\:text-primary:active {\n    color: var(--p-primary-color) !important;\n  }\n  .lg\\:focus\\:bg-primary:focus {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .lg\\:hover\\:bg-primary:hover {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .lg\\:active\\:bg-primary:active {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .lg\\:focus\\:bg-primary-reverse:focus {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .lg\\:hover\\:bg-primary-reverse:hover {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .lg\\:active\\:bg-primary-reverse:active {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .lg\\:focus\\:bg-white:focus {\n    background-color: #ffffff !important;\n  }\n  .lg\\:hover\\:bg-white:hover {\n    background-color: #ffffff !important;\n  }\n  .lg\\:active\\:bg-white:active {\n    background-color: #ffffff !important;\n  }\n  .lg\\:focus\\:border-primary:focus {\n    border-color: var(--p-primary-color) !important;\n  }\n  .lg\\:hover\\:border-primary:hover {\n    border-color: var(--p-primary-color) !important;\n  }\n  .lg\\:active\\:border-primary:active {\n    border-color: var(--p-primary-color) !important;\n  }\n  .lg\\:focus\\:text-white:focus {\n    color: #ffffff !important;\n  }\n  .lg\\:hover\\:text-white:hover {\n    color: #ffffff !important;\n  }\n  .lg\\:active\\:text-white:active {\n    color: #ffffff !important;\n  }\n  .lg\\:focus\\:border-white:focus {\n    border-color: #ffffff !important;\n  }\n  .lg\\:hover\\:border-white:hover {\n    border-color: #ffffff !important;\n  }\n  .lg\\:active\\:border-white:active {\n    border-color: #ffffff !important;\n  }\n  .lg\\:focus\\:text-color:focus {\n    color: var(--p-text-color) !important;\n  }\n  .lg\\:hover\\:text-color:hover {\n    color: var(--p-text-color) !important;\n  }\n  .lg\\:active\\:text-color:active {\n    color: var(--p-text-color) !important;\n  }\n  .lg\\:focus\\:text-color-secondary:focus {\n    color: var(--p-text-muted-color) !important;\n  }\n  .lg\\:hover\\:text-color-secondary:hover {\n    color: var(--p-text-muted-color) !important;\n  }\n  .lg\\:active\\:text-color-secondary:active {\n    color: var(--p-text-muted-color) !important;\n  }\n  .lg\\:focus\\:surface-ground:focus {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .lg\\:hover\\:surface-ground:hover {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .lg\\:active\\:surface-ground:active {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .lg\\:focus\\:surface-section:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .lg\\:hover\\:surface-section:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .lg\\:active\\:surface-section:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .lg\\:focus\\:surface-card:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .lg\\:hover\\:surface-card:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .lg\\:active\\:surface-card:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .lg\\:focus\\:surface-overlay:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .lg\\:hover\\:surface-overlay:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .lg\\:active\\:surface-overlay:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .lg\\:focus\\:surface-hover:focus {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .lg\\:hover\\:surface-hover:hover {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .lg\\:active\\:surface-hover:active {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .lg\\:focus\\:surface-border:focus {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .lg\\:hover\\:surface-border:hover {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .lg\\:active\\:surface-border:active {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:text-primary {\n    color: var(--p-primary-color) !important;\n  }\n  .xl\\:bg-primary {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .xl\\:bg-primary-reverse {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .xl\\:bg-white {\n    background-color: #ffffff !important;\n  }\n  .xl\\:border-primary {\n    border-color: var(--p-primary-color) !important;\n  }\n  .xl\\:text-white {\n    color: #ffffff !important;\n  }\n  .xl\\:border-white {\n    border-color: #ffffff !important;\n  }\n  .xl\\:text-color {\n    color: var(--p-text-color) !important;\n  }\n  .xl\\:text-color-secondary {\n    color: var(--p-text-muted-color) !important;\n  }\n  .xl\\:surface-ground {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .xl\\:surface-section {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .xl\\:surface-card {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .xl\\:surface-overlay {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .xl\\:surface-hover {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .xl\\:surface-border {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .xl\\:focus\\:text-primary:focus {\n    color: var(--p-primary-color) !important;\n  }\n  .xl\\:hover\\:text-primary:hover {\n    color: var(--p-primary-color) !important;\n  }\n  .xl\\:active\\:text-primary:active {\n    color: var(--p-primary-color) !important;\n  }\n  .xl\\:focus\\:bg-primary:focus {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .xl\\:hover\\:bg-primary:hover {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .xl\\:active\\:bg-primary:active {\n    color: var(--p-primary-contrast-color) !important;\n    background-color: var(--p-primary-color) !important;\n  }\n  .xl\\:focus\\:bg-primary-reverse:focus {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .xl\\:hover\\:bg-primary-reverse:hover {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .xl\\:active\\:bg-primary-reverse:active {\n    color: var(--p-primary-color) !important;\n    background-color: var(--p-primary-contrast-color) !important;\n  }\n  .xl\\:focus\\:bg-white:focus {\n    background-color: #ffffff !important;\n  }\n  .xl\\:hover\\:bg-white:hover {\n    background-color: #ffffff !important;\n  }\n  .xl\\:active\\:bg-white:active {\n    background-color: #ffffff !important;\n  }\n  .xl\\:focus\\:border-primary:focus {\n    border-color: var(--p-primary-color) !important;\n  }\n  .xl\\:hover\\:border-primary:hover {\n    border-color: var(--p-primary-color) !important;\n  }\n  .xl\\:active\\:border-primary:active {\n    border-color: var(--p-primary-color) !important;\n  }\n  .xl\\:focus\\:text-white:focus {\n    color: #ffffff !important;\n  }\n  .xl\\:hover\\:text-white:hover {\n    color: #ffffff !important;\n  }\n  .xl\\:active\\:text-white:active {\n    color: #ffffff !important;\n  }\n  .xl\\:focus\\:border-white:focus {\n    border-color: #ffffff !important;\n  }\n  .xl\\:hover\\:border-white:hover {\n    border-color: #ffffff !important;\n  }\n  .xl\\:active\\:border-white:active {\n    border-color: #ffffff !important;\n  }\n  .xl\\:focus\\:text-color:focus {\n    color: var(--p-text-color) !important;\n  }\n  .xl\\:hover\\:text-color:hover {\n    color: var(--p-text-color) !important;\n  }\n  .xl\\:active\\:text-color:active {\n    color: var(--p-text-color) !important;\n  }\n  .xl\\:focus\\:text-color-secondary:focus {\n    color: var(--p-text-muted-color) !important;\n  }\n  .xl\\:hover\\:text-color-secondary:hover {\n    color: var(--p-text-muted-color) !important;\n  }\n  .xl\\:active\\:text-color-secondary:active {\n    color: var(--p-text-muted-color) !important;\n  }\n  .xl\\:focus\\:surface-ground:focus {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .xl\\:hover\\:surface-ground:hover {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .xl\\:active\\:surface-ground:active {\n    background-color: light-dark(var(--p-surface-50), var(--p-surface-950)) !important;\n  }\n  .xl\\:focus\\:surface-section:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .xl\\:hover\\:surface-section:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .xl\\:active\\:surface-section:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-950)) !important;\n  }\n  .xl\\:focus\\:surface-card:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .xl\\:hover\\:surface-card:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .xl\\:active\\:surface-card:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .xl\\:focus\\:surface-overlay:focus {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .xl\\:hover\\:surface-overlay:hover {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .xl\\:active\\:surface-overlay:active {\n    background-color: light-dark(var(--p-surface-0), var(--p-surface-900)) !important;\n  }\n  .xl\\:focus\\:surface-hover:focus {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .xl\\:hover\\:surface-hover:hover {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .xl\\:active\\:surface-hover:active {\n    background-color: light-dark(var(--p-surface-800), var(--p-surface-100)) !important;\n  }\n  .xl\\:focus\\:surface-border:focus {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .xl\\:hover\\:surface-border:hover {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n  .xl\\:active\\:surface-border:active {\n    border-color: light-dark(var(--p-surface-200), var(--p-surface-700)) !important;\n  }\n}\n.field {\n  margin-bottom: 1rem;\n}\n\n.field > label {\n  display: inline-block;\n  margin-bottom: 0.5rem;\n}\n\n.field.grid > label {\n  display: flex;\n  align-items: center;\n}\n\n.field > small {\n  margin-top: 0.25rem;\n}\n\n.field.grid,\n.formgrid.grid {\n  margin-top: 0;\n}\n\n.field.grid .col-fixed,\n.formgrid.grid .col-fixed,\n.field.grid .col,\n.formgrid.grid .col,\n.field.grid .col-1,\n.formgrid.grid .col-1,\n.field.grid .col-2,\n.formgrid.grid .col-2,\n.field.grid .col-3,\n.formgrid.grid .col-3,\n.field.grid .col-4,\n.formgrid.grid .col-4,\n.field.grid .col-5,\n.formgrid.grid .col-5,\n.field.grid .col-6,\n.formgrid.grid .col-6,\n.field.grid .col-7,\n.formgrid.grid .col-7,\n.field.grid .col-8,\n.formgrid.grid .col-8,\n.field.grid .col-9,\n.formgrid.grid .col-9,\n.field.grid .col-10,\n.formgrid.grid .col-10,\n.field.grid .col-11,\n.formgrid.grid .col-11,\n.field.grid .col-12,\n.formgrid.grid .col-12 {\n  padding-top: 0;\n  padding-bottom: 0;\n}\n\n.formgroup-inline {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: flex-start;\n}\n\n.formgroup-inline .field,\n.formgroup-inline .field-checkbox,\n.formgroup-inline .field-radiobutton {\n  margin-right: 1rem;\n}\n\n.formgroup-inline .field > label,\n.formgroup-inline .field-checkbox > label,\n.formgroup-inline .field-radiobutton > label {\n  margin-right: 0.5rem;\n  margin-bottom: 0;\n}\n\n.field-checkbox,\n.field-radiobutton {\n  margin-bottom: 1rem;\n  display: flex;\n  align-items: center;\n}\n\n.field-checkbox > label,\n.field-radiobutton > label {\n  margin-left: 0.5rem;\n  line-height: 1;\n}\n\n.hidden {\n  display: none !important;\n}\n\n.block {\n  display: block !important;\n}\n\n.inline {\n  display: inline !important;\n}\n\n.inline-block {\n  display: inline-block !important;\n}\n\n.flex {\n  display: flex !important;\n}\n\n.inline-flex {\n  display: inline-flex !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:hidden {\n    display: none !important;\n  }\n  .sm\\:block {\n    display: block !important;\n  }\n  .sm\\:inline {\n    display: inline !important;\n  }\n  .sm\\:inline-block {\n    display: inline-block !important;\n  }\n  .sm\\:flex {\n    display: flex !important;\n  }\n  .sm\\:inline-flex {\n    display: inline-flex !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:hidden {\n    display: none !important;\n  }\n  .md\\:block {\n    display: block !important;\n  }\n  .md\\:inline {\n    display: inline !important;\n  }\n  .md\\:inline-block {\n    display: inline-block !important;\n  }\n  .md\\:flex {\n    display: flex !important;\n  }\n  .md\\:inline-flex {\n    display: inline-flex !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:hidden {\n    display: none !important;\n  }\n  .lg\\:block {\n    display: block !important;\n  }\n  .lg\\:inline {\n    display: inline !important;\n  }\n  .lg\\:inline-block {\n    display: inline-block !important;\n  }\n  .lg\\:flex {\n    display: flex !important;\n  }\n  .lg\\:inline-flex {\n    display: inline-flex !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:hidden {\n    display: none !important;\n  }\n  .xl\\:block {\n    display: block !important;\n  }\n  .xl\\:inline {\n    display: inline !important;\n  }\n  .xl\\:inline-block {\n    display: inline-block !important;\n  }\n  .xl\\:flex {\n    display: flex !important;\n  }\n  .xl\\:inline-flex {\n    display: inline-flex !important;\n  }\n}\n.text-center {\n  text-align: center !important;\n}\n\n.text-justify {\n  text-align: justify !important;\n}\n\n.text-left {\n  text-align: left !important;\n}\n\n.text-right {\n  text-align: right !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:text-center {\n    text-align: center !important;\n  }\n  .sm\\:text-justify {\n    text-align: justify !important;\n  }\n  .sm\\:text-left {\n    text-align: left !important;\n  }\n  .sm\\:text-right {\n    text-align: right !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:text-center {\n    text-align: center !important;\n  }\n  .md\\:text-justify {\n    text-align: justify !important;\n  }\n  .md\\:text-left {\n    text-align: left !important;\n  }\n  .md\\:text-right {\n    text-align: right !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:text-center {\n    text-align: center !important;\n  }\n  .lg\\:text-justify {\n    text-align: justify !important;\n  }\n  .lg\\:text-left {\n    text-align: left !important;\n  }\n  .lg\\:text-right {\n    text-align: right !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:text-center {\n    text-align: center !important;\n  }\n  .xl\\:text-justify {\n    text-align: justify !important;\n  }\n  .xl\\:text-left {\n    text-align: left !important;\n  }\n  .xl\\:text-right {\n    text-align: right !important;\n  }\n}\n.underline {\n  text-decoration: underline !important;\n}\n\n.line-through {\n  text-decoration: line-through !important;\n}\n\n.no-underline {\n  text-decoration: none !important;\n}\n\n.focus\\:underline:focus {\n  text-decoration: underline !important;\n}\n\n.hover\\:underline:hover {\n  text-decoration: underline !important;\n}\n\n.active\\:underline:active {\n  text-decoration: underline !important;\n}\n\n.focus\\:line-through:focus {\n  text-decoration: line-through !important;\n}\n\n.hover\\:line-through:hover {\n  text-decoration: line-through !important;\n}\n\n.active\\:line-through:active {\n  text-decoration: line-through !important;\n}\n\n.focus\\:no-underline:focus {\n  text-decoration: none !important;\n}\n\n.hover\\:no-underline:hover {\n  text-decoration: none !important;\n}\n\n.active\\:no-underline:active {\n  text-decoration: none !important;\n}\n\n.lowercase {\n  text-transform: lowercase !important;\n}\n\n.uppercase {\n  text-transform: uppercase !important;\n}\n\n.capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-overflow-clip {\n  text-overflow: clip !important;\n}\n\n.text-overflow-ellipsis {\n  text-overflow: ellipsis !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:text-overflow-clip {\n    text-overflow: clip !important;\n  }\n  .sm\\:text-overflow-ellipsis {\n    text-overflow: ellipsis !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:text-overflow-clip {\n    text-overflow: clip !important;\n  }\n  .md\\:text-overflow-ellipsis {\n    text-overflow: ellipsis !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:text-overflow-clip {\n    text-overflow: clip !important;\n  }\n  .lg\\:text-overflow-ellipsis {\n    text-overflow: ellipsis !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:text-overflow-clip {\n    text-overflow: clip !important;\n  }\n  .xl\\:text-overflow-ellipsis {\n    text-overflow: ellipsis !important;\n  }\n}\n.font-light {\n  font-weight: 300 !important;\n}\n\n.font-normal {\n  font-weight: 400 !important;\n}\n\n.font-medium {\n  font-weight: 500 !important;\n}\n\n.font-semibold {\n  font-weight: 600 !important;\n}\n\n.font-bold {\n  font-weight: 700 !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:font-light {\n    font-weight: 300 !important;\n  }\n  .sm\\:font-normal {\n    font-weight: 400 !important;\n  }\n  .sm\\:font-medium {\n    font-weight: 500 !important;\n  }\n  .sm\\:font-semibold {\n    font-weight: 600 !important;\n  }\n  .sm\\:font-bold {\n    font-weight: 700 !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:font-light {\n    font-weight: 300 !important;\n  }\n  .md\\:font-normal {\n    font-weight: 400 !important;\n  }\n  .md\\:font-medium {\n    font-weight: 500 !important;\n  }\n  .md\\:font-semibold {\n    font-weight: 600 !important;\n  }\n  .md\\:font-bold {\n    font-weight: 700 !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:font-light {\n    font-weight: 300 !important;\n  }\n  .lg\\:font-normal {\n    font-weight: 400 !important;\n  }\n  .lg\\:font-medium {\n    font-weight: 500 !important;\n  }\n  .lg\\:font-semibold {\n    font-weight: 600 !important;\n  }\n  .lg\\:font-bold {\n    font-weight: 700 !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:font-light {\n    font-weight: 300 !important;\n  }\n  .xl\\:font-normal {\n    font-weight: 400 !important;\n  }\n  .xl\\:font-medium {\n    font-weight: 500 !important;\n  }\n  .xl\\:font-semibold {\n    font-weight: 600 !important;\n  }\n  .xl\\:font-bold {\n    font-weight: 700 !important;\n  }\n}\n.font-italic {\n  font-style: italic !important;\n}\n\n.text-xs {\n  font-size: 0.75rem !important;\n}\n\n.text-sm {\n  font-size: 0.875rem !important;\n}\n\n.text-base {\n  font-size: 1rem !important;\n}\n\n.text-lg {\n  font-size: 1.125rem !important;\n}\n\n.text-xl {\n  font-size: 1.25rem !important;\n}\n\n.text-2xl {\n  font-size: 1.5rem !important;\n}\n\n.text-3xl {\n  font-size: 1.75rem !important;\n}\n\n.text-4xl {\n  font-size: 2rem !important;\n}\n\n.text-5xl {\n  font-size: 2.5rem !important;\n}\n\n.text-6xl {\n  font-size: 3rem !important;\n}\n\n.text-7xl {\n  font-size: 4rem !important;\n}\n\n.text-8xl {\n  font-size: 6rem !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:text-xs {\n    font-size: 0.75rem !important;\n  }\n  .sm\\:text-sm {\n    font-size: 0.875rem !important;\n  }\n  .sm\\:text-base {\n    font-size: 1rem !important;\n  }\n  .sm\\:text-lg {\n    font-size: 1.125rem !important;\n  }\n  .sm\\:text-xl {\n    font-size: 1.25rem !important;\n  }\n  .sm\\:text-2xl {\n    font-size: 1.5rem !important;\n  }\n  .sm\\:text-3xl {\n    font-size: 1.75rem !important;\n  }\n  .sm\\:text-4xl {\n    font-size: 2rem !important;\n  }\n  .sm\\:text-5xl {\n    font-size: 2.5rem !important;\n  }\n  .sm\\:text-6xl {\n    font-size: 3rem !important;\n  }\n  .sm\\:text-7xl {\n    font-size: 4rem !important;\n  }\n  .sm\\:text-8xl {\n    font-size: 6rem !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:text-xs {\n    font-size: 0.75rem !important;\n  }\n  .md\\:text-sm {\n    font-size: 0.875rem !important;\n  }\n  .md\\:text-base {\n    font-size: 1rem !important;\n  }\n  .md\\:text-lg {\n    font-size: 1.125rem !important;\n  }\n  .md\\:text-xl {\n    font-size: 1.25rem !important;\n  }\n  .md\\:text-2xl {\n    font-size: 1.5rem !important;\n  }\n  .md\\:text-3xl {\n    font-size: 1.75rem !important;\n  }\n  .md\\:text-4xl {\n    font-size: 2rem !important;\n  }\n  .md\\:text-5xl {\n    font-size: 2.5rem !important;\n  }\n  .md\\:text-6xl {\n    font-size: 3rem !important;\n  }\n  .md\\:text-7xl {\n    font-size: 4rem !important;\n  }\n  .md\\:text-8xl {\n    font-size: 6rem !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:text-xs {\n    font-size: 0.75rem !important;\n  }\n  .lg\\:text-sm {\n    font-size: 0.875rem !important;\n  }\n  .lg\\:text-base {\n    font-size: 1rem !important;\n  }\n  .lg\\:text-lg {\n    font-size: 1.125rem !important;\n  }\n  .lg\\:text-xl {\n    font-size: 1.25rem !important;\n  }\n  .lg\\:text-2xl {\n    font-size: 1.5rem !important;\n  }\n  .lg\\:text-3xl {\n    font-size: 1.75rem !important;\n  }\n  .lg\\:text-4xl {\n    font-size: 2rem !important;\n  }\n  .lg\\:text-5xl {\n    font-size: 2.5rem !important;\n  }\n  .lg\\:text-6xl {\n    font-size: 3rem !important;\n  }\n  .lg\\:text-7xl {\n    font-size: 4rem !important;\n  }\n  .lg\\:text-8xl {\n    font-size: 6rem !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:text-xs {\n    font-size: 0.75rem !important;\n  }\n  .xl\\:text-sm {\n    font-size: 0.875rem !important;\n  }\n  .xl\\:text-base {\n    font-size: 1rem !important;\n  }\n  .xl\\:text-lg {\n    font-size: 1.125rem !important;\n  }\n  .xl\\:text-xl {\n    font-size: 1.25rem !important;\n  }\n  .xl\\:text-2xl {\n    font-size: 1.5rem !important;\n  }\n  .xl\\:text-3xl {\n    font-size: 1.75rem !important;\n  }\n  .xl\\:text-4xl {\n    font-size: 2rem !important;\n  }\n  .xl\\:text-5xl {\n    font-size: 2.5rem !important;\n  }\n  .xl\\:text-6xl {\n    font-size: 3rem !important;\n  }\n  .xl\\:text-7xl {\n    font-size: 4rem !important;\n  }\n  .xl\\:text-8xl {\n    font-size: 6rem !important;\n  }\n}\n.line-height-1 {\n  line-height: 1 !important;\n}\n\n.line-height-2 {\n  line-height: 1.25 !important;\n}\n\n.line-height-3 {\n  line-height: 1.5 !important;\n}\n\n.line-height-4 {\n  line-height: 2 !important;\n}\n\n.white-space-normal {\n  white-space: normal !important;\n}\n\n.white-space-nowrap {\n  white-space: nowrap !important;\n}\n\n.vertical-align-baseline {\n  vertical-align: baseline !important;\n}\n\n.vertical-align-top {\n  vertical-align: top !important;\n}\n\n.vertical-align-middle {\n  vertical-align: middle !important;\n}\n\n.vertical-align-bottom {\n  vertical-align: bottom !important;\n}\n\n.vertical-align-text-top {\n  vertical-align: text-top !important;\n}\n\n.vertical-align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.vertical-align-sub {\n  vertical-align: sub !important;\n}\n\n.vertical-align-super {\n  vertical-align: super !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:vertical-align-baseline {\n    vertical-align: baseline !important;\n  }\n  .sm\\:vertical-align-top {\n    vertical-align: top !important;\n  }\n  .sm\\:vertical-align-middle {\n    vertical-align: middle !important;\n  }\n  .sm\\:vertical-align-bottom {\n    vertical-align: bottom !important;\n  }\n  .sm\\:vertical-align-text-top {\n    vertical-align: text-top !important;\n  }\n  .sm\\:vertical-align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n  .sm\\:vertical-align-sub {\n    vertical-align: sub !important;\n  }\n  .sm\\:vertical-align-super {\n    vertical-align: super !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:vertical-align-baseline {\n    vertical-align: baseline !important;\n  }\n  .md\\:vertical-align-top {\n    vertical-align: top !important;\n  }\n  .md\\:vertical-align-middle {\n    vertical-align: middle !important;\n  }\n  .md\\:vertical-align-bottom {\n    vertical-align: bottom !important;\n  }\n  .md\\:vertical-align-text-top {\n    vertical-align: text-top !important;\n  }\n  .md\\:vertical-align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n  .md\\:vertical-align-sub {\n    vertical-align: sub !important;\n  }\n  .md\\:vertical-align-super {\n    vertical-align: super !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:vertical-align-baseline {\n    vertical-align: baseline !important;\n  }\n  .lg\\:vertical-align-top {\n    vertical-align: top !important;\n  }\n  .lg\\:vertical-align-middle {\n    vertical-align: middle !important;\n  }\n  .lg\\:vertical-align-bottom {\n    vertical-align: bottom !important;\n  }\n  .lg\\:vertical-align-text-top {\n    vertical-align: text-top !important;\n  }\n  .lg\\:vertical-align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n  .lg\\:vertical-align-sub {\n    vertical-align: sub !important;\n  }\n  .lg\\:vertical-align-super {\n    vertical-align: super !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:vertical-align-baseline {\n    vertical-align: baseline !important;\n  }\n  .xl\\:vertical-align-top {\n    vertical-align: top !important;\n  }\n  .xl\\:vertical-align-middle {\n    vertical-align: middle !important;\n  }\n  .xl\\:vertical-align-bottom {\n    vertical-align: bottom !important;\n  }\n  .xl\\:vertical-align-text-top {\n    vertical-align: text-top !important;\n  }\n  .xl\\:vertical-align-text-bottom {\n    vertical-align: text-bottom !important;\n  }\n  .xl\\:vertical-align-sub {\n    vertical-align: sub !important;\n  }\n  .xl\\:vertical-align-super {\n    vertical-align: super !important;\n  }\n}\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:flex-row {\n    flex-direction: row !important;\n  }\n  .sm\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n  .sm\\:flex-column {\n    flex-direction: column !important;\n  }\n  .sm\\:flex-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:flex-row {\n    flex-direction: row !important;\n  }\n  .md\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n  .md\\:flex-column {\n    flex-direction: column !important;\n  }\n  .md\\:flex-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:flex-row {\n    flex-direction: row !important;\n  }\n  .lg\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n  .lg\\:flex-column {\n    flex-direction: column !important;\n  }\n  .lg\\:flex-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:flex-row {\n    flex-direction: row !important;\n  }\n  .xl\\:flex-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n  .xl\\:flex-column {\n    flex-direction: column !important;\n  }\n  .xl\\:flex-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n}\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n  .sm\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n  .sm\\:flex-nowrap {\n    flex-wrap: nowrap !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n  .md\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n  .md\\:flex-nowrap {\n    flex-wrap: nowrap !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n  .lg\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n  .lg\\:flex-nowrap {\n    flex-wrap: nowrap !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:flex-wrap {\n    flex-wrap: wrap !important;\n  }\n  .xl\\:flex-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n  .xl\\:flex-nowrap {\n    flex-wrap: nowrap !important;\n  }\n}\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:justify-content-start {\n    justify-content: flex-start !important;\n  }\n  .sm\\:justify-content-end {\n    justify-content: flex-end !important;\n  }\n  .sm\\:justify-content-center {\n    justify-content: center !important;\n  }\n  .sm\\:justify-content-between {\n    justify-content: space-between !important;\n  }\n  .sm\\:justify-content-around {\n    justify-content: space-around !important;\n  }\n  .sm\\:justify-content-evenly {\n    justify-content: space-evenly !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:justify-content-start {\n    justify-content: flex-start !important;\n  }\n  .md\\:justify-content-end {\n    justify-content: flex-end !important;\n  }\n  .md\\:justify-content-center {\n    justify-content: center !important;\n  }\n  .md\\:justify-content-between {\n    justify-content: space-between !important;\n  }\n  .md\\:justify-content-around {\n    justify-content: space-around !important;\n  }\n  .md\\:justify-content-evenly {\n    justify-content: space-evenly !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:justify-content-start {\n    justify-content: flex-start !important;\n  }\n  .lg\\:justify-content-end {\n    justify-content: flex-end !important;\n  }\n  .lg\\:justify-content-center {\n    justify-content: center !important;\n  }\n  .lg\\:justify-content-between {\n    justify-content: space-between !important;\n  }\n  .lg\\:justify-content-around {\n    justify-content: space-around !important;\n  }\n  .lg\\:justify-content-evenly {\n    justify-content: space-evenly !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:justify-content-start {\n    justify-content: flex-start !important;\n  }\n  .xl\\:justify-content-end {\n    justify-content: flex-end !important;\n  }\n  .xl\\:justify-content-center {\n    justify-content: center !important;\n  }\n  .xl\\:justify-content-between {\n    justify-content: space-between !important;\n  }\n  .xl\\:justify-content-around {\n    justify-content: space-around !important;\n  }\n  .xl\\:justify-content-evenly {\n    justify-content: space-evenly !important;\n  }\n}\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-evenly {\n  align-content: space-evenly !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:align-content-start {\n    align-content: flex-start !important;\n  }\n  .sm\\:align-content-end {\n    align-content: flex-end !important;\n  }\n  .sm\\:align-content-center {\n    align-content: center !important;\n  }\n  .sm\\:align-content-between {\n    align-content: space-between !important;\n  }\n  .sm\\:align-content-around {\n    align-content: space-around !important;\n  }\n  .sm\\:align-content-evenly {\n    align-content: space-evenly !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:align-content-start {\n    align-content: flex-start !important;\n  }\n  .md\\:align-content-end {\n    align-content: flex-end !important;\n  }\n  .md\\:align-content-center {\n    align-content: center !important;\n  }\n  .md\\:align-content-between {\n    align-content: space-between !important;\n  }\n  .md\\:align-content-around {\n    align-content: space-around !important;\n  }\n  .md\\:align-content-evenly {\n    align-content: space-evenly !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:align-content-start {\n    align-content: flex-start !important;\n  }\n  .lg\\:align-content-end {\n    align-content: flex-end !important;\n  }\n  .lg\\:align-content-center {\n    align-content: center !important;\n  }\n  .lg\\:align-content-between {\n    align-content: space-between !important;\n  }\n  .lg\\:align-content-around {\n    align-content: space-around !important;\n  }\n  .lg\\:align-content-evenly {\n    align-content: space-evenly !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:align-content-start {\n    align-content: flex-start !important;\n  }\n  .xl\\:align-content-end {\n    align-content: flex-end !important;\n  }\n  .xl\\:align-content-center {\n    align-content: center !important;\n  }\n  .xl\\:align-content-between {\n    align-content: space-between !important;\n  }\n  .xl\\:align-content-around {\n    align-content: space-around !important;\n  }\n  .xl\\:align-content-evenly {\n    align-content: space-evenly !important;\n  }\n}\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:align-items-stretch {\n    align-items: stretch !important;\n  }\n  .sm\\:align-items-start {\n    align-items: flex-start !important;\n  }\n  .sm\\:align-items-center {\n    align-items: center !important;\n  }\n  .sm\\:align-items-end {\n    align-items: flex-end !important;\n  }\n  .sm\\:align-items-baseline {\n    align-items: baseline !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:align-items-stretch {\n    align-items: stretch !important;\n  }\n  .md\\:align-items-start {\n    align-items: flex-start !important;\n  }\n  .md\\:align-items-center {\n    align-items: center !important;\n  }\n  .md\\:align-items-end {\n    align-items: flex-end !important;\n  }\n  .md\\:align-items-baseline {\n    align-items: baseline !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:align-items-stretch {\n    align-items: stretch !important;\n  }\n  .lg\\:align-items-start {\n    align-items: flex-start !important;\n  }\n  .lg\\:align-items-center {\n    align-items: center !important;\n  }\n  .lg\\:align-items-end {\n    align-items: flex-end !important;\n  }\n  .lg\\:align-items-baseline {\n    align-items: baseline !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:align-items-stretch {\n    align-items: stretch !important;\n  }\n  .xl\\:align-items-start {\n    align-items: flex-start !important;\n  }\n  .xl\\:align-items-center {\n    align-items: center !important;\n  }\n  .xl\\:align-items-end {\n    align-items: flex-end !important;\n  }\n  .xl\\:align-items-baseline {\n    align-items: baseline !important;\n  }\n}\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:align-self-auto {\n    align-self: auto !important;\n  }\n  .sm\\:align-self-start {\n    align-self: flex-start !important;\n  }\n  .sm\\:align-self-end {\n    align-self: flex-end !important;\n  }\n  .sm\\:align-self-center {\n    align-self: center !important;\n  }\n  .sm\\:align-self-stretch {\n    align-self: stretch !important;\n  }\n  .sm\\:align-self-baseline {\n    align-self: baseline !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:align-self-auto {\n    align-self: auto !important;\n  }\n  .md\\:align-self-start {\n    align-self: flex-start !important;\n  }\n  .md\\:align-self-end {\n    align-self: flex-end !important;\n  }\n  .md\\:align-self-center {\n    align-self: center !important;\n  }\n  .md\\:align-self-stretch {\n    align-self: stretch !important;\n  }\n  .md\\:align-self-baseline {\n    align-self: baseline !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:align-self-auto {\n    align-self: auto !important;\n  }\n  .lg\\:align-self-start {\n    align-self: flex-start !important;\n  }\n  .lg\\:align-self-end {\n    align-self: flex-end !important;\n  }\n  .lg\\:align-self-center {\n    align-self: center !important;\n  }\n  .lg\\:align-self-stretch {\n    align-self: stretch !important;\n  }\n  .lg\\:align-self-baseline {\n    align-self: baseline !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:align-self-auto {\n    align-self: auto !important;\n  }\n  .xl\\:align-self-start {\n    align-self: flex-start !important;\n  }\n  .xl\\:align-self-end {\n    align-self: flex-end !important;\n  }\n  .xl\\:align-self-center {\n    align-self: center !important;\n  }\n  .xl\\:align-self-stretch {\n    align-self: stretch !important;\n  }\n  .xl\\:align-self-baseline {\n    align-self: baseline !important;\n  }\n}\n.flex-order-0 {\n  order: 0 !important;\n}\n\n.flex-order-1 {\n  order: 1 !important;\n}\n\n.flex-order-2 {\n  order: 2 !important;\n}\n\n.flex-order-3 {\n  order: 3 !important;\n}\n\n.flex-order-4 {\n  order: 4 !important;\n}\n\n.flex-order-5 {\n  order: 5 !important;\n}\n\n.flex-order-6 {\n  order: 6 !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:flex-order-0 {\n    order: 0 !important;\n  }\n  .sm\\:flex-order-1 {\n    order: 1 !important;\n  }\n  .sm\\:flex-order-2 {\n    order: 2 !important;\n  }\n  .sm\\:flex-order-3 {\n    order: 3 !important;\n  }\n  .sm\\:flex-order-4 {\n    order: 4 !important;\n  }\n  .sm\\:flex-order-5 {\n    order: 5 !important;\n  }\n  .sm\\:flex-order-6 {\n    order: 6 !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:flex-order-0 {\n    order: 0 !important;\n  }\n  .md\\:flex-order-1 {\n    order: 1 !important;\n  }\n  .md\\:flex-order-2 {\n    order: 2 !important;\n  }\n  .md\\:flex-order-3 {\n    order: 3 !important;\n  }\n  .md\\:flex-order-4 {\n    order: 4 !important;\n  }\n  .md\\:flex-order-5 {\n    order: 5 !important;\n  }\n  .md\\:flex-order-6 {\n    order: 6 !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:flex-order-0 {\n    order: 0 !important;\n  }\n  .lg\\:flex-order-1 {\n    order: 1 !important;\n  }\n  .lg\\:flex-order-2 {\n    order: 2 !important;\n  }\n  .lg\\:flex-order-3 {\n    order: 3 !important;\n  }\n  .lg\\:flex-order-4 {\n    order: 4 !important;\n  }\n  .lg\\:flex-order-5 {\n    order: 5 !important;\n  }\n  .lg\\:flex-order-6 {\n    order: 6 !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:flex-order-0 {\n    order: 0 !important;\n  }\n  .xl\\:flex-order-1 {\n    order: 1 !important;\n  }\n  .xl\\:flex-order-2 {\n    order: 2 !important;\n  }\n  .xl\\:flex-order-3 {\n    order: 3 !important;\n  }\n  .xl\\:flex-order-4 {\n    order: 4 !important;\n  }\n  .xl\\:flex-order-5 {\n    order: 5 !important;\n  }\n  .xl\\:flex-order-6 {\n    order: 6 !important;\n  }\n}\n.flex-1 {\n  flex: 1 1 0% !important;\n}\n\n.flex-auto {\n  flex: 1 1 auto !important;\n}\n\n.flex-initial {\n  flex: 0 1 auto !important;\n}\n\n.flex-none {\n  flex: none !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n  .sm\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n  .sm\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n  .sm\\:flex-none {\n    flex: none !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n  .md\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n  .md\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n  .md\\:flex-none {\n    flex: none !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n  .lg\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n  .lg\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n  .lg\\:flex-none {\n    flex: none !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:flex-1 {\n    flex: 1 1 0% !important;\n  }\n  .xl\\:flex-auto {\n    flex: 1 1 auto !important;\n  }\n  .xl\\:flex-initial {\n    flex: 0 1 auto !important;\n  }\n  .xl\\:flex-none {\n    flex: none !important;\n  }\n}\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n  .sm\\:flex-grow-1 {\n    flex-grow: 1 !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n  .md\\:flex-grow-1 {\n    flex-grow: 1 !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n  .lg\\:flex-grow-1 {\n    flex-grow: 1 !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:flex-grow-0 {\n    flex-grow: 0 !important;\n  }\n  .xl\\:flex-grow-1 {\n    flex-grow: 1 !important;\n  }\n}\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n  .sm\\:flex-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n  .md\\:flex-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n  .lg\\:flex-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:flex-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n  .xl\\:flex-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n}\n.gap-0 {\n  gap: 0rem !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 2rem !important;\n}\n\n.gap-6 {\n  gap: 3rem !important;\n}\n\n.gap-7 {\n  gap: 4rem !important;\n}\n\n.gap-8 {\n  gap: 5rem !important;\n}\n\n.row-gap-0 {\n  row-gap: 0rem !important;\n}\n\n.row-gap-1 {\n  row-gap: 0.25rem !important;\n}\n\n.row-gap-2 {\n  row-gap: 0.5rem !important;\n}\n\n.row-gap-3 {\n  row-gap: 1rem !important;\n}\n\n.row-gap-4 {\n  row-gap: 1.5rem !important;\n}\n\n.row-gap-5 {\n  row-gap: 2rem !important;\n}\n\n.row-gap-6 {\n  row-gap: 3rem !important;\n}\n\n.row-gap-7 {\n  row-gap: 4rem !important;\n}\n\n.row-gap-8 {\n  row-gap: 5rem !important;\n}\n\n.column-gap-0 {\n  column-gap: 0rem !important;\n}\n\n.column-gap-1 {\n  column-gap: 0.25rem !important;\n}\n\n.column-gap-2 {\n  column-gap: 0.5rem !important;\n}\n\n.column-gap-3 {\n  column-gap: 1rem !important;\n}\n\n.column-gap-4 {\n  column-gap: 1.5rem !important;\n}\n\n.column-gap-5 {\n  column-gap: 2rem !important;\n}\n\n.column-gap-6 {\n  column-gap: 3rem !important;\n}\n\n.column-gap-7 {\n  column-gap: 4rem !important;\n}\n\n.column-gap-8 {\n  column-gap: 5rem !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:gap-0 {\n    gap: 0rem !important;\n  }\n  .sm\\:gap-1 {\n    gap: 0.25rem !important;\n  }\n  .sm\\:gap-2 {\n    gap: 0.5rem !important;\n  }\n  .sm\\:gap-3 {\n    gap: 1rem !important;\n  }\n  .sm\\:gap-4 {\n    gap: 1.5rem !important;\n  }\n  .sm\\:gap-5 {\n    gap: 2rem !important;\n  }\n  .sm\\:gap-6 {\n    gap: 3rem !important;\n  }\n  .sm\\:gap-7 {\n    gap: 4rem !important;\n  }\n  .sm\\:gap-8 {\n    gap: 5rem !important;\n  }\n  .sm\\:row-gap-0 {\n    row-gap: 0rem !important;\n  }\n  .sm\\:row-gap-1 {\n    row-gap: 0.25rem !important;\n  }\n  .sm\\:row-gap-2 {\n    row-gap: 0.5rem !important;\n  }\n  .sm\\:row-gap-3 {\n    row-gap: 1rem !important;\n  }\n  .sm\\:row-gap-4 {\n    row-gap: 1.5rem !important;\n  }\n  .sm\\:row-gap-5 {\n    row-gap: 2rem !important;\n  }\n  .sm\\:row-gap-6 {\n    row-gap: 3rem !important;\n  }\n  .sm\\:row-gap-7 {\n    row-gap: 4rem !important;\n  }\n  .sm\\:row-gap-8 {\n    row-gap: 5rem !important;\n  }\n  .sm\\:column-gap-0 {\n    column-gap: 0rem !important;\n  }\n  .sm\\:column-gap-1 {\n    column-gap: 0.25rem !important;\n  }\n  .sm\\:column-gap-2 {\n    column-gap: 0.5rem !important;\n  }\n  .sm\\:column-gap-3 {\n    column-gap: 1rem !important;\n  }\n  .sm\\:column-gap-4 {\n    column-gap: 1.5rem !important;\n  }\n  .sm\\:column-gap-5 {\n    column-gap: 2rem !important;\n  }\n  .sm\\:column-gap-6 {\n    column-gap: 3rem !important;\n  }\n  .sm\\:column-gap-7 {\n    column-gap: 4rem !important;\n  }\n  .sm\\:column-gap-8 {\n    column-gap: 5rem !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:gap-0 {\n    gap: 0rem !important;\n  }\n  .md\\:gap-1 {\n    gap: 0.25rem !important;\n  }\n  .md\\:gap-2 {\n    gap: 0.5rem !important;\n  }\n  .md\\:gap-3 {\n    gap: 1rem !important;\n  }\n  .md\\:gap-4 {\n    gap: 1.5rem !important;\n  }\n  .md\\:gap-5 {\n    gap: 2rem !important;\n  }\n  .md\\:gap-6 {\n    gap: 3rem !important;\n  }\n  .md\\:gap-7 {\n    gap: 4rem !important;\n  }\n  .md\\:gap-8 {\n    gap: 5rem !important;\n  }\n  .md\\:row-gap-0 {\n    row-gap: 0rem !important;\n  }\n  .md\\:row-gap-1 {\n    row-gap: 0.25rem !important;\n  }\n  .md\\:row-gap-2 {\n    row-gap: 0.5rem !important;\n  }\n  .md\\:row-gap-3 {\n    row-gap: 1rem !important;\n  }\n  .md\\:row-gap-4 {\n    row-gap: 1.5rem !important;\n  }\n  .md\\:row-gap-5 {\n    row-gap: 2rem !important;\n  }\n  .md\\:row-gap-6 {\n    row-gap: 3rem !important;\n  }\n  .md\\:row-gap-7 {\n    row-gap: 4rem !important;\n  }\n  .md\\:row-gap-8 {\n    row-gap: 5rem !important;\n  }\n  .md\\:column-gap-0 {\n    column-gap: 0rem !important;\n  }\n  .md\\:column-gap-1 {\n    column-gap: 0.25rem !important;\n  }\n  .md\\:column-gap-2 {\n    column-gap: 0.5rem !important;\n  }\n  .md\\:column-gap-3 {\n    column-gap: 1rem !important;\n  }\n  .md\\:column-gap-4 {\n    column-gap: 1.5rem !important;\n  }\n  .md\\:column-gap-5 {\n    column-gap: 2rem !important;\n  }\n  .md\\:column-gap-6 {\n    column-gap: 3rem !important;\n  }\n  .md\\:column-gap-7 {\n    column-gap: 4rem !important;\n  }\n  .md\\:column-gap-8 {\n    column-gap: 5rem !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:gap-0 {\n    gap: 0rem !important;\n  }\n  .lg\\:gap-1 {\n    gap: 0.25rem !important;\n  }\n  .lg\\:gap-2 {\n    gap: 0.5rem !important;\n  }\n  .lg\\:gap-3 {\n    gap: 1rem !important;\n  }\n  .lg\\:gap-4 {\n    gap: 1.5rem !important;\n  }\n  .lg\\:gap-5 {\n    gap: 2rem !important;\n  }\n  .lg\\:gap-6 {\n    gap: 3rem !important;\n  }\n  .lg\\:gap-7 {\n    gap: 4rem !important;\n  }\n  .lg\\:gap-8 {\n    gap: 5rem !important;\n  }\n  .lg\\:row-gap-0 {\n    row-gap: 0rem !important;\n  }\n  .lg\\:row-gap-1 {\n    row-gap: 0.25rem !important;\n  }\n  .lg\\:row-gap-2 {\n    row-gap: 0.5rem !important;\n  }\n  .lg\\:row-gap-3 {\n    row-gap: 1rem !important;\n  }\n  .lg\\:row-gap-4 {\n    row-gap: 1.5rem !important;\n  }\n  .lg\\:row-gap-5 {\n    row-gap: 2rem !important;\n  }\n  .lg\\:row-gap-6 {\n    row-gap: 3rem !important;\n  }\n  .lg\\:row-gap-7 {\n    row-gap: 4rem !important;\n  }\n  .lg\\:row-gap-8 {\n    row-gap: 5rem !important;\n  }\n  .lg\\:column-gap-0 {\n    column-gap: 0rem !important;\n  }\n  .lg\\:column-gap-1 {\n    column-gap: 0.25rem !important;\n  }\n  .lg\\:column-gap-2 {\n    column-gap: 0.5rem !important;\n  }\n  .lg\\:column-gap-3 {\n    column-gap: 1rem !important;\n  }\n  .lg\\:column-gap-4 {\n    column-gap: 1.5rem !important;\n  }\n  .lg\\:column-gap-5 {\n    column-gap: 2rem !important;\n  }\n  .lg\\:column-gap-6 {\n    column-gap: 3rem !important;\n  }\n  .lg\\:column-gap-7 {\n    column-gap: 4rem !important;\n  }\n  .lg\\:column-gap-8 {\n    column-gap: 5rem !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:gap-0 {\n    gap: 0rem !important;\n  }\n  .xl\\:gap-1 {\n    gap: 0.25rem !important;\n  }\n  .xl\\:gap-2 {\n    gap: 0.5rem !important;\n  }\n  .xl\\:gap-3 {\n    gap: 1rem !important;\n  }\n  .xl\\:gap-4 {\n    gap: 1.5rem !important;\n  }\n  .xl\\:gap-5 {\n    gap: 2rem !important;\n  }\n  .xl\\:gap-6 {\n    gap: 3rem !important;\n  }\n  .xl\\:gap-7 {\n    gap: 4rem !important;\n  }\n  .xl\\:gap-8 {\n    gap: 5rem !important;\n  }\n  .xl\\:row-gap-0 {\n    row-gap: 0rem !important;\n  }\n  .xl\\:row-gap-1 {\n    row-gap: 0.25rem !important;\n  }\n  .xl\\:row-gap-2 {\n    row-gap: 0.5rem !important;\n  }\n  .xl\\:row-gap-3 {\n    row-gap: 1rem !important;\n  }\n  .xl\\:row-gap-4 {\n    row-gap: 1.5rem !important;\n  }\n  .xl\\:row-gap-5 {\n    row-gap: 2rem !important;\n  }\n  .xl\\:row-gap-6 {\n    row-gap: 3rem !important;\n  }\n  .xl\\:row-gap-7 {\n    row-gap: 4rem !important;\n  }\n  .xl\\:row-gap-8 {\n    row-gap: 5rem !important;\n  }\n  .xl\\:column-gap-0 {\n    column-gap: 0rem !important;\n  }\n  .xl\\:column-gap-1 {\n    column-gap: 0.25rem !important;\n  }\n  .xl\\:column-gap-2 {\n    column-gap: 0.5rem !important;\n  }\n  .xl\\:column-gap-3 {\n    column-gap: 1rem !important;\n  }\n  .xl\\:column-gap-4 {\n    column-gap: 1.5rem !important;\n  }\n  .xl\\:column-gap-5 {\n    column-gap: 2rem !important;\n  }\n  .xl\\:column-gap-6 {\n    column-gap: 3rem !important;\n  }\n  .xl\\:column-gap-7 {\n    column-gap: 4rem !important;\n  }\n  .xl\\:column-gap-8 {\n    column-gap: 5rem !important;\n  }\n}\n.p-0 {\n  padding: 0rem !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 2rem !important;\n}\n\n.p-6 {\n  padding: 3rem !important;\n}\n\n.p-7 {\n  padding: 4rem !important;\n}\n\n.p-8 {\n  padding: 5rem !important;\n}\n\n.pt-0 {\n  padding-top: 0rem !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 2rem !important;\n}\n\n.pt-6 {\n  padding-top: 3rem !important;\n}\n\n.pt-7 {\n  padding-top: 4rem !important;\n}\n\n.pt-8 {\n  padding-top: 5rem !important;\n}\n\n.pr-0 {\n  padding-right: 0rem !important;\n}\n\n.pr-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pr-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pr-3 {\n  padding-right: 1rem !important;\n}\n\n.pr-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pr-5 {\n  padding-right: 2rem !important;\n}\n\n.pr-6 {\n  padding-right: 3rem !important;\n}\n\n.pr-7 {\n  padding-right: 4rem !important;\n}\n\n.pr-8 {\n  padding-right: 5rem !important;\n}\n\n.pl-0 {\n  padding-left: 0rem !important;\n}\n\n.pl-1 {\n  padding-left: 0.25rem !important;\n}\n\n.pl-2 {\n  padding-left: 0.5rem !important;\n}\n\n.pl-3 {\n  padding-left: 1rem !important;\n}\n\n.pl-4 {\n  padding-left: 1.5rem !important;\n}\n\n.pl-5 {\n  padding-left: 2rem !important;\n}\n\n.pl-6 {\n  padding-left: 3rem !important;\n}\n\n.pl-7 {\n  padding-left: 4rem !important;\n}\n\n.pl-8 {\n  padding-left: 5rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0rem !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 2rem !important;\n}\n\n.pb-6 {\n  padding-bottom: 3rem !important;\n}\n\n.pb-7 {\n  padding-bottom: 4rem !important;\n}\n\n.pb-8 {\n  padding-bottom: 5rem !important;\n}\n\n.px-0 {\n  padding-left: 0rem !important;\n  padding-right: 0rem !important;\n}\n\n.px-1 {\n  padding-left: 0.25rem !important;\n  padding-right: 0.25rem !important;\n}\n\n.px-2 {\n  padding-left: 0.5rem !important;\n  padding-right: 0.5rem !important;\n}\n\n.px-3 {\n  padding-left: 1rem !important;\n  padding-right: 1rem !important;\n}\n\n.px-4 {\n  padding-left: 1.5rem !important;\n  padding-right: 1.5rem !important;\n}\n\n.px-5 {\n  padding-left: 2rem !important;\n  padding-right: 2rem !important;\n}\n\n.px-6 {\n  padding-left: 3rem !important;\n  padding-right: 3rem !important;\n}\n\n.px-7 {\n  padding-left: 4rem !important;\n  padding-right: 4rem !important;\n}\n\n.px-8 {\n  padding-left: 5rem !important;\n  padding-right: 5rem !important;\n}\n\n.py-0 {\n  padding-top: 0rem !important;\n  padding-bottom: 0rem !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 2rem !important;\n  padding-bottom: 2rem !important;\n}\n\n.py-6 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.py-7 {\n  padding-top: 4rem !important;\n  padding-bottom: 4rem !important;\n}\n\n.py-8 {\n  padding-top: 5rem !important;\n  padding-bottom: 5rem !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:p-0 {\n    padding: 0rem !important;\n  }\n  .sm\\:p-1 {\n    padding: 0.25rem !important;\n  }\n  .sm\\:p-2 {\n    padding: 0.5rem !important;\n  }\n  .sm\\:p-3 {\n    padding: 1rem !important;\n  }\n  .sm\\:p-4 {\n    padding: 1.5rem !important;\n  }\n  .sm\\:p-5 {\n    padding: 2rem !important;\n  }\n  .sm\\:p-6 {\n    padding: 3rem !important;\n  }\n  .sm\\:p-7 {\n    padding: 4rem !important;\n  }\n  .sm\\:p-8 {\n    padding: 5rem !important;\n  }\n  .sm\\:pt-0 {\n    padding-top: 0rem !important;\n  }\n  .sm\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n  .sm\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n  .sm\\:pt-3 {\n    padding-top: 1rem !important;\n  }\n  .sm\\:pt-4 {\n    padding-top: 1.5rem !important;\n  }\n  .sm\\:pt-5 {\n    padding-top: 2rem !important;\n  }\n  .sm\\:pt-6 {\n    padding-top: 3rem !important;\n  }\n  .sm\\:pt-7 {\n    padding-top: 4rem !important;\n  }\n  .sm\\:pt-8 {\n    padding-top: 5rem !important;\n  }\n  .sm\\:pr-0 {\n    padding-right: 0rem !important;\n  }\n  .sm\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n  .sm\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n  .sm\\:pr-3 {\n    padding-right: 1rem !important;\n  }\n  .sm\\:pr-4 {\n    padding-right: 1.5rem !important;\n  }\n  .sm\\:pr-5 {\n    padding-right: 2rem !important;\n  }\n  .sm\\:pr-6 {\n    padding-right: 3rem !important;\n  }\n  .sm\\:pr-7 {\n    padding-right: 4rem !important;\n  }\n  .sm\\:pr-8 {\n    padding-right: 5rem !important;\n  }\n  .sm\\:pl-0 {\n    padding-left: 0rem !important;\n  }\n  .sm\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n  .sm\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n  .sm\\:pl-3 {\n    padding-left: 1rem !important;\n  }\n  .sm\\:pl-4 {\n    padding-left: 1.5rem !important;\n  }\n  .sm\\:pl-5 {\n    padding-left: 2rem !important;\n  }\n  .sm\\:pl-6 {\n    padding-left: 3rem !important;\n  }\n  .sm\\:pl-7 {\n    padding-left: 4rem !important;\n  }\n  .sm\\:pl-8 {\n    padding-left: 5rem !important;\n  }\n  .sm\\:pb-0 {\n    padding-bottom: 0rem !important;\n  }\n  .sm\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .sm\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .sm\\:pb-3 {\n    padding-bottom: 1rem !important;\n  }\n  .sm\\:pb-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .sm\\:pb-5 {\n    padding-bottom: 2rem !important;\n  }\n  .sm\\:pb-6 {\n    padding-bottom: 3rem !important;\n  }\n  .sm\\:pb-7 {\n    padding-bottom: 4rem !important;\n  }\n  .sm\\:pb-8 {\n    padding-bottom: 5rem !important;\n  }\n  .sm\\:px-0 {\n    padding-left: 0rem !important;\n    padding-right: 0rem !important;\n  }\n  .sm\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n  .sm\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n  .sm\\:px-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n  .sm\\:px-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n  .sm\\:px-5 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n  .sm\\:px-6 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n  .sm\\:px-7 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n  .sm\\:px-8 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n  .sm\\:py-0 {\n    padding-top: 0rem !important;\n    padding-bottom: 0rem !important;\n  }\n  .sm\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n  .sm\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n  .sm\\:py-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n  .sm\\:py-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n  .sm\\:py-5 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n  .sm\\:py-6 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n  .sm\\:py-7 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n  .sm\\:py-8 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:p-0 {\n    padding: 0rem !important;\n  }\n  .md\\:p-1 {\n    padding: 0.25rem !important;\n  }\n  .md\\:p-2 {\n    padding: 0.5rem !important;\n  }\n  .md\\:p-3 {\n    padding: 1rem !important;\n  }\n  .md\\:p-4 {\n    padding: 1.5rem !important;\n  }\n  .md\\:p-5 {\n    padding: 2rem !important;\n  }\n  .md\\:p-6 {\n    padding: 3rem !important;\n  }\n  .md\\:p-7 {\n    padding: 4rem !important;\n  }\n  .md\\:p-8 {\n    padding: 5rem !important;\n  }\n  .md\\:pt-0 {\n    padding-top: 0rem !important;\n  }\n  .md\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n  .md\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n  .md\\:pt-3 {\n    padding-top: 1rem !important;\n  }\n  .md\\:pt-4 {\n    padding-top: 1.5rem !important;\n  }\n  .md\\:pt-5 {\n    padding-top: 2rem !important;\n  }\n  .md\\:pt-6 {\n    padding-top: 3rem !important;\n  }\n  .md\\:pt-7 {\n    padding-top: 4rem !important;\n  }\n  .md\\:pt-8 {\n    padding-top: 5rem !important;\n  }\n  .md\\:pr-0 {\n    padding-right: 0rem !important;\n  }\n  .md\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n  .md\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n  .md\\:pr-3 {\n    padding-right: 1rem !important;\n  }\n  .md\\:pr-4 {\n    padding-right: 1.5rem !important;\n  }\n  .md\\:pr-5 {\n    padding-right: 2rem !important;\n  }\n  .md\\:pr-6 {\n    padding-right: 3rem !important;\n  }\n  .md\\:pr-7 {\n    padding-right: 4rem !important;\n  }\n  .md\\:pr-8 {\n    padding-right: 5rem !important;\n  }\n  .md\\:pl-0 {\n    padding-left: 0rem !important;\n  }\n  .md\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n  .md\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n  .md\\:pl-3 {\n    padding-left: 1rem !important;\n  }\n  .md\\:pl-4 {\n    padding-left: 1.5rem !important;\n  }\n  .md\\:pl-5 {\n    padding-left: 2rem !important;\n  }\n  .md\\:pl-6 {\n    padding-left: 3rem !important;\n  }\n  .md\\:pl-7 {\n    padding-left: 4rem !important;\n  }\n  .md\\:pl-8 {\n    padding-left: 5rem !important;\n  }\n  .md\\:pb-0 {\n    padding-bottom: 0rem !important;\n  }\n  .md\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .md\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .md\\:pb-3 {\n    padding-bottom: 1rem !important;\n  }\n  .md\\:pb-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .md\\:pb-5 {\n    padding-bottom: 2rem !important;\n  }\n  .md\\:pb-6 {\n    padding-bottom: 3rem !important;\n  }\n  .md\\:pb-7 {\n    padding-bottom: 4rem !important;\n  }\n  .md\\:pb-8 {\n    padding-bottom: 5rem !important;\n  }\n  .md\\:px-0 {\n    padding-left: 0rem !important;\n    padding-right: 0rem !important;\n  }\n  .md\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n  .md\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n  .md\\:px-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n  .md\\:px-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n  .md\\:px-5 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n  .md\\:px-6 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n  .md\\:px-7 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n  .md\\:px-8 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n  .md\\:py-0 {\n    padding-top: 0rem !important;\n    padding-bottom: 0rem !important;\n  }\n  .md\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n  .md\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n  .md\\:py-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n  .md\\:py-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n  .md\\:py-5 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n  .md\\:py-6 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n  .md\\:py-7 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n  .md\\:py-8 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:p-0 {\n    padding: 0rem !important;\n  }\n  .lg\\:p-1 {\n    padding: 0.25rem !important;\n  }\n  .lg\\:p-2 {\n    padding: 0.5rem !important;\n  }\n  .lg\\:p-3 {\n    padding: 1rem !important;\n  }\n  .lg\\:p-4 {\n    padding: 1.5rem !important;\n  }\n  .lg\\:p-5 {\n    padding: 2rem !important;\n  }\n  .lg\\:p-6 {\n    padding: 3rem !important;\n  }\n  .lg\\:p-7 {\n    padding: 4rem !important;\n  }\n  .lg\\:p-8 {\n    padding: 5rem !important;\n  }\n  .lg\\:pt-0 {\n    padding-top: 0rem !important;\n  }\n  .lg\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n  .lg\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n  .lg\\:pt-3 {\n    padding-top: 1rem !important;\n  }\n  .lg\\:pt-4 {\n    padding-top: 1.5rem !important;\n  }\n  .lg\\:pt-5 {\n    padding-top: 2rem !important;\n  }\n  .lg\\:pt-6 {\n    padding-top: 3rem !important;\n  }\n  .lg\\:pt-7 {\n    padding-top: 4rem !important;\n  }\n  .lg\\:pt-8 {\n    padding-top: 5rem !important;\n  }\n  .lg\\:pr-0 {\n    padding-right: 0rem !important;\n  }\n  .lg\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n  .lg\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n  .lg\\:pr-3 {\n    padding-right: 1rem !important;\n  }\n  .lg\\:pr-4 {\n    padding-right: 1.5rem !important;\n  }\n  .lg\\:pr-5 {\n    padding-right: 2rem !important;\n  }\n  .lg\\:pr-6 {\n    padding-right: 3rem !important;\n  }\n  .lg\\:pr-7 {\n    padding-right: 4rem !important;\n  }\n  .lg\\:pr-8 {\n    padding-right: 5rem !important;\n  }\n  .lg\\:pl-0 {\n    padding-left: 0rem !important;\n  }\n  .lg\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n  .lg\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n  .lg\\:pl-3 {\n    padding-left: 1rem !important;\n  }\n  .lg\\:pl-4 {\n    padding-left: 1.5rem !important;\n  }\n  .lg\\:pl-5 {\n    padding-left: 2rem !important;\n  }\n  .lg\\:pl-6 {\n    padding-left: 3rem !important;\n  }\n  .lg\\:pl-7 {\n    padding-left: 4rem !important;\n  }\n  .lg\\:pl-8 {\n    padding-left: 5rem !important;\n  }\n  .lg\\:pb-0 {\n    padding-bottom: 0rem !important;\n  }\n  .lg\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .lg\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .lg\\:pb-3 {\n    padding-bottom: 1rem !important;\n  }\n  .lg\\:pb-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .lg\\:pb-5 {\n    padding-bottom: 2rem !important;\n  }\n  .lg\\:pb-6 {\n    padding-bottom: 3rem !important;\n  }\n  .lg\\:pb-7 {\n    padding-bottom: 4rem !important;\n  }\n  .lg\\:pb-8 {\n    padding-bottom: 5rem !important;\n  }\n  .lg\\:px-0 {\n    padding-left: 0rem !important;\n    padding-right: 0rem !important;\n  }\n  .lg\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n  .lg\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n  .lg\\:px-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n  .lg\\:px-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n  .lg\\:px-5 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n  .lg\\:px-6 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n  .lg\\:px-7 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n  .lg\\:px-8 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n  .lg\\:py-0 {\n    padding-top: 0rem !important;\n    padding-bottom: 0rem !important;\n  }\n  .lg\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n  .lg\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n  .lg\\:py-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n  .lg\\:py-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n  .lg\\:py-5 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n  .lg\\:py-6 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n  .lg\\:py-7 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n  .lg\\:py-8 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:p-0 {\n    padding: 0rem !important;\n  }\n  .xl\\:p-1 {\n    padding: 0.25rem !important;\n  }\n  .xl\\:p-2 {\n    padding: 0.5rem !important;\n  }\n  .xl\\:p-3 {\n    padding: 1rem !important;\n  }\n  .xl\\:p-4 {\n    padding: 1.5rem !important;\n  }\n  .xl\\:p-5 {\n    padding: 2rem !important;\n  }\n  .xl\\:p-6 {\n    padding: 3rem !important;\n  }\n  .xl\\:p-7 {\n    padding: 4rem !important;\n  }\n  .xl\\:p-8 {\n    padding: 5rem !important;\n  }\n  .xl\\:pt-0 {\n    padding-top: 0rem !important;\n  }\n  .xl\\:pt-1 {\n    padding-top: 0.25rem !important;\n  }\n  .xl\\:pt-2 {\n    padding-top: 0.5rem !important;\n  }\n  .xl\\:pt-3 {\n    padding-top: 1rem !important;\n  }\n  .xl\\:pt-4 {\n    padding-top: 1.5rem !important;\n  }\n  .xl\\:pt-5 {\n    padding-top: 2rem !important;\n  }\n  .xl\\:pt-6 {\n    padding-top: 3rem !important;\n  }\n  .xl\\:pt-7 {\n    padding-top: 4rem !important;\n  }\n  .xl\\:pt-8 {\n    padding-top: 5rem !important;\n  }\n  .xl\\:pr-0 {\n    padding-right: 0rem !important;\n  }\n  .xl\\:pr-1 {\n    padding-right: 0.25rem !important;\n  }\n  .xl\\:pr-2 {\n    padding-right: 0.5rem !important;\n  }\n  .xl\\:pr-3 {\n    padding-right: 1rem !important;\n  }\n  .xl\\:pr-4 {\n    padding-right: 1.5rem !important;\n  }\n  .xl\\:pr-5 {\n    padding-right: 2rem !important;\n  }\n  .xl\\:pr-6 {\n    padding-right: 3rem !important;\n  }\n  .xl\\:pr-7 {\n    padding-right: 4rem !important;\n  }\n  .xl\\:pr-8 {\n    padding-right: 5rem !important;\n  }\n  .xl\\:pl-0 {\n    padding-left: 0rem !important;\n  }\n  .xl\\:pl-1 {\n    padding-left: 0.25rem !important;\n  }\n  .xl\\:pl-2 {\n    padding-left: 0.5rem !important;\n  }\n  .xl\\:pl-3 {\n    padding-left: 1rem !important;\n  }\n  .xl\\:pl-4 {\n    padding-left: 1.5rem !important;\n  }\n  .xl\\:pl-5 {\n    padding-left: 2rem !important;\n  }\n  .xl\\:pl-6 {\n    padding-left: 3rem !important;\n  }\n  .xl\\:pl-7 {\n    padding-left: 4rem !important;\n  }\n  .xl\\:pl-8 {\n    padding-left: 5rem !important;\n  }\n  .xl\\:pb-0 {\n    padding-bottom: 0rem !important;\n  }\n  .xl\\:pb-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .xl\\:pb-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .xl\\:pb-3 {\n    padding-bottom: 1rem !important;\n  }\n  .xl\\:pb-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .xl\\:pb-5 {\n    padding-bottom: 2rem !important;\n  }\n  .xl\\:pb-6 {\n    padding-bottom: 3rem !important;\n  }\n  .xl\\:pb-7 {\n    padding-bottom: 4rem !important;\n  }\n  .xl\\:pb-8 {\n    padding-bottom: 5rem !important;\n  }\n  .xl\\:px-0 {\n    padding-left: 0rem !important;\n    padding-right: 0rem !important;\n  }\n  .xl\\:px-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n  .xl\\:px-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n  .xl\\:px-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n  .xl\\:px-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n  .xl\\:px-5 {\n    padding-left: 2rem !important;\n    padding-right: 2rem !important;\n  }\n  .xl\\:px-6 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n  .xl\\:px-7 {\n    padding-left: 4rem !important;\n    padding-right: 4rem !important;\n  }\n  .xl\\:px-8 {\n    padding-left: 5rem !important;\n    padding-right: 5rem !important;\n  }\n  .xl\\:py-0 {\n    padding-top: 0rem !important;\n    padding-bottom: 0rem !important;\n  }\n  .xl\\:py-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n  .xl\\:py-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n  .xl\\:py-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n  .xl\\:py-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n  .xl\\:py-5 {\n    padding-top: 2rem !important;\n    padding-bottom: 2rem !important;\n  }\n  .xl\\:py-6 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n  .xl\\:py-7 {\n    padding-top: 4rem !important;\n    padding-bottom: 4rem !important;\n  }\n  .xl\\:py-8 {\n    padding-top: 5rem !important;\n    padding-bottom: 5rem !important;\n  }\n}\n.m-0 {\n  margin: 0rem !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 2rem !important;\n}\n\n.m-6 {\n  margin: 3rem !important;\n}\n\n.m-7 {\n  margin: 4rem !important;\n}\n\n.m-8 {\n  margin: 5rem !important;\n}\n\n.-m-1 {\n  margin: -0.25rem !important;\n}\n\n.-m-2 {\n  margin: -0.5rem !important;\n}\n\n.-m-3 {\n  margin: -1rem !important;\n}\n\n.-m-4 {\n  margin: -1.5rem !important;\n}\n\n.-m-5 {\n  margin: -2rem !important;\n}\n\n.-m-6 {\n  margin: -3rem !important;\n}\n\n.-m-7 {\n  margin: -4rem !important;\n}\n\n.-m-8 {\n  margin: -5rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0rem !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 2rem !important;\n}\n\n.mt-6 {\n  margin-top: 3rem !important;\n}\n\n.mt-7 {\n  margin-top: 4rem !important;\n}\n\n.mt-8 {\n  margin-top: 5rem !important;\n}\n\n.-mt-1 {\n  margin-top: -0.25rem !important;\n}\n\n.-mt-2 {\n  margin-top: -0.5rem !important;\n}\n\n.-mt-3 {\n  margin-top: -1rem !important;\n}\n\n.-mt-4 {\n  margin-top: -1.5rem !important;\n}\n\n.-mt-5 {\n  margin-top: -2rem !important;\n}\n\n.-mt-6 {\n  margin-top: -3rem !important;\n}\n\n.-mt-7 {\n  margin-top: -4rem !important;\n}\n\n.-mt-8 {\n  margin-top: -5rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.mr-0 {\n  margin-right: 0rem !important;\n}\n\n.mr-1 {\n  margin-right: 0.25rem !important;\n}\n\n.mr-2 {\n  margin-right: 0.5rem !important;\n}\n\n.mr-3 {\n  margin-right: 1rem !important;\n}\n\n.mr-4 {\n  margin-right: 1.5rem !important;\n}\n\n.mr-5 {\n  margin-right: 2rem !important;\n}\n\n.mr-6 {\n  margin-right: 3rem !important;\n}\n\n.mr-7 {\n  margin-right: 4rem !important;\n}\n\n.mr-8 {\n  margin-right: 5rem !important;\n}\n\n.-mr-1 {\n  margin-right: -0.25rem !important;\n}\n\n.-mr-2 {\n  margin-right: -0.5rem !important;\n}\n\n.-mr-3 {\n  margin-right: -1rem !important;\n}\n\n.-mr-4 {\n  margin-right: -1.5rem !important;\n}\n\n.-mr-5 {\n  margin-right: -2rem !important;\n}\n\n.-mr-6 {\n  margin-right: -3rem !important;\n}\n\n.-mr-7 {\n  margin-right: -4rem !important;\n}\n\n.-mr-8 {\n  margin-right: -5rem !important;\n}\n\n.mr-auto {\n  margin-right: auto !important;\n}\n\n.ml-0 {\n  margin-left: 0rem !important;\n}\n\n.ml-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ml-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ml-3 {\n  margin-left: 1rem !important;\n}\n\n.ml-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ml-5 {\n  margin-left: 2rem !important;\n}\n\n.ml-6 {\n  margin-left: 3rem !important;\n}\n\n.ml-7 {\n  margin-left: 4rem !important;\n}\n\n.ml-8 {\n  margin-left: 5rem !important;\n}\n\n.-ml-1 {\n  margin-left: -0.25rem !important;\n}\n\n.-ml-2 {\n  margin-left: -0.5rem !important;\n}\n\n.-ml-3 {\n  margin-left: -1rem !important;\n}\n\n.-ml-4 {\n  margin-left: -1.5rem !important;\n}\n\n.-ml-5 {\n  margin-left: -2rem !important;\n}\n\n.-ml-6 {\n  margin-left: -3rem !important;\n}\n\n.-ml-7 {\n  margin-left: -4rem !important;\n}\n\n.-ml-8 {\n  margin-left: -5rem !important;\n}\n\n.ml-auto {\n  margin-left: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0rem !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 2rem !important;\n}\n\n.mb-6 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-7 {\n  margin-bottom: 4rem !important;\n}\n\n.mb-8 {\n  margin-bottom: 5rem !important;\n}\n\n.-mb-1 {\n  margin-bottom: -0.25rem !important;\n}\n\n.-mb-2 {\n  margin-bottom: -0.5rem !important;\n}\n\n.-mb-3 {\n  margin-bottom: -1rem !important;\n}\n\n.-mb-4 {\n  margin-bottom: -1.5rem !important;\n}\n\n.-mb-5 {\n  margin-bottom: -2rem !important;\n}\n\n.-mb-6 {\n  margin-bottom: -3rem !important;\n}\n\n.-mb-7 {\n  margin-bottom: -4rem !important;\n}\n\n.-mb-8 {\n  margin-bottom: -5rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.mx-0 {\n  margin-left: 0rem !important;\n  margin-right: 0rem !important;\n}\n\n.mx-1 {\n  margin-left: 0.25rem !important;\n  margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-left: 0.5rem !important;\n  margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-left: 1rem !important;\n  margin-right: 1rem !important;\n}\n\n.mx-4 {\n  margin-left: 1.5rem !important;\n  margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-left: 2rem !important;\n  margin-right: 2rem !important;\n}\n\n.mx-6 {\n  margin-left: 3rem !important;\n  margin-right: 3rem !important;\n}\n\n.mx-7 {\n  margin-left: 4rem !important;\n  margin-right: 4rem !important;\n}\n\n.mx-8 {\n  margin-left: 5rem !important;\n  margin-right: 5rem !important;\n}\n\n.-mx-1 {\n  margin-left: -0.25rem !important;\n  margin-right: -0.25rem !important;\n}\n\n.-mx-2 {\n  margin-left: -0.5rem !important;\n  margin-right: -0.5rem !important;\n}\n\n.-mx-3 {\n  margin-left: -1rem !important;\n  margin-right: -1rem !important;\n}\n\n.-mx-4 {\n  margin-left: -1.5rem !important;\n  margin-right: -1.5rem !important;\n}\n\n.-mx-5 {\n  margin-left: -2rem !important;\n  margin-right: -2rem !important;\n}\n\n.-mx-6 {\n  margin-left: -3rem !important;\n  margin-right: -3rem !important;\n}\n\n.-mx-7 {\n  margin-left: -4rem !important;\n  margin-right: -4rem !important;\n}\n\n.-mx-8 {\n  margin-left: -5rem !important;\n  margin-right: -5rem !important;\n}\n\n.mx-auto {\n  margin-left: auto !important;\n  margin-right: auto !important;\n}\n\n.my-0 {\n  margin-top: 0rem !important;\n  margin-bottom: 0rem !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 2rem !important;\n  margin-bottom: 2rem !important;\n}\n\n.my-6 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-7 {\n  margin-top: 4rem !important;\n  margin-bottom: 4rem !important;\n}\n\n.my-8 {\n  margin-top: 5rem !important;\n  margin-bottom: 5rem !important;\n}\n\n.-my-1 {\n  margin-top: -0.25rem !important;\n  margin-bottom: -0.25rem !important;\n}\n\n.-my-2 {\n  margin-top: -0.5rem !important;\n  margin-bottom: -0.5rem !important;\n}\n\n.-my-3 {\n  margin-top: -1rem !important;\n  margin-bottom: -1rem !important;\n}\n\n.-my-4 {\n  margin-top: -1.5rem !important;\n  margin-bottom: -1.5rem !important;\n}\n\n.-my-5 {\n  margin-top: -2rem !important;\n  margin-bottom: -2rem !important;\n}\n\n.-my-6 {\n  margin-top: -3rem !important;\n  margin-bottom: -3rem !important;\n}\n\n.-my-7 {\n  margin-top: -4rem !important;\n  margin-bottom: -4rem !important;\n}\n\n.-my-8 {\n  margin-top: -5rem !important;\n  margin-bottom: -5rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:m-0 {\n    margin: 0rem !important;\n  }\n  .sm\\:m-1 {\n    margin: 0.25rem !important;\n  }\n  .sm\\:m-2 {\n    margin: 0.5rem !important;\n  }\n  .sm\\:m-3 {\n    margin: 1rem !important;\n  }\n  .sm\\:m-4 {\n    margin: 1.5rem !important;\n  }\n  .sm\\:m-5 {\n    margin: 2rem !important;\n  }\n  .sm\\:m-6 {\n    margin: 3rem !important;\n  }\n  .sm\\:m-7 {\n    margin: 4rem !important;\n  }\n  .sm\\:m-8 {\n    margin: 5rem !important;\n  }\n  .sm\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n  .sm\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n  .sm\\:-m-3 {\n    margin: -1rem !important;\n  }\n  .sm\\:-m-4 {\n    margin: -1.5rem !important;\n  }\n  .sm\\:-m-5 {\n    margin: -2rem !important;\n  }\n  .sm\\:-m-6 {\n    margin: -3rem !important;\n  }\n  .sm\\:-m-7 {\n    margin: -4rem !important;\n  }\n  .sm\\:-m-8 {\n    margin: -5rem !important;\n  }\n  .sm\\:m-auto {\n    margin: auto !important;\n  }\n  .sm\\:mt-0 {\n    margin-top: 0rem !important;\n  }\n  .sm\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n  .sm\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n  .sm\\:mt-3 {\n    margin-top: 1rem !important;\n  }\n  .sm\\:mt-4 {\n    margin-top: 1.5rem !important;\n  }\n  .sm\\:mt-5 {\n    margin-top: 2rem !important;\n  }\n  .sm\\:mt-6 {\n    margin-top: 3rem !important;\n  }\n  .sm\\:mt-7 {\n    margin-top: 4rem !important;\n  }\n  .sm\\:mt-8 {\n    margin-top: 5rem !important;\n  }\n  .sm\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n  .sm\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n  .sm\\:-mt-3 {\n    margin-top: -1rem !important;\n  }\n  .sm\\:-mt-4 {\n    margin-top: -1.5rem !important;\n  }\n  .sm\\:-mt-5 {\n    margin-top: -2rem !important;\n  }\n  .sm\\:-mt-6 {\n    margin-top: -3rem !important;\n  }\n  .sm\\:-mt-7 {\n    margin-top: -4rem !important;\n  }\n  .sm\\:-mt-8 {\n    margin-top: -5rem !important;\n  }\n  .sm\\:mt-auto {\n    margin-top: auto !important;\n  }\n  .sm\\:mr-0 {\n    margin-right: 0rem !important;\n  }\n  .sm\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n  .sm\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n  .sm\\:mr-3 {\n    margin-right: 1rem !important;\n  }\n  .sm\\:mr-4 {\n    margin-right: 1.5rem !important;\n  }\n  .sm\\:mr-5 {\n    margin-right: 2rem !important;\n  }\n  .sm\\:mr-6 {\n    margin-right: 3rem !important;\n  }\n  .sm\\:mr-7 {\n    margin-right: 4rem !important;\n  }\n  .sm\\:mr-8 {\n    margin-right: 5rem !important;\n  }\n  .sm\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n  .sm\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n  .sm\\:-mr-3 {\n    margin-right: -1rem !important;\n  }\n  .sm\\:-mr-4 {\n    margin-right: -1.5rem !important;\n  }\n  .sm\\:-mr-5 {\n    margin-right: -2rem !important;\n  }\n  .sm\\:-mr-6 {\n    margin-right: -3rem !important;\n  }\n  .sm\\:-mr-7 {\n    margin-right: -4rem !important;\n  }\n  .sm\\:-mr-8 {\n    margin-right: -5rem !important;\n  }\n  .sm\\:mr-auto {\n    margin-right: auto !important;\n  }\n  .sm\\:ml-0 {\n    margin-left: 0rem !important;\n  }\n  .sm\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n  .sm\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n  .sm\\:ml-3 {\n    margin-left: 1rem !important;\n  }\n  .sm\\:ml-4 {\n    margin-left: 1.5rem !important;\n  }\n  .sm\\:ml-5 {\n    margin-left: 2rem !important;\n  }\n  .sm\\:ml-6 {\n    margin-left: 3rem !important;\n  }\n  .sm\\:ml-7 {\n    margin-left: 4rem !important;\n  }\n  .sm\\:ml-8 {\n    margin-left: 5rem !important;\n  }\n  .sm\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n  .sm\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n  .sm\\:-ml-3 {\n    margin-left: -1rem !important;\n  }\n  .sm\\:-ml-4 {\n    margin-left: -1.5rem !important;\n  }\n  .sm\\:-ml-5 {\n    margin-left: -2rem !important;\n  }\n  .sm\\:-ml-6 {\n    margin-left: -3rem !important;\n  }\n  .sm\\:-ml-7 {\n    margin-left: -4rem !important;\n  }\n  .sm\\:-ml-8 {\n    margin-left: -5rem !important;\n  }\n  .sm\\:ml-auto {\n    margin-left: auto !important;\n  }\n  .sm\\:mb-0 {\n    margin-bottom: 0rem !important;\n  }\n  .sm\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .sm\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .sm\\:mb-3 {\n    margin-bottom: 1rem !important;\n  }\n  .sm\\:mb-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .sm\\:mb-5 {\n    margin-bottom: 2rem !important;\n  }\n  .sm\\:mb-6 {\n    margin-bottom: 3rem !important;\n  }\n  .sm\\:mb-7 {\n    margin-bottom: 4rem !important;\n  }\n  .sm\\:mb-8 {\n    margin-bottom: 5rem !important;\n  }\n  .sm\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n  .sm\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n  .sm\\:-mb-3 {\n    margin-bottom: -1rem !important;\n  }\n  .sm\\:-mb-4 {\n    margin-bottom: -1.5rem !important;\n  }\n  .sm\\:-mb-5 {\n    margin-bottom: -2rem !important;\n  }\n  .sm\\:-mb-6 {\n    margin-bottom: -3rem !important;\n  }\n  .sm\\:-mb-7 {\n    margin-bottom: -4rem !important;\n  }\n  .sm\\:-mb-8 {\n    margin-bottom: -5rem !important;\n  }\n  .sm\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n  .sm\\:mx-0 {\n    margin-left: 0rem !important;\n    margin-right: 0rem !important;\n  }\n  .sm\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n  .sm\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n  .sm\\:mx-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n  .sm\\:mx-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n  .sm\\:mx-5 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n  .sm\\:mx-6 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n  .sm\\:mx-7 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n  .sm\\:mx-8 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n  .sm\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n  .sm\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n  .sm\\:-mx-3 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n  .sm\\:-mx-4 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n  .sm\\:-mx-5 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n  .sm\\:-mx-6 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n  .sm\\:-mx-7 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n  .sm\\:-mx-8 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n  .sm\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n  .sm\\:my-0 {\n    margin-top: 0rem !important;\n    margin-bottom: 0rem !important;\n  }\n  .sm\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n  .sm\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n  .sm\\:my-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n  .sm\\:my-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n  .sm\\:my-5 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n  .sm\\:my-6 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n  .sm\\:my-7 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n  .sm\\:my-8 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n  .sm\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n  .sm\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n  .sm\\:-my-3 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n  .sm\\:-my-4 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n  .sm\\:-my-5 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n  .sm\\:-my-6 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n  .sm\\:-my-7 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n  .sm\\:-my-8 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n  .sm\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:m-0 {\n    margin: 0rem !important;\n  }\n  .md\\:m-1 {\n    margin: 0.25rem !important;\n  }\n  .md\\:m-2 {\n    margin: 0.5rem !important;\n  }\n  .md\\:m-3 {\n    margin: 1rem !important;\n  }\n  .md\\:m-4 {\n    margin: 1.5rem !important;\n  }\n  .md\\:m-5 {\n    margin: 2rem !important;\n  }\n  .md\\:m-6 {\n    margin: 3rem !important;\n  }\n  .md\\:m-7 {\n    margin: 4rem !important;\n  }\n  .md\\:m-8 {\n    margin: 5rem !important;\n  }\n  .md\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n  .md\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n  .md\\:-m-3 {\n    margin: -1rem !important;\n  }\n  .md\\:-m-4 {\n    margin: -1.5rem !important;\n  }\n  .md\\:-m-5 {\n    margin: -2rem !important;\n  }\n  .md\\:-m-6 {\n    margin: -3rem !important;\n  }\n  .md\\:-m-7 {\n    margin: -4rem !important;\n  }\n  .md\\:-m-8 {\n    margin: -5rem !important;\n  }\n  .md\\:m-auto {\n    margin: auto !important;\n  }\n  .md\\:mt-0 {\n    margin-top: 0rem !important;\n  }\n  .md\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n  .md\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n  .md\\:mt-3 {\n    margin-top: 1rem !important;\n  }\n  .md\\:mt-4 {\n    margin-top: 1.5rem !important;\n  }\n  .md\\:mt-5 {\n    margin-top: 2rem !important;\n  }\n  .md\\:mt-6 {\n    margin-top: 3rem !important;\n  }\n  .md\\:mt-7 {\n    margin-top: 4rem !important;\n  }\n  .md\\:mt-8 {\n    margin-top: 5rem !important;\n  }\n  .md\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n  .md\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n  .md\\:-mt-3 {\n    margin-top: -1rem !important;\n  }\n  .md\\:-mt-4 {\n    margin-top: -1.5rem !important;\n  }\n  .md\\:-mt-5 {\n    margin-top: -2rem !important;\n  }\n  .md\\:-mt-6 {\n    margin-top: -3rem !important;\n  }\n  .md\\:-mt-7 {\n    margin-top: -4rem !important;\n  }\n  .md\\:-mt-8 {\n    margin-top: -5rem !important;\n  }\n  .md\\:mt-auto {\n    margin-top: auto !important;\n  }\n  .md\\:mr-0 {\n    margin-right: 0rem !important;\n  }\n  .md\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n  .md\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n  .md\\:mr-3 {\n    margin-right: 1rem !important;\n  }\n  .md\\:mr-4 {\n    margin-right: 1.5rem !important;\n  }\n  .md\\:mr-5 {\n    margin-right: 2rem !important;\n  }\n  .md\\:mr-6 {\n    margin-right: 3rem !important;\n  }\n  .md\\:mr-7 {\n    margin-right: 4rem !important;\n  }\n  .md\\:mr-8 {\n    margin-right: 5rem !important;\n  }\n  .md\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n  .md\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n  .md\\:-mr-3 {\n    margin-right: -1rem !important;\n  }\n  .md\\:-mr-4 {\n    margin-right: -1.5rem !important;\n  }\n  .md\\:-mr-5 {\n    margin-right: -2rem !important;\n  }\n  .md\\:-mr-6 {\n    margin-right: -3rem !important;\n  }\n  .md\\:-mr-7 {\n    margin-right: -4rem !important;\n  }\n  .md\\:-mr-8 {\n    margin-right: -5rem !important;\n  }\n  .md\\:mr-auto {\n    margin-right: auto !important;\n  }\n  .md\\:ml-0 {\n    margin-left: 0rem !important;\n  }\n  .md\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n  .md\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n  .md\\:ml-3 {\n    margin-left: 1rem !important;\n  }\n  .md\\:ml-4 {\n    margin-left: 1.5rem !important;\n  }\n  .md\\:ml-5 {\n    margin-left: 2rem !important;\n  }\n  .md\\:ml-6 {\n    margin-left: 3rem !important;\n  }\n  .md\\:ml-7 {\n    margin-left: 4rem !important;\n  }\n  .md\\:ml-8 {\n    margin-left: 5rem !important;\n  }\n  .md\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n  .md\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n  .md\\:-ml-3 {\n    margin-left: -1rem !important;\n  }\n  .md\\:-ml-4 {\n    margin-left: -1.5rem !important;\n  }\n  .md\\:-ml-5 {\n    margin-left: -2rem !important;\n  }\n  .md\\:-ml-6 {\n    margin-left: -3rem !important;\n  }\n  .md\\:-ml-7 {\n    margin-left: -4rem !important;\n  }\n  .md\\:-ml-8 {\n    margin-left: -5rem !important;\n  }\n  .md\\:ml-auto {\n    margin-left: auto !important;\n  }\n  .md\\:mb-0 {\n    margin-bottom: 0rem !important;\n  }\n  .md\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .md\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .md\\:mb-3 {\n    margin-bottom: 1rem !important;\n  }\n  .md\\:mb-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .md\\:mb-5 {\n    margin-bottom: 2rem !important;\n  }\n  .md\\:mb-6 {\n    margin-bottom: 3rem !important;\n  }\n  .md\\:mb-7 {\n    margin-bottom: 4rem !important;\n  }\n  .md\\:mb-8 {\n    margin-bottom: 5rem !important;\n  }\n  .md\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n  .md\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n  .md\\:-mb-3 {\n    margin-bottom: -1rem !important;\n  }\n  .md\\:-mb-4 {\n    margin-bottom: -1.5rem !important;\n  }\n  .md\\:-mb-5 {\n    margin-bottom: -2rem !important;\n  }\n  .md\\:-mb-6 {\n    margin-bottom: -3rem !important;\n  }\n  .md\\:-mb-7 {\n    margin-bottom: -4rem !important;\n  }\n  .md\\:-mb-8 {\n    margin-bottom: -5rem !important;\n  }\n  .md\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n  .md\\:mx-0 {\n    margin-left: 0rem !important;\n    margin-right: 0rem !important;\n  }\n  .md\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n  .md\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n  .md\\:mx-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n  .md\\:mx-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n  .md\\:mx-5 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n  .md\\:mx-6 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n  .md\\:mx-7 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n  .md\\:mx-8 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n  .md\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n  .md\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n  .md\\:-mx-3 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n  .md\\:-mx-4 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n  .md\\:-mx-5 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n  .md\\:-mx-6 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n  .md\\:-mx-7 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n  .md\\:-mx-8 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n  .md\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n  .md\\:my-0 {\n    margin-top: 0rem !important;\n    margin-bottom: 0rem !important;\n  }\n  .md\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n  .md\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n  .md\\:my-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n  .md\\:my-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n  .md\\:my-5 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n  .md\\:my-6 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n  .md\\:my-7 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n  .md\\:my-8 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n  .md\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n  .md\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n  .md\\:-my-3 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n  .md\\:-my-4 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n  .md\\:-my-5 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n  .md\\:-my-6 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n  .md\\:-my-7 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n  .md\\:-my-8 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n  .md\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:m-0 {\n    margin: 0rem !important;\n  }\n  .lg\\:m-1 {\n    margin: 0.25rem !important;\n  }\n  .lg\\:m-2 {\n    margin: 0.5rem !important;\n  }\n  .lg\\:m-3 {\n    margin: 1rem !important;\n  }\n  .lg\\:m-4 {\n    margin: 1.5rem !important;\n  }\n  .lg\\:m-5 {\n    margin: 2rem !important;\n  }\n  .lg\\:m-6 {\n    margin: 3rem !important;\n  }\n  .lg\\:m-7 {\n    margin: 4rem !important;\n  }\n  .lg\\:m-8 {\n    margin: 5rem !important;\n  }\n  .lg\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n  .lg\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n  .lg\\:-m-3 {\n    margin: -1rem !important;\n  }\n  .lg\\:-m-4 {\n    margin: -1.5rem !important;\n  }\n  .lg\\:-m-5 {\n    margin: -2rem !important;\n  }\n  .lg\\:-m-6 {\n    margin: -3rem !important;\n  }\n  .lg\\:-m-7 {\n    margin: -4rem !important;\n  }\n  .lg\\:-m-8 {\n    margin: -5rem !important;\n  }\n  .lg\\:m-auto {\n    margin: auto !important;\n  }\n  .lg\\:mt-0 {\n    margin-top: 0rem !important;\n  }\n  .lg\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n  .lg\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n  .lg\\:mt-3 {\n    margin-top: 1rem !important;\n  }\n  .lg\\:mt-4 {\n    margin-top: 1.5rem !important;\n  }\n  .lg\\:mt-5 {\n    margin-top: 2rem !important;\n  }\n  .lg\\:mt-6 {\n    margin-top: 3rem !important;\n  }\n  .lg\\:mt-7 {\n    margin-top: 4rem !important;\n  }\n  .lg\\:mt-8 {\n    margin-top: 5rem !important;\n  }\n  .lg\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n  .lg\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n  .lg\\:-mt-3 {\n    margin-top: -1rem !important;\n  }\n  .lg\\:-mt-4 {\n    margin-top: -1.5rem !important;\n  }\n  .lg\\:-mt-5 {\n    margin-top: -2rem !important;\n  }\n  .lg\\:-mt-6 {\n    margin-top: -3rem !important;\n  }\n  .lg\\:-mt-7 {\n    margin-top: -4rem !important;\n  }\n  .lg\\:-mt-8 {\n    margin-top: -5rem !important;\n  }\n  .lg\\:mt-auto {\n    margin-top: auto !important;\n  }\n  .lg\\:mr-0 {\n    margin-right: 0rem !important;\n  }\n  .lg\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n  .lg\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n  .lg\\:mr-3 {\n    margin-right: 1rem !important;\n  }\n  .lg\\:mr-4 {\n    margin-right: 1.5rem !important;\n  }\n  .lg\\:mr-5 {\n    margin-right: 2rem !important;\n  }\n  .lg\\:mr-6 {\n    margin-right: 3rem !important;\n  }\n  .lg\\:mr-7 {\n    margin-right: 4rem !important;\n  }\n  .lg\\:mr-8 {\n    margin-right: 5rem !important;\n  }\n  .lg\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n  .lg\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n  .lg\\:-mr-3 {\n    margin-right: -1rem !important;\n  }\n  .lg\\:-mr-4 {\n    margin-right: -1.5rem !important;\n  }\n  .lg\\:-mr-5 {\n    margin-right: -2rem !important;\n  }\n  .lg\\:-mr-6 {\n    margin-right: -3rem !important;\n  }\n  .lg\\:-mr-7 {\n    margin-right: -4rem !important;\n  }\n  .lg\\:-mr-8 {\n    margin-right: -5rem !important;\n  }\n  .lg\\:mr-auto {\n    margin-right: auto !important;\n  }\n  .lg\\:ml-0 {\n    margin-left: 0rem !important;\n  }\n  .lg\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n  .lg\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n  .lg\\:ml-3 {\n    margin-left: 1rem !important;\n  }\n  .lg\\:ml-4 {\n    margin-left: 1.5rem !important;\n  }\n  .lg\\:ml-5 {\n    margin-left: 2rem !important;\n  }\n  .lg\\:ml-6 {\n    margin-left: 3rem !important;\n  }\n  .lg\\:ml-7 {\n    margin-left: 4rem !important;\n  }\n  .lg\\:ml-8 {\n    margin-left: 5rem !important;\n  }\n  .lg\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n  .lg\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n  .lg\\:-ml-3 {\n    margin-left: -1rem !important;\n  }\n  .lg\\:-ml-4 {\n    margin-left: -1.5rem !important;\n  }\n  .lg\\:-ml-5 {\n    margin-left: -2rem !important;\n  }\n  .lg\\:-ml-6 {\n    margin-left: -3rem !important;\n  }\n  .lg\\:-ml-7 {\n    margin-left: -4rem !important;\n  }\n  .lg\\:-ml-8 {\n    margin-left: -5rem !important;\n  }\n  .lg\\:ml-auto {\n    margin-left: auto !important;\n  }\n  .lg\\:mb-0 {\n    margin-bottom: 0rem !important;\n  }\n  .lg\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .lg\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .lg\\:mb-3 {\n    margin-bottom: 1rem !important;\n  }\n  .lg\\:mb-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .lg\\:mb-5 {\n    margin-bottom: 2rem !important;\n  }\n  .lg\\:mb-6 {\n    margin-bottom: 3rem !important;\n  }\n  .lg\\:mb-7 {\n    margin-bottom: 4rem !important;\n  }\n  .lg\\:mb-8 {\n    margin-bottom: 5rem !important;\n  }\n  .lg\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n  .lg\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n  .lg\\:-mb-3 {\n    margin-bottom: -1rem !important;\n  }\n  .lg\\:-mb-4 {\n    margin-bottom: -1.5rem !important;\n  }\n  .lg\\:-mb-5 {\n    margin-bottom: -2rem !important;\n  }\n  .lg\\:-mb-6 {\n    margin-bottom: -3rem !important;\n  }\n  .lg\\:-mb-7 {\n    margin-bottom: -4rem !important;\n  }\n  .lg\\:-mb-8 {\n    margin-bottom: -5rem !important;\n  }\n  .lg\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n  .lg\\:mx-0 {\n    margin-left: 0rem !important;\n    margin-right: 0rem !important;\n  }\n  .lg\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n  .lg\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n  .lg\\:mx-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n  .lg\\:mx-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n  .lg\\:mx-5 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n  .lg\\:mx-6 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n  .lg\\:mx-7 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n  .lg\\:mx-8 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n  .lg\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n  .lg\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n  .lg\\:-mx-3 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n  .lg\\:-mx-4 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n  .lg\\:-mx-5 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n  .lg\\:-mx-6 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n  .lg\\:-mx-7 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n  .lg\\:-mx-8 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n  .lg\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n  .lg\\:my-0 {\n    margin-top: 0rem !important;\n    margin-bottom: 0rem !important;\n  }\n  .lg\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n  .lg\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n  .lg\\:my-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n  .lg\\:my-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n  .lg\\:my-5 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n  .lg\\:my-6 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n  .lg\\:my-7 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n  .lg\\:my-8 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n  .lg\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n  .lg\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n  .lg\\:-my-3 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n  .lg\\:-my-4 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n  .lg\\:-my-5 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n  .lg\\:-my-6 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n  .lg\\:-my-7 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n  .lg\\:-my-8 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n  .lg\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:m-0 {\n    margin: 0rem !important;\n  }\n  .xl\\:m-1 {\n    margin: 0.25rem !important;\n  }\n  .xl\\:m-2 {\n    margin: 0.5rem !important;\n  }\n  .xl\\:m-3 {\n    margin: 1rem !important;\n  }\n  .xl\\:m-4 {\n    margin: 1.5rem !important;\n  }\n  .xl\\:m-5 {\n    margin: 2rem !important;\n  }\n  .xl\\:m-6 {\n    margin: 3rem !important;\n  }\n  .xl\\:m-7 {\n    margin: 4rem !important;\n  }\n  .xl\\:m-8 {\n    margin: 5rem !important;\n  }\n  .xl\\:-m-1 {\n    margin: -0.25rem !important;\n  }\n  .xl\\:-m-2 {\n    margin: -0.5rem !important;\n  }\n  .xl\\:-m-3 {\n    margin: -1rem !important;\n  }\n  .xl\\:-m-4 {\n    margin: -1.5rem !important;\n  }\n  .xl\\:-m-5 {\n    margin: -2rem !important;\n  }\n  .xl\\:-m-6 {\n    margin: -3rem !important;\n  }\n  .xl\\:-m-7 {\n    margin: -4rem !important;\n  }\n  .xl\\:-m-8 {\n    margin: -5rem !important;\n  }\n  .xl\\:m-auto {\n    margin: auto !important;\n  }\n  .xl\\:mt-0 {\n    margin-top: 0rem !important;\n  }\n  .xl\\:mt-1 {\n    margin-top: 0.25rem !important;\n  }\n  .xl\\:mt-2 {\n    margin-top: 0.5rem !important;\n  }\n  .xl\\:mt-3 {\n    margin-top: 1rem !important;\n  }\n  .xl\\:mt-4 {\n    margin-top: 1.5rem !important;\n  }\n  .xl\\:mt-5 {\n    margin-top: 2rem !important;\n  }\n  .xl\\:mt-6 {\n    margin-top: 3rem !important;\n  }\n  .xl\\:mt-7 {\n    margin-top: 4rem !important;\n  }\n  .xl\\:mt-8 {\n    margin-top: 5rem !important;\n  }\n  .xl\\:-mt-1 {\n    margin-top: -0.25rem !important;\n  }\n  .xl\\:-mt-2 {\n    margin-top: -0.5rem !important;\n  }\n  .xl\\:-mt-3 {\n    margin-top: -1rem !important;\n  }\n  .xl\\:-mt-4 {\n    margin-top: -1.5rem !important;\n  }\n  .xl\\:-mt-5 {\n    margin-top: -2rem !important;\n  }\n  .xl\\:-mt-6 {\n    margin-top: -3rem !important;\n  }\n  .xl\\:-mt-7 {\n    margin-top: -4rem !important;\n  }\n  .xl\\:-mt-8 {\n    margin-top: -5rem !important;\n  }\n  .xl\\:mt-auto {\n    margin-top: auto !important;\n  }\n  .xl\\:mr-0 {\n    margin-right: 0rem !important;\n  }\n  .xl\\:mr-1 {\n    margin-right: 0.25rem !important;\n  }\n  .xl\\:mr-2 {\n    margin-right: 0.5rem !important;\n  }\n  .xl\\:mr-3 {\n    margin-right: 1rem !important;\n  }\n  .xl\\:mr-4 {\n    margin-right: 1.5rem !important;\n  }\n  .xl\\:mr-5 {\n    margin-right: 2rem !important;\n  }\n  .xl\\:mr-6 {\n    margin-right: 3rem !important;\n  }\n  .xl\\:mr-7 {\n    margin-right: 4rem !important;\n  }\n  .xl\\:mr-8 {\n    margin-right: 5rem !important;\n  }\n  .xl\\:-mr-1 {\n    margin-right: -0.25rem !important;\n  }\n  .xl\\:-mr-2 {\n    margin-right: -0.5rem !important;\n  }\n  .xl\\:-mr-3 {\n    margin-right: -1rem !important;\n  }\n  .xl\\:-mr-4 {\n    margin-right: -1.5rem !important;\n  }\n  .xl\\:-mr-5 {\n    margin-right: -2rem !important;\n  }\n  .xl\\:-mr-6 {\n    margin-right: -3rem !important;\n  }\n  .xl\\:-mr-7 {\n    margin-right: -4rem !important;\n  }\n  .xl\\:-mr-8 {\n    margin-right: -5rem !important;\n  }\n  .xl\\:mr-auto {\n    margin-right: auto !important;\n  }\n  .xl\\:ml-0 {\n    margin-left: 0rem !important;\n  }\n  .xl\\:ml-1 {\n    margin-left: 0.25rem !important;\n  }\n  .xl\\:ml-2 {\n    margin-left: 0.5rem !important;\n  }\n  .xl\\:ml-3 {\n    margin-left: 1rem !important;\n  }\n  .xl\\:ml-4 {\n    margin-left: 1.5rem !important;\n  }\n  .xl\\:ml-5 {\n    margin-left: 2rem !important;\n  }\n  .xl\\:ml-6 {\n    margin-left: 3rem !important;\n  }\n  .xl\\:ml-7 {\n    margin-left: 4rem !important;\n  }\n  .xl\\:ml-8 {\n    margin-left: 5rem !important;\n  }\n  .xl\\:-ml-1 {\n    margin-left: -0.25rem !important;\n  }\n  .xl\\:-ml-2 {\n    margin-left: -0.5rem !important;\n  }\n  .xl\\:-ml-3 {\n    margin-left: -1rem !important;\n  }\n  .xl\\:-ml-4 {\n    margin-left: -1.5rem !important;\n  }\n  .xl\\:-ml-5 {\n    margin-left: -2rem !important;\n  }\n  .xl\\:-ml-6 {\n    margin-left: -3rem !important;\n  }\n  .xl\\:-ml-7 {\n    margin-left: -4rem !important;\n  }\n  .xl\\:-ml-8 {\n    margin-left: -5rem !important;\n  }\n  .xl\\:ml-auto {\n    margin-left: auto !important;\n  }\n  .xl\\:mb-0 {\n    margin-bottom: 0rem !important;\n  }\n  .xl\\:mb-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .xl\\:mb-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .xl\\:mb-3 {\n    margin-bottom: 1rem !important;\n  }\n  .xl\\:mb-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .xl\\:mb-5 {\n    margin-bottom: 2rem !important;\n  }\n  .xl\\:mb-6 {\n    margin-bottom: 3rem !important;\n  }\n  .xl\\:mb-7 {\n    margin-bottom: 4rem !important;\n  }\n  .xl\\:mb-8 {\n    margin-bottom: 5rem !important;\n  }\n  .xl\\:-mb-1 {\n    margin-bottom: -0.25rem !important;\n  }\n  .xl\\:-mb-2 {\n    margin-bottom: -0.5rem !important;\n  }\n  .xl\\:-mb-3 {\n    margin-bottom: -1rem !important;\n  }\n  .xl\\:-mb-4 {\n    margin-bottom: -1.5rem !important;\n  }\n  .xl\\:-mb-5 {\n    margin-bottom: -2rem !important;\n  }\n  .xl\\:-mb-6 {\n    margin-bottom: -3rem !important;\n  }\n  .xl\\:-mb-7 {\n    margin-bottom: -4rem !important;\n  }\n  .xl\\:-mb-8 {\n    margin-bottom: -5rem !important;\n  }\n  .xl\\:mb-auto {\n    margin-bottom: auto !important;\n  }\n  .xl\\:mx-0 {\n    margin-left: 0rem !important;\n    margin-right: 0rem !important;\n  }\n  .xl\\:mx-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n  .xl\\:mx-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n  .xl\\:mx-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n  .xl\\:mx-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n  .xl\\:mx-5 {\n    margin-left: 2rem !important;\n    margin-right: 2rem !important;\n  }\n  .xl\\:mx-6 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n  .xl\\:mx-7 {\n    margin-left: 4rem !important;\n    margin-right: 4rem !important;\n  }\n  .xl\\:mx-8 {\n    margin-left: 5rem !important;\n    margin-right: 5rem !important;\n  }\n  .xl\\:-mx-1 {\n    margin-left: -0.25rem !important;\n    margin-right: -0.25rem !important;\n  }\n  .xl\\:-mx-2 {\n    margin-left: -0.5rem !important;\n    margin-right: -0.5rem !important;\n  }\n  .xl\\:-mx-3 {\n    margin-left: -1rem !important;\n    margin-right: -1rem !important;\n  }\n  .xl\\:-mx-4 {\n    margin-left: -1.5rem !important;\n    margin-right: -1.5rem !important;\n  }\n  .xl\\:-mx-5 {\n    margin-left: -2rem !important;\n    margin-right: -2rem !important;\n  }\n  .xl\\:-mx-6 {\n    margin-left: -3rem !important;\n    margin-right: -3rem !important;\n  }\n  .xl\\:-mx-7 {\n    margin-left: -4rem !important;\n    margin-right: -4rem !important;\n  }\n  .xl\\:-mx-8 {\n    margin-left: -5rem !important;\n    margin-right: -5rem !important;\n  }\n  .xl\\:mx-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n  .xl\\:my-0 {\n    margin-top: 0rem !important;\n    margin-bottom: 0rem !important;\n  }\n  .xl\\:my-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n  .xl\\:my-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n  .xl\\:my-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n  .xl\\:my-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n  .xl\\:my-5 {\n    margin-top: 2rem !important;\n    margin-bottom: 2rem !important;\n  }\n  .xl\\:my-6 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n  .xl\\:my-7 {\n    margin-top: 4rem !important;\n    margin-bottom: 4rem !important;\n  }\n  .xl\\:my-8 {\n    margin-top: 5rem !important;\n    margin-bottom: 5rem !important;\n  }\n  .xl\\:-my-1 {\n    margin-top: -0.25rem !important;\n    margin-bottom: -0.25rem !important;\n  }\n  .xl\\:-my-2 {\n    margin-top: -0.5rem !important;\n    margin-bottom: -0.5rem !important;\n  }\n  .xl\\:-my-3 {\n    margin-top: -1rem !important;\n    margin-bottom: -1rem !important;\n  }\n  .xl\\:-my-4 {\n    margin-top: -1.5rem !important;\n    margin-bottom: -1.5rem !important;\n  }\n  .xl\\:-my-5 {\n    margin-top: -2rem !important;\n    margin-bottom: -2rem !important;\n  }\n  .xl\\:-my-6 {\n    margin-top: -3rem !important;\n    margin-bottom: -3rem !important;\n  }\n  .xl\\:-my-7 {\n    margin-top: -4rem !important;\n    margin-bottom: -4rem !important;\n  }\n  .xl\\:-my-8 {\n    margin-top: -5rem !important;\n    margin-bottom: -5rem !important;\n  }\n  .xl\\:my-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n}\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.shadow-1 {\n  box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n}\n\n.shadow-2 {\n  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n}\n\n.shadow-3 {\n  box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n}\n\n.shadow-4 {\n  box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n}\n\n.shadow-5 {\n  box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n}\n\n.shadow-6 {\n  box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n}\n\n.shadow-7 {\n  box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-8 {\n  box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n}\n\n.focus\\:shadow-none:focus {\n  box-shadow: none !important;\n}\n\n.hover\\:shadow-none:hover {\n  box-shadow: none !important;\n}\n\n.active\\:shadow-none:active {\n  box-shadow: none !important;\n}\n\n.focus\\:shadow-1:focus {\n  box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n}\n\n.hover\\:shadow-1:hover {\n  box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n}\n\n.active\\:shadow-1:active {\n  box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n}\n\n.focus\\:shadow-2:focus {\n  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n}\n\n.hover\\:shadow-2:hover {\n  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n}\n\n.active\\:shadow-2:active {\n  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n}\n\n.focus\\:shadow-3:focus {\n  box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n}\n\n.hover\\:shadow-3:hover {\n  box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n}\n\n.active\\:shadow-3:active {\n  box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n}\n\n.focus\\:shadow-4:focus {\n  box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n}\n\n.hover\\:shadow-4:hover {\n  box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n}\n\n.active\\:shadow-4:active {\n  box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n}\n\n.focus\\:shadow-5:focus {\n  box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n}\n\n.hover\\:shadow-5:hover {\n  box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n}\n\n.active\\:shadow-5:active {\n  box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n}\n\n.focus\\:shadow-6:focus {\n  box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n}\n\n.hover\\:shadow-6:hover {\n  box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n}\n\n.active\\:shadow-6:active {\n  box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n}\n\n.focus\\:shadow-7:focus {\n  box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n}\n\n.hover\\:shadow-7:hover {\n  box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n}\n\n.active\\:shadow-7:active {\n  box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n}\n\n.focus\\:shadow-8:focus {\n  box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n}\n\n.hover\\:shadow-8:hover {\n  box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n}\n\n.active\\:shadow-8:active {\n  box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:shadow-none {\n    box-shadow: none !important;\n  }\n  .sm\\:shadow-1 {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .sm\\:shadow-2 {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .sm\\:shadow-3 {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .sm\\:shadow-4 {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:shadow-5 {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:shadow-6 {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .sm\\:shadow-7 {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .sm\\:shadow-8 {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n  .sm\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n  .sm\\:active\\:shadow-none:active {\n    box-shadow: none !important;\n  }\n  .sm\\:focus\\:shadow-1:focus {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .sm\\:hover\\:shadow-1:hover {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .sm\\:active\\:shadow-1:active {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .sm\\:focus\\:shadow-2:focus {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .sm\\:hover\\:shadow-2:hover {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .sm\\:active\\:shadow-2:active {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .sm\\:focus\\:shadow-3:focus {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .sm\\:hover\\:shadow-3:hover {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .sm\\:active\\:shadow-3:active {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .sm\\:focus\\:shadow-4:focus {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:hover\\:shadow-4:hover {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:active\\:shadow-4:active {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:focus\\:shadow-5:focus {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:hover\\:shadow-5:hover {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:active\\:shadow-5:active {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:focus\\:shadow-6:focus {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .sm\\:hover\\:shadow-6:hover {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .sm\\:active\\:shadow-6:active {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .sm\\:focus\\:shadow-7:focus {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .sm\\:hover\\:shadow-7:hover {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .sm\\:active\\:shadow-7:active {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .sm\\:focus\\:shadow-8:focus {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:hover\\:shadow-8:hover {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .sm\\:active\\:shadow-8:active {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:shadow-none {\n    box-shadow: none !important;\n  }\n  .md\\:shadow-1 {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .md\\:shadow-2 {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .md\\:shadow-3 {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .md\\:shadow-4 {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:shadow-5 {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:shadow-6 {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .md\\:shadow-7 {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .md\\:shadow-8 {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n  .md\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n  .md\\:active\\:shadow-none:active {\n    box-shadow: none !important;\n  }\n  .md\\:focus\\:shadow-1:focus {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .md\\:hover\\:shadow-1:hover {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .md\\:active\\:shadow-1:active {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .md\\:focus\\:shadow-2:focus {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .md\\:hover\\:shadow-2:hover {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .md\\:active\\:shadow-2:active {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .md\\:focus\\:shadow-3:focus {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .md\\:hover\\:shadow-3:hover {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .md\\:active\\:shadow-3:active {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .md\\:focus\\:shadow-4:focus {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:hover\\:shadow-4:hover {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:active\\:shadow-4:active {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:focus\\:shadow-5:focus {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:hover\\:shadow-5:hover {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:active\\:shadow-5:active {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:focus\\:shadow-6:focus {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .md\\:hover\\:shadow-6:hover {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .md\\:active\\:shadow-6:active {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .md\\:focus\\:shadow-7:focus {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .md\\:hover\\:shadow-7:hover {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .md\\:active\\:shadow-7:active {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .md\\:focus\\:shadow-8:focus {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:hover\\:shadow-8:hover {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .md\\:active\\:shadow-8:active {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:shadow-none {\n    box-shadow: none !important;\n  }\n  .lg\\:shadow-1 {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .lg\\:shadow-2 {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .lg\\:shadow-3 {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .lg\\:shadow-4 {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:shadow-5 {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:shadow-6 {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .lg\\:shadow-7 {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .lg\\:shadow-8 {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n  .lg\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n  .lg\\:active\\:shadow-none:active {\n    box-shadow: none !important;\n  }\n  .lg\\:focus\\:shadow-1:focus {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .lg\\:hover\\:shadow-1:hover {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .lg\\:active\\:shadow-1:active {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .lg\\:focus\\:shadow-2:focus {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .lg\\:hover\\:shadow-2:hover {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .lg\\:active\\:shadow-2:active {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .lg\\:focus\\:shadow-3:focus {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .lg\\:hover\\:shadow-3:hover {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .lg\\:active\\:shadow-3:active {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .lg\\:focus\\:shadow-4:focus {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:hover\\:shadow-4:hover {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:active\\:shadow-4:active {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:focus\\:shadow-5:focus {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:hover\\:shadow-5:hover {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:active\\:shadow-5:active {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:focus\\:shadow-6:focus {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .lg\\:hover\\:shadow-6:hover {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .lg\\:active\\:shadow-6:active {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .lg\\:focus\\:shadow-7:focus {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .lg\\:hover\\:shadow-7:hover {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .lg\\:active\\:shadow-7:active {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .lg\\:focus\\:shadow-8:focus {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:hover\\:shadow-8:hover {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .lg\\:active\\:shadow-8:active {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:shadow-none {\n    box-shadow: none !important;\n  }\n  .xl\\:shadow-1 {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .xl\\:shadow-2 {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .xl\\:shadow-3 {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .xl\\:shadow-4 {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:shadow-5 {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:shadow-6 {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .xl\\:shadow-7 {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .xl\\:shadow-8 {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:focus\\:shadow-none:focus {\n    box-shadow: none !important;\n  }\n  .xl\\:hover\\:shadow-none:hover {\n    box-shadow: none !important;\n  }\n  .xl\\:active\\:shadow-none:active {\n    box-shadow: none !important;\n  }\n  .xl\\:focus\\:shadow-1:focus {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .xl\\:hover\\:shadow-1:hover {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .xl\\:active\\:shadow-1:active {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.02), 0px 0px 2px rgba(0, 0, 0, 0.05), 0px 1px 4px rgba(0, 0, 0, 0.08) !important;\n  }\n  .xl\\:focus\\:shadow-2:focus {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .xl\\:hover\\:shadow-2:hover {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .xl\\:active\\:shadow-2:active {\n    box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.03), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 2px 6px rgba(0, 0, 0, 0.12) !important;\n  }\n  .xl\\:focus\\:shadow-3:focus {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .xl\\:hover\\:shadow-3:hover {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .xl\\:active\\:shadow-3:active {\n    box-shadow: 0px 1px 8px rgba(0, 0, 0, 0.08), 0px 3px 4px rgba(0, 0, 0, 0.1), 0px 1px 4px -1px rgba(0, 0, 0, 0.1) !important;\n  }\n  .xl\\:focus\\:shadow-4:focus {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:hover\\:shadow-4:hover {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:active\\:shadow-4:active {\n    box-shadow: 0px 1px 10px rgba(0, 0, 0, 0.12), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 2px 4px -1px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:focus\\:shadow-5:focus {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:hover\\:shadow-5:hover {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:active\\:shadow-5:active {\n    box-shadow: 0px 1px 7px rgba(0, 0, 0, 0.1), 0px 4px 5px -2px rgba(0, 0, 0, 0.12), 0px 10px 15px -5px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:focus\\:shadow-6:focus {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .xl\\:hover\\:shadow-6:hover {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .xl\\:active\\:shadow-6:active {\n    box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.06), 0px 7px 9px rgba(0, 0, 0, 0.12), 0px 20px 25px -8px rgba(0, 0, 0, 0.18) !important;\n  }\n  .xl\\:focus\\:shadow-7:focus {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .xl\\:hover\\:shadow-7:hover {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .xl\\:active\\:shadow-7:active {\n    box-shadow: 0px 7px 30px rgba(0, 0, 0, 0.08), 0px 22px 30px 2px rgba(0, 0, 0, 0.15), 0px 8px 10px rgba(0, 0, 0, 0.15) !important;\n  }\n  .xl\\:focus\\:shadow-8:focus {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:hover\\:shadow-8:hover {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n  .xl\\:active\\:shadow-8:active {\n    box-shadow: 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 11px 15px rgba(0, 0, 0, 0.2) !important;\n  }\n}\n.border-none {\n  border-width: 0px !important;\n  border-style: none;\n}\n\n.border-1 {\n  border-width: 1px !important;\n  border-style: solid;\n}\n\n.border-2 {\n  border-width: 2px !important;\n  border-style: solid;\n}\n\n.border-3 {\n  border-width: 3px !important;\n  border-style: solid;\n}\n\n.border-top-none {\n  border-top-width: 0px !important;\n  border-top-style: none;\n}\n\n.border-top-1 {\n  border-top-width: 1px !important;\n  border-top-style: solid;\n}\n\n.border-top-2 {\n  border-top-width: 2px !important;\n  border-top-style: solid;\n}\n\n.border-top-3 {\n  border-top-width: 3px !important;\n  border-top-style: solid;\n}\n\n.border-right-none {\n  border-right-width: 0px !important;\n  border-right-style: none;\n}\n\n.border-right-1 {\n  border-right-width: 1px !important;\n  border-right-style: solid;\n}\n\n.border-right-2 {\n  border-right-width: 2px !important;\n  border-right-style: solid;\n}\n\n.border-right-3 {\n  border-right-width: 3px !important;\n  border-right-style: solid;\n}\n\n.border-left-none {\n  border-left-width: 0px !important;\n  border-left-style: none;\n}\n\n.border-left-1 {\n  border-left-width: 1px !important;\n  border-left-style: solid;\n}\n\n.border-left-2 {\n  border-left-width: 2px !important;\n  border-left-style: solid;\n}\n\n.border-left-3 {\n  border-left-width: 3px !important;\n  border-left-style: solid;\n}\n\n.border-bottom-none {\n  border-bottom-width: 0px !important;\n  border-bottom-style: none;\n}\n\n.border-bottom-1 {\n  border-bottom-width: 1px !important;\n  border-bottom-style: solid;\n}\n\n.border-bottom-2 {\n  border-bottom-width: 2px !important;\n  border-bottom-style: solid;\n}\n\n.border-bottom-3 {\n  border-bottom-width: 3px !important;\n  border-bottom-style: solid;\n}\n\n.border-x-none {\n  border-left-width: 0px !important;\n  border-left-style: none;\n  border-right-width: 0px !important;\n  border-right-style: none;\n}\n\n.border-x-1 {\n  border-left-width: 1px !important;\n  border-left-style: solid;\n  border-right-width: 1px !important;\n  border-right-style: solid;\n}\n\n.border-x-2 {\n  border-left-width: 2px !important;\n  border-left-style: solid;\n  border-right-width: 2px !important;\n  border-right-style: solid;\n}\n\n.border-x-3 {\n  border-left-width: 3px !important;\n  border-left-style: solid;\n  border-right-width: 3px !important;\n  border-right-style: solid;\n}\n\n.border-y-none {\n  border-top-width: 0px !important;\n  border-top-style: none;\n  border-bottom-width: 0px !important;\n  border-bottom-style: none;\n}\n\n.border-y-1 {\n  border-top-width: 1px !important;\n  border-top-style: solid;\n  border-bottom-width: 1px !important;\n  border-bottom-style: solid;\n}\n\n.border-y-2 {\n  border-top-width: 2px !important;\n  border-top-style: solid;\n  border-bottom-width: 2px !important;\n  border-bottom-style: solid;\n}\n\n.border-y-3 {\n  border-top-width: 3px !important;\n  border-top-style: solid;\n  border-bottom-width: 3px !important;\n  border-bottom-style: solid;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:border-none {\n    border-width: 0px !important;\n    border-style: none;\n  }\n  .sm\\:border-1 {\n    border-width: 1px !important;\n    border-style: solid;\n  }\n  .sm\\:border-2 {\n    border-width: 2px !important;\n    border-style: solid;\n  }\n  .sm\\:border-3 {\n    border-width: 3px !important;\n    border-style: solid;\n  }\n  .sm\\:border-top-none {\n    border-top-width: 0px !important;\n    border-top-style: none;\n  }\n  .sm\\:border-top-1 {\n    border-top-width: 1px !important;\n    border-top-style: solid;\n  }\n  .sm\\:border-top-2 {\n    border-top-width: 2px !important;\n    border-top-style: solid;\n  }\n  .sm\\:border-top-3 {\n    border-top-width: 3px !important;\n    border-top-style: solid;\n  }\n  .sm\\:border-right-none {\n    border-right-width: 0px !important;\n    border-right-style: none;\n  }\n  .sm\\:border-right-1 {\n    border-right-width: 1px !important;\n    border-right-style: solid;\n  }\n  .sm\\:border-right-2 {\n    border-right-width: 2px !important;\n    border-right-style: solid;\n  }\n  .sm\\:border-right-3 {\n    border-right-width: 3px !important;\n    border-right-style: solid;\n  }\n  .sm\\:border-left-none {\n    border-left-width: 0px !important;\n    border-left-style: none;\n  }\n  .sm\\:border-left-1 {\n    border-left-width: 1px !important;\n    border-left-style: solid;\n  }\n  .sm\\:border-left-2 {\n    border-left-width: 2px !important;\n    border-left-style: solid;\n  }\n  .sm\\:border-left-3 {\n    border-left-width: 3px !important;\n    border-left-style: solid;\n  }\n  .sm\\:border-bottom-none {\n    border-bottom-width: 0px !important;\n    border-bottom-style: none;\n  }\n  .sm\\:border-bottom-1 {\n    border-bottom-width: 1px !important;\n    border-bottom-style: solid;\n  }\n  .sm\\:border-bottom-2 {\n    border-bottom-width: 2px !important;\n    border-bottom-style: solid;\n  }\n  .sm\\:border-bottom-3 {\n    border-bottom-width: 3px !important;\n    border-bottom-style: solid;\n  }\n  .sm\\:border-x-none {\n    border-left-width: 0px !important;\n    border-left-style: none;\n    border-right-width: 0px !important;\n    border-right-style: none;\n  }\n  .sm\\:border-x-1 {\n    border-left-width: 1px !important;\n    border-left-style: solid;\n    border-right-width: 1px !important;\n    border-right-style: solid;\n  }\n  .sm\\:border-x-2 {\n    border-left-width: 2px !important;\n    border-left-style: solid;\n    border-right-width: 2px !important;\n    border-right-style: solid;\n  }\n  .sm\\:border-x-3 {\n    border-left-width: 3px !important;\n    border-left-style: solid;\n    border-right-width: 3px !important;\n    border-right-style: solid;\n  }\n  .sm\\:border-y-none {\n    border-top-width: 0px !important;\n    border-top-style: none;\n    border-bottom-width: 0px !important;\n    border-bottom-style: none;\n  }\n  .sm\\:border-y-1 {\n    border-top-width: 1px !important;\n    border-top-style: solid;\n    border-bottom-width: 1px !important;\n    border-bottom-style: solid;\n  }\n  .sm\\:border-y-2 {\n    border-top-width: 2px !important;\n    border-top-style: solid;\n    border-bottom-width: 2px !important;\n    border-bottom-style: solid;\n  }\n  .sm\\:border-y-3 {\n    border-top-width: 3px !important;\n    border-top-style: solid;\n    border-bottom-width: 3px !important;\n    border-bottom-style: solid;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:border-none {\n    border-width: 0px !important;\n    border-style: none;\n  }\n  .md\\:border-1 {\n    border-width: 1px !important;\n    border-style: solid;\n  }\n  .md\\:border-2 {\n    border-width: 2px !important;\n    border-style: solid;\n  }\n  .md\\:border-3 {\n    border-width: 3px !important;\n    border-style: solid;\n  }\n  .md\\:border-top-none {\n    border-top-width: 0px !important;\n    border-top-style: none;\n  }\n  .md\\:border-top-1 {\n    border-top-width: 1px !important;\n    border-top-style: solid;\n  }\n  .md\\:border-top-2 {\n    border-top-width: 2px !important;\n    border-top-style: solid;\n  }\n  .md\\:border-top-3 {\n    border-top-width: 3px !important;\n    border-top-style: solid;\n  }\n  .md\\:border-right-none {\n    border-right-width: 0px !important;\n    border-right-style: none;\n  }\n  .md\\:border-right-1 {\n    border-right-width: 1px !important;\n    border-right-style: solid;\n  }\n  .md\\:border-right-2 {\n    border-right-width: 2px !important;\n    border-right-style: solid;\n  }\n  .md\\:border-right-3 {\n    border-right-width: 3px !important;\n    border-right-style: solid;\n  }\n  .md\\:border-left-none {\n    border-left-width: 0px !important;\n    border-left-style: none;\n  }\n  .md\\:border-left-1 {\n    border-left-width: 1px !important;\n    border-left-style: solid;\n  }\n  .md\\:border-left-2 {\n    border-left-width: 2px !important;\n    border-left-style: solid;\n  }\n  .md\\:border-left-3 {\n    border-left-width: 3px !important;\n    border-left-style: solid;\n  }\n  .md\\:border-bottom-none {\n    border-bottom-width: 0px !important;\n    border-bottom-style: none;\n  }\n  .md\\:border-bottom-1 {\n    border-bottom-width: 1px !important;\n    border-bottom-style: solid;\n  }\n  .md\\:border-bottom-2 {\n    border-bottom-width: 2px !important;\n    border-bottom-style: solid;\n  }\n  .md\\:border-bottom-3 {\n    border-bottom-width: 3px !important;\n    border-bottom-style: solid;\n  }\n  .md\\:border-x-none {\n    border-left-width: 0px !important;\n    border-left-style: none;\n    border-right-width: 0px !important;\n    border-right-style: none;\n  }\n  .md\\:border-x-1 {\n    border-left-width: 1px !important;\n    border-left-style: solid;\n    border-right-width: 1px !important;\n    border-right-style: solid;\n  }\n  .md\\:border-x-2 {\n    border-left-width: 2px !important;\n    border-left-style: solid;\n    border-right-width: 2px !important;\n    border-right-style: solid;\n  }\n  .md\\:border-x-3 {\n    border-left-width: 3px !important;\n    border-left-style: solid;\n    border-right-width: 3px !important;\n    border-right-style: solid;\n  }\n  .md\\:border-y-none {\n    border-top-width: 0px !important;\n    border-top-style: none;\n    border-bottom-width: 0px !important;\n    border-bottom-style: none;\n  }\n  .md\\:border-y-1 {\n    border-top-width: 1px !important;\n    border-top-style: solid;\n    border-bottom-width: 1px !important;\n    border-bottom-style: solid;\n  }\n  .md\\:border-y-2 {\n    border-top-width: 2px !important;\n    border-top-style: solid;\n    border-bottom-width: 2px !important;\n    border-bottom-style: solid;\n  }\n  .md\\:border-y-3 {\n    border-top-width: 3px !important;\n    border-top-style: solid;\n    border-bottom-width: 3px !important;\n    border-bottom-style: solid;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:border-none {\n    border-width: 0px !important;\n    border-style: none;\n  }\n  .lg\\:border-1 {\n    border-width: 1px !important;\n    border-style: solid;\n  }\n  .lg\\:border-2 {\n    border-width: 2px !important;\n    border-style: solid;\n  }\n  .lg\\:border-3 {\n    border-width: 3px !important;\n    border-style: solid;\n  }\n  .lg\\:border-top-none {\n    border-top-width: 0px !important;\n    border-top-style: none;\n  }\n  .lg\\:border-top-1 {\n    border-top-width: 1px !important;\n    border-top-style: solid;\n  }\n  .lg\\:border-top-2 {\n    border-top-width: 2px !important;\n    border-top-style: solid;\n  }\n  .lg\\:border-top-3 {\n    border-top-width: 3px !important;\n    border-top-style: solid;\n  }\n  .lg\\:border-right-none {\n    border-right-width: 0px !important;\n    border-right-style: none;\n  }\n  .lg\\:border-right-1 {\n    border-right-width: 1px !important;\n    border-right-style: solid;\n  }\n  .lg\\:border-right-2 {\n    border-right-width: 2px !important;\n    border-right-style: solid;\n  }\n  .lg\\:border-right-3 {\n    border-right-width: 3px !important;\n    border-right-style: solid;\n  }\n  .lg\\:border-left-none {\n    border-left-width: 0px !important;\n    border-left-style: none;\n  }\n  .lg\\:border-left-1 {\n    border-left-width: 1px !important;\n    border-left-style: solid;\n  }\n  .lg\\:border-left-2 {\n    border-left-width: 2px !important;\n    border-left-style: solid;\n  }\n  .lg\\:border-left-3 {\n    border-left-width: 3px !important;\n    border-left-style: solid;\n  }\n  .lg\\:border-bottom-none {\n    border-bottom-width: 0px !important;\n    border-bottom-style: none;\n  }\n  .lg\\:border-bottom-1 {\n    border-bottom-width: 1px !important;\n    border-bottom-style: solid;\n  }\n  .lg\\:border-bottom-2 {\n    border-bottom-width: 2px !important;\n    border-bottom-style: solid;\n  }\n  .lg\\:border-bottom-3 {\n    border-bottom-width: 3px !important;\n    border-bottom-style: solid;\n  }\n  .lg\\:border-x-none {\n    border-left-width: 0px !important;\n    border-left-style: none;\n    border-right-width: 0px !important;\n    border-right-style: none;\n  }\n  .lg\\:border-x-1 {\n    border-left-width: 1px !important;\n    border-left-style: solid;\n    border-right-width: 1px !important;\n    border-right-style: solid;\n  }\n  .lg\\:border-x-2 {\n    border-left-width: 2px !important;\n    border-left-style: solid;\n    border-right-width: 2px !important;\n    border-right-style: solid;\n  }\n  .lg\\:border-x-3 {\n    border-left-width: 3px !important;\n    border-left-style: solid;\n    border-right-width: 3px !important;\n    border-right-style: solid;\n  }\n  .lg\\:border-y-none {\n    border-top-width: 0px !important;\n    border-top-style: none;\n    border-bottom-width: 0px !important;\n    border-bottom-style: none;\n  }\n  .lg\\:border-y-1 {\n    border-top-width: 1px !important;\n    border-top-style: solid;\n    border-bottom-width: 1px !important;\n    border-bottom-style: solid;\n  }\n  .lg\\:border-y-2 {\n    border-top-width: 2px !important;\n    border-top-style: solid;\n    border-bottom-width: 2px !important;\n    border-bottom-style: solid;\n  }\n  .lg\\:border-y-3 {\n    border-top-width: 3px !important;\n    border-top-style: solid;\n    border-bottom-width: 3px !important;\n    border-bottom-style: solid;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:border-none {\n    border-width: 0px !important;\n    border-style: none;\n  }\n  .xl\\:border-1 {\n    border-width: 1px !important;\n    border-style: solid;\n  }\n  .xl\\:border-2 {\n    border-width: 2px !important;\n    border-style: solid;\n  }\n  .xl\\:border-3 {\n    border-width: 3px !important;\n    border-style: solid;\n  }\n  .xl\\:border-top-none {\n    border-top-width: 0px !important;\n    border-top-style: none;\n  }\n  .xl\\:border-top-1 {\n    border-top-width: 1px !important;\n    border-top-style: solid;\n  }\n  .xl\\:border-top-2 {\n    border-top-width: 2px !important;\n    border-top-style: solid;\n  }\n  .xl\\:border-top-3 {\n    border-top-width: 3px !important;\n    border-top-style: solid;\n  }\n  .xl\\:border-right-none {\n    border-right-width: 0px !important;\n    border-right-style: none;\n  }\n  .xl\\:border-right-1 {\n    border-right-width: 1px !important;\n    border-right-style: solid;\n  }\n  .xl\\:border-right-2 {\n    border-right-width: 2px !important;\n    border-right-style: solid;\n  }\n  .xl\\:border-right-3 {\n    border-right-width: 3px !important;\n    border-right-style: solid;\n  }\n  .xl\\:border-left-none {\n    border-left-width: 0px !important;\n    border-left-style: none;\n  }\n  .xl\\:border-left-1 {\n    border-left-width: 1px !important;\n    border-left-style: solid;\n  }\n  .xl\\:border-left-2 {\n    border-left-width: 2px !important;\n    border-left-style: solid;\n  }\n  .xl\\:border-left-3 {\n    border-left-width: 3px !important;\n    border-left-style: solid;\n  }\n  .xl\\:border-bottom-none {\n    border-bottom-width: 0px !important;\n    border-bottom-style: none;\n  }\n  .xl\\:border-bottom-1 {\n    border-bottom-width: 1px !important;\n    border-bottom-style: solid;\n  }\n  .xl\\:border-bottom-2 {\n    border-bottom-width: 2px !important;\n    border-bottom-style: solid;\n  }\n  .xl\\:border-bottom-3 {\n    border-bottom-width: 3px !important;\n    border-bottom-style: solid;\n  }\n  .xl\\:border-x-none {\n    border-left-width: 0px !important;\n    border-left-style: none;\n    border-right-width: 0px !important;\n    border-right-style: none;\n  }\n  .xl\\:border-x-1 {\n    border-left-width: 1px !important;\n    border-left-style: solid;\n    border-right-width: 1px !important;\n    border-right-style: solid;\n  }\n  .xl\\:border-x-2 {\n    border-left-width: 2px !important;\n    border-left-style: solid;\n    border-right-width: 2px !important;\n    border-right-style: solid;\n  }\n  .xl\\:border-x-3 {\n    border-left-width: 3px !important;\n    border-left-style: solid;\n    border-right-width: 3px !important;\n    border-right-style: solid;\n  }\n  .xl\\:border-y-none {\n    border-top-width: 0px !important;\n    border-top-style: none;\n    border-bottom-width: 0px !important;\n    border-bottom-style: none;\n  }\n  .xl\\:border-y-1 {\n    border-top-width: 1px !important;\n    border-top-style: solid;\n    border-bottom-width: 1px !important;\n    border-bottom-style: solid;\n  }\n  .xl\\:border-y-2 {\n    border-top-width: 2px !important;\n    border-top-style: solid;\n    border-bottom-width: 2px !important;\n    border-bottom-style: solid;\n  }\n  .xl\\:border-y-3 {\n    border-top-width: 3px !important;\n    border-top-style: solid;\n    border-bottom-width: 3px !important;\n    border-bottom-style: solid;\n  }\n}\n.border-solid {\n  border-style: solid !important;\n}\n\n.border-dashed {\n  border-style: dashed !important;\n}\n\n.border-dotted {\n  border-style: dotted !important;\n}\n\n.border-double {\n  border-style: double !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:border-solid {\n    border-style: solid !important;\n  }\n  .sm\\:border-dashed {\n    border-style: dashed !important;\n  }\n  .sm\\:border-dotted {\n    border-style: dotted !important;\n  }\n  .sm\\:border-double {\n    border-style: double !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:border-solid {\n    border-style: solid !important;\n  }\n  .md\\:border-dashed {\n    border-style: dashed !important;\n  }\n  .md\\:border-dotted {\n    border-style: dotted !important;\n  }\n  .md\\:border-double {\n    border-style: double !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:border-solid {\n    border-style: solid !important;\n  }\n  .lg\\:border-dashed {\n    border-style: dashed !important;\n  }\n  .lg\\:border-dotted {\n    border-style: dotted !important;\n  }\n  .lg\\:border-double {\n    border-style: double !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:border-solid {\n    border-style: solid !important;\n  }\n  .xl\\:border-dashed {\n    border-style: dashed !important;\n  }\n  .xl\\:border-dotted {\n    border-style: dotted !important;\n  }\n  .xl\\:border-double {\n    border-style: double !important;\n  }\n}\n.border-noround {\n  border-radius: 0 !important;\n}\n\n.border-round {\n  border-radius: var(--p-content-border-radius) !important;\n}\n\n.border-round-xs {\n  border-radius: 0.125rem !important;\n}\n\n.border-round-sm {\n  border-radius: 0.25rem !important;\n}\n\n.border-round-md {\n  border-radius: 0.375rem !important;\n}\n\n.border-round-lg {\n  border-radius: 0.5rem !important;\n}\n\n.border-round-xl {\n  border-radius: 0.75rem !important;\n}\n\n.border-round-2xl {\n  border-radius: 1rem !important;\n}\n\n.border-round-3xl {\n  border-radius: 1.5rem !important;\n}\n\n.border-circle {\n  border-radius: 50% !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:border-noround {\n    border-radius: 0 !important;\n  }\n  .sm\\:border-round {\n    border-radius: var(--p-content-border-radius) !important;\n  }\n  .sm\\:border-round-xs {\n    border-radius: 0.125rem !important;\n  }\n  .sm\\:border-round-sm {\n    border-radius: 0.25rem !important;\n  }\n  .sm\\:border-round-md {\n    border-radius: 0.375rem !important;\n  }\n  .sm\\:border-round-lg {\n    border-radius: 0.5rem !important;\n  }\n  .sm\\:border-round-xl {\n    border-radius: 0.75rem !important;\n  }\n  .sm\\:border-round-2xl {\n    border-radius: 1rem !important;\n  }\n  .sm\\:border-round-3xl {\n    border-radius: 1.5rem !important;\n  }\n  .sm\\:border-circle {\n    border-radius: 50% !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:border-noround {\n    border-radius: 0 !important;\n  }\n  .md\\:border-round {\n    border-radius: var(--p-content-border-radius) !important;\n  }\n  .md\\:border-round-xs {\n    border-radius: 0.125rem !important;\n  }\n  .md\\:border-round-sm {\n    border-radius: 0.25rem !important;\n  }\n  .md\\:border-round-md {\n    border-radius: 0.375rem !important;\n  }\n  .md\\:border-round-lg {\n    border-radius: 0.5rem !important;\n  }\n  .md\\:border-round-xl {\n    border-radius: 0.75rem !important;\n  }\n  .md\\:border-round-2xl {\n    border-radius: 1rem !important;\n  }\n  .md\\:border-round-3xl {\n    border-radius: 1.5rem !important;\n  }\n  .md\\:border-circle {\n    border-radius: 50% !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:border-noround {\n    border-radius: 0 !important;\n  }\n  .lg\\:border-round {\n    border-radius: var(--p-content-border-radius) !important;\n  }\n  .lg\\:border-round-xs {\n    border-radius: 0.125rem !important;\n  }\n  .lg\\:border-round-sm {\n    border-radius: 0.25rem !important;\n  }\n  .lg\\:border-round-md {\n    border-radius: 0.375rem !important;\n  }\n  .lg\\:border-round-lg {\n    border-radius: 0.5rem !important;\n  }\n  .lg\\:border-round-xl {\n    border-radius: 0.75rem !important;\n  }\n  .lg\\:border-round-2xl {\n    border-radius: 1rem !important;\n  }\n  .lg\\:border-round-3xl {\n    border-radius: 1.5rem !important;\n  }\n  .lg\\:border-circle {\n    border-radius: 50% !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:border-noround {\n    border-radius: 0 !important;\n  }\n  .xl\\:border-round {\n    border-radius: var(--p-content-border-radius) !important;\n  }\n  .xl\\:border-round-xs {\n    border-radius: 0.125rem !important;\n  }\n  .xl\\:border-round-sm {\n    border-radius: 0.25rem !important;\n  }\n  .xl\\:border-round-md {\n    border-radius: 0.375rem !important;\n  }\n  .xl\\:border-round-lg {\n    border-radius: 0.5rem !important;\n  }\n  .xl\\:border-round-xl {\n    border-radius: 0.75rem !important;\n  }\n  .xl\\:border-round-2xl {\n    border-radius: 1rem !important;\n  }\n  .xl\\:border-round-3xl {\n    border-radius: 1.5rem !important;\n  }\n  .xl\\:border-circle {\n    border-radius: 50% !important;\n  }\n}\n.border-noround-left {\n  border-top-left-radius: 0 !important;\n  border-bottom-left-radius: 0 !important;\n}\n\n.border-noround-top {\n  border-top-left-radius: 0 !important;\n  border-top-right-radius: 0 !important;\n}\n\n.border-noround-right {\n  border-top-right-radius: 0 !important;\n  border-bottom-right-radius: 0 !important;\n}\n\n.border-noround-bottom {\n  border-bottom-left-radius: 0 !important;\n  border-bottom-right-radius: 0 !important;\n}\n\n.border-round-left {\n  border-top-left-radius: var(--p-content-border-radius) !important;\n  border-bottom-left-radius: var(--p-content-border-radius) !important;\n}\n\n.border-round-top {\n  border-top-left-radius: var(--p-content-border-radius) !important;\n  border-top-right-radius: var(--p-content-border-radius) !important;\n}\n\n.border-round-right {\n  border-top-right-radius: var(--p-content-border-radius) !important;\n  border-bottom-right-radius: var(--p-content-border-radius) !important;\n}\n\n.border-round-bottom {\n  border-bottom-left-radius: var(--p-content-border-radius) !important;\n  border-bottom-right-radius: var(--p-content-border-radius) !important;\n}\n\n.border-round-left-xs {\n  border-top-left-radius: 0.125rem !important;\n  border-bottom-left-radius: 0.125rem !important;\n}\n\n.border-round-top-xs {\n  border-top-left-radius: 0.125rem !important;\n  border-top-right-radius: 0.125rem !important;\n}\n\n.border-round-right-xs {\n  border-top-right-radius: 0.125rem !important;\n  border-bottom-right-radius: 0.125rem !important;\n}\n\n.border-round-bottom-xs {\n  border-bottom-left-radius: 0.125rem !important;\n  border-bottom-right-radius: 0.125rem !important;\n}\n\n.border-round-left-sm {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.border-round-top-sm {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.border-round-right-sm {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.border-round-bottom-sm {\n  border-bottom-left-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.border-round-left-md {\n  border-top-left-radius: 0.375rem !important;\n  border-bottom-left-radius: 0.375rem !important;\n}\n\n.border-round-top-md {\n  border-top-left-radius: 0.375rem !important;\n  border-top-right-radius: 0.375rem !important;\n}\n\n.border-round-right-md {\n  border-top-right-radius: 0.375rem !important;\n  border-bottom-right-radius: 0.375rem !important;\n}\n\n.border-round-bottom-md {\n  border-bottom-left-radius: 0.375rem !important;\n  border-bottom-right-radius: 0.375rem !important;\n}\n\n.border-round-left-lg {\n  border-top-left-radius: 0.5rem !important;\n  border-bottom-left-radius: 0.5rem !important;\n}\n\n.border-round-top-lg {\n  border-top-left-radius: 0.5rem !important;\n  border-top-right-radius: 0.5rem !important;\n}\n\n.border-round-right-lg {\n  border-top-right-radius: 0.5rem !important;\n  border-bottom-right-radius: 0.5rem !important;\n}\n\n.border-round-bottom-lg {\n  border-bottom-left-radius: 0.5rem !important;\n  border-bottom-right-radius: 0.5rem !important;\n}\n\n.border-round-left-xl {\n  border-top-left-radius: 0.75rem !important;\n  border-bottom-left-radius: 0.75rem !important;\n}\n\n.border-round-top-xl {\n  border-top-left-radius: 0.75rem !important;\n  border-top-right-radius: 0.75rem !important;\n}\n\n.border-round-right-xl {\n  border-top-right-radius: 0.75rem !important;\n  border-bottom-right-radius: 0.75rem !important;\n}\n\n.border-round-bottom-xl {\n  border-bottom-left-radius: 0.75rem !important;\n  border-bottom-right-radius: 0.75rem !important;\n}\n\n.border-round-left-2xl {\n  border-top-left-radius: 1rem !important;\n  border-bottom-left-radius: 1rem !important;\n}\n\n.border-round-top-2xl {\n  border-top-left-radius: 1rem !important;\n  border-top-right-radius: 1rem !important;\n}\n\n.border-round-right-2xl {\n  border-top-right-radius: 1rem !important;\n  border-bottom-right-radius: 1rem !important;\n}\n\n.border-round-bottom-2xl {\n  border-bottom-left-radius: 1rem !important;\n  border-bottom-right-radius: 1rem !important;\n}\n\n.border-round-left-3xl {\n  border-top-left-radius: 1.5rem !important;\n  border-bottom-left-radius: 1.5rem !important;\n}\n\n.border-round-top-3xl {\n  border-top-left-radius: 1.5rem !important;\n  border-top-right-radius: 1.5rem !important;\n}\n\n.border-round-right-3xl {\n  border-top-right-radius: 1.5rem !important;\n  border-bottom-right-radius: 1.5rem !important;\n}\n\n.border-round-bottom-3xl {\n  border-bottom-left-radius: 1.5rem !important;\n  border-bottom-right-radius: 1.5rem !important;\n}\n\n.border-circle-left {\n  border-top-left-radius: 50% !important;\n  border-bottom-left-radius: 50% !important;\n}\n\n.border-circle-top {\n  border-top-left-radius: 50% !important;\n  border-top-right-radius: 50% !important;\n}\n\n.border-circle-right {\n  border-top-right-radius: 50% !important;\n  border-bottom-right-radius: 50% !important;\n}\n\n.border-circle-bottom {\n  border-bottom-left-radius: 50% !important;\n  border-bottom-right-radius: 50% !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:border-noround-left {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n  .sm\\:border-noround-top {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n  .sm\\:border-noround-right {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n  .sm\\:border-noround-bottom {\n    border-bottom-left-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n  .sm\\:border-round-left {\n    border-top-left-radius: var(--p-content-border-radius) !important;\n    border-bottom-left-radius: var(--p-content-border-radius) !important;\n  }\n  .sm\\:border-round-top {\n    border-top-left-radius: var(--p-content-border-radius) !important;\n    border-top-right-radius: var(--p-content-border-radius) !important;\n  }\n  .sm\\:border-round-right {\n    border-top-right-radius: var(--p-content-border-radius) !important;\n    border-bottom-right-radius: var(--p-content-border-radius) !important;\n  }\n  .sm\\:border-round-bottom {\n    border-bottom-left-radius: var(--p-content-border-radius) !important;\n    border-bottom-right-radius: var(--p-content-border-radius) !important;\n  }\n  .sm\\:border-round-left-xs {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n  .sm\\:border-round-top-xs {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n  .sm\\:border-round-right-xs {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n  .sm\\:border-round-bottom-xs {\n    border-bottom-left-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n  .sm\\:border-round-left-sm {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n  .sm\\:border-round-top-sm {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n  .sm\\:border-round-right-sm {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n  .sm\\:border-round-bottom-sm {\n    border-bottom-left-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n  .sm\\:border-round-left-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n  .sm\\:border-round-top-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n  .sm\\:border-round-right-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n  .sm\\:border-round-bottom-md {\n    border-bottom-left-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n  .sm\\:border-round-left-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n  .sm\\:border-round-top-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n  .sm\\:border-round-right-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n  .sm\\:border-round-bottom-lg {\n    border-bottom-left-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n  .sm\\:border-round-left-xl {\n    border-top-left-radius: 0.75rem !important;\n    border-bottom-left-radius: 0.75rem !important;\n  }\n  .sm\\:border-round-top-xl {\n    border-top-left-radius: 0.75rem !important;\n    border-top-right-radius: 0.75rem !important;\n  }\n  .sm\\:border-round-right-xl {\n    border-top-right-radius: 0.75rem !important;\n    border-bottom-right-radius: 0.75rem !important;\n  }\n  .sm\\:border-round-bottom-xl {\n    border-bottom-left-radius: 0.75rem !important;\n    border-bottom-right-radius: 0.75rem !important;\n  }\n  .sm\\:border-round-left-2xl {\n    border-top-left-radius: 1rem !important;\n    border-bottom-left-radius: 1rem !important;\n  }\n  .sm\\:border-round-top-2xl {\n    border-top-left-radius: 1rem !important;\n    border-top-right-radius: 1rem !important;\n  }\n  .sm\\:border-round-right-2xl {\n    border-top-right-radius: 1rem !important;\n    border-bottom-right-radius: 1rem !important;\n  }\n  .sm\\:border-round-bottom-2xl {\n    border-bottom-left-radius: 1rem !important;\n    border-bottom-right-radius: 1rem !important;\n  }\n  .sm\\:border-round-left-3xl {\n    border-top-left-radius: 1.5rem !important;\n    border-bottom-left-radius: 1.5rem !important;\n  }\n  .sm\\:border-round-top-3xl {\n    border-top-left-radius: 1.5rem !important;\n    border-top-right-radius: 1.5rem !important;\n  }\n  .sm\\:border-round-right-3xl {\n    border-top-right-radius: 1.5rem !important;\n    border-bottom-right-radius: 1.5rem !important;\n  }\n  .sm\\:border-round-bottom-3xl {\n    border-bottom-left-radius: 1.5rem !important;\n    border-bottom-right-radius: 1.5rem !important;\n  }\n  .sm\\:border-circle-left {\n    border-top-left-radius: 50% !important;\n    border-bottom-left-radius: 50% !important;\n  }\n  .sm\\:border-circle-top {\n    border-top-left-radius: 50% !important;\n    border-top-right-radius: 50% !important;\n  }\n  .sm\\:border-circle-right {\n    border-top-right-radius: 50% !important;\n    border-bottom-right-radius: 50% !important;\n  }\n  .sm\\:border-circle-bottom {\n    border-bottom-left-radius: 50% !important;\n    border-bottom-right-radius: 50% !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:border-noround-left {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n  .md\\:border-noround-top {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n  .md\\:border-noround-right {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n  .md\\:border-noround-bottom {\n    border-bottom-left-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n  .md\\:border-round-left {\n    border-top-left-radius: var(--p-content-border-radius) !important;\n    border-bottom-left-radius: var(--p-content-border-radius) !important;\n  }\n  .md\\:border-round-top {\n    border-top-left-radius: var(--p-content-border-radius) !important;\n    border-top-right-radius: var(--p-content-border-radius) !important;\n  }\n  .md\\:border-round-right {\n    border-top-right-radius: var(--p-content-border-radius) !important;\n    border-bottom-right-radius: var(--p-content-border-radius) !important;\n  }\n  .md\\:border-round-bottom {\n    border-bottom-left-radius: var(--p-content-border-radius) !important;\n    border-bottom-right-radius: var(--p-content-border-radius) !important;\n  }\n  .md\\:border-round-left-xs {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n  .md\\:border-round-top-xs {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n  .md\\:border-round-right-xs {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n  .md\\:border-round-bottom-xs {\n    border-bottom-left-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n  .md\\:border-round-left-sm {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n  .md\\:border-round-top-sm {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n  .md\\:border-round-right-sm {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n  .md\\:border-round-bottom-sm {\n    border-bottom-left-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n  .md\\:border-round-left-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n  .md\\:border-round-top-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n  .md\\:border-round-right-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n  .md\\:border-round-bottom-md {\n    border-bottom-left-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n  .md\\:border-round-left-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n  .md\\:border-round-top-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n  .md\\:border-round-right-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n  .md\\:border-round-bottom-lg {\n    border-bottom-left-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n  .md\\:border-round-left-xl {\n    border-top-left-radius: 0.75rem !important;\n    border-bottom-left-radius: 0.75rem !important;\n  }\n  .md\\:border-round-top-xl {\n    border-top-left-radius: 0.75rem !important;\n    border-top-right-radius: 0.75rem !important;\n  }\n  .md\\:border-round-right-xl {\n    border-top-right-radius: 0.75rem !important;\n    border-bottom-right-radius: 0.75rem !important;\n  }\n  .md\\:border-round-bottom-xl {\n    border-bottom-left-radius: 0.75rem !important;\n    border-bottom-right-radius: 0.75rem !important;\n  }\n  .md\\:border-round-left-2xl {\n    border-top-left-radius: 1rem !important;\n    border-bottom-left-radius: 1rem !important;\n  }\n  .md\\:border-round-top-2xl {\n    border-top-left-radius: 1rem !important;\n    border-top-right-radius: 1rem !important;\n  }\n  .md\\:border-round-right-2xl {\n    border-top-right-radius: 1rem !important;\n    border-bottom-right-radius: 1rem !important;\n  }\n  .md\\:border-round-bottom-2xl {\n    border-bottom-left-radius: 1rem !important;\n    border-bottom-right-radius: 1rem !important;\n  }\n  .md\\:border-round-left-3xl {\n    border-top-left-radius: 1.5rem !important;\n    border-bottom-left-radius: 1.5rem !important;\n  }\n  .md\\:border-round-top-3xl {\n    border-top-left-radius: 1.5rem !important;\n    border-top-right-radius: 1.5rem !important;\n  }\n  .md\\:border-round-right-3xl {\n    border-top-right-radius: 1.5rem !important;\n    border-bottom-right-radius: 1.5rem !important;\n  }\n  .md\\:border-round-bottom-3xl {\n    border-bottom-left-radius: 1.5rem !important;\n    border-bottom-right-radius: 1.5rem !important;\n  }\n  .md\\:border-circle-left {\n    border-top-left-radius: 50% !important;\n    border-bottom-left-radius: 50% !important;\n  }\n  .md\\:border-circle-top {\n    border-top-left-radius: 50% !important;\n    border-top-right-radius: 50% !important;\n  }\n  .md\\:border-circle-right {\n    border-top-right-radius: 50% !important;\n    border-bottom-right-radius: 50% !important;\n  }\n  .md\\:border-circle-bottom {\n    border-bottom-left-radius: 50% !important;\n    border-bottom-right-radius: 50% !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:border-noround-left {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n  .lg\\:border-noround-top {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n  .lg\\:border-noround-right {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n  .lg\\:border-noround-bottom {\n    border-bottom-left-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n  .lg\\:border-round-left {\n    border-top-left-radius: var(--p-content-border-radius) !important;\n    border-bottom-left-radius: var(--p-content-border-radius) !important;\n  }\n  .lg\\:border-round-top {\n    border-top-left-radius: var(--p-content-border-radius) !important;\n    border-top-right-radius: var(--p-content-border-radius) !important;\n  }\n  .lg\\:border-round-right {\n    border-top-right-radius: var(--p-content-border-radius) !important;\n    border-bottom-right-radius: var(--p-content-border-radius) !important;\n  }\n  .lg\\:border-round-bottom {\n    border-bottom-left-radius: var(--p-content-border-radius) !important;\n    border-bottom-right-radius: var(--p-content-border-radius) !important;\n  }\n  .lg\\:border-round-left-xs {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n  .lg\\:border-round-top-xs {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n  .lg\\:border-round-right-xs {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n  .lg\\:border-round-bottom-xs {\n    border-bottom-left-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n  .lg\\:border-round-left-sm {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n  .lg\\:border-round-top-sm {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n  .lg\\:border-round-right-sm {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n  .lg\\:border-round-bottom-sm {\n    border-bottom-left-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n  .lg\\:border-round-left-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n  .lg\\:border-round-top-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n  .lg\\:border-round-right-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n  .lg\\:border-round-bottom-md {\n    border-bottom-left-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n  .lg\\:border-round-left-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n  .lg\\:border-round-top-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n  .lg\\:border-round-right-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n  .lg\\:border-round-bottom-lg {\n    border-bottom-left-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n  .lg\\:border-round-left-xl {\n    border-top-left-radius: 0.75rem !important;\n    border-bottom-left-radius: 0.75rem !important;\n  }\n  .lg\\:border-round-top-xl {\n    border-top-left-radius: 0.75rem !important;\n    border-top-right-radius: 0.75rem !important;\n  }\n  .lg\\:border-round-right-xl {\n    border-top-right-radius: 0.75rem !important;\n    border-bottom-right-radius: 0.75rem !important;\n  }\n  .lg\\:border-round-bottom-xl {\n    border-bottom-left-radius: 0.75rem !important;\n    border-bottom-right-radius: 0.75rem !important;\n  }\n  .lg\\:border-round-left-2xl {\n    border-top-left-radius: 1rem !important;\n    border-bottom-left-radius: 1rem !important;\n  }\n  .lg\\:border-round-top-2xl {\n    border-top-left-radius: 1rem !important;\n    border-top-right-radius: 1rem !important;\n  }\n  .lg\\:border-round-right-2xl {\n    border-top-right-radius: 1rem !important;\n    border-bottom-right-radius: 1rem !important;\n  }\n  .lg\\:border-round-bottom-2xl {\n    border-bottom-left-radius: 1rem !important;\n    border-bottom-right-radius: 1rem !important;\n  }\n  .lg\\:border-round-left-3xl {\n    border-top-left-radius: 1.5rem !important;\n    border-bottom-left-radius: 1.5rem !important;\n  }\n  .lg\\:border-round-top-3xl {\n    border-top-left-radius: 1.5rem !important;\n    border-top-right-radius: 1.5rem !important;\n  }\n  .lg\\:border-round-right-3xl {\n    border-top-right-radius: 1.5rem !important;\n    border-bottom-right-radius: 1.5rem !important;\n  }\n  .lg\\:border-round-bottom-3xl {\n    border-bottom-left-radius: 1.5rem !important;\n    border-bottom-right-radius: 1.5rem !important;\n  }\n  .lg\\:border-circle-left {\n    border-top-left-radius: 50% !important;\n    border-bottom-left-radius: 50% !important;\n  }\n  .lg\\:border-circle-top {\n    border-top-left-radius: 50% !important;\n    border-top-right-radius: 50% !important;\n  }\n  .lg\\:border-circle-right {\n    border-top-right-radius: 50% !important;\n    border-bottom-right-radius: 50% !important;\n  }\n  .lg\\:border-circle-bottom {\n    border-bottom-left-radius: 50% !important;\n    border-bottom-right-radius: 50% !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:border-noround-left {\n    border-top-left-radius: 0 !important;\n    border-bottom-left-radius: 0 !important;\n  }\n  .xl\\:border-noround-top {\n    border-top-left-radius: 0 !important;\n    border-top-right-radius: 0 !important;\n  }\n  .xl\\:border-noround-right {\n    border-top-right-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n  .xl\\:border-noround-bottom {\n    border-bottom-left-radius: 0 !important;\n    border-bottom-right-radius: 0 !important;\n  }\n  .xl\\:border-round-left {\n    border-top-left-radius: var(--p-content-border-radius) !important;\n    border-bottom-left-radius: var(--p-content-border-radius) !important;\n  }\n  .xl\\:border-round-top {\n    border-top-left-radius: var(--p-content-border-radius) !important;\n    border-top-right-radius: var(--p-content-border-radius) !important;\n  }\n  .xl\\:border-round-right {\n    border-top-right-radius: var(--p-content-border-radius) !important;\n    border-bottom-right-radius: var(--p-content-border-radius) !important;\n  }\n  .xl\\:border-round-bottom {\n    border-bottom-left-radius: var(--p-content-border-radius) !important;\n    border-bottom-right-radius: var(--p-content-border-radius) !important;\n  }\n  .xl\\:border-round-left-xs {\n    border-top-left-radius: 0.125rem !important;\n    border-bottom-left-radius: 0.125rem !important;\n  }\n  .xl\\:border-round-top-xs {\n    border-top-left-radius: 0.125rem !important;\n    border-top-right-radius: 0.125rem !important;\n  }\n  .xl\\:border-round-right-xs {\n    border-top-right-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n  .xl\\:border-round-bottom-xs {\n    border-bottom-left-radius: 0.125rem !important;\n    border-bottom-right-radius: 0.125rem !important;\n  }\n  .xl\\:border-round-left-sm {\n    border-top-left-radius: 0.25rem !important;\n    border-bottom-left-radius: 0.25rem !important;\n  }\n  .xl\\:border-round-top-sm {\n    border-top-left-radius: 0.25rem !important;\n    border-top-right-radius: 0.25rem !important;\n  }\n  .xl\\:border-round-right-sm {\n    border-top-right-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n  .xl\\:border-round-bottom-sm {\n    border-bottom-left-radius: 0.25rem !important;\n    border-bottom-right-radius: 0.25rem !important;\n  }\n  .xl\\:border-round-left-md {\n    border-top-left-radius: 0.375rem !important;\n    border-bottom-left-radius: 0.375rem !important;\n  }\n  .xl\\:border-round-top-md {\n    border-top-left-radius: 0.375rem !important;\n    border-top-right-radius: 0.375rem !important;\n  }\n  .xl\\:border-round-right-md {\n    border-top-right-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n  .xl\\:border-round-bottom-md {\n    border-bottom-left-radius: 0.375rem !important;\n    border-bottom-right-radius: 0.375rem !important;\n  }\n  .xl\\:border-round-left-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-bottom-left-radius: 0.5rem !important;\n  }\n  .xl\\:border-round-top-lg {\n    border-top-left-radius: 0.5rem !important;\n    border-top-right-radius: 0.5rem !important;\n  }\n  .xl\\:border-round-right-lg {\n    border-top-right-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n  .xl\\:border-round-bottom-lg {\n    border-bottom-left-radius: 0.5rem !important;\n    border-bottom-right-radius: 0.5rem !important;\n  }\n  .xl\\:border-round-left-xl {\n    border-top-left-radius: 0.75rem !important;\n    border-bottom-left-radius: 0.75rem !important;\n  }\n  .xl\\:border-round-top-xl {\n    border-top-left-radius: 0.75rem !important;\n    border-top-right-radius: 0.75rem !important;\n  }\n  .xl\\:border-round-right-xl {\n    border-top-right-radius: 0.75rem !important;\n    border-bottom-right-radius: 0.75rem !important;\n  }\n  .xl\\:border-round-bottom-xl {\n    border-bottom-left-radius: 0.75rem !important;\n    border-bottom-right-radius: 0.75rem !important;\n  }\n  .xl\\:border-round-left-2xl {\n    border-top-left-radius: 1rem !important;\n    border-bottom-left-radius: 1rem !important;\n  }\n  .xl\\:border-round-top-2xl {\n    border-top-left-radius: 1rem !important;\n    border-top-right-radius: 1rem !important;\n  }\n  .xl\\:border-round-right-2xl {\n    border-top-right-radius: 1rem !important;\n    border-bottom-right-radius: 1rem !important;\n  }\n  .xl\\:border-round-bottom-2xl {\n    border-bottom-left-radius: 1rem !important;\n    border-bottom-right-radius: 1rem !important;\n  }\n  .xl\\:border-round-left-3xl {\n    border-top-left-radius: 1.5rem !important;\n    border-bottom-left-radius: 1.5rem !important;\n  }\n  .xl\\:border-round-top-3xl {\n    border-top-left-radius: 1.5rem !important;\n    border-top-right-radius: 1.5rem !important;\n  }\n  .xl\\:border-round-right-3xl {\n    border-top-right-radius: 1.5rem !important;\n    border-bottom-right-radius: 1.5rem !important;\n  }\n  .xl\\:border-round-bottom-3xl {\n    border-bottom-left-radius: 1.5rem !important;\n    border-bottom-right-radius: 1.5rem !important;\n  }\n  .xl\\:border-circle-left {\n    border-top-left-radius: 50% !important;\n    border-bottom-left-radius: 50% !important;\n  }\n  .xl\\:border-circle-top {\n    border-top-left-radius: 50% !important;\n    border-top-right-radius: 50% !important;\n  }\n  .xl\\:border-circle-right {\n    border-top-right-radius: 50% !important;\n    border-bottom-right-radius: 50% !important;\n  }\n  .xl\\:border-circle-bottom {\n    border-bottom-left-radius: 50% !important;\n    border-bottom-right-radius: 50% !important;\n  }\n}\n.w-full {\n  width: 100% !important;\n}\n\n.w-screen {\n  width: 100vw !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.w-1 {\n  width: 8.3333% !important;\n}\n\n.w-2 {\n  width: 16.6667% !important;\n}\n\n.w-3 {\n  width: 25% !important;\n}\n\n.w-4 {\n  width: 33.3333% !important;\n}\n\n.w-5 {\n  width: 41.6667% !important;\n}\n\n.w-6 {\n  width: 50% !important;\n}\n\n.w-7 {\n  width: 58.3333% !important;\n}\n\n.w-8 {\n  width: 66.6667% !important;\n}\n\n.w-9 {\n  width: 75% !important;\n}\n\n.w-10 {\n  width: 83.3333% !important;\n}\n\n.w-11 {\n  width: 91.6667% !important;\n}\n\n.w-12 {\n  width: 100% !important;\n}\n\n.w-min {\n  width: min-content !important;\n}\n\n.w-max {\n  width: max-content !important;\n}\n\n.w-fit {\n  width: fit-content !important;\n}\n\n.w-1rem {\n  width: 1rem !important;\n}\n\n.w-2rem {\n  width: 2rem !important;\n}\n\n.w-3rem {\n  width: 3rem !important;\n}\n\n.w-4rem {\n  width: 4rem !important;\n}\n\n.w-5rem {\n  width: 5rem !important;\n}\n\n.w-6rem {\n  width: 6rem !important;\n}\n\n.w-7rem {\n  width: 7rem !important;\n}\n\n.w-8rem {\n  width: 8rem !important;\n}\n\n.w-9rem {\n  width: 9rem !important;\n}\n\n.w-10rem {\n  width: 10rem !important;\n}\n\n.w-11rem {\n  width: 11rem !important;\n}\n\n.w-12rem {\n  width: 12rem !important;\n}\n\n.w-13rem {\n  width: 13rem !important;\n}\n\n.w-14rem {\n  width: 14rem !important;\n}\n\n.w-15rem {\n  width: 15rem !important;\n}\n\n.w-16rem {\n  width: 16rem !important;\n}\n\n.w-17rem {\n  width: 17rem !important;\n}\n\n.w-18rem {\n  width: 18rem !important;\n}\n\n.w-19rem {\n  width: 19rem !important;\n}\n\n.w-20rem {\n  width: 20rem !important;\n}\n\n.w-21rem {\n  width: 21rem !important;\n}\n\n.w-22rem {\n  width: 22rem !important;\n}\n\n.w-23rem {\n  width: 23rem !important;\n}\n\n.w-24rem {\n  width: 24rem !important;\n}\n\n.w-25rem {\n  width: 25rem !important;\n}\n\n.w-26rem {\n  width: 26rem !important;\n}\n\n.w-27rem {\n  width: 27rem !important;\n}\n\n.w-28rem {\n  width: 28rem !important;\n}\n\n.w-29rem {\n  width: 29rem !important;\n}\n\n.w-30rem {\n  width: 30rem !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:w-full {\n    width: 100% !important;\n  }\n  .sm\\:w-screen {\n    width: 100vw !important;\n  }\n  .sm\\:w-auto {\n    width: auto !important;\n  }\n  .sm\\:w-1 {\n    width: 8.3333% !important;\n  }\n  .sm\\:w-2 {\n    width: 16.6667% !important;\n  }\n  .sm\\:w-3 {\n    width: 25% !important;\n  }\n  .sm\\:w-4 {\n    width: 33.3333% !important;\n  }\n  .sm\\:w-5 {\n    width: 41.6667% !important;\n  }\n  .sm\\:w-6 {\n    width: 50% !important;\n  }\n  .sm\\:w-7 {\n    width: 58.3333% !important;\n  }\n  .sm\\:w-8 {\n    width: 66.6667% !important;\n  }\n  .sm\\:w-9 {\n    width: 75% !important;\n  }\n  .sm\\:w-10 {\n    width: 83.3333% !important;\n  }\n  .sm\\:w-11 {\n    width: 91.6667% !important;\n  }\n  .sm\\:w-12 {\n    width: 100% !important;\n  }\n  .sm\\:w-min {\n    width: min-content !important;\n  }\n  .sm\\:w-max {\n    width: max-content !important;\n  }\n  .sm\\:w-fit {\n    width: fit-content !important;\n  }\n  .sm\\:w-1rem {\n    width: 1rem !important;\n  }\n  .sm\\:w-2rem {\n    width: 2rem !important;\n  }\n  .sm\\:w-3rem {\n    width: 3rem !important;\n  }\n  .sm\\:w-4rem {\n    width: 4rem !important;\n  }\n  .sm\\:w-5rem {\n    width: 5rem !important;\n  }\n  .sm\\:w-6rem {\n    width: 6rem !important;\n  }\n  .sm\\:w-7rem {\n    width: 7rem !important;\n  }\n  .sm\\:w-8rem {\n    width: 8rem !important;\n  }\n  .sm\\:w-9rem {\n    width: 9rem !important;\n  }\n  .sm\\:w-10rem {\n    width: 10rem !important;\n  }\n  .sm\\:w-11rem {\n    width: 11rem !important;\n  }\n  .sm\\:w-12rem {\n    width: 12rem !important;\n  }\n  .sm\\:w-13rem {\n    width: 13rem !important;\n  }\n  .sm\\:w-14rem {\n    width: 14rem !important;\n  }\n  .sm\\:w-15rem {\n    width: 15rem !important;\n  }\n  .sm\\:w-16rem {\n    width: 16rem !important;\n  }\n  .sm\\:w-17rem {\n    width: 17rem !important;\n  }\n  .sm\\:w-18rem {\n    width: 18rem !important;\n  }\n  .sm\\:w-19rem {\n    width: 19rem !important;\n  }\n  .sm\\:w-20rem {\n    width: 20rem !important;\n  }\n  .sm\\:w-21rem {\n    width: 21rem !important;\n  }\n  .sm\\:w-22rem {\n    width: 22rem !important;\n  }\n  .sm\\:w-23rem {\n    width: 23rem !important;\n  }\n  .sm\\:w-24rem {\n    width: 24rem !important;\n  }\n  .sm\\:w-25rem {\n    width: 25rem !important;\n  }\n  .sm\\:w-26rem {\n    width: 26rem !important;\n  }\n  .sm\\:w-27rem {\n    width: 27rem !important;\n  }\n  .sm\\:w-28rem {\n    width: 28rem !important;\n  }\n  .sm\\:w-29rem {\n    width: 29rem !important;\n  }\n  .sm\\:w-30rem {\n    width: 30rem !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:w-full {\n    width: 100% !important;\n  }\n  .md\\:w-screen {\n    width: 100vw !important;\n  }\n  .md\\:w-auto {\n    width: auto !important;\n  }\n  .md\\:w-1 {\n    width: 8.3333% !important;\n  }\n  .md\\:w-2 {\n    width: 16.6667% !important;\n  }\n  .md\\:w-3 {\n    width: 25% !important;\n  }\n  .md\\:w-4 {\n    width: 33.3333% !important;\n  }\n  .md\\:w-5 {\n    width: 41.6667% !important;\n  }\n  .md\\:w-6 {\n    width: 50% !important;\n  }\n  .md\\:w-7 {\n    width: 58.3333% !important;\n  }\n  .md\\:w-8 {\n    width: 66.6667% !important;\n  }\n  .md\\:w-9 {\n    width: 75% !important;\n  }\n  .md\\:w-10 {\n    width: 83.3333% !important;\n  }\n  .md\\:w-11 {\n    width: 91.6667% !important;\n  }\n  .md\\:w-12 {\n    width: 100% !important;\n  }\n  .md\\:w-min {\n    width: min-content !important;\n  }\n  .md\\:w-max {\n    width: max-content !important;\n  }\n  .md\\:w-fit {\n    width: fit-content !important;\n  }\n  .md\\:w-1rem {\n    width: 1rem !important;\n  }\n  .md\\:w-2rem {\n    width: 2rem !important;\n  }\n  .md\\:w-3rem {\n    width: 3rem !important;\n  }\n  .md\\:w-4rem {\n    width: 4rem !important;\n  }\n  .md\\:w-5rem {\n    width: 5rem !important;\n  }\n  .md\\:w-6rem {\n    width: 6rem !important;\n  }\n  .md\\:w-7rem {\n    width: 7rem !important;\n  }\n  .md\\:w-8rem {\n    width: 8rem !important;\n  }\n  .md\\:w-9rem {\n    width: 9rem !important;\n  }\n  .md\\:w-10rem {\n    width: 10rem !important;\n  }\n  .md\\:w-11rem {\n    width: 11rem !important;\n  }\n  .md\\:w-12rem {\n    width: 12rem !important;\n  }\n  .md\\:w-13rem {\n    width: 13rem !important;\n  }\n  .md\\:w-14rem {\n    width: 14rem !important;\n  }\n  .md\\:w-15rem {\n    width: 15rem !important;\n  }\n  .md\\:w-16rem {\n    width: 16rem !important;\n  }\n  .md\\:w-17rem {\n    width: 17rem !important;\n  }\n  .md\\:w-18rem {\n    width: 18rem !important;\n  }\n  .md\\:w-19rem {\n    width: 19rem !important;\n  }\n  .md\\:w-20rem {\n    width: 20rem !important;\n  }\n  .md\\:w-21rem {\n    width: 21rem !important;\n  }\n  .md\\:w-22rem {\n    width: 22rem !important;\n  }\n  .md\\:w-23rem {\n    width: 23rem !important;\n  }\n  .md\\:w-24rem {\n    width: 24rem !important;\n  }\n  .md\\:w-25rem {\n    width: 25rem !important;\n  }\n  .md\\:w-26rem {\n    width: 26rem !important;\n  }\n  .md\\:w-27rem {\n    width: 27rem !important;\n  }\n  .md\\:w-28rem {\n    width: 28rem !important;\n  }\n  .md\\:w-29rem {\n    width: 29rem !important;\n  }\n  .md\\:w-30rem {\n    width: 30rem !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:w-full {\n    width: 100% !important;\n  }\n  .lg\\:w-screen {\n    width: 100vw !important;\n  }\n  .lg\\:w-auto {\n    width: auto !important;\n  }\n  .lg\\:w-1 {\n    width: 8.3333% !important;\n  }\n  .lg\\:w-2 {\n    width: 16.6667% !important;\n  }\n  .lg\\:w-3 {\n    width: 25% !important;\n  }\n  .lg\\:w-4 {\n    width: 33.3333% !important;\n  }\n  .lg\\:w-5 {\n    width: 41.6667% !important;\n  }\n  .lg\\:w-6 {\n    width: 50% !important;\n  }\n  .lg\\:w-7 {\n    width: 58.3333% !important;\n  }\n  .lg\\:w-8 {\n    width: 66.6667% !important;\n  }\n  .lg\\:w-9 {\n    width: 75% !important;\n  }\n  .lg\\:w-10 {\n    width: 83.3333% !important;\n  }\n  .lg\\:w-11 {\n    width: 91.6667% !important;\n  }\n  .lg\\:w-12 {\n    width: 100% !important;\n  }\n  .lg\\:w-min {\n    width: min-content !important;\n  }\n  .lg\\:w-max {\n    width: max-content !important;\n  }\n  .lg\\:w-fit {\n    width: fit-content !important;\n  }\n  .lg\\:w-1rem {\n    width: 1rem !important;\n  }\n  .lg\\:w-2rem {\n    width: 2rem !important;\n  }\n  .lg\\:w-3rem {\n    width: 3rem !important;\n  }\n  .lg\\:w-4rem {\n    width: 4rem !important;\n  }\n  .lg\\:w-5rem {\n    width: 5rem !important;\n  }\n  .lg\\:w-6rem {\n    width: 6rem !important;\n  }\n  .lg\\:w-7rem {\n    width: 7rem !important;\n  }\n  .lg\\:w-8rem {\n    width: 8rem !important;\n  }\n  .lg\\:w-9rem {\n    width: 9rem !important;\n  }\n  .lg\\:w-10rem {\n    width: 10rem !important;\n  }\n  .lg\\:w-11rem {\n    width: 11rem !important;\n  }\n  .lg\\:w-12rem {\n    width: 12rem !important;\n  }\n  .lg\\:w-13rem {\n    width: 13rem !important;\n  }\n  .lg\\:w-14rem {\n    width: 14rem !important;\n  }\n  .lg\\:w-15rem {\n    width: 15rem !important;\n  }\n  .lg\\:w-16rem {\n    width: 16rem !important;\n  }\n  .lg\\:w-17rem {\n    width: 17rem !important;\n  }\n  .lg\\:w-18rem {\n    width: 18rem !important;\n  }\n  .lg\\:w-19rem {\n    width: 19rem !important;\n  }\n  .lg\\:w-20rem {\n    width: 20rem !important;\n  }\n  .lg\\:w-21rem {\n    width: 21rem !important;\n  }\n  .lg\\:w-22rem {\n    width: 22rem !important;\n  }\n  .lg\\:w-23rem {\n    width: 23rem !important;\n  }\n  .lg\\:w-24rem {\n    width: 24rem !important;\n  }\n  .lg\\:w-25rem {\n    width: 25rem !important;\n  }\n  .lg\\:w-26rem {\n    width: 26rem !important;\n  }\n  .lg\\:w-27rem {\n    width: 27rem !important;\n  }\n  .lg\\:w-28rem {\n    width: 28rem !important;\n  }\n  .lg\\:w-29rem {\n    width: 29rem !important;\n  }\n  .lg\\:w-30rem {\n    width: 30rem !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:w-full {\n    width: 100% !important;\n  }\n  .xl\\:w-screen {\n    width: 100vw !important;\n  }\n  .xl\\:w-auto {\n    width: auto !important;\n  }\n  .xl\\:w-1 {\n    width: 8.3333% !important;\n  }\n  .xl\\:w-2 {\n    width: 16.6667% !important;\n  }\n  .xl\\:w-3 {\n    width: 25% !important;\n  }\n  .xl\\:w-4 {\n    width: 33.3333% !important;\n  }\n  .xl\\:w-5 {\n    width: 41.6667% !important;\n  }\n  .xl\\:w-6 {\n    width: 50% !important;\n  }\n  .xl\\:w-7 {\n    width: 58.3333% !important;\n  }\n  .xl\\:w-8 {\n    width: 66.6667% !important;\n  }\n  .xl\\:w-9 {\n    width: 75% !important;\n  }\n  .xl\\:w-10 {\n    width: 83.3333% !important;\n  }\n  .xl\\:w-11 {\n    width: 91.6667% !important;\n  }\n  .xl\\:w-12 {\n    width: 100% !important;\n  }\n  .xl\\:w-min {\n    width: min-content !important;\n  }\n  .xl\\:w-max {\n    width: max-content !important;\n  }\n  .xl\\:w-fit {\n    width: fit-content !important;\n  }\n  .xl\\:w-1rem {\n    width: 1rem !important;\n  }\n  .xl\\:w-2rem {\n    width: 2rem !important;\n  }\n  .xl\\:w-3rem {\n    width: 3rem !important;\n  }\n  .xl\\:w-4rem {\n    width: 4rem !important;\n  }\n  .xl\\:w-5rem {\n    width: 5rem !important;\n  }\n  .xl\\:w-6rem {\n    width: 6rem !important;\n  }\n  .xl\\:w-7rem {\n    width: 7rem !important;\n  }\n  .xl\\:w-8rem {\n    width: 8rem !important;\n  }\n  .xl\\:w-9rem {\n    width: 9rem !important;\n  }\n  .xl\\:w-10rem {\n    width: 10rem !important;\n  }\n  .xl\\:w-11rem {\n    width: 11rem !important;\n  }\n  .xl\\:w-12rem {\n    width: 12rem !important;\n  }\n  .xl\\:w-13rem {\n    width: 13rem !important;\n  }\n  .xl\\:w-14rem {\n    width: 14rem !important;\n  }\n  .xl\\:w-15rem {\n    width: 15rem !important;\n  }\n  .xl\\:w-16rem {\n    width: 16rem !important;\n  }\n  .xl\\:w-17rem {\n    width: 17rem !important;\n  }\n  .xl\\:w-18rem {\n    width: 18rem !important;\n  }\n  .xl\\:w-19rem {\n    width: 19rem !important;\n  }\n  .xl\\:w-20rem {\n    width: 20rem !important;\n  }\n  .xl\\:w-21rem {\n    width: 21rem !important;\n  }\n  .xl\\:w-22rem {\n    width: 22rem !important;\n  }\n  .xl\\:w-23rem {\n    width: 23rem !important;\n  }\n  .xl\\:w-24rem {\n    width: 24rem !important;\n  }\n  .xl\\:w-25rem {\n    width: 25rem !important;\n  }\n  .xl\\:w-26rem {\n    width: 26rem !important;\n  }\n  .xl\\:w-27rem {\n    width: 27rem !important;\n  }\n  .xl\\:w-28rem {\n    width: 28rem !important;\n  }\n  .xl\\:w-29rem {\n    width: 29rem !important;\n  }\n  .xl\\:w-30rem {\n    width: 30rem !important;\n  }\n}\n.h-full {\n  height: 100% !important;\n}\n\n.h-screen {\n  height: 100vh !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.h-min {\n  height: min-content !important;\n}\n\n.h-max {\n  height: max-content !important;\n}\n\n.h-fit {\n  height: fit-content !important;\n}\n\n.h-1rem {\n  height: 1rem !important;\n}\n\n.h-2rem {\n  height: 2rem !important;\n}\n\n.h-3rem {\n  height: 3rem !important;\n}\n\n.h-4rem {\n  height: 4rem !important;\n}\n\n.h-5rem {\n  height: 5rem !important;\n}\n\n.h-6rem {\n  height: 6rem !important;\n}\n\n.h-7rem {\n  height: 7rem !important;\n}\n\n.h-8rem {\n  height: 8rem !important;\n}\n\n.h-9rem {\n  height: 9rem !important;\n}\n\n.h-10rem {\n  height: 10rem !important;\n}\n\n.h-11rem {\n  height: 11rem !important;\n}\n\n.h-12rem {\n  height: 12rem !important;\n}\n\n.h-13rem {\n  height: 13rem !important;\n}\n\n.h-14rem {\n  height: 14rem !important;\n}\n\n.h-15rem {\n  height: 15rem !important;\n}\n\n.h-16rem {\n  height: 16rem !important;\n}\n\n.h-17rem {\n  height: 17rem !important;\n}\n\n.h-18rem {\n  height: 18rem !important;\n}\n\n.h-19rem {\n  height: 19rem !important;\n}\n\n.h-20rem {\n  height: 20rem !important;\n}\n\n.h-21rem {\n  height: 21rem !important;\n}\n\n.h-22rem {\n  height: 22rem !important;\n}\n\n.h-23rem {\n  height: 23rem !important;\n}\n\n.h-24rem {\n  height: 24rem !important;\n}\n\n.h-25rem {\n  height: 25rem !important;\n}\n\n.h-26rem {\n  height: 26rem !important;\n}\n\n.h-27rem {\n  height: 27rem !important;\n}\n\n.h-28rem {\n  height: 28rem !important;\n}\n\n.h-29rem {\n  height: 29rem !important;\n}\n\n.h-30rem {\n  height: 30rem !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:h-full {\n    height: 100% !important;\n  }\n  .sm\\:h-screen {\n    height: 100vh !important;\n  }\n  .sm\\:h-auto {\n    height: auto !important;\n  }\n  .sm\\:h-min {\n    height: min-content !important;\n  }\n  .sm\\:h-max {\n    height: max-content !important;\n  }\n  .sm\\:h-fit {\n    height: fit-content !important;\n  }\n  .sm\\:h-1rem {\n    height: 1rem !important;\n  }\n  .sm\\:h-2rem {\n    height: 2rem !important;\n  }\n  .sm\\:h-3rem {\n    height: 3rem !important;\n  }\n  .sm\\:h-4rem {\n    height: 4rem !important;\n  }\n  .sm\\:h-5rem {\n    height: 5rem !important;\n  }\n  .sm\\:h-6rem {\n    height: 6rem !important;\n  }\n  .sm\\:h-7rem {\n    height: 7rem !important;\n  }\n  .sm\\:h-8rem {\n    height: 8rem !important;\n  }\n  .sm\\:h-9rem {\n    height: 9rem !important;\n  }\n  .sm\\:h-10rem {\n    height: 10rem !important;\n  }\n  .sm\\:h-11rem {\n    height: 11rem !important;\n  }\n  .sm\\:h-12rem {\n    height: 12rem !important;\n  }\n  .sm\\:h-13rem {\n    height: 13rem !important;\n  }\n  .sm\\:h-14rem {\n    height: 14rem !important;\n  }\n  .sm\\:h-15rem {\n    height: 15rem !important;\n  }\n  .sm\\:h-16rem {\n    height: 16rem !important;\n  }\n  .sm\\:h-17rem {\n    height: 17rem !important;\n  }\n  .sm\\:h-18rem {\n    height: 18rem !important;\n  }\n  .sm\\:h-19rem {\n    height: 19rem !important;\n  }\n  .sm\\:h-20rem {\n    height: 20rem !important;\n  }\n  .sm\\:h-21rem {\n    height: 21rem !important;\n  }\n  .sm\\:h-22rem {\n    height: 22rem !important;\n  }\n  .sm\\:h-23rem {\n    height: 23rem !important;\n  }\n  .sm\\:h-24rem {\n    height: 24rem !important;\n  }\n  .sm\\:h-25rem {\n    height: 25rem !important;\n  }\n  .sm\\:h-26rem {\n    height: 26rem !important;\n  }\n  .sm\\:h-27rem {\n    height: 27rem !important;\n  }\n  .sm\\:h-28rem {\n    height: 28rem !important;\n  }\n  .sm\\:h-29rem {\n    height: 29rem !important;\n  }\n  .sm\\:h-30rem {\n    height: 30rem !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:h-full {\n    height: 100% !important;\n  }\n  .md\\:h-screen {\n    height: 100vh !important;\n  }\n  .md\\:h-auto {\n    height: auto !important;\n  }\n  .md\\:h-min {\n    height: min-content !important;\n  }\n  .md\\:h-max {\n    height: max-content !important;\n  }\n  .md\\:h-fit {\n    height: fit-content !important;\n  }\n  .md\\:h-1rem {\n    height: 1rem !important;\n  }\n  .md\\:h-2rem {\n    height: 2rem !important;\n  }\n  .md\\:h-3rem {\n    height: 3rem !important;\n  }\n  .md\\:h-4rem {\n    height: 4rem !important;\n  }\n  .md\\:h-5rem {\n    height: 5rem !important;\n  }\n  .md\\:h-6rem {\n    height: 6rem !important;\n  }\n  .md\\:h-7rem {\n    height: 7rem !important;\n  }\n  .md\\:h-8rem {\n    height: 8rem !important;\n  }\n  .md\\:h-9rem {\n    height: 9rem !important;\n  }\n  .md\\:h-10rem {\n    height: 10rem !important;\n  }\n  .md\\:h-11rem {\n    height: 11rem !important;\n  }\n  .md\\:h-12rem {\n    height: 12rem !important;\n  }\n  .md\\:h-13rem {\n    height: 13rem !important;\n  }\n  .md\\:h-14rem {\n    height: 14rem !important;\n  }\n  .md\\:h-15rem {\n    height: 15rem !important;\n  }\n  .md\\:h-16rem {\n    height: 16rem !important;\n  }\n  .md\\:h-17rem {\n    height: 17rem !important;\n  }\n  .md\\:h-18rem {\n    height: 18rem !important;\n  }\n  .md\\:h-19rem {\n    height: 19rem !important;\n  }\n  .md\\:h-20rem {\n    height: 20rem !important;\n  }\n  .md\\:h-21rem {\n    height: 21rem !important;\n  }\n  .md\\:h-22rem {\n    height: 22rem !important;\n  }\n  .md\\:h-23rem {\n    height: 23rem !important;\n  }\n  .md\\:h-24rem {\n    height: 24rem !important;\n  }\n  .md\\:h-25rem {\n    height: 25rem !important;\n  }\n  .md\\:h-26rem {\n    height: 26rem !important;\n  }\n  .md\\:h-27rem {\n    height: 27rem !important;\n  }\n  .md\\:h-28rem {\n    height: 28rem !important;\n  }\n  .md\\:h-29rem {\n    height: 29rem !important;\n  }\n  .md\\:h-30rem {\n    height: 30rem !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:h-full {\n    height: 100% !important;\n  }\n  .lg\\:h-screen {\n    height: 100vh !important;\n  }\n  .lg\\:h-auto {\n    height: auto !important;\n  }\n  .lg\\:h-min {\n    height: min-content !important;\n  }\n  .lg\\:h-max {\n    height: max-content !important;\n  }\n  .lg\\:h-fit {\n    height: fit-content !important;\n  }\n  .lg\\:h-1rem {\n    height: 1rem !important;\n  }\n  .lg\\:h-2rem {\n    height: 2rem !important;\n  }\n  .lg\\:h-3rem {\n    height: 3rem !important;\n  }\n  .lg\\:h-4rem {\n    height: 4rem !important;\n  }\n  .lg\\:h-5rem {\n    height: 5rem !important;\n  }\n  .lg\\:h-6rem {\n    height: 6rem !important;\n  }\n  .lg\\:h-7rem {\n    height: 7rem !important;\n  }\n  .lg\\:h-8rem {\n    height: 8rem !important;\n  }\n  .lg\\:h-9rem {\n    height: 9rem !important;\n  }\n  .lg\\:h-10rem {\n    height: 10rem !important;\n  }\n  .lg\\:h-11rem {\n    height: 11rem !important;\n  }\n  .lg\\:h-12rem {\n    height: 12rem !important;\n  }\n  .lg\\:h-13rem {\n    height: 13rem !important;\n  }\n  .lg\\:h-14rem {\n    height: 14rem !important;\n  }\n  .lg\\:h-15rem {\n    height: 15rem !important;\n  }\n  .lg\\:h-16rem {\n    height: 16rem !important;\n  }\n  .lg\\:h-17rem {\n    height: 17rem !important;\n  }\n  .lg\\:h-18rem {\n    height: 18rem !important;\n  }\n  .lg\\:h-19rem {\n    height: 19rem !important;\n  }\n  .lg\\:h-20rem {\n    height: 20rem !important;\n  }\n  .lg\\:h-21rem {\n    height: 21rem !important;\n  }\n  .lg\\:h-22rem {\n    height: 22rem !important;\n  }\n  .lg\\:h-23rem {\n    height: 23rem !important;\n  }\n  .lg\\:h-24rem {\n    height: 24rem !important;\n  }\n  .lg\\:h-25rem {\n    height: 25rem !important;\n  }\n  .lg\\:h-26rem {\n    height: 26rem !important;\n  }\n  .lg\\:h-27rem {\n    height: 27rem !important;\n  }\n  .lg\\:h-28rem {\n    height: 28rem !important;\n  }\n  .lg\\:h-29rem {\n    height: 29rem !important;\n  }\n  .lg\\:h-30rem {\n    height: 30rem !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:h-full {\n    height: 100% !important;\n  }\n  .xl\\:h-screen {\n    height: 100vh !important;\n  }\n  .xl\\:h-auto {\n    height: auto !important;\n  }\n  .xl\\:h-min {\n    height: min-content !important;\n  }\n  .xl\\:h-max {\n    height: max-content !important;\n  }\n  .xl\\:h-fit {\n    height: fit-content !important;\n  }\n  .xl\\:h-1rem {\n    height: 1rem !important;\n  }\n  .xl\\:h-2rem {\n    height: 2rem !important;\n  }\n  .xl\\:h-3rem {\n    height: 3rem !important;\n  }\n  .xl\\:h-4rem {\n    height: 4rem !important;\n  }\n  .xl\\:h-5rem {\n    height: 5rem !important;\n  }\n  .xl\\:h-6rem {\n    height: 6rem !important;\n  }\n  .xl\\:h-7rem {\n    height: 7rem !important;\n  }\n  .xl\\:h-8rem {\n    height: 8rem !important;\n  }\n  .xl\\:h-9rem {\n    height: 9rem !important;\n  }\n  .xl\\:h-10rem {\n    height: 10rem !important;\n  }\n  .xl\\:h-11rem {\n    height: 11rem !important;\n  }\n  .xl\\:h-12rem {\n    height: 12rem !important;\n  }\n  .xl\\:h-13rem {\n    height: 13rem !important;\n  }\n  .xl\\:h-14rem {\n    height: 14rem !important;\n  }\n  .xl\\:h-15rem {\n    height: 15rem !important;\n  }\n  .xl\\:h-16rem {\n    height: 16rem !important;\n  }\n  .xl\\:h-17rem {\n    height: 17rem !important;\n  }\n  .xl\\:h-18rem {\n    height: 18rem !important;\n  }\n  .xl\\:h-19rem {\n    height: 19rem !important;\n  }\n  .xl\\:h-20rem {\n    height: 20rem !important;\n  }\n  .xl\\:h-21rem {\n    height: 21rem !important;\n  }\n  .xl\\:h-22rem {\n    height: 22rem !important;\n  }\n  .xl\\:h-23rem {\n    height: 23rem !important;\n  }\n  .xl\\:h-24rem {\n    height: 24rem !important;\n  }\n  .xl\\:h-25rem {\n    height: 25rem !important;\n  }\n  .xl\\:h-26rem {\n    height: 26rem !important;\n  }\n  .xl\\:h-27rem {\n    height: 27rem !important;\n  }\n  .xl\\:h-28rem {\n    height: 28rem !important;\n  }\n  .xl\\:h-29rem {\n    height: 29rem !important;\n  }\n  .xl\\:h-30rem {\n    height: 30rem !important;\n  }\n}\n.min-w-0 {\n  min-width: 0px !important;\n}\n\n.min-w-full {\n  min-width: 100% !important;\n}\n\n.min-w-screen {\n  min-width: 100vw !important;\n}\n\n.min-w-min {\n  min-width: min-content !important;\n}\n\n.min-w-max {\n  min-width: max-content !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:min-w-0 {\n    min-width: 0px !important;\n  }\n  .sm\\:min-w-full {\n    min-width: 100% !important;\n  }\n  .sm\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n  .sm\\:min-w-min {\n    min-width: min-content !important;\n  }\n  .sm\\:min-w-max {\n    min-width: max-content !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:min-w-0 {\n    min-width: 0px !important;\n  }\n  .md\\:min-w-full {\n    min-width: 100% !important;\n  }\n  .md\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n  .md\\:min-w-min {\n    min-width: min-content !important;\n  }\n  .md\\:min-w-max {\n    min-width: max-content !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:min-w-0 {\n    min-width: 0px !important;\n  }\n  .lg\\:min-w-full {\n    min-width: 100% !important;\n  }\n  .lg\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n  .lg\\:min-w-min {\n    min-width: min-content !important;\n  }\n  .lg\\:min-w-max {\n    min-width: max-content !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:min-w-0 {\n    min-width: 0px !important;\n  }\n  .xl\\:min-w-full {\n    min-width: 100% !important;\n  }\n  .xl\\:min-w-screen {\n    min-width: 100vw !important;\n  }\n  .xl\\:min-w-min {\n    min-width: min-content !important;\n  }\n  .xl\\:min-w-max {\n    min-width: max-content !important;\n  }\n}\n.max-w-0 {\n  max-width: 0px !important;\n}\n\n.max-w-full {\n  max-width: 100% !important;\n}\n\n.max-w-screen {\n  max-width: 100vw !important;\n}\n\n.max-w-min {\n  max-width: min-content !important;\n}\n\n.max-w-max {\n  max-width: max-content !important;\n}\n\n.max-w-fit {\n  max-width: fit-content !important;\n}\n\n.max-w-1rem {\n  max-width: 1rem !important;\n}\n\n.max-w-2rem {\n  max-width: 2rem !important;\n}\n\n.max-w-3rem {\n  max-width: 3rem !important;\n}\n\n.max-w-4rem {\n  max-width: 4rem !important;\n}\n\n.max-w-5rem {\n  max-width: 5rem !important;\n}\n\n.max-w-6rem {\n  max-width: 6rem !important;\n}\n\n.max-w-7rem {\n  max-width: 7rem !important;\n}\n\n.max-w-8rem {\n  max-width: 8rem !important;\n}\n\n.max-w-9rem {\n  max-width: 9rem !important;\n}\n\n.max-w-10rem {\n  max-width: 10rem !important;\n}\n\n.max-w-11rem {\n  max-width: 11rem !important;\n}\n\n.max-w-12rem {\n  max-width: 12rem !important;\n}\n\n.max-w-13rem {\n  max-width: 13rem !important;\n}\n\n.max-w-14rem {\n  max-width: 14rem !important;\n}\n\n.max-w-15rem {\n  max-width: 15rem !important;\n}\n\n.max-w-16rem {\n  max-width: 16rem !important;\n}\n\n.max-w-17rem {\n  max-width: 17rem !important;\n}\n\n.max-w-18rem {\n  max-width: 18rem !important;\n}\n\n.max-w-19rem {\n  max-width: 19rem !important;\n}\n\n.max-w-20rem {\n  max-width: 20rem !important;\n}\n\n.max-w-21rem {\n  max-width: 21rem !important;\n}\n\n.max-w-22rem {\n  max-width: 22rem !important;\n}\n\n.max-w-23rem {\n  max-width: 23rem !important;\n}\n\n.max-w-24rem {\n  max-width: 24rem !important;\n}\n\n.max-w-25rem {\n  max-width: 25rem !important;\n}\n\n.max-w-26rem {\n  max-width: 26rem !important;\n}\n\n.max-w-27rem {\n  max-width: 27rem !important;\n}\n\n.max-w-28rem {\n  max-width: 28rem !important;\n}\n\n.max-w-29rem {\n  max-width: 29rem !important;\n}\n\n.max-w-30rem {\n  max-width: 30rem !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:max-w-0 {\n    max-width: 0px !important;\n  }\n  .sm\\:max-w-full {\n    max-width: 100% !important;\n  }\n  .sm\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n  .sm\\:max-w-min {\n    max-width: min-content !important;\n  }\n  .sm\\:max-w-max {\n    max-width: max-content !important;\n  }\n  .sm\\:max-w-fit {\n    max-width: fit-content !important;\n  }\n  .sm\\:max-w-1rem {\n    max-width: 1rem !important;\n  }\n  .sm\\:max-w-2rem {\n    max-width: 2rem !important;\n  }\n  .sm\\:max-w-3rem {\n    max-width: 3rem !important;\n  }\n  .sm\\:max-w-4rem {\n    max-width: 4rem !important;\n  }\n  .sm\\:max-w-5rem {\n    max-width: 5rem !important;\n  }\n  .sm\\:max-w-6rem {\n    max-width: 6rem !important;\n  }\n  .sm\\:max-w-7rem {\n    max-width: 7rem !important;\n  }\n  .sm\\:max-w-8rem {\n    max-width: 8rem !important;\n  }\n  .sm\\:max-w-9rem {\n    max-width: 9rem !important;\n  }\n  .sm\\:max-w-10rem {\n    max-width: 10rem !important;\n  }\n  .sm\\:max-w-11rem {\n    max-width: 11rem !important;\n  }\n  .sm\\:max-w-12rem {\n    max-width: 12rem !important;\n  }\n  .sm\\:max-w-13rem {\n    max-width: 13rem !important;\n  }\n  .sm\\:max-w-14rem {\n    max-width: 14rem !important;\n  }\n  .sm\\:max-w-15rem {\n    max-width: 15rem !important;\n  }\n  .sm\\:max-w-16rem {\n    max-width: 16rem !important;\n  }\n  .sm\\:max-w-17rem {\n    max-width: 17rem !important;\n  }\n  .sm\\:max-w-18rem {\n    max-width: 18rem !important;\n  }\n  .sm\\:max-w-19rem {\n    max-width: 19rem !important;\n  }\n  .sm\\:max-w-20rem {\n    max-width: 20rem !important;\n  }\n  .sm\\:max-w-21rem {\n    max-width: 21rem !important;\n  }\n  .sm\\:max-w-22rem {\n    max-width: 22rem !important;\n  }\n  .sm\\:max-w-23rem {\n    max-width: 23rem !important;\n  }\n  .sm\\:max-w-24rem {\n    max-width: 24rem !important;\n  }\n  .sm\\:max-w-25rem {\n    max-width: 25rem !important;\n  }\n  .sm\\:max-w-26rem {\n    max-width: 26rem !important;\n  }\n  .sm\\:max-w-27rem {\n    max-width: 27rem !important;\n  }\n  .sm\\:max-w-28rem {\n    max-width: 28rem !important;\n  }\n  .sm\\:max-w-29rem {\n    max-width: 29rem !important;\n  }\n  .sm\\:max-w-30rem {\n    max-width: 30rem !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:max-w-0 {\n    max-width: 0px !important;\n  }\n  .md\\:max-w-full {\n    max-width: 100% !important;\n  }\n  .md\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n  .md\\:max-w-min {\n    max-width: min-content !important;\n  }\n  .md\\:max-w-max {\n    max-width: max-content !important;\n  }\n  .md\\:max-w-fit {\n    max-width: fit-content !important;\n  }\n  .md\\:max-w-1rem {\n    max-width: 1rem !important;\n  }\n  .md\\:max-w-2rem {\n    max-width: 2rem !important;\n  }\n  .md\\:max-w-3rem {\n    max-width: 3rem !important;\n  }\n  .md\\:max-w-4rem {\n    max-width: 4rem !important;\n  }\n  .md\\:max-w-5rem {\n    max-width: 5rem !important;\n  }\n  .md\\:max-w-6rem {\n    max-width: 6rem !important;\n  }\n  .md\\:max-w-7rem {\n    max-width: 7rem !important;\n  }\n  .md\\:max-w-8rem {\n    max-width: 8rem !important;\n  }\n  .md\\:max-w-9rem {\n    max-width: 9rem !important;\n  }\n  .md\\:max-w-10rem {\n    max-width: 10rem !important;\n  }\n  .md\\:max-w-11rem {\n    max-width: 11rem !important;\n  }\n  .md\\:max-w-12rem {\n    max-width: 12rem !important;\n  }\n  .md\\:max-w-13rem {\n    max-width: 13rem !important;\n  }\n  .md\\:max-w-14rem {\n    max-width: 14rem !important;\n  }\n  .md\\:max-w-15rem {\n    max-width: 15rem !important;\n  }\n  .md\\:max-w-16rem {\n    max-width: 16rem !important;\n  }\n  .md\\:max-w-17rem {\n    max-width: 17rem !important;\n  }\n  .md\\:max-w-18rem {\n    max-width: 18rem !important;\n  }\n  .md\\:max-w-19rem {\n    max-width: 19rem !important;\n  }\n  .md\\:max-w-20rem {\n    max-width: 20rem !important;\n  }\n  .md\\:max-w-21rem {\n    max-width: 21rem !important;\n  }\n  .md\\:max-w-22rem {\n    max-width: 22rem !important;\n  }\n  .md\\:max-w-23rem {\n    max-width: 23rem !important;\n  }\n  .md\\:max-w-24rem {\n    max-width: 24rem !important;\n  }\n  .md\\:max-w-25rem {\n    max-width: 25rem !important;\n  }\n  .md\\:max-w-26rem {\n    max-width: 26rem !important;\n  }\n  .md\\:max-w-27rem {\n    max-width: 27rem !important;\n  }\n  .md\\:max-w-28rem {\n    max-width: 28rem !important;\n  }\n  .md\\:max-w-29rem {\n    max-width: 29rem !important;\n  }\n  .md\\:max-w-30rem {\n    max-width: 30rem !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:max-w-0 {\n    max-width: 0px !important;\n  }\n  .lg\\:max-w-full {\n    max-width: 100% !important;\n  }\n  .lg\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n  .lg\\:max-w-min {\n    max-width: min-content !important;\n  }\n  .lg\\:max-w-max {\n    max-width: max-content !important;\n  }\n  .lg\\:max-w-fit {\n    max-width: fit-content !important;\n  }\n  .lg\\:max-w-1rem {\n    max-width: 1rem !important;\n  }\n  .lg\\:max-w-2rem {\n    max-width: 2rem !important;\n  }\n  .lg\\:max-w-3rem {\n    max-width: 3rem !important;\n  }\n  .lg\\:max-w-4rem {\n    max-width: 4rem !important;\n  }\n  .lg\\:max-w-5rem {\n    max-width: 5rem !important;\n  }\n  .lg\\:max-w-6rem {\n    max-width: 6rem !important;\n  }\n  .lg\\:max-w-7rem {\n    max-width: 7rem !important;\n  }\n  .lg\\:max-w-8rem {\n    max-width: 8rem !important;\n  }\n  .lg\\:max-w-9rem {\n    max-width: 9rem !important;\n  }\n  .lg\\:max-w-10rem {\n    max-width: 10rem !important;\n  }\n  .lg\\:max-w-11rem {\n    max-width: 11rem !important;\n  }\n  .lg\\:max-w-12rem {\n    max-width: 12rem !important;\n  }\n  .lg\\:max-w-13rem {\n    max-width: 13rem !important;\n  }\n  .lg\\:max-w-14rem {\n    max-width: 14rem !important;\n  }\n  .lg\\:max-w-15rem {\n    max-width: 15rem !important;\n  }\n  .lg\\:max-w-16rem {\n    max-width: 16rem !important;\n  }\n  .lg\\:max-w-17rem {\n    max-width: 17rem !important;\n  }\n  .lg\\:max-w-18rem {\n    max-width: 18rem !important;\n  }\n  .lg\\:max-w-19rem {\n    max-width: 19rem !important;\n  }\n  .lg\\:max-w-20rem {\n    max-width: 20rem !important;\n  }\n  .lg\\:max-w-21rem {\n    max-width: 21rem !important;\n  }\n  .lg\\:max-w-22rem {\n    max-width: 22rem !important;\n  }\n  .lg\\:max-w-23rem {\n    max-width: 23rem !important;\n  }\n  .lg\\:max-w-24rem {\n    max-width: 24rem !important;\n  }\n  .lg\\:max-w-25rem {\n    max-width: 25rem !important;\n  }\n  .lg\\:max-w-26rem {\n    max-width: 26rem !important;\n  }\n  .lg\\:max-w-27rem {\n    max-width: 27rem !important;\n  }\n  .lg\\:max-w-28rem {\n    max-width: 28rem !important;\n  }\n  .lg\\:max-w-29rem {\n    max-width: 29rem !important;\n  }\n  .lg\\:max-w-30rem {\n    max-width: 30rem !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:max-w-0 {\n    max-width: 0px !important;\n  }\n  .xl\\:max-w-full {\n    max-width: 100% !important;\n  }\n  .xl\\:max-w-screen {\n    max-width: 100vw !important;\n  }\n  .xl\\:max-w-min {\n    max-width: min-content !important;\n  }\n  .xl\\:max-w-max {\n    max-width: max-content !important;\n  }\n  .xl\\:max-w-fit {\n    max-width: fit-content !important;\n  }\n  .xl\\:max-w-1rem {\n    max-width: 1rem !important;\n  }\n  .xl\\:max-w-2rem {\n    max-width: 2rem !important;\n  }\n  .xl\\:max-w-3rem {\n    max-width: 3rem !important;\n  }\n  .xl\\:max-w-4rem {\n    max-width: 4rem !important;\n  }\n  .xl\\:max-w-5rem {\n    max-width: 5rem !important;\n  }\n  .xl\\:max-w-6rem {\n    max-width: 6rem !important;\n  }\n  .xl\\:max-w-7rem {\n    max-width: 7rem !important;\n  }\n  .xl\\:max-w-8rem {\n    max-width: 8rem !important;\n  }\n  .xl\\:max-w-9rem {\n    max-width: 9rem !important;\n  }\n  .xl\\:max-w-10rem {\n    max-width: 10rem !important;\n  }\n  .xl\\:max-w-11rem {\n    max-width: 11rem !important;\n  }\n  .xl\\:max-w-12rem {\n    max-width: 12rem !important;\n  }\n  .xl\\:max-w-13rem {\n    max-width: 13rem !important;\n  }\n  .xl\\:max-w-14rem {\n    max-width: 14rem !important;\n  }\n  .xl\\:max-w-15rem {\n    max-width: 15rem !important;\n  }\n  .xl\\:max-w-16rem {\n    max-width: 16rem !important;\n  }\n  .xl\\:max-w-17rem {\n    max-width: 17rem !important;\n  }\n  .xl\\:max-w-18rem {\n    max-width: 18rem !important;\n  }\n  .xl\\:max-w-19rem {\n    max-width: 19rem !important;\n  }\n  .xl\\:max-w-20rem {\n    max-width: 20rem !important;\n  }\n  .xl\\:max-w-21rem {\n    max-width: 21rem !important;\n  }\n  .xl\\:max-w-22rem {\n    max-width: 22rem !important;\n  }\n  .xl\\:max-w-23rem {\n    max-width: 23rem !important;\n  }\n  .xl\\:max-w-24rem {\n    max-width: 24rem !important;\n  }\n  .xl\\:max-w-25rem {\n    max-width: 25rem !important;\n  }\n  .xl\\:max-w-26rem {\n    max-width: 26rem !important;\n  }\n  .xl\\:max-w-27rem {\n    max-width: 27rem !important;\n  }\n  .xl\\:max-w-28rem {\n    max-width: 28rem !important;\n  }\n  .xl\\:max-w-29rem {\n    max-width: 29rem !important;\n  }\n  .xl\\:max-w-30rem {\n    max-width: 30rem !important;\n  }\n}\n.min-h-0 {\n  min-height: 0px !important;\n}\n\n.min-h-full {\n  min-height: 100% !important;\n}\n\n.min-h-screen {\n  min-height: 100vh !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:min-h-0 {\n    min-height: 0px !important;\n  }\n  .sm\\:min-h-full {\n    min-height: 100% !important;\n  }\n  .sm\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:min-h-0 {\n    min-height: 0px !important;\n  }\n  .md\\:min-h-full {\n    min-height: 100% !important;\n  }\n  .md\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:min-h-0 {\n    min-height: 0px !important;\n  }\n  .lg\\:min-h-full {\n    min-height: 100% !important;\n  }\n  .lg\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:min-h-0 {\n    min-height: 0px !important;\n  }\n  .xl\\:min-h-full {\n    min-height: 100% !important;\n  }\n  .xl\\:min-h-screen {\n    min-height: 100vh !important;\n  }\n}\n.max-h-0 {\n  max-height: 0px !important;\n}\n\n.max-h-full {\n  max-height: 100% !important;\n}\n\n.max-h-screen {\n  max-height: 100vh !important;\n}\n\n.max-h-min {\n  max-height: min-content !important;\n}\n\n.max-h-max {\n  max-height: max-content !important;\n}\n\n.max-h-fit {\n  max-height: fit-content !important;\n}\n\n.max-h-1rem {\n  max-height: 1rem !important;\n}\n\n.max-h-2rem {\n  max-height: 2rem !important;\n}\n\n.max-h-3rem {\n  max-height: 3rem !important;\n}\n\n.max-h-4rem {\n  max-height: 4rem !important;\n}\n\n.max-h-5rem {\n  max-height: 5rem !important;\n}\n\n.max-h-6rem {\n  max-height: 6rem !important;\n}\n\n.max-h-7rem {\n  max-height: 7rem !important;\n}\n\n.max-h-8rem {\n  max-height: 8rem !important;\n}\n\n.max-h-9rem {\n  max-height: 9rem !important;\n}\n\n.max-h-10rem {\n  max-height: 10rem !important;\n}\n\n.max-h-11rem {\n  max-height: 11rem !important;\n}\n\n.max-h-12rem {\n  max-height: 12rem !important;\n}\n\n.max-h-13rem {\n  max-height: 13rem !important;\n}\n\n.max-h-14rem {\n  max-height: 14rem !important;\n}\n\n.max-h-15rem {\n  max-height: 15rem !important;\n}\n\n.max-h-16rem {\n  max-height: 16rem !important;\n}\n\n.max-h-17rem {\n  max-height: 17rem !important;\n}\n\n.max-h-18rem {\n  max-height: 18rem !important;\n}\n\n.max-h-19rem {\n  max-height: 19rem !important;\n}\n\n.max-h-20rem {\n  max-height: 20rem !important;\n}\n\n.max-h-21rem {\n  max-height: 21rem !important;\n}\n\n.max-h-22rem {\n  max-height: 22rem !important;\n}\n\n.max-h-23rem {\n  max-height: 23rem !important;\n}\n\n.max-h-24rem {\n  max-height: 24rem !important;\n}\n\n.max-h-25rem {\n  max-height: 25rem !important;\n}\n\n.max-h-26rem {\n  max-height: 26rem !important;\n}\n\n.max-h-27rem {\n  max-height: 27rem !important;\n}\n\n.max-h-28rem {\n  max-height: 28rem !important;\n}\n\n.max-h-29rem {\n  max-height: 29rem !important;\n}\n\n.max-h-30rem {\n  max-height: 30rem !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:max-h-0 {\n    max-height: 0px !important;\n  }\n  .sm\\:max-h-full {\n    max-height: 100% !important;\n  }\n  .sm\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n  .sm\\:max-h-min {\n    max-height: min-content !important;\n  }\n  .sm\\:max-h-max {\n    max-height: max-content !important;\n  }\n  .sm\\:max-h-fit {\n    max-height: fit-content !important;\n  }\n  .sm\\:max-h-1rem {\n    max-height: 1rem !important;\n  }\n  .sm\\:max-h-2rem {\n    max-height: 2rem !important;\n  }\n  .sm\\:max-h-3rem {\n    max-height: 3rem !important;\n  }\n  .sm\\:max-h-4rem {\n    max-height: 4rem !important;\n  }\n  .sm\\:max-h-5rem {\n    max-height: 5rem !important;\n  }\n  .sm\\:max-h-6rem {\n    max-height: 6rem !important;\n  }\n  .sm\\:max-h-7rem {\n    max-height: 7rem !important;\n  }\n  .sm\\:max-h-8rem {\n    max-height: 8rem !important;\n  }\n  .sm\\:max-h-9rem {\n    max-height: 9rem !important;\n  }\n  .sm\\:max-h-10rem {\n    max-height: 10rem !important;\n  }\n  .sm\\:max-h-11rem {\n    max-height: 11rem !important;\n  }\n  .sm\\:max-h-12rem {\n    max-height: 12rem !important;\n  }\n  .sm\\:max-h-13rem {\n    max-height: 13rem !important;\n  }\n  .sm\\:max-h-14rem {\n    max-height: 14rem !important;\n  }\n  .sm\\:max-h-15rem {\n    max-height: 15rem !important;\n  }\n  .sm\\:max-h-16rem {\n    max-height: 16rem !important;\n  }\n  .sm\\:max-h-17rem {\n    max-height: 17rem !important;\n  }\n  .sm\\:max-h-18rem {\n    max-height: 18rem !important;\n  }\n  .sm\\:max-h-19rem {\n    max-height: 19rem !important;\n  }\n  .sm\\:max-h-20rem {\n    max-height: 20rem !important;\n  }\n  .sm\\:max-h-21rem {\n    max-height: 21rem !important;\n  }\n  .sm\\:max-h-22rem {\n    max-height: 22rem !important;\n  }\n  .sm\\:max-h-23rem {\n    max-height: 23rem !important;\n  }\n  .sm\\:max-h-24rem {\n    max-height: 24rem !important;\n  }\n  .sm\\:max-h-25rem {\n    max-height: 25rem !important;\n  }\n  .sm\\:max-h-26rem {\n    max-height: 26rem !important;\n  }\n  .sm\\:max-h-27rem {\n    max-height: 27rem !important;\n  }\n  .sm\\:max-h-28rem {\n    max-height: 28rem !important;\n  }\n  .sm\\:max-h-29rem {\n    max-height: 29rem !important;\n  }\n  .sm\\:max-h-30rem {\n    max-height: 30rem !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:max-h-0 {\n    max-height: 0px !important;\n  }\n  .md\\:max-h-full {\n    max-height: 100% !important;\n  }\n  .md\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n  .md\\:max-h-min {\n    max-height: min-content !important;\n  }\n  .md\\:max-h-max {\n    max-height: max-content !important;\n  }\n  .md\\:max-h-fit {\n    max-height: fit-content !important;\n  }\n  .md\\:max-h-1rem {\n    max-height: 1rem !important;\n  }\n  .md\\:max-h-2rem {\n    max-height: 2rem !important;\n  }\n  .md\\:max-h-3rem {\n    max-height: 3rem !important;\n  }\n  .md\\:max-h-4rem {\n    max-height: 4rem !important;\n  }\n  .md\\:max-h-5rem {\n    max-height: 5rem !important;\n  }\n  .md\\:max-h-6rem {\n    max-height: 6rem !important;\n  }\n  .md\\:max-h-7rem {\n    max-height: 7rem !important;\n  }\n  .md\\:max-h-8rem {\n    max-height: 8rem !important;\n  }\n  .md\\:max-h-9rem {\n    max-height: 9rem !important;\n  }\n  .md\\:max-h-10rem {\n    max-height: 10rem !important;\n  }\n  .md\\:max-h-11rem {\n    max-height: 11rem !important;\n  }\n  .md\\:max-h-12rem {\n    max-height: 12rem !important;\n  }\n  .md\\:max-h-13rem {\n    max-height: 13rem !important;\n  }\n  .md\\:max-h-14rem {\n    max-height: 14rem !important;\n  }\n  .md\\:max-h-15rem {\n    max-height: 15rem !important;\n  }\n  .md\\:max-h-16rem {\n    max-height: 16rem !important;\n  }\n  .md\\:max-h-17rem {\n    max-height: 17rem !important;\n  }\n  .md\\:max-h-18rem {\n    max-height: 18rem !important;\n  }\n  .md\\:max-h-19rem {\n    max-height: 19rem !important;\n  }\n  .md\\:max-h-20rem {\n    max-height: 20rem !important;\n  }\n  .md\\:max-h-21rem {\n    max-height: 21rem !important;\n  }\n  .md\\:max-h-22rem {\n    max-height: 22rem !important;\n  }\n  .md\\:max-h-23rem {\n    max-height: 23rem !important;\n  }\n  .md\\:max-h-24rem {\n    max-height: 24rem !important;\n  }\n  .md\\:max-h-25rem {\n    max-height: 25rem !important;\n  }\n  .md\\:max-h-26rem {\n    max-height: 26rem !important;\n  }\n  .md\\:max-h-27rem {\n    max-height: 27rem !important;\n  }\n  .md\\:max-h-28rem {\n    max-height: 28rem !important;\n  }\n  .md\\:max-h-29rem {\n    max-height: 29rem !important;\n  }\n  .md\\:max-h-30rem {\n    max-height: 30rem !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:max-h-0 {\n    max-height: 0px !important;\n  }\n  .lg\\:max-h-full {\n    max-height: 100% !important;\n  }\n  .lg\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n  .lg\\:max-h-min {\n    max-height: min-content !important;\n  }\n  .lg\\:max-h-max {\n    max-height: max-content !important;\n  }\n  .lg\\:max-h-fit {\n    max-height: fit-content !important;\n  }\n  .lg\\:max-h-1rem {\n    max-height: 1rem !important;\n  }\n  .lg\\:max-h-2rem {\n    max-height: 2rem !important;\n  }\n  .lg\\:max-h-3rem {\n    max-height: 3rem !important;\n  }\n  .lg\\:max-h-4rem {\n    max-height: 4rem !important;\n  }\n  .lg\\:max-h-5rem {\n    max-height: 5rem !important;\n  }\n  .lg\\:max-h-6rem {\n    max-height: 6rem !important;\n  }\n  .lg\\:max-h-7rem {\n    max-height: 7rem !important;\n  }\n  .lg\\:max-h-8rem {\n    max-height: 8rem !important;\n  }\n  .lg\\:max-h-9rem {\n    max-height: 9rem !important;\n  }\n  .lg\\:max-h-10rem {\n    max-height: 10rem !important;\n  }\n  .lg\\:max-h-11rem {\n    max-height: 11rem !important;\n  }\n  .lg\\:max-h-12rem {\n    max-height: 12rem !important;\n  }\n  .lg\\:max-h-13rem {\n    max-height: 13rem !important;\n  }\n  .lg\\:max-h-14rem {\n    max-height: 14rem !important;\n  }\n  .lg\\:max-h-15rem {\n    max-height: 15rem !important;\n  }\n  .lg\\:max-h-16rem {\n    max-height: 16rem !important;\n  }\n  .lg\\:max-h-17rem {\n    max-height: 17rem !important;\n  }\n  .lg\\:max-h-18rem {\n    max-height: 18rem !important;\n  }\n  .lg\\:max-h-19rem {\n    max-height: 19rem !important;\n  }\n  .lg\\:max-h-20rem {\n    max-height: 20rem !important;\n  }\n  .lg\\:max-h-21rem {\n    max-height: 21rem !important;\n  }\n  .lg\\:max-h-22rem {\n    max-height: 22rem !important;\n  }\n  .lg\\:max-h-23rem {\n    max-height: 23rem !important;\n  }\n  .lg\\:max-h-24rem {\n    max-height: 24rem !important;\n  }\n  .lg\\:max-h-25rem {\n    max-height: 25rem !important;\n  }\n  .lg\\:max-h-26rem {\n    max-height: 26rem !important;\n  }\n  .lg\\:max-h-27rem {\n    max-height: 27rem !important;\n  }\n  .lg\\:max-h-28rem {\n    max-height: 28rem !important;\n  }\n  .lg\\:max-h-29rem {\n    max-height: 29rem !important;\n  }\n  .lg\\:max-h-30rem {\n    max-height: 30rem !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:max-h-0 {\n    max-height: 0px !important;\n  }\n  .xl\\:max-h-full {\n    max-height: 100% !important;\n  }\n  .xl\\:max-h-screen {\n    max-height: 100vh !important;\n  }\n  .xl\\:max-h-min {\n    max-height: min-content !important;\n  }\n  .xl\\:max-h-max {\n    max-height: max-content !important;\n  }\n  .xl\\:max-h-fit {\n    max-height: fit-content !important;\n  }\n  .xl\\:max-h-1rem {\n    max-height: 1rem !important;\n  }\n  .xl\\:max-h-2rem {\n    max-height: 2rem !important;\n  }\n  .xl\\:max-h-3rem {\n    max-height: 3rem !important;\n  }\n  .xl\\:max-h-4rem {\n    max-height: 4rem !important;\n  }\n  .xl\\:max-h-5rem {\n    max-height: 5rem !important;\n  }\n  .xl\\:max-h-6rem {\n    max-height: 6rem !important;\n  }\n  .xl\\:max-h-7rem {\n    max-height: 7rem !important;\n  }\n  .xl\\:max-h-8rem {\n    max-height: 8rem !important;\n  }\n  .xl\\:max-h-9rem {\n    max-height: 9rem !important;\n  }\n  .xl\\:max-h-10rem {\n    max-height: 10rem !important;\n  }\n  .xl\\:max-h-11rem {\n    max-height: 11rem !important;\n  }\n  .xl\\:max-h-12rem {\n    max-height: 12rem !important;\n  }\n  .xl\\:max-h-13rem {\n    max-height: 13rem !important;\n  }\n  .xl\\:max-h-14rem {\n    max-height: 14rem !important;\n  }\n  .xl\\:max-h-15rem {\n    max-height: 15rem !important;\n  }\n  .xl\\:max-h-16rem {\n    max-height: 16rem !important;\n  }\n  .xl\\:max-h-17rem {\n    max-height: 17rem !important;\n  }\n  .xl\\:max-h-18rem {\n    max-height: 18rem !important;\n  }\n  .xl\\:max-h-19rem {\n    max-height: 19rem !important;\n  }\n  .xl\\:max-h-20rem {\n    max-height: 20rem !important;\n  }\n  .xl\\:max-h-21rem {\n    max-height: 21rem !important;\n  }\n  .xl\\:max-h-22rem {\n    max-height: 22rem !important;\n  }\n  .xl\\:max-h-23rem {\n    max-height: 23rem !important;\n  }\n  .xl\\:max-h-24rem {\n    max-height: 24rem !important;\n  }\n  .xl\\:max-h-25rem {\n    max-height: 25rem !important;\n  }\n  .xl\\:max-h-26rem {\n    max-height: 26rem !important;\n  }\n  .xl\\:max-h-27rem {\n    max-height: 27rem !important;\n  }\n  .xl\\:max-h-28rem {\n    max-height: 28rem !important;\n  }\n  .xl\\:max-h-29rem {\n    max-height: 29rem !important;\n  }\n  .xl\\:max-h-30rem {\n    max-height: 30rem !important;\n  }\n}\n.static {\n  position: static !important;\n}\n\n.fixed {\n  position: fixed !important;\n}\n\n.absolute {\n  position: absolute !important;\n}\n\n.relative {\n  position: relative !important;\n}\n\n.sticky {\n  position: sticky !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:static {\n    position: static !important;\n  }\n  .sm\\:fixed {\n    position: fixed !important;\n  }\n  .sm\\:absolute {\n    position: absolute !important;\n  }\n  .sm\\:relative {\n    position: relative !important;\n  }\n  .sm\\:sticky {\n    position: sticky !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:static {\n    position: static !important;\n  }\n  .md\\:fixed {\n    position: fixed !important;\n  }\n  .md\\:absolute {\n    position: absolute !important;\n  }\n  .md\\:relative {\n    position: relative !important;\n  }\n  .md\\:sticky {\n    position: sticky !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:static {\n    position: static !important;\n  }\n  .lg\\:fixed {\n    position: fixed !important;\n  }\n  .lg\\:absolute {\n    position: absolute !important;\n  }\n  .lg\\:relative {\n    position: relative !important;\n  }\n  .lg\\:sticky {\n    position: sticky !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:static {\n    position: static !important;\n  }\n  .xl\\:fixed {\n    position: fixed !important;\n  }\n  .xl\\:absolute {\n    position: absolute !important;\n  }\n  .xl\\:relative {\n    position: relative !important;\n  }\n  .xl\\:sticky {\n    position: sticky !important;\n  }\n}\n.top-auto {\n  top: auto !important;\n}\n\n.top-0 {\n  top: 0px !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:top-auto {\n    top: auto !important;\n  }\n  .sm\\:top-0 {\n    top: 0px !important;\n  }\n  .sm\\:top-50 {\n    top: 50% !important;\n  }\n  .sm\\:top-100 {\n    top: 100% !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:top-auto {\n    top: auto !important;\n  }\n  .md\\:top-0 {\n    top: 0px !important;\n  }\n  .md\\:top-50 {\n    top: 50% !important;\n  }\n  .md\\:top-100 {\n    top: 100% !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:top-auto {\n    top: auto !important;\n  }\n  .lg\\:top-0 {\n    top: 0px !important;\n  }\n  .lg\\:top-50 {\n    top: 50% !important;\n  }\n  .lg\\:top-100 {\n    top: 100% !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:top-auto {\n    top: auto !important;\n  }\n  .xl\\:top-0 {\n    top: 0px !important;\n  }\n  .xl\\:top-50 {\n    top: 50% !important;\n  }\n  .xl\\:top-100 {\n    top: 100% !important;\n  }\n}\n.left-auto {\n  left: auto !important;\n}\n\n.left-0 {\n  left: 0px !important;\n}\n\n.left-50 {\n  left: 50% !important;\n}\n\n.left-100 {\n  left: 100% !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:left-auto {\n    left: auto !important;\n  }\n  .sm\\:left-0 {\n    left: 0px !important;\n  }\n  .sm\\:left-50 {\n    left: 50% !important;\n  }\n  .sm\\:left-100 {\n    left: 100% !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:left-auto {\n    left: auto !important;\n  }\n  .md\\:left-0 {\n    left: 0px !important;\n  }\n  .md\\:left-50 {\n    left: 50% !important;\n  }\n  .md\\:left-100 {\n    left: 100% !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:left-auto {\n    left: auto !important;\n  }\n  .lg\\:left-0 {\n    left: 0px !important;\n  }\n  .lg\\:left-50 {\n    left: 50% !important;\n  }\n  .lg\\:left-100 {\n    left: 100% !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:left-auto {\n    left: auto !important;\n  }\n  .xl\\:left-0 {\n    left: 0px !important;\n  }\n  .xl\\:left-50 {\n    left: 50% !important;\n  }\n  .xl\\:left-100 {\n    left: 100% !important;\n  }\n}\n.right-auto {\n  right: auto !important;\n}\n\n.right-0 {\n  right: 0px !important;\n}\n\n.right-50 {\n  right: 50% !important;\n}\n\n.right-100 {\n  right: 100% !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:right-auto {\n    right: auto !important;\n  }\n  .sm\\:right-0 {\n    right: 0px !important;\n  }\n  .sm\\:right-50 {\n    right: 50% !important;\n  }\n  .sm\\:right-100 {\n    right: 100% !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:right-auto {\n    right: auto !important;\n  }\n  .md\\:right-0 {\n    right: 0px !important;\n  }\n  .md\\:right-50 {\n    right: 50% !important;\n  }\n  .md\\:right-100 {\n    right: 100% !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:right-auto {\n    right: auto !important;\n  }\n  .lg\\:right-0 {\n    right: 0px !important;\n  }\n  .lg\\:right-50 {\n    right: 50% !important;\n  }\n  .lg\\:right-100 {\n    right: 100% !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:right-auto {\n    right: auto !important;\n  }\n  .xl\\:right-0 {\n    right: 0px !important;\n  }\n  .xl\\:right-50 {\n    right: 50% !important;\n  }\n  .xl\\:right-100 {\n    right: 100% !important;\n  }\n}\n.bottom-auto {\n  bottom: auto !important;\n}\n\n.bottom-0 {\n  bottom: 0px !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:bottom-auto {\n    bottom: auto !important;\n  }\n  .sm\\:bottom-0 {\n    bottom: 0px !important;\n  }\n  .sm\\:bottom-50 {\n    bottom: 50% !important;\n  }\n  .sm\\:bottom-100 {\n    bottom: 100% !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:bottom-auto {\n    bottom: auto !important;\n  }\n  .md\\:bottom-0 {\n    bottom: 0px !important;\n  }\n  .md\\:bottom-50 {\n    bottom: 50% !important;\n  }\n  .md\\:bottom-100 {\n    bottom: 100% !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:bottom-auto {\n    bottom: auto !important;\n  }\n  .lg\\:bottom-0 {\n    bottom: 0px !important;\n  }\n  .lg\\:bottom-50 {\n    bottom: 50% !important;\n  }\n  .lg\\:bottom-100 {\n    bottom: 100% !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:bottom-auto {\n    bottom: auto !important;\n  }\n  .xl\\:bottom-0 {\n    bottom: 0px !important;\n  }\n  .xl\\:bottom-50 {\n    bottom: 50% !important;\n  }\n  .xl\\:bottom-100 {\n    bottom: 100% !important;\n  }\n}\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:overflow-auto {\n    overflow: auto !important;\n  }\n  .sm\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n  .sm\\:overflow-visible {\n    overflow: visible !important;\n  }\n  .sm\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:overflow-auto {\n    overflow: auto !important;\n  }\n  .md\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n  .md\\:overflow-visible {\n    overflow: visible !important;\n  }\n  .md\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:overflow-auto {\n    overflow: auto !important;\n  }\n  .lg\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n  .lg\\:overflow-visible {\n    overflow: visible !important;\n  }\n  .lg\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:overflow-auto {\n    overflow: auto !important;\n  }\n  .xl\\:overflow-hidden {\n    overflow: hidden !important;\n  }\n  .xl\\:overflow-visible {\n    overflow: visible !important;\n  }\n  .xl\\:overflow-scroll {\n    overflow: scroll !important;\n  }\n}\n.overflow-x-auto {\n  overflow-x: auto !important;\n}\n\n.overflow-x-hidden {\n  overflow-x: hidden !important;\n}\n\n.overflow-x-visible {\n  overflow-x: visible !important;\n}\n\n.overflow-x-scroll {\n  overflow-x: scroll !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n  .sm\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n  .sm\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n  .sm\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n  .md\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n  .md\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n  .md\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n  .lg\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n  .lg\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n  .lg\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:overflow-x-auto {\n    overflow-x: auto !important;\n  }\n  .xl\\:overflow-x-hidden {\n    overflow-x: hidden !important;\n  }\n  .xl\\:overflow-x-visible {\n    overflow-x: visible !important;\n  }\n  .xl\\:overflow-x-scroll {\n    overflow-x: scroll !important;\n  }\n}\n.overflow-y-auto {\n  overflow-y: auto !important;\n}\n\n.overflow-y-hidden {\n  overflow-y: hidden !important;\n}\n\n.overflow-y-visible {\n  overflow-y: visible !important;\n}\n\n.overflow-y-scroll {\n  overflow-y: scroll !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n  .sm\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n  .sm\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n  .sm\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n  .md\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n  .md\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n  .md\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n  .lg\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n  .lg\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n  .lg\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:overflow-y-auto {\n    overflow-y: auto !important;\n  }\n  .xl\\:overflow-y-hidden {\n    overflow-y: hidden !important;\n  }\n  .xl\\:overflow-y-visible {\n    overflow-y: visible !important;\n  }\n  .xl\\:overflow-y-scroll {\n    overflow-y: scroll !important;\n  }\n}\n.z-auto {\n  z-index: auto !important;\n}\n\n.z-0 {\n  z-index: 0 !important;\n}\n\n.z-1 {\n  z-index: 1 !important;\n}\n\n.z-2 {\n  z-index: 2 !important;\n}\n\n.z-3 {\n  z-index: 3 !important;\n}\n\n.z-4 {\n  z-index: 4 !important;\n}\n\n.z-5 {\n  z-index: 5 !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:z-auto {\n    z-index: auto !important;\n  }\n  .sm\\:z-0 {\n    z-index: 0 !important;\n  }\n  .sm\\:z-1 {\n    z-index: 1 !important;\n  }\n  .sm\\:z-2 {\n    z-index: 2 !important;\n  }\n  .sm\\:z-3 {\n    z-index: 3 !important;\n  }\n  .sm\\:z-4 {\n    z-index: 4 !important;\n  }\n  .sm\\:z-5 {\n    z-index: 5 !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:z-auto {\n    z-index: auto !important;\n  }\n  .md\\:z-0 {\n    z-index: 0 !important;\n  }\n  .md\\:z-1 {\n    z-index: 1 !important;\n  }\n  .md\\:z-2 {\n    z-index: 2 !important;\n  }\n  .md\\:z-3 {\n    z-index: 3 !important;\n  }\n  .md\\:z-4 {\n    z-index: 4 !important;\n  }\n  .md\\:z-5 {\n    z-index: 5 !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:z-auto {\n    z-index: auto !important;\n  }\n  .lg\\:z-0 {\n    z-index: 0 !important;\n  }\n  .lg\\:z-1 {\n    z-index: 1 !important;\n  }\n  .lg\\:z-2 {\n    z-index: 2 !important;\n  }\n  .lg\\:z-3 {\n    z-index: 3 !important;\n  }\n  .lg\\:z-4 {\n    z-index: 4 !important;\n  }\n  .lg\\:z-5 {\n    z-index: 5 !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:z-auto {\n    z-index: auto !important;\n  }\n  .xl\\:z-0 {\n    z-index: 0 !important;\n  }\n  .xl\\:z-1 {\n    z-index: 1 !important;\n  }\n  .xl\\:z-2 {\n    z-index: 2 !important;\n  }\n  .xl\\:z-3 {\n    z-index: 3 !important;\n  }\n  .xl\\:z-4 {\n    z-index: 4 !important;\n  }\n  .xl\\:z-5 {\n    z-index: 5 !important;\n  }\n}\n.bg-repeat {\n  background-repeat: repeat !important;\n}\n\n.bg-no-repeat {\n  background-repeat: no-repeat !important;\n}\n\n.bg-repeat-x {\n  background-repeat: repeat-x !important;\n}\n\n.bg-repeat-y {\n  background-repeat: repeat-y !important;\n}\n\n.bg-repeat-round {\n  background-repeat: round !important;\n}\n\n.bg-repeat-space {\n  background-repeat: space !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n  .sm\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n  .sm\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n  .sm\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n  .sm\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n  .sm\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n  .md\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n  .md\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n  .md\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n  .md\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n  .md\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n  .lg\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n  .lg\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n  .lg\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n  .lg\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n  .lg\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:bg-repeat {\n    background-repeat: repeat !important;\n  }\n  .xl\\:bg-no-repeat {\n    background-repeat: no-repeat !important;\n  }\n  .xl\\:bg-repeat-x {\n    background-repeat: repeat-x !important;\n  }\n  .xl\\:bg-repeat-y {\n    background-repeat: repeat-y !important;\n  }\n  .xl\\:bg-repeat-round {\n    background-repeat: round !important;\n  }\n  .xl\\:bg-repeat-space {\n    background-repeat: space !important;\n  }\n}\n.bg-auto {\n  background-size: auto !important;\n}\n\n.bg-cover {\n  background-size: cover !important;\n}\n\n.bg-contain {\n  background-size: contain !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:bg-auto {\n    background-size: auto !important;\n  }\n  .sm\\:bg-cover {\n    background-size: cover !important;\n  }\n  .sm\\:bg-contain {\n    background-size: contain !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:bg-auto {\n    background-size: auto !important;\n  }\n  .md\\:bg-cover {\n    background-size: cover !important;\n  }\n  .md\\:bg-contain {\n    background-size: contain !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:bg-auto {\n    background-size: auto !important;\n  }\n  .lg\\:bg-cover {\n    background-size: cover !important;\n  }\n  .lg\\:bg-contain {\n    background-size: contain !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:bg-auto {\n    background-size: auto !important;\n  }\n  .xl\\:bg-cover {\n    background-size: cover !important;\n  }\n  .xl\\:bg-contain {\n    background-size: contain !important;\n  }\n}\n.bg-bottom {\n  background-position: bottom !important;\n}\n\n.bg-center {\n  background-position: center !important;\n}\n\n.bg-left {\n  background-position: left !important;\n}\n\n.bg-left-bottom {\n  background-position: left bottom !important;\n}\n\n.bg-left-top {\n  background-position: left top !important;\n}\n\n.bg-right {\n  background-position: right !important;\n}\n\n.bg-right-bottom {\n  background-position: right bottom !important;\n}\n\n.bg-right-top {\n  background-position: right top !important;\n}\n\n.bg-top {\n  background-position: top !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:bg-bottom {\n    background-position: bottom !important;\n  }\n  .sm\\:bg-center {\n    background-position: center !important;\n  }\n  .sm\\:bg-left {\n    background-position: left !important;\n  }\n  .sm\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n  .sm\\:bg-left-top {\n    background-position: left top !important;\n  }\n  .sm\\:bg-right {\n    background-position: right !important;\n  }\n  .sm\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n  .sm\\:bg-right-top {\n    background-position: right top !important;\n  }\n  .sm\\:bg-top {\n    background-position: top !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:bg-bottom {\n    background-position: bottom !important;\n  }\n  .md\\:bg-center {\n    background-position: center !important;\n  }\n  .md\\:bg-left {\n    background-position: left !important;\n  }\n  .md\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n  .md\\:bg-left-top {\n    background-position: left top !important;\n  }\n  .md\\:bg-right {\n    background-position: right !important;\n  }\n  .md\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n  .md\\:bg-right-top {\n    background-position: right top !important;\n  }\n  .md\\:bg-top {\n    background-position: top !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:bg-bottom {\n    background-position: bottom !important;\n  }\n  .lg\\:bg-center {\n    background-position: center !important;\n  }\n  .lg\\:bg-left {\n    background-position: left !important;\n  }\n  .lg\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n  .lg\\:bg-left-top {\n    background-position: left top !important;\n  }\n  .lg\\:bg-right {\n    background-position: right !important;\n  }\n  .lg\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n  .lg\\:bg-right-top {\n    background-position: right top !important;\n  }\n  .lg\\:bg-top {\n    background-position: top !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:bg-bottom {\n    background-position: bottom !important;\n  }\n  .xl\\:bg-center {\n    background-position: center !important;\n  }\n  .xl\\:bg-left {\n    background-position: left !important;\n  }\n  .xl\\:bg-left-bottom {\n    background-position: left bottom !important;\n  }\n  .xl\\:bg-left-top {\n    background-position: left top !important;\n  }\n  .xl\\:bg-right {\n    background-position: right !important;\n  }\n  .xl\\:bg-right-bottom {\n    background-position: right bottom !important;\n  }\n  .xl\\:bg-right-top {\n    background-position: right top !important;\n  }\n  .xl\\:bg-top {\n    background-position: top !important;\n  }\n}\n.select-none {\n  user-select: none !important;\n}\n\n.select-text {\n  user-select: text !important;\n}\n\n.select-all {\n  user-select: all !important;\n}\n\n.select-auto {\n  user-select: auto !important;\n}\n\n.list-none {\n  list-style: none !important;\n}\n\n.list-disc {\n  list-style: disc !important;\n}\n\n.list-decimal {\n  list-style: decimal !important;\n}\n\n.appearance-none {\n  appearance: none !important;\n}\n\n.outline-none {\n  outline: none !important;\n}\n\n.pointer-events-none {\n  pointer-events: none !important;\n}\n\n.pointer-events-auto {\n  pointer-events: auto !important;\n}\n\n.cursor-auto {\n  cursor: auto !important;\n}\n\n.cursor-pointer {\n  cursor: pointer !important;\n}\n\n.cursor-wait {\n  cursor: wait !important;\n}\n\n.cursor-move {\n  cursor: move !important;\n}\n\n.select-none {\n  user-select: none !important;\n}\n\n.select-text {\n  user-select: text !important;\n}\n\n.select-all {\n  user-select: all !important;\n}\n\n.select-auto {\n  user-select: auto !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-10 {\n  opacity: .1 !important;\n}\n\n.opacity-20 {\n  opacity: .2 !important;\n}\n\n.opacity-30 {\n  opacity: .3 !important;\n}\n\n.opacity-40 {\n  opacity: .4 !important;\n}\n\n.opacity-50 {\n  opacity: .5 !important;\n}\n\n.opacity-60 {\n  opacity: .6 !important;\n}\n\n.opacity-70 {\n  opacity: .7 !important;\n}\n\n.opacity-80 {\n  opacity: .8 !important;\n}\n\n.opacity-90 {\n  opacity: .9 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.reset {\n  all: unset;\n}\n\n.transition-none {\n  transition-property: none !important;\n}\n\n.transition-all {\n  transition-property: all !important;\n}\n\n.transition-colors {\n  transition-property: background-color,border-color,color !important;\n}\n\n.transition-transform {\n  transition-property: transform !important;\n}\n\n.transition-duration-100 {\n  transition-duration: 100ms !important;\n}\n\n.transition-duration-150 {\n  transition-duration: 150ms !important;\n}\n\n.transition-duration-200 {\n  transition-duration: 200ms !important;\n}\n\n.transition-duration-300 {\n  transition-duration: 300ms !important;\n}\n\n.transition-duration-400 {\n  transition-duration: 400ms !important;\n}\n\n.transition-duration-500 {\n  transition-duration: 500ms !important;\n}\n\n.transition-duration-1000 {\n  transition-duration: 1000ms !important;\n}\n\n.transition-duration-2000 {\n  transition-duration: 2000ms !important;\n}\n\n.transition-duration-3000 {\n  transition-duration: 3000ms !important;\n}\n\n.transition-linear {\n  transition-timing-function: linear !important;\n}\n\n.transition-ease-in {\n  transition-timing-function: cubic-bezier(0.4, 0, 1, 1) !important;\n}\n\n.transition-ease-out {\n  transition-timing-function: cubic-bezier(0, 0, 0.2, 1) !important;\n}\n\n.transition-ease-in-out {\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;\n}\n\n.transition-delay-100 {\n  transition-delay: 100ms !important;\n}\n\n.transition-delay-150 {\n  transition-delay: 150ms !important;\n}\n\n.transition-delay-200 {\n  transition-delay: 200ms !important;\n}\n\n.transition-delay-300 {\n  transition-delay: 300ms !important;\n}\n\n.transition-delay-400 {\n  transition-delay: 400ms !important;\n}\n\n.transition-delay-500 {\n  transition-delay: 500ms !important;\n}\n\n.transition-delay-1000 {\n  transition-delay: 1000ms !important;\n}\n\n.translate-x-0 {\n  transform: translateX(0%) !important;\n}\n\n.translate-x-100 {\n  transform: translateX(100%) !important;\n}\n\n.-translate-x-100 {\n  transform: translateX(-100%) !important;\n}\n\n.translate-y-0 {\n  transform: translateY(0%) !important;\n}\n\n.translate-y-100 {\n  transform: translateY(100%) !important;\n}\n\n.-translate-y-100 {\n  transform: translateY(-100%) !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:translate-x-0 {\n    transform: translateX(0%) !important;\n  }\n  .sm\\:translate-x-100 {\n    transform: translateX(100%) !important;\n  }\n  .sm\\:-translate-x-100 {\n    transform: translateX(-100%) !important;\n  }\n  .sm\\:translate-y-0 {\n    transform: translateY(0%) !important;\n  }\n  .sm\\:translate-y-100 {\n    transform: translateY(100%) !important;\n  }\n  .sm\\:-translate-y-100 {\n    transform: translateY(-100%) !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:translate-x-0 {\n    transform: translateX(0%) !important;\n  }\n  .md\\:translate-x-100 {\n    transform: translateX(100%) !important;\n  }\n  .md\\:-translate-x-100 {\n    transform: translateX(-100%) !important;\n  }\n  .md\\:translate-y-0 {\n    transform: translateY(0%) !important;\n  }\n  .md\\:translate-y-100 {\n    transform: translateY(100%) !important;\n  }\n  .md\\:-translate-y-100 {\n    transform: translateY(-100%) !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:translate-x-0 {\n    transform: translateX(0%) !important;\n  }\n  .lg\\:translate-x-100 {\n    transform: translateX(100%) !important;\n  }\n  .lg\\:-translate-x-100 {\n    transform: translateX(-100%) !important;\n  }\n  .lg\\:translate-y-0 {\n    transform: translateY(0%) !important;\n  }\n  .lg\\:translate-y-100 {\n    transform: translateY(100%) !important;\n  }\n  .lg\\:-translate-y-100 {\n    transform: translateY(-100%) !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:translate-x-0 {\n    transform: translateX(0%) !important;\n  }\n  .xl\\:translate-x-100 {\n    transform: translateX(100%) !important;\n  }\n  .xl\\:-translate-x-100 {\n    transform: translateX(-100%) !important;\n  }\n  .xl\\:translate-y-0 {\n    transform: translateY(0%) !important;\n  }\n  .xl\\:translate-y-100 {\n    transform: translateY(100%) !important;\n  }\n  .xl\\:-translate-y-100 {\n    transform: translateY(-100%) !important;\n  }\n}\n.rotate-45 {\n  transform: rotate(45deg) !important;\n}\n\n.-rotate-45 {\n  transform: rotate(-45deg) !important;\n}\n\n.rotate-90 {\n  transform: rotate(90deg) !important;\n}\n\n.-rotate-90 {\n  transform: rotate(-90deg) !important;\n}\n\n.rotate-180 {\n  transform: rotate(180deg) !important;\n}\n\n.-rotate-180 {\n  transform: rotate(-180deg) !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:rotate-45 {\n    transform: rotate(45deg) !important;\n  }\n  .sm\\:-rotate-45 {\n    transform: rotate(-45deg) !important;\n  }\n  .sm\\:rotate-90 {\n    transform: rotate(90deg) !important;\n  }\n  .sm\\:-rotate-90 {\n    transform: rotate(-90deg) !important;\n  }\n  .sm\\:rotate-180 {\n    transform: rotate(180deg) !important;\n  }\n  .sm\\:-rotate-180 {\n    transform: rotate(-180deg) !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:rotate-45 {\n    transform: rotate(45deg) !important;\n  }\n  .md\\:-rotate-45 {\n    transform: rotate(-45deg) !important;\n  }\n  .md\\:rotate-90 {\n    transform: rotate(90deg) !important;\n  }\n  .md\\:-rotate-90 {\n    transform: rotate(-90deg) !important;\n  }\n  .md\\:rotate-180 {\n    transform: rotate(180deg) !important;\n  }\n  .md\\:-rotate-180 {\n    transform: rotate(-180deg) !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:rotate-45 {\n    transform: rotate(45deg) !important;\n  }\n  .lg\\:-rotate-45 {\n    transform: rotate(-45deg) !important;\n  }\n  .lg\\:rotate-90 {\n    transform: rotate(90deg) !important;\n  }\n  .lg\\:-rotate-90 {\n    transform: rotate(-90deg) !important;\n  }\n  .lg\\:rotate-180 {\n    transform: rotate(180deg) !important;\n  }\n  .lg\\:-rotate-180 {\n    transform: rotate(-180deg) !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:rotate-45 {\n    transform: rotate(45deg) !important;\n  }\n  .xl\\:-rotate-45 {\n    transform: rotate(-45deg) !important;\n  }\n  .xl\\:rotate-90 {\n    transform: rotate(90deg) !important;\n  }\n  .xl\\:-rotate-90 {\n    transform: rotate(-90deg) !important;\n  }\n  .xl\\:rotate-180 {\n    transform: rotate(180deg) !important;\n  }\n  .xl\\:-rotate-180 {\n    transform: rotate(-180deg) !important;\n  }\n}\n.origin-center {\n  transform-origin: center !important;\n}\n\n.origin-top {\n  transform-origin: top !important;\n}\n\n.origin-top-right {\n  transform-origin: top right !important;\n}\n\n.origin-right {\n  transform-origin: right !important;\n}\n\n.origin-bottom-right {\n  transform-origin: bottom right !important;\n}\n\n.origin-bottom {\n  transform-origin: bottom !important;\n}\n\n.origin-bottom-left {\n  transform-origin: bottom left !important;\n}\n\n.origin-left {\n  transform-origin: left !important;\n}\n\n.origin-top-left {\n  transform-origin: top-left !important;\n}\n\n@media screen and (min-width: 576px) {\n  .sm\\:origin-center {\n    transform-origin: center !important;\n  }\n  .sm\\:origin-top {\n    transform-origin: top !important;\n  }\n  .sm\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n  .sm\\:origin-right {\n    transform-origin: right !important;\n  }\n  .sm\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n  .sm\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n  .sm\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n  .sm\\:origin-left {\n    transform-origin: left !important;\n  }\n  .sm\\:origin-top-left {\n    transform-origin: top-left !important;\n  }\n}\n@media screen and (min-width: 768px) {\n  .md\\:origin-center {\n    transform-origin: center !important;\n  }\n  .md\\:origin-top {\n    transform-origin: top !important;\n  }\n  .md\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n  .md\\:origin-right {\n    transform-origin: right !important;\n  }\n  .md\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n  .md\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n  .md\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n  .md\\:origin-left {\n    transform-origin: left !important;\n  }\n  .md\\:origin-top-left {\n    transform-origin: top-left !important;\n  }\n}\n@media screen and (min-width: 992px) {\n  .lg\\:origin-center {\n    transform-origin: center !important;\n  }\n  .lg\\:origin-top {\n    transform-origin: top !important;\n  }\n  .lg\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n  .lg\\:origin-right {\n    transform-origin: right !important;\n  }\n  .lg\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n  .lg\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n  .lg\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n  .lg\\:origin-left {\n    transform-origin: left !important;\n  }\n  .lg\\:origin-top-left {\n    transform-origin: top-left !important;\n  }\n}\n@media screen and (min-width: 1200px) {\n  .xl\\:origin-center {\n    transform-origin: center !important;\n  }\n  .xl\\:origin-top {\n    transform-origin: top !important;\n  }\n  .xl\\:origin-top-right {\n    transform-origin: top right !important;\n  }\n  .xl\\:origin-right {\n    transform-origin: right !important;\n  }\n  .xl\\:origin-bottom-right {\n    transform-origin: bottom right !important;\n  }\n  .xl\\:origin-bottom {\n    transform-origin: bottom !important;\n  }\n  .xl\\:origin-bottom-left {\n    transform-origin: bottom left !important;\n  }\n  .xl\\:origin-left {\n    transform-origin: left !important;\n  }\n  .xl\\:origin-top-left {\n    transform-origin: top-left !important;\n  }\n}\n@keyframes fadein {\n  0% {\n    opacity: 0;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n@keyframes fadeout {\n  0% {\n    opacity: 1;\n  }\n  100% {\n    opacity: 0;\n  }\n}\n@keyframes scalein {\n  0% {\n    opacity: 0;\n    transform: scaleY(0.8);\n    transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), opacity 0.12s cubic-bezier(0, 0, 0.2, 1);\n  }\n  100% {\n    opacity: 1;\n    transform: scaleY(1);\n  }\n}\n@keyframes slidedown {\n  0% {\n    max-height: 0;\n  }\n  100% {\n    max-height: auto;\n  }\n}\n@keyframes slideup {\n  0% {\n    max-height: 1000px;\n  }\n  100% {\n    max-height: 0;\n  }\n}\n@keyframes fadeinleft {\n  0% {\n    opacity: 0;\n    transform: translateX(-100%);\n    transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), opacity 0.12s cubic-bezier(0, 0, 0.2, 1);\n  }\n  100% {\n    opacity: 1;\n    transform: translateX(0%);\n  }\n}\n@keyframes fadeoutleft {\n  0% {\n    opacity: 1;\n    transform: translateX(0%);\n    transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), opacity 0.12s cubic-bezier(0, 0, 0.2, 1);\n  }\n  100% {\n    opacity: 0;\n    transform: translateX(-100%);\n  }\n}\n@keyframes fadeinright {\n  0% {\n    opacity: 0;\n    transform: translateX(100%);\n    transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), opacity 0.12s cubic-bezier(0, 0, 0.2, 1);\n  }\n  100% {\n    opacity: 1;\n    transform: translateX(0%);\n  }\n}\n@keyframes fadeoutright {\n  0% {\n    opacity: 1;\n    transform: translateX(0%);\n    transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), opacity 0.12s cubic-bezier(0, 0, 0.2, 1);\n  }\n  100% {\n    opacity: 0;\n    transform: translateX(100%);\n  }\n}\n@keyframes fadeinup {\n  0% {\n    opacity: 0;\n    transform: translateY(-100%);\n    transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), opacity 0.12s cubic-bezier(0, 0, 0.2, 1);\n  }\n  100% {\n    opacity: 1;\n    transform: translateY(0%);\n  }\n}\n@keyframes fadeoutup {\n  0% {\n    opacity: 1;\n    transform: translateY(0%);\n    transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), opacity 0.12s cubic-bezier(0, 0, 0.2, 1);\n  }\n  100% {\n    opacity: 0;\n    transform: translateY(-100%);\n  }\n}\n@keyframes fadeindown {\n  0% {\n    opacity: 0;\n    transform: translateY(100%);\n    transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), opacity 0.12s cubic-bezier(0, 0, 0.2, 1);\n  }\n  100% {\n    opacity: 1;\n    transform: translateY(0%);\n  }\n}\n@keyframes fadeoutdown {\n  0% {\n    opacity: 1;\n    transform: translateY(0%);\n    transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), opacity 0.12s cubic-bezier(0, 0, 0.2, 1);\n  }\n  100% {\n    opacity: 0;\n    transform: translateY(100%);\n  }\n}\n@keyframes animate-width {\n  0% {\n    width: 0;\n  }\n  100% {\n    width: 100%;\n  }\n}\n@keyframes flip {\n  from {\n    transform: perspective(2000px) rotateX(-100deg);\n  }\n  to {\n    transform: perspective(2000px) rotateX(0);\n  }\n}\n@keyframes flipleft {\n  from {\n    transform: perspective(2000px) rotateY(-100deg);\n    opacity: 0;\n  }\n  to {\n    transform: perspective(2000px) rotateY(0);\n    opacity: 1;\n  }\n}\n@keyframes flipright {\n  from {\n    transform: perspective(2000px) rotateY(100deg);\n    opacity: 0;\n  }\n  to {\n    transform: perspective(2000px) rotateY(0);\n    opacity: 1;\n  }\n}\n@keyframes flipup {\n  from {\n    transform: perspective(2000px) rotateX(-100deg);\n    opacity: 0;\n  }\n  to {\n    transform: perspective(2000px) rotateX(0);\n    opacity: 1;\n  }\n}\n@keyframes zoomin {\n  from {\n    opacity: 0;\n    transform: scale3d(0.3, 0.3, 0.3);\n  }\n  50% {\n    opacity: 1;\n  }\n}\n@keyframes zoomindown {\n  from {\n    opacity: 0;\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n  }\n  60% {\n    opacity: 1;\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n  }\n}\n@keyframes zoominleft {\n  from {\n    opacity: 0;\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n  }\n  60% {\n    opacity: 1;\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n  }\n}\n@keyframes zoominright {\n  from {\n    opacity: 0;\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n  }\n  60% {\n    opacity: 1;\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n  }\n}\n@keyframes zoominup {\n  from {\n    opacity: 0;\n    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n  }\n  60% {\n    opacity: 1;\n    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n  }\n}\n.fadein {\n  animation: fadein 0.15s linear;\n}\n\n.fadeout {\n  animation: fadeout 0.15s linear;\n}\n\n.slidedown {\n  animation: slidedown 0.45s ease-in-out;\n}\n\n.slideup {\n  animation: slideup 0.45s cubic-bezier(0, 1, 0, 1);\n}\n\n.scalein {\n  animation: scalein 0.15s linear;\n}\n\n.fadeinleft {\n  animation: fadeinleft 0.15s linear;\n}\n\n.fadeoutleft {\n  animation: fadeoutleft 0.15s linear;\n}\n\n.fadeinright {\n  animation: fadeinright 0.15s linear;\n}\n\n.fadeoutright {\n  animation: fadeoutright 0.15s linear;\n}\n\n.fadeinup {\n  animation: fadeinup 0.15s linear;\n}\n\n.fadeoutup {\n  animation: fadeoutup 0.15s linear;\n}\n\n.fadeindown {\n  animation: fadeindown 0.15s linear;\n}\n\n.fadeoutdown {\n  animation: fadeoutdown 0.15s linear;\n}\n\n.animate-width {\n  animation: animate-width 1000ms linear;\n}\n\n.flip {\n  backface-visibility: visible;\n  animation: flip 0.15s linear;\n}\n\n.flipup {\n  backface-visibility: visible;\n  animation: flipup 0.15s linear;\n}\n\n.flipleft {\n  backface-visibility: visible;\n  animation: flipleft 0.15s linear;\n}\n\n.flipright {\n  backface-visibility: visible;\n  animation: flipright 0.15s linear;\n}\n\n.zoomin {\n  animation: zoomin 0.15s linear;\n}\n\n.zoomindown {\n  animation: zoomindown 0.15s linear;\n}\n\n.zoominleft {\n  animation: zoominleft 0.15s linear;\n}\n\n.zoominright {\n  animation: zoominright 0.15s linear;\n}\n\n.zoominup {\n  animation: zoominup 0.15s linear;\n}\n\n.animation-duration-100 {\n  animation-duration: 100ms !important;\n}\n\n.animation-duration-150 {\n  animation-duration: 150ms !important;\n}\n\n.animation-duration-200 {\n  animation-duration: 200ms !important;\n}\n\n.animation-duration-300 {\n  animation-duration: 300ms !important;\n}\n\n.animation-duration-400 {\n  animation-duration: 400ms !important;\n}\n\n.animation-duration-500 {\n  animation-duration: 500ms !important;\n}\n\n.animation-duration-1000 {\n  animation-duration: 1000ms !important;\n}\n\n.animation-duration-2000 {\n  animation-duration: 2000ms !important;\n}\n\n.animation-duration-3000 {\n  animation-duration: 3000ms !important;\n}\n\n.animation-delay-100 {\n  animation-delay: 100ms !important;\n}\n\n.animation-delay-150 {\n  animation-delay: 150ms !important;\n}\n\n.animation-delay-200 {\n  animation-delay: 200ms !important;\n}\n\n.animation-delay-300 {\n  animation-delay: 300ms !important;\n}\n\n.animation-delay-400 {\n  animation-delay: 400ms !important;\n}\n\n.animation-delay-500 {\n  animation-delay: 500ms !important;\n}\n\n.animation-delay-1000 {\n  animation-delay: 1000ms !important;\n}\n\n.animation-iteration-1 {\n  animation-iteration-count: 1 !important;\n}\n\n.animation-iteration-2 {\n  animation-iteration-count: 2 !important;\n}\n\n.animation-iteration-infinite {\n  animation-iteration-count: infinite !important;\n}\n\n.animation-linear {\n  animation-timing-function: linear !important;\n}\n\n.animation-ease-in {\n  animation-timing-function: cubic-bezier(0.4, 0, 1, 1) !important;\n}\n\n.animation-ease-out {\n  animation-timing-function: cubic-bezier(0, 0, 0.2, 1) !important;\n}\n\n.animation-ease-in-out {\n  animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;\n}\n\n.animation-fill-none {\n  animation-fill-mode: none !important;\n}\n\n.animation-fill-forwards {\n  animation-fill-mode: forwards !important;\n}\n\n.animation-fill-backwards {\n  animation-fill-mode: backwards !important;\n}\n\n.animation-fill-both {\n  animation-fill-mode: both !important;\n}`;\n","import { css, LitElement, unsafeCSS } from \"lit\";\nimport { state } from \"lit/decorators.js\";\nimport { chatStore, type ChatStoreState, type ThemeConfig, I18nMixin, i18next } from \"@chativa/core\";\nimport commonStyles from \"../styles/commonStyles?inline\" with { type: \"css\" };\nimport styless from \"../styles.css?inline\" with { type: \"css\" };\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype Constructor<T = object> = new (...args: any[]) => T;\nconst styles = css`${unsafeCSS(styless)}`;\n\nexport declare class ChatbotMixinInterface {\n  lang: string;\n  theme: ThemeConfig;\n  themeState: ChatStoreState;\n}\n\nexport const ChatbotMixin = <T extends Constructor<LitElement>>(\n  superClass: T\n) => {\n  // I18nMixin handles the languageChanged subscription and requestUpdate().\n  class ChatbotMixinClass extends I18nMixin(superClass) {\n    @state()\n    private _lang = i18next.language;\n\n    get lang() {\n      return this._lang;\n    }\n\n    static styles = [styles, commonStyles];\n\n    private _unsubscribeChatStore!: () => void;\n\n    override connectedCallback() {\n      super.connectedCallback();\n      this._lang = i18next.language;\n      this._applyThemeVars();\n      this._unsubscribeChatStore = chatStore.subscribe(() => {\n        this._applyThemeVars();\n        this.requestUpdate();\n      });\n      // Keep _lang in sync when language changes (I18nMixin already calls requestUpdate).\n      i18next.on(\"languageChanged\", () => { this._lang = i18next.language; });\n    }\n\n    /** Push ThemeConfig colors onto the host element as CSS custom properties\n     *  so that all `var(--chativa-*)` references inside shadow DOM pick them up. */\n    private _applyThemeVars() {\n      const { colors } = chatStore.getState().theme;\n      this.style.setProperty(\"--chativa-primary-color\", colors.primary);\n      this.style.setProperty(\"--chativa-primary-dark\", colors.secondary);\n      this.style.setProperty(\"--chativa-secondary-color\", colors.secondary);\n      this.style.setProperty(\"--chativa-background\", colors.background);\n      this.style.setProperty(\"--chativa-text\", colors.text);\n      this.style.setProperty(\"--chativa-border\", colors.border);\n    }\n\n    override disconnectedCallback() {\n      this._unsubscribeChatStore?.();\n      super.disconnectedCallback();\n    }\n\n    get themeState(): ChatStoreState {\n      return chatStore.getState();\n    }\n\n    get theme(): ThemeConfig {\n      return chatStore.getState().theme;\n    }\n  }\n\n  return ChatbotMixinClass as unknown as Constructor<ChatbotMixinInterface> & T;\n};\n","const isString = obj => typeof obj === 'string';\nconst defer = () => {\n  let res;\n  let rej;\n  const promise = new Promise((resolve, reject) => {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n};\nconst makeString = object => {\n  if (object == null) return '';\n  return '' + object;\n};\nconst copy = (a, s, t) => {\n  a.forEach(m => {\n    if (s[m]) t[m] = s[m];\n  });\n};\nconst lastOfPathSeparatorRegExp = /###/g;\nconst cleanKey = key => key && key.indexOf('###') > -1 ? key.replace(lastOfPathSeparatorRegExp, '.') : key;\nconst canNotTraverseDeeper = object => !object || isString(object);\nconst getLastOfPath = (object, path, Empty) => {\n  const stack = !isString(path) ? path : path.split('.');\n  let stackIndex = 0;\n  while (stackIndex < stack.length - 1) {\n    if (canNotTraverseDeeper(object)) return {};\n    const key = cleanKey(stack[stackIndex]);\n    if (!object[key] && Empty) object[key] = new Empty();\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n    ++stackIndex;\n  }\n  if (canNotTraverseDeeper(object)) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack[stackIndex])\n  };\n};\nconst setPath = (object, path, newValue) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  if (obj !== undefined || path.length === 1) {\n    obj[k] = newValue;\n    return;\n  }\n  let e = path[path.length - 1];\n  let p = path.slice(0, path.length - 1);\n  let last = getLastOfPath(object, p, Object);\n  while (last.obj === undefined && p.length) {\n    e = `${p[p.length - 1]}.${e}`;\n    p = p.slice(0, p.length - 1);\n    last = getLastOfPath(object, p, Object);\n    if (last?.obj && typeof last.obj[`${last.k}.${e}`] !== 'undefined') {\n      last.obj = undefined;\n    }\n  }\n  last.obj[`${last.k}.${e}`] = newValue;\n};\nconst pushPath = (object, path, newValue, concat) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path, Object);\n  obj[k] = obj[k] || [];\n  obj[k].push(newValue);\n};\nconst getPath = (object, path) => {\n  const {\n    obj,\n    k\n  } = getLastOfPath(object, path);\n  if (!obj) return undefined;\n  if (!Object.prototype.hasOwnProperty.call(obj, k)) return undefined;\n  return obj[k];\n};\nconst getPathWithDefaults = (data, defaultData, key) => {\n  const value = getPath(data, key);\n  if (value !== undefined) {\n    return value;\n  }\n  return getPath(defaultData, key);\n};\nconst deepExtend = (target, source, overwrite) => {\n  for (const prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (isString(target[prop]) || target[prop] instanceof String || isString(source[prop]) || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n  return target;\n};\nconst regexEscape = str => str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nconst escape = data => {\n  if (isString(data)) {\n    return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n  }\n  return data;\n};\nclass RegExpCache {\n  constructor(capacity) {\n    this.capacity = capacity;\n    this.regExpMap = new Map();\n    this.regExpQueue = [];\n  }\n  getRegExp(pattern) {\n    const regExpFromCache = this.regExpMap.get(pattern);\n    if (regExpFromCache !== undefined) {\n      return regExpFromCache;\n    }\n    const regExpNew = new RegExp(pattern);\n    if (this.regExpQueue.length === this.capacity) {\n      this.regExpMap.delete(this.regExpQueue.shift());\n    }\n    this.regExpMap.set(pattern, regExpNew);\n    this.regExpQueue.push(pattern);\n    return regExpNew;\n  }\n}\nconst chars = [' ', ',', '?', '!', ';'];\nconst looksLikeObjectPathRegExpCache = new RegExpCache(20);\nconst looksLikeObjectPath = (key, nsSeparator, keySeparator) => {\n  nsSeparator = nsSeparator || '';\n  keySeparator = keySeparator || '';\n  const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n  if (possibleChars.length === 0) return true;\n  const r = looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n  let matched = !r.test(key);\n  if (!matched) {\n    const ki = key.indexOf(keySeparator);\n    if (ki > 0 && !r.test(key.substring(0, ki))) {\n      matched = true;\n    }\n  }\n  return matched;\n};\nconst deepFind = (obj, path, keySeparator = '.') => {\n  if (!obj) return undefined;\n  if (obj[path]) {\n    if (!Object.prototype.hasOwnProperty.call(obj, path)) return undefined;\n    return obj[path];\n  }\n  const tokens = path.split(keySeparator);\n  let current = obj;\n  for (let i = 0; i < tokens.length;) {\n    if (!current || typeof current !== 'object') {\n      return undefined;\n    }\n    let next;\n    let nextPath = '';\n    for (let j = i; j < tokens.length; ++j) {\n      if (j !== i) {\n        nextPath += keySeparator;\n      }\n      nextPath += tokens[j];\n      next = current[nextPath];\n      if (next !== undefined) {\n        if (['string', 'number', 'boolean'].indexOf(typeof next) > -1 && j < tokens.length - 1) {\n          continue;\n        }\n        i += j - i + 1;\n        break;\n      }\n    }\n    current = next;\n  }\n  return current;\n};\nconst getCleanedCode = code => code?.replace('_', '-');\n\nconst consoleLogger = {\n  type: 'logger',\n  log(args) {\n    this.output('log', args);\n  },\n  warn(args) {\n    this.output('warn', args);\n  },\n  error(args) {\n    this.output('error', args);\n  },\n  output(type, args) {\n    console?.[type]?.apply?.(console, args);\n  }\n};\nclass Logger {\n  constructor(concreteLogger, options = {}) {\n    this.init(concreteLogger, options);\n  }\n  init(concreteLogger, options = {}) {\n    this.prefix = options.prefix || 'i18next:';\n    this.logger = concreteLogger || consoleLogger;\n    this.options = options;\n    this.debug = options.debug;\n  }\n  log(...args) {\n    return this.forward(args, 'log', '', true);\n  }\n  warn(...args) {\n    return this.forward(args, 'warn', '', true);\n  }\n  error(...args) {\n    return this.forward(args, 'error', '');\n  }\n  deprecate(...args) {\n    return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n  }\n  forward(args, lvl, prefix, debugOnly) {\n    if (debugOnly && !this.debug) return null;\n    if (isString(args[0])) args[0] = `${prefix}${this.prefix} ${args[0]}`;\n    return this.logger[lvl](args);\n  }\n  create(moduleName) {\n    return new Logger(this.logger, {\n      ...{\n        prefix: `${this.prefix}:${moduleName}:`\n      },\n      ...this.options\n    });\n  }\n  clone(options) {\n    options = options || this.options;\n    options.prefix = options.prefix || this.prefix;\n    return new Logger(this.logger, options);\n  }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n  constructor() {\n    this.observers = {};\n  }\n  on(events, listener) {\n    events.split(' ').forEach(event => {\n      if (!this.observers[event]) this.observers[event] = new Map();\n      const numListeners = this.observers[event].get(listener) || 0;\n      this.observers[event].set(listener, numListeners + 1);\n    });\n    return this;\n  }\n  off(event, listener) {\n    if (!this.observers[event]) return;\n    if (!listener) {\n      delete this.observers[event];\n      return;\n    }\n    this.observers[event].delete(listener);\n  }\n  emit(event, ...args) {\n    if (this.observers[event]) {\n      const cloned = Array.from(this.observers[event].entries());\n      cloned.forEach(([observer, numTimesAdded]) => {\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer(...args);\n        }\n      });\n    }\n    if (this.observers['*']) {\n      const cloned = Array.from(this.observers['*'].entries());\n      cloned.forEach(([observer, numTimesAdded]) => {\n        for (let i = 0; i < numTimesAdded; i++) {\n          observer.apply(observer, [event, ...args]);\n        }\n      });\n    }\n  }\n}\n\nclass ResourceStore extends EventEmitter {\n  constructor(data, options = {\n    ns: ['translation'],\n    defaultNS: 'translation'\n  }) {\n    super();\n    this.data = data || {};\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    if (this.options.ignoreJSONStructure === undefined) {\n      this.options.ignoreJSONStructure = true;\n    }\n  }\n  addNamespaces(ns) {\n    if (this.options.ns.indexOf(ns) < 0) {\n      this.options.ns.push(ns);\n    }\n  }\n  removeNamespaces(ns) {\n    const index = this.options.ns.indexOf(ns);\n    if (index > -1) {\n      this.options.ns.splice(index, 1);\n    }\n  }\n  getResource(lng, ns, key, options = {}) {\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n    let path;\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n    } else {\n      path = [lng, ns];\n      if (key) {\n        if (Array.isArray(key)) {\n          path.push(...key);\n        } else if (isString(key) && keySeparator) {\n          path.push(...key.split(keySeparator));\n        } else {\n          path.push(key);\n        }\n      }\n    }\n    const result = getPath(this.data, path);\n    if (!result && !ns && !key && lng.indexOf('.') > -1) {\n      lng = path[0];\n      ns = path[1];\n      key = path.slice(2).join('.');\n    }\n    if (result || !ignoreJSONStructure || !isString(key)) return result;\n    return deepFind(this.data?.[lng]?.[ns], key, keySeparator);\n  }\n  addResource(lng, ns, key, value, options = {\n    silent: false\n  }) {\n    const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n    let path = [lng, ns];\n    if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      value = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    setPath(this.data, path, value);\n    if (!options.silent) this.emit('added', lng, ns, key, value);\n  }\n  addResources(lng, ns, resources, options = {\n    silent: false\n  }) {\n    for (const m in resources) {\n      if (isString(resources[m]) || Array.isArray(resources[m])) this.addResource(lng, ns, m, resources[m], {\n        silent: true\n      });\n    }\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  addResourceBundle(lng, ns, resources, deep, overwrite, options = {\n    silent: false,\n    skipCopy: false\n  }) {\n    let path = [lng, ns];\n    if (lng.indexOf('.') > -1) {\n      path = lng.split('.');\n      deep = resources;\n      resources = ns;\n      ns = path[1];\n    }\n    this.addNamespaces(ns);\n    let pack = getPath(this.data, path) || {};\n    if (!options.skipCopy) resources = JSON.parse(JSON.stringify(resources));\n    if (deep) {\n      deepExtend(pack, resources, overwrite);\n    } else {\n      pack = {\n        ...pack,\n        ...resources\n      };\n    }\n    setPath(this.data, path, pack);\n    if (!options.silent) this.emit('added', lng, ns, resources);\n  }\n  removeResourceBundle(lng, ns) {\n    if (this.hasResourceBundle(lng, ns)) {\n      delete this.data[lng][ns];\n    }\n    this.removeNamespaces(ns);\n    this.emit('removed', lng, ns);\n  }\n  hasResourceBundle(lng, ns) {\n    return this.getResource(lng, ns) !== undefined;\n  }\n  getResourceBundle(lng, ns) {\n    if (!ns) ns = this.options.defaultNS;\n    return this.getResource(lng, ns);\n  }\n  getDataByLanguage(lng) {\n    return this.data[lng];\n  }\n  hasLanguageSomeTranslations(lng) {\n    const data = this.getDataByLanguage(lng);\n    const n = data && Object.keys(data) || [];\n    return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n  }\n  toJSON() {\n    return this.data;\n  }\n}\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle(processors, value, key, options, translator) {\n    processors.forEach(processor => {\n      value = this.processors[processor]?.process(value, key, options, translator) ?? value;\n    });\n    return value;\n  }\n};\n\nconst PATH_KEY = Symbol('i18next/PATH_KEY');\nfunction createProxy() {\n  const state = [];\n  const handler = Object.create(null);\n  let proxy;\n  handler.get = (target, key) => {\n    proxy?.revoke?.();\n    if (key === PATH_KEY) return state;\n    state.push(key);\n    proxy = Proxy.revocable(target, handler);\n    return proxy.proxy;\n  };\n  return Proxy.revocable(Object.create(null), handler).proxy;\n}\nfunction keysFromSelector(selector, opts) {\n  const {\n    [PATH_KEY]: path\n  } = selector(createProxy());\n  return path.join(opts?.keySeparator ?? '.');\n}\n\nconst checkedLoadedFor = {};\nconst shouldHandleAsObject = res => !isString(res) && typeof res !== 'boolean' && typeof res !== 'number';\nclass Translator extends EventEmitter {\n  constructor(services, options = {}) {\n    super();\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n    this.options = options;\n    if (this.options.keySeparator === undefined) {\n      this.options.keySeparator = '.';\n    }\n    this.logger = baseLogger.create('translator');\n  }\n  changeLanguage(lng) {\n    if (lng) this.language = lng;\n  }\n  exists(key, o = {\n    interpolation: {}\n  }) {\n    const opt = {\n      ...o\n    };\n    if (key == null) return false;\n    const resolved = this.resolve(key, opt);\n    if (resolved?.res === undefined) return false;\n    const isObject = shouldHandleAsObject(resolved.res);\n    if (opt.returnObjects === false && isObject) {\n      return false;\n    }\n    return true;\n  }\n  extractFromKey(key, opt) {\n    let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n    let namespaces = opt.ns || this.options.defaultNS || [];\n    const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n    const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !opt.keySeparator && !this.options.userDefinedNsSeparator && !opt.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n    if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n      const m = key.match(this.interpolator.nestingRegexp);\n      if (m && m.length > 0) {\n        return {\n          key,\n          namespaces: isString(namespaces) ? [namespaces] : namespaces\n        };\n      }\n      const parts = key.split(nsSeparator);\n      if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n      key = parts.join(keySeparator);\n    }\n    return {\n      key,\n      namespaces: isString(namespaces) ? [namespaces] : namespaces\n    };\n  }\n  translate(keys, o, lastKey) {\n    let opt = typeof o === 'object' ? {\n      ...o\n    } : o;\n    if (typeof opt !== 'object' && this.options.overloadTranslationOptionHandler) {\n      opt = this.options.overloadTranslationOptionHandler(arguments);\n    }\n    if (typeof opt === 'object') opt = {\n      ...opt\n    };\n    if (!opt) opt = {};\n    if (keys == null) return '';\n    if (typeof keys === 'function') keys = keysFromSelector(keys, {\n      ...this.options,\n      ...opt\n    });\n    if (!Array.isArray(keys)) keys = [String(keys)];\n    const returnDetails = opt.returnDetails !== undefined ? opt.returnDetails : this.options.returnDetails;\n    const keySeparator = opt.keySeparator !== undefined ? opt.keySeparator : this.options.keySeparator;\n    const {\n      key,\n      namespaces\n    } = this.extractFromKey(keys[keys.length - 1], opt);\n    const namespace = namespaces[namespaces.length - 1];\n    let nsSeparator = opt.nsSeparator !== undefined ? opt.nsSeparator : this.options.nsSeparator;\n    if (nsSeparator === undefined) nsSeparator = ':';\n    const lng = opt.lng || this.language;\n    const appendNamespaceToCIMode = opt.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n    if (lng?.toLowerCase() === 'cimode') {\n      if (appendNamespaceToCIMode) {\n        if (returnDetails) {\n          return {\n            res: `${namespace}${nsSeparator}${key}`,\n            usedKey: key,\n            exactUsedKey: key,\n            usedLng: lng,\n            usedNS: namespace,\n            usedParams: this.getUsedParamsDetails(opt)\n          };\n        }\n        return `${namespace}${nsSeparator}${key}`;\n      }\n      if (returnDetails) {\n        return {\n          res: key,\n          usedKey: key,\n          exactUsedKey: key,\n          usedLng: lng,\n          usedNS: namespace,\n          usedParams: this.getUsedParamsDetails(opt)\n        };\n      }\n      return key;\n    }\n    const resolved = this.resolve(keys, opt);\n    let res = resolved?.res;\n    const resUsedKey = resolved?.usedKey || key;\n    const resExactUsedKey = resolved?.exactUsedKey || key;\n    const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n    const joinArrays = opt.joinArrays !== undefined ? opt.joinArrays : this.options.joinArrays;\n    const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n    const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n    const hasDefaultValue = Translator.hasDefaultValue(opt);\n    const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, opt) : '';\n    const defaultValueSuffixOrdinalFallback = opt.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, opt.count, {\n      ordinal: false\n    }) : '';\n    const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n    const defaultValue = needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] || opt[`defaultValue${defaultValueSuffix}`] || opt[`defaultValue${defaultValueSuffixOrdinalFallback}`] || opt.defaultValue;\n    let resForObjHndl = res;\n    if (handleAsObjectInI18nFormat && !res && hasDefaultValue) {\n      resForObjHndl = defaultValue;\n    }\n    const handleAsObject = shouldHandleAsObject(resForObjHndl);\n    const resType = Object.prototype.toString.apply(resForObjHndl);\n    if (handleAsObjectInI18nFormat && resForObjHndl && handleAsObject && noObject.indexOf(resType) < 0 && !(isString(joinArrays) && Array.isArray(resForObjHndl))) {\n      if (!opt.returnObjects && !this.options.returnObjects) {\n        if (!this.options.returnedObjectHandler) {\n          this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n        }\n        const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, resForObjHndl, {\n          ...opt,\n          ns: namespaces\n        }) : `key '${key} (${this.language})' returned an object instead of string.`;\n        if (returnDetails) {\n          resolved.res = r;\n          resolved.usedParams = this.getUsedParamsDetails(opt);\n          return resolved;\n        }\n        return r;\n      }\n      if (keySeparator) {\n        const resTypeIsArray = Array.isArray(resForObjHndl);\n        const copy = resTypeIsArray ? [] : {};\n        const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n        for (const m in resForObjHndl) {\n          if (Object.prototype.hasOwnProperty.call(resForObjHndl, m)) {\n            const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n            if (hasDefaultValue && !res) {\n              copy[m] = this.translate(deepKey, {\n                ...opt,\n                defaultValue: shouldHandleAsObject(defaultValue) ? defaultValue[m] : undefined,\n                ...{\n                  joinArrays: false,\n                  ns: namespaces\n                }\n              });\n            } else {\n              copy[m] = this.translate(deepKey, {\n                ...opt,\n                ...{\n                  joinArrays: false,\n                  ns: namespaces\n                }\n              });\n            }\n            if (copy[m] === deepKey) copy[m] = resForObjHndl[m];\n          }\n        }\n        res = copy;\n      }\n    } else if (handleAsObjectInI18nFormat && isString(joinArrays) && Array.isArray(res)) {\n      res = res.join(joinArrays);\n      if (res) res = this.extendTranslation(res, keys, opt, lastKey);\n    } else {\n      let usedDefault = false;\n      let usedKey = false;\n      if (!this.isValidLookup(res) && hasDefaultValue) {\n        usedDefault = true;\n        res = defaultValue;\n      }\n      if (!this.isValidLookup(res)) {\n        usedKey = true;\n        res = key;\n      }\n      const missingKeyNoValueFallbackToKey = opt.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n      const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n      const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n      if (usedKey || usedDefault || updateMissing) {\n        this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n        if (keySeparator) {\n          const fk = this.resolve(key, {\n            ...opt,\n            keySeparator: false\n          });\n          if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n        }\n        let lngs = [];\n        const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, opt.lng || this.language);\n        if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n          for (let i = 0; i < fallbackLngs.length; i++) {\n            lngs.push(fallbackLngs[i]);\n          }\n        } else if (this.options.saveMissingTo === 'all') {\n          lngs = this.languageUtils.toResolveHierarchy(opt.lng || this.language);\n        } else {\n          lngs.push(opt.lng || this.language);\n        }\n        const send = (l, k, specificDefaultValue) => {\n          const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n          if (this.options.missingKeyHandler) {\n            this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, opt);\n          } else if (this.backendConnector?.saveMissing) {\n            this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, opt);\n          }\n          this.emit('missingKey', l, namespace, k, res);\n        };\n        if (this.options.saveMissing) {\n          if (this.options.saveMissingPlurals && needsPluralHandling) {\n            lngs.forEach(language => {\n              const suffixes = this.pluralResolver.getSuffixes(language, opt);\n              if (needsZeroSuffixLookup && opt[`defaultValue${this.options.pluralSeparator}zero`] && suffixes.indexOf(`${this.options.pluralSeparator}zero`) < 0) {\n                suffixes.push(`${this.options.pluralSeparator}zero`);\n              }\n              suffixes.forEach(suffix => {\n                send([language], key + suffix, opt[`defaultValue${suffix}`] || defaultValue);\n              });\n            });\n          } else {\n            send(lngs, key, defaultValue);\n          }\n        }\n      }\n      res = this.extendTranslation(res, keys, opt, resolved, lastKey);\n      if (usedKey && res === key && this.options.appendNamespaceToMissingKey) {\n        res = `${namespace}${nsSeparator}${key}`;\n      }\n      if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n        res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}${nsSeparator}${key}` : key, usedDefault ? res : undefined, opt);\n      }\n    }\n    if (returnDetails) {\n      resolved.res = res;\n      resolved.usedParams = this.getUsedParamsDetails(opt);\n      return resolved;\n    }\n    return res;\n  }\n  extendTranslation(res, key, opt, resolved, lastKey) {\n    if (this.i18nFormat?.parse) {\n      res = this.i18nFormat.parse(res, {\n        ...this.options.interpolation.defaultVariables,\n        ...opt\n      }, opt.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n        resolved\n      });\n    } else if (!opt.skipInterpolation) {\n      if (opt.interpolation) this.interpolator.init({\n        ...opt,\n        ...{\n          interpolation: {\n            ...this.options.interpolation,\n            ...opt.interpolation\n          }\n        }\n      });\n      const skipOnVariables = isString(res) && (opt?.interpolation?.skipOnVariables !== undefined ? opt.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n      let nestBef;\n      if (skipOnVariables) {\n        const nb = res.match(this.interpolator.nestingRegexp);\n        nestBef = nb && nb.length;\n      }\n      let data = opt.replace && !isString(opt.replace) ? opt.replace : opt;\n      if (this.options.interpolation.defaultVariables) data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n      res = this.interpolator.interpolate(res, data, opt.lng || this.language || resolved.usedLng, opt);\n      if (skipOnVariables) {\n        const na = res.match(this.interpolator.nestingRegexp);\n        const nestAft = na && na.length;\n        if (nestBef < nestAft) opt.nest = false;\n      }\n      if (!opt.lng && resolved && resolved.res) opt.lng = this.language || resolved.usedLng;\n      if (opt.nest !== false) res = this.interpolator.nest(res, (...args) => {\n        if (lastKey?.[0] === args[0] && !opt.context) {\n          this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n          return null;\n        }\n        return this.translate(...args, key);\n      }, opt);\n      if (opt.interpolation) this.interpolator.reset();\n    }\n    const postProcess = opt.postProcess || this.options.postProcess;\n    const postProcessorNames = isString(postProcess) ? [postProcess] : postProcess;\n    if (res != null && postProcessorNames?.length && opt.applyPostProcessor !== false) {\n      res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n        i18nResolved: {\n          ...resolved,\n          usedParams: this.getUsedParamsDetails(opt)\n        },\n        ...opt\n      } : opt, this);\n    }\n    return res;\n  }\n  resolve(keys, opt = {}) {\n    let found;\n    let usedKey;\n    let exactUsedKey;\n    let usedLng;\n    let usedNS;\n    if (isString(keys)) keys = [keys];\n    keys.forEach(k => {\n      if (this.isValidLookup(found)) return;\n      const extracted = this.extractFromKey(k, opt);\n      const key = extracted.key;\n      usedKey = key;\n      let namespaces = extracted.namespaces;\n      if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n      const needsPluralHandling = opt.count !== undefined && !isString(opt.count);\n      const needsZeroSuffixLookup = needsPluralHandling && !opt.ordinal && opt.count === 0;\n      const needsContextHandling = opt.context !== undefined && (isString(opt.context) || typeof opt.context === 'number') && opt.context !== '';\n      const codes = opt.lngs ? opt.lngs : this.languageUtils.toResolveHierarchy(opt.lng || this.language, opt.fallbackLng);\n      namespaces.forEach(ns => {\n        if (this.isValidLookup(found)) return;\n        usedNS = ns;\n        if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(usedNS)) {\n          checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n          this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        }\n        codes.forEach(code => {\n          if (this.isValidLookup(found)) return;\n          usedLng = code;\n          const finalKeys = [key];\n          if (this.i18nFormat?.addLookupKeys) {\n            this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, opt);\n          } else {\n            let pluralSuffix;\n            if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, opt.count, opt);\n            const zeroSuffix = `${this.options.pluralSeparator}zero`;\n            const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n            if (needsPluralHandling) {\n              if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n              }\n              finalKeys.push(key + pluralSuffix);\n              if (needsZeroSuffixLookup) {\n                finalKeys.push(key + zeroSuffix);\n              }\n            }\n            if (needsContextHandling) {\n              const contextKey = `${key}${this.options.contextSeparator || '_'}${opt.context}`;\n              finalKeys.push(contextKey);\n              if (needsPluralHandling) {\n                if (opt.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n                  finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n                }\n                finalKeys.push(contextKey + pluralSuffix);\n                if (needsZeroSuffixLookup) {\n                  finalKeys.push(contextKey + zeroSuffix);\n                }\n              }\n            }\n          }\n          let possibleKey;\n          while (possibleKey = finalKeys.pop()) {\n            if (!this.isValidLookup(found)) {\n              exactUsedKey = possibleKey;\n              found = this.getResource(code, ns, possibleKey, opt);\n            }\n          }\n        });\n      });\n    });\n    return {\n      res: found,\n      usedKey,\n      exactUsedKey,\n      usedLng,\n      usedNS\n    };\n  }\n  isValidLookup(res) {\n    return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n  }\n  getResource(code, ns, key, options = {}) {\n    if (this.i18nFormat?.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n    return this.resourceStore.getResource(code, ns, key, options);\n  }\n  getUsedParamsDetails(options = {}) {\n    const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n    const useOptionsReplaceForData = options.replace && !isString(options.replace);\n    let data = useOptionsReplaceForData ? options.replace : options;\n    if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n      data.count = options.count;\n    }\n    if (this.options.interpolation.defaultVariables) {\n      data = {\n        ...this.options.interpolation.defaultVariables,\n        ...data\n      };\n    }\n    if (!useOptionsReplaceForData) {\n      data = {\n        ...data\n      };\n      for (const key of optionsKeys) {\n        delete data[key];\n      }\n    }\n    return data;\n  }\n  static hasDefaultValue(options) {\n    const prefix = 'defaultValue';\n    for (const option in options) {\n      if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n\nclass LanguageUtil {\n  constructor(options) {\n    this.options = options;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n  getScriptPartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return null;\n    const p = code.split('-');\n    if (p.length === 2) return null;\n    p.pop();\n    if (p[p.length - 1].toLowerCase() === 'x') return null;\n    return this.formatLanguageCode(p.join('-'));\n  }\n  getLanguagePartFromCode(code) {\n    code = getCleanedCode(code);\n    if (!code || code.indexOf('-') < 0) return code;\n    const p = code.split('-');\n    return this.formatLanguageCode(p[0]);\n  }\n  formatLanguageCode(code) {\n    if (isString(code) && code.indexOf('-') > -1) {\n      let formattedCode;\n      try {\n        formattedCode = Intl.getCanonicalLocales(code)[0];\n      } catch (e) {}\n      if (formattedCode && this.options.lowerCaseLng) {\n        formattedCode = formattedCode.toLowerCase();\n      }\n      if (formattedCode) return formattedCode;\n      if (this.options.lowerCaseLng) {\n        return code.toLowerCase();\n      }\n      return code;\n    }\n    return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n  }\n  isSupportedCode(code) {\n    if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n      code = this.getLanguagePartFromCode(code);\n    }\n    return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n  }\n  getBestMatchFromCodes(codes) {\n    if (!codes) return null;\n    let found;\n    codes.forEach(code => {\n      if (found) return;\n      const cleanedLng = this.formatLanguageCode(code);\n      if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n    });\n    if (!found && this.options.supportedLngs) {\n      codes.forEach(code => {\n        if (found) return;\n        const lngScOnly = this.getScriptPartFromCode(code);\n        if (this.isSupportedCode(lngScOnly)) return found = lngScOnly;\n        const lngOnly = this.getLanguagePartFromCode(code);\n        if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n        found = this.options.supportedLngs.find(supportedLng => {\n          if (supportedLng === lngOnly) return supportedLng;\n          if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n          if (supportedLng.indexOf('-') > 0 && lngOnly.indexOf('-') < 0 && supportedLng.substring(0, supportedLng.indexOf('-')) === lngOnly) return supportedLng;\n          if (supportedLng.indexOf(lngOnly) === 0 && lngOnly.length > 1) return supportedLng;\n        });\n      });\n    }\n    if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n    return found;\n  }\n  getFallbackCodes(fallbacks, code) {\n    if (!fallbacks) return [];\n    if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n    if (isString(fallbacks)) fallbacks = [fallbacks];\n    if (Array.isArray(fallbacks)) return fallbacks;\n    if (!code) return fallbacks.default || [];\n    let found = fallbacks[code];\n    if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n    if (!found) found = fallbacks[this.formatLanguageCode(code)];\n    if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n    if (!found) found = fallbacks.default;\n    return found || [];\n  }\n  toResolveHierarchy(code, fallbackCode) {\n    const fallbackCodes = this.getFallbackCodes((fallbackCode === false ? [] : fallbackCode) || this.options.fallbackLng || [], code);\n    const codes = [];\n    const addCode = c => {\n      if (!c) return;\n      if (this.isSupportedCode(c)) {\n        codes.push(c);\n      } else {\n        this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n      }\n    };\n    if (isString(code) && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n      if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n      if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n      if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n    } else if (isString(code)) {\n      addCode(this.formatLanguageCode(code));\n    }\n    fallbackCodes.forEach(fc => {\n      if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n    });\n    return codes;\n  }\n}\n\nconst suffixesOrder = {\n  zero: 0,\n  one: 1,\n  two: 2,\n  few: 3,\n  many: 4,\n  other: 5\n};\nconst dummyRule = {\n  select: count => count === 1 ? 'one' : 'other',\n  resolvedOptions: () => ({\n    pluralCategories: ['one', 'other']\n  })\n};\nclass PluralResolver {\n  constructor(languageUtils, options = {}) {\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    this.pluralRulesCache = {};\n  }\n  clearCache() {\n    this.pluralRulesCache = {};\n  }\n  getRule(code, options = {}) {\n    const cleanedCode = getCleanedCode(code === 'dev' ? 'en' : code);\n    const type = options.ordinal ? 'ordinal' : 'cardinal';\n    const cacheKey = JSON.stringify({\n      cleanedCode,\n      type\n    });\n    if (cacheKey in this.pluralRulesCache) {\n      return this.pluralRulesCache[cacheKey];\n    }\n    let rule;\n    try {\n      rule = new Intl.PluralRules(cleanedCode, {\n        type\n      });\n    } catch (err) {\n      if (typeof Intl === 'undefined') {\n        this.logger.error('No Intl support, please use an Intl polyfill!');\n        return dummyRule;\n      }\n      if (!code.match(/-|_/)) return dummyRule;\n      const lngPart = this.languageUtils.getLanguagePartFromCode(code);\n      rule = this.getRule(lngPart, options);\n    }\n    this.pluralRulesCache[cacheKey] = rule;\n    return rule;\n  }\n  needsPlural(code, options = {}) {\n    let rule = this.getRule(code, options);\n    if (!rule) rule = this.getRule('dev', options);\n    return rule?.resolvedOptions().pluralCategories.length > 1;\n  }\n  getPluralFormsOfKey(code, key, options = {}) {\n    return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n  }\n  getSuffixes(code, options = {}) {\n    let rule = this.getRule(code, options);\n    if (!rule) rule = this.getRule('dev', options);\n    if (!rule) return [];\n    return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n  }\n  getSuffix(code, count, options = {}) {\n    const rule = this.getRule(code, options);\n    if (rule) {\n      return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n    }\n    this.logger.warn(`no plural rule found for: ${code}`);\n    return this.getSuffix('dev', count, options);\n  }\n}\n\nconst deepFindWithDefaults = (data, defaultData, key, keySeparator = '.', ignoreJSONStructure = true) => {\n  let path = getPathWithDefaults(data, defaultData, key);\n  if (!path && ignoreJSONStructure && isString(key)) {\n    path = deepFind(data, key, keySeparator);\n    if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n  }\n  return path;\n};\nconst regexSafe = val => val.replace(/\\$/g, '$$$$');\nclass Interpolator {\n  constructor(options = {}) {\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n    this.format = options?.interpolation?.format || (value => value);\n    this.init(options);\n  }\n  init(options = {}) {\n    if (!options.interpolation) options.interpolation = {\n      escapeValue: true\n    };\n    const {\n      escape: escape$1,\n      escapeValue,\n      useRawValueToEscape,\n      prefix,\n      prefixEscaped,\n      suffix,\n      suffixEscaped,\n      formatSeparator,\n      unescapeSuffix,\n      unescapePrefix,\n      nestingPrefix,\n      nestingPrefixEscaped,\n      nestingSuffix,\n      nestingSuffixEscaped,\n      nestingOptionsSeparator,\n      maxReplaces,\n      alwaysFormat\n    } = options.interpolation;\n    this.escape = escape$1 !== undefined ? escape$1 : escape;\n    this.escapeValue = escapeValue !== undefined ? escapeValue : true;\n    this.useRawValueToEscape = useRawValueToEscape !== undefined ? useRawValueToEscape : false;\n    this.prefix = prefix ? regexEscape(prefix) : prefixEscaped || '{{';\n    this.suffix = suffix ? regexEscape(suffix) : suffixEscaped || '}}';\n    this.formatSeparator = formatSeparator || ',';\n    this.unescapePrefix = unescapeSuffix ? '' : unescapePrefix || '-';\n    this.unescapeSuffix = this.unescapePrefix ? '' : unescapeSuffix || '';\n    this.nestingPrefix = nestingPrefix ? regexEscape(nestingPrefix) : nestingPrefixEscaped || regexEscape('$t(');\n    this.nestingSuffix = nestingSuffix ? regexEscape(nestingSuffix) : nestingSuffixEscaped || regexEscape(')');\n    this.nestingOptionsSeparator = nestingOptionsSeparator || ',';\n    this.maxReplaces = maxReplaces || 1000;\n    this.alwaysFormat = alwaysFormat !== undefined ? alwaysFormat : false;\n    this.resetRegExp();\n  }\n  reset() {\n    if (this.options) this.init(this.options);\n  }\n  resetRegExp() {\n    const getOrResetRegExp = (existingRegExp, pattern) => {\n      if (existingRegExp?.source === pattern) {\n        existingRegExp.lastIndex = 0;\n        return existingRegExp;\n      }\n      return new RegExp(pattern, 'g');\n    };\n    this.regexp = getOrResetRegExp(this.regexp, `${this.prefix}(.+?)${this.suffix}`);\n    this.regexpUnescape = getOrResetRegExp(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`);\n    this.nestingRegexp = getOrResetRegExp(this.nestingRegexp, `${this.nestingPrefix}((?:[^()\"']+|\"[^\"]*\"|'[^']*'|\\\\((?:[^()]|\"[^\"]*\"|'[^']*')*\\\\))*?)${this.nestingSuffix}`);\n  }\n  interpolate(str, data, lng, options) {\n    let match;\n    let value;\n    let replaces;\n    const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n    const handleFormat = key => {\n      if (key.indexOf(this.formatSeparator) < 0) {\n        const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n        return this.alwaysFormat ? this.format(path, undefined, lng, {\n          ...options,\n          ...data,\n          interpolationkey: key\n        }) : path;\n      }\n      const p = key.split(this.formatSeparator);\n      const k = p.shift().trim();\n      const f = p.join(this.formatSeparator).trim();\n      return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n        ...options,\n        ...data,\n        interpolationkey: k\n      });\n    };\n    this.resetRegExp();\n    const missingInterpolationHandler = options?.missingInterpolationHandler || this.options.missingInterpolationHandler;\n    const skipOnVariables = options?.interpolation?.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n    const todos = [{\n      regex: this.regexpUnescape,\n      safeValue: val => regexSafe(val)\n    }, {\n      regex: this.regexp,\n      safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n    }];\n    todos.forEach(todo => {\n      replaces = 0;\n      while (match = todo.regex.exec(str)) {\n        const matchedVar = match[1].trim();\n        value = handleFormat(matchedVar);\n        if (value === undefined) {\n          if (typeof missingInterpolationHandler === 'function') {\n            const temp = missingInterpolationHandler(str, match, options);\n            value = isString(temp) ? temp : '';\n          } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n            value = '';\n          } else if (skipOnVariables) {\n            value = match[0];\n            continue;\n          } else {\n            this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n            value = '';\n          }\n        } else if (!isString(value) && !this.useRawValueToEscape) {\n          value = makeString(value);\n        }\n        const safeValue = todo.safeValue(value);\n        str = str.replace(match[0], safeValue);\n        if (skipOnVariables) {\n          todo.regex.lastIndex += value.length;\n          todo.regex.lastIndex -= match[0].length;\n        } else {\n          todo.regex.lastIndex = 0;\n        }\n        replaces++;\n        if (replaces >= this.maxReplaces) {\n          break;\n        }\n      }\n    });\n    return str;\n  }\n  nest(str, fc, options = {}) {\n    let match;\n    let value;\n    let clonedOptions;\n    const handleHasOptions = (key, inheritedOptions) => {\n      const sep = this.nestingOptionsSeparator;\n      if (key.indexOf(sep) < 0) return key;\n      const c = key.split(new RegExp(`${regexEscape(sep)}[ ]*{`));\n      let optionsString = `{${c[1]}`;\n      key = c[0];\n      optionsString = this.interpolate(optionsString, clonedOptions);\n      const matchedSingleQuotes = optionsString.match(/'/g);\n      const matchedDoubleQuotes = optionsString.match(/\"/g);\n      if ((matchedSingleQuotes?.length ?? 0) % 2 === 0 && !matchedDoubleQuotes || (matchedDoubleQuotes?.length ?? 0) % 2 !== 0) {\n        optionsString = optionsString.replace(/'/g, '\"');\n      }\n      try {\n        clonedOptions = JSON.parse(optionsString);\n        if (inheritedOptions) clonedOptions = {\n          ...inheritedOptions,\n          ...clonedOptions\n        };\n      } catch (e) {\n        this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n        return `${key}${sep}${optionsString}`;\n      }\n      if (clonedOptions.defaultValue && clonedOptions.defaultValue.indexOf(this.prefix) > -1) delete clonedOptions.defaultValue;\n      return key;\n    };\n    while (match = this.nestingRegexp.exec(str)) {\n      let formatters = [];\n      clonedOptions = {\n        ...options\n      };\n      clonedOptions = clonedOptions.replace && !isString(clonedOptions.replace) ? clonedOptions.replace : clonedOptions;\n      clonedOptions.applyPostProcessor = false;\n      delete clonedOptions.defaultValue;\n      const keyEndIndex = /{.*}/.test(match[1]) ? match[1].lastIndexOf('}') + 1 : match[1].indexOf(this.formatSeparator);\n      if (keyEndIndex !== -1) {\n        formatters = match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem => elem.trim()).filter(Boolean);\n        match[1] = match[1].slice(0, keyEndIndex);\n      }\n      value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n      if (value && match[0] === str && !isString(value)) return value;\n      if (!isString(value)) value = makeString(value);\n      if (!value) {\n        this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n        value = '';\n      }\n      if (formatters.length) {\n        value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n          ...options,\n          interpolationkey: match[1].trim()\n        }), value.trim());\n      }\n      str = str.replace(match[0], value);\n      this.regexp.lastIndex = 0;\n    }\n    return str;\n  }\n}\n\nconst parseFormatStr = formatStr => {\n  let formatName = formatStr.toLowerCase().trim();\n  const formatOptions = {};\n  if (formatStr.indexOf('(') > -1) {\n    const p = formatStr.split('(');\n    formatName = p[0].toLowerCase().trim();\n    const optStr = p[1].substring(0, p[1].length - 1);\n    if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n    } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.range) formatOptions.range = optStr.trim();\n    } else {\n      const opts = optStr.split(';');\n      opts.forEach(opt => {\n        if (opt) {\n          const [key, ...rest] = opt.split(':');\n          const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n          const trimmedKey = key.trim();\n          if (!formatOptions[trimmedKey]) formatOptions[trimmedKey] = val;\n          if (val === 'false') formatOptions[trimmedKey] = false;\n          if (val === 'true') formatOptions[trimmedKey] = true;\n          if (!isNaN(val)) formatOptions[trimmedKey] = parseInt(val, 10);\n        }\n      });\n    }\n  }\n  return {\n    formatName,\n    formatOptions\n  };\n};\nconst createCachedFormatter = fn => {\n  const cache = {};\n  return (v, l, o) => {\n    let optForCache = o;\n    if (o && o.interpolationkey && o.formatParams && o.formatParams[o.interpolationkey] && o[o.interpolationkey]) {\n      optForCache = {\n        ...optForCache,\n        [o.interpolationkey]: undefined\n      };\n    }\n    const key = l + JSON.stringify(optForCache);\n    let frm = cache[key];\n    if (!frm) {\n      frm = fn(getCleanedCode(l), o);\n      cache[key] = frm;\n    }\n    return frm(v);\n  };\n};\nconst createNonCachedFormatter = fn => (v, l, o) => fn(getCleanedCode(l), o)(v);\nclass Formatter {\n  constructor(options = {}) {\n    this.logger = baseLogger.create('formatter');\n    this.options = options;\n    this.init(options);\n  }\n  init(services, options = {\n    interpolation: {}\n  }) {\n    this.formatSeparator = options.interpolation.formatSeparator || ',';\n    const cf = options.cacheInBuiltFormats ? createCachedFormatter : createNonCachedFormatter;\n    this.formats = {\n      number: cf((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      currency: cf((lng, opt) => {\n        const formatter = new Intl.NumberFormat(lng, {\n          ...opt,\n          style: 'currency'\n        });\n        return val => formatter.format(val);\n      }),\n      datetime: cf((lng, opt) => {\n        const formatter = new Intl.DateTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      }),\n      relativetime: cf((lng, opt) => {\n        const formatter = new Intl.RelativeTimeFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val, opt.range || 'day');\n      }),\n      list: cf((lng, opt) => {\n        const formatter = new Intl.ListFormat(lng, {\n          ...opt\n        });\n        return val => formatter.format(val);\n      })\n    };\n  }\n  add(name, fc) {\n    this.formats[name.toLowerCase().trim()] = fc;\n  }\n  addCached(name, fc) {\n    this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n  }\n  format(value, format, lng, options = {}) {\n    const formats = format.split(this.formatSeparator);\n    if (formats.length > 1 && formats[0].indexOf('(') > 1 && formats[0].indexOf(')') < 0 && formats.find(f => f.indexOf(')') > -1)) {\n      const lastIndex = formats.findIndex(f => f.indexOf(')') > -1);\n      formats[0] = [formats[0], ...formats.splice(1, lastIndex)].join(this.formatSeparator);\n    }\n    const result = formats.reduce((mem, f) => {\n      const {\n        formatName,\n        formatOptions\n      } = parseFormatStr(f);\n      if (this.formats[formatName]) {\n        let formatted = mem;\n        try {\n          const valOptions = options?.formatParams?.[options.interpolationkey] || {};\n          const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n          formatted = this.formats[formatName](mem, l, {\n            ...formatOptions,\n            ...options,\n            ...valOptions\n          });\n        } catch (error) {\n          this.logger.warn(error);\n        }\n        return formatted;\n      } else {\n        this.logger.warn(`there was no format function for ${formatName}`);\n      }\n      return mem;\n    }, value);\n    return result;\n  }\n}\n\nconst removePending = (q, name) => {\n  if (q.pending[name] !== undefined) {\n    delete q.pending[name];\n    q.pendingCount--;\n  }\n};\nclass Connector extends EventEmitter {\n  constructor(backend, store, services, options = {}) {\n    super();\n    this.backend = backend;\n    this.store = store;\n    this.services = services;\n    this.languageUtils = services.languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('backendConnector');\n    this.waitingReads = [];\n    this.maxParallelReads = options.maxParallelReads || 10;\n    this.readingCalls = 0;\n    this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n    this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n    this.state = {};\n    this.queue = [];\n    this.backend?.init?.(services, options.backend, options);\n  }\n  queueLoad(languages, namespaces, options, callback) {\n    const toLoad = {};\n    const pending = {};\n    const toLoadLanguages = {};\n    const toLoadNamespaces = {};\n    languages.forEach(lng => {\n      let hasAllNamespaces = true;\n      namespaces.forEach(ns => {\n        const name = `${lng}|${ns}`;\n        if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n          this.state[name] = 2;\n        } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n          if (pending[name] === undefined) pending[name] = true;\n        } else {\n          this.state[name] = 1;\n          hasAllNamespaces = false;\n          if (pending[name] === undefined) pending[name] = true;\n          if (toLoad[name] === undefined) toLoad[name] = true;\n          if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n        }\n      });\n      if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n    });\n    if (Object.keys(toLoad).length || Object.keys(pending).length) {\n      this.queue.push({\n        pending,\n        pendingCount: Object.keys(pending).length,\n        loaded: {},\n        errors: [],\n        callback\n      });\n    }\n    return {\n      toLoad: Object.keys(toLoad),\n      pending: Object.keys(pending),\n      toLoadLanguages: Object.keys(toLoadLanguages),\n      toLoadNamespaces: Object.keys(toLoadNamespaces)\n    };\n  }\n  loaded(name, err, data) {\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    if (err) this.emit('failedLoading', lng, ns, err);\n    if (!err && data) {\n      this.store.addResourceBundle(lng, ns, data, undefined, undefined, {\n        skipCopy: true\n      });\n    }\n    this.state[name] = err ? -1 : 2;\n    if (err && data) this.state[name] = 0;\n    const loaded = {};\n    this.queue.forEach(q => {\n      pushPath(q.loaded, [lng], ns);\n      removePending(q, name);\n      if (err) q.errors.push(err);\n      if (q.pendingCount === 0 && !q.done) {\n        Object.keys(q.loaded).forEach(l => {\n          if (!loaded[l]) loaded[l] = {};\n          const loadedKeys = q.loaded[l];\n          if (loadedKeys.length) {\n            loadedKeys.forEach(n => {\n              if (loaded[l][n] === undefined) loaded[l][n] = true;\n            });\n          }\n        });\n        q.done = true;\n        if (q.errors.length) {\n          q.callback(q.errors);\n        } else {\n          q.callback();\n        }\n      }\n    });\n    this.emit('loaded', loaded);\n    this.queue = this.queue.filter(q => !q.done);\n  }\n  read(lng, ns, fcName, tried = 0, wait = this.retryTimeout, callback) {\n    if (!lng.length) return callback(null, {});\n    if (this.readingCalls >= this.maxParallelReads) {\n      this.waitingReads.push({\n        lng,\n        ns,\n        fcName,\n        tried,\n        wait,\n        callback\n      });\n      return;\n    }\n    this.readingCalls++;\n    const resolver = (err, data) => {\n      this.readingCalls--;\n      if (this.waitingReads.length > 0) {\n        const next = this.waitingReads.shift();\n        this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n      }\n      if (err && data && tried < this.maxRetries) {\n        setTimeout(() => {\n          this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n        }, wait);\n        return;\n      }\n      callback(err, data);\n    };\n    const fc = this.backend[fcName].bind(this.backend);\n    if (fc.length === 2) {\n      try {\n        const r = fc(lng, ns);\n        if (r && typeof r.then === 'function') {\n          r.then(data => resolver(null, data)).catch(resolver);\n        } else {\n          resolver(null, r);\n        }\n      } catch (err) {\n        resolver(err);\n      }\n      return;\n    }\n    return fc(lng, ns, resolver);\n  }\n  prepareLoading(languages, namespaces, options = {}, callback) {\n    if (!this.backend) {\n      this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n      return callback && callback();\n    }\n    if (isString(languages)) languages = this.languageUtils.toResolveHierarchy(languages);\n    if (isString(namespaces)) namespaces = [namespaces];\n    const toLoad = this.queueLoad(languages, namespaces, options, callback);\n    if (!toLoad.toLoad.length) {\n      if (!toLoad.pending.length) callback();\n      return null;\n    }\n    toLoad.toLoad.forEach(name => {\n      this.loadOne(name);\n    });\n  }\n  load(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {}, callback);\n  }\n  reload(languages, namespaces, callback) {\n    this.prepareLoading(languages, namespaces, {\n      reload: true\n    }, callback);\n  }\n  loadOne(name, prefix = '') {\n    const s = name.split('|');\n    const lng = s[0];\n    const ns = s[1];\n    this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n      if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n      if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n      this.loaded(name, err, data);\n    });\n  }\n  saveMissing(languages, namespace, key, fallbackValue, isUpdate, options = {}, clb = () => {}) {\n    if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(namespace)) {\n      this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n      return;\n    }\n    if (key === undefined || key === null || key === '') return;\n    if (this.backend?.create) {\n      const opts = {\n        ...options,\n        isUpdate\n      };\n      const fc = this.backend.create.bind(this.backend);\n      if (fc.length < 6) {\n        try {\n          let r;\n          if (fc.length === 5) {\n            r = fc(languages, namespace, key, fallbackValue, opts);\n          } else {\n            r = fc(languages, namespace, key, fallbackValue);\n          }\n          if (r && typeof r.then === 'function') {\n            r.then(data => clb(null, data)).catch(clb);\n          } else {\n            clb(null, r);\n          }\n        } catch (err) {\n          clb(err);\n        }\n      } else {\n        fc(languages, namespace, key, fallbackValue, clb, opts);\n      }\n    }\n    if (!languages || !languages[0]) return;\n    this.store.addResource(languages[0], namespace, key, fallbackValue);\n  }\n}\n\nconst get = () => ({\n  debug: false,\n  initAsync: true,\n  ns: ['translation'],\n  defaultNS: ['translation'],\n  fallbackLng: ['dev'],\n  fallbackNS: false,\n  supportedLngs: false,\n  nonExplicitSupportedLngs: false,\n  load: 'all',\n  preload: false,\n  simplifyPluralSuffix: true,\n  keySeparator: '.',\n  nsSeparator: ':',\n  pluralSeparator: '_',\n  contextSeparator: '_',\n  partialBundledLanguages: false,\n  saveMissing: false,\n  updateMissing: false,\n  saveMissingTo: 'fallback',\n  saveMissingPlurals: true,\n  missingKeyHandler: false,\n  missingInterpolationHandler: false,\n  postProcess: false,\n  postProcessPassResolved: false,\n  returnNull: false,\n  returnEmptyString: true,\n  returnObjects: false,\n  joinArrays: false,\n  returnedObjectHandler: false,\n  parseMissingKeyHandler: false,\n  appendNamespaceToMissingKey: false,\n  appendNamespaceToCIMode: false,\n  overloadTranslationOptionHandler: args => {\n    let ret = {};\n    if (typeof args[1] === 'object') ret = args[1];\n    if (isString(args[1])) ret.defaultValue = args[1];\n    if (isString(args[2])) ret.tDescription = args[2];\n    if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n      const options = args[3] || args[2];\n      Object.keys(options).forEach(key => {\n        ret[key] = options[key];\n      });\n    }\n    return ret;\n  },\n  interpolation: {\n    escapeValue: true,\n    format: value => value,\n    prefix: '{{',\n    suffix: '}}',\n    formatSeparator: ',',\n    unescapePrefix: '-',\n    nestingPrefix: '$t(',\n    nestingSuffix: ')',\n    nestingOptionsSeparator: ',',\n    maxReplaces: 1000,\n    skipOnVariables: true\n  },\n  cacheInBuiltFormats: true\n});\nconst transformOptions = options => {\n  if (isString(options.ns)) options.ns = [options.ns];\n  if (isString(options.fallbackLng)) options.fallbackLng = [options.fallbackLng];\n  if (isString(options.fallbackNS)) options.fallbackNS = [options.fallbackNS];\n  if (options.supportedLngs?.indexOf?.('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n  if (typeof options.initImmediate === 'boolean') options.initAsync = options.initImmediate;\n  return options;\n};\n\nconst noop = () => {};\nconst bindMemberFunctions = inst => {\n  const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n  mems.forEach(mem => {\n    if (typeof inst[mem] === 'function') {\n      inst[mem] = inst[mem].bind(inst);\n    }\n  });\n};\nconst SUPPORT_NOTICE_KEY = '__i18next_supportNoticeShown';\nconst getSupportNoticeShown = () => typeof globalThis !== 'undefined' && !!globalThis[SUPPORT_NOTICE_KEY];\nconst setSupportNoticeShown = () => {\n  if (typeof globalThis !== 'undefined') globalThis[SUPPORT_NOTICE_KEY] = true;\n};\nconst usesLocize = inst => {\n  if (inst?.modules?.backend?.name?.indexOf('Locize') > 0) return true;\n  if (inst?.modules?.backend?.constructor?.name?.indexOf('Locize') > 0) return true;\n  if (inst?.options?.backend?.backends) {\n    if (inst.options.backend.backends.some(b => b?.name?.indexOf('Locize') > 0 || b?.constructor?.name?.indexOf('Locize') > 0)) return true;\n  }\n  if (inst?.options?.backend?.projectId) return true;\n  if (inst?.options?.backend?.backendOptions) {\n    if (inst.options.backend.backendOptions.some(b => b?.projectId)) return true;\n  }\n  return false;\n};\nclass I18n extends EventEmitter {\n  constructor(options = {}, callback) {\n    super();\n    this.options = transformOptions(options);\n    this.services = {};\n    this.logger = baseLogger;\n    this.modules = {\n      external: []\n    };\n    bindMemberFunctions(this);\n    if (callback && !this.isInitialized && !options.isClone) {\n      if (!this.options.initAsync) {\n        this.init(options, callback);\n        return this;\n      }\n      setTimeout(() => {\n        this.init(options, callback);\n      }, 0);\n    }\n  }\n  init(options = {}, callback) {\n    this.isInitializing = true;\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n    if (options.defaultNS == null && options.ns) {\n      if (isString(options.ns)) {\n        options.defaultNS = options.ns;\n      } else if (options.ns.indexOf('translation') < 0) {\n        options.defaultNS = options.ns[0];\n      }\n    }\n    const defOpts = get();\n    this.options = {\n      ...defOpts,\n      ...this.options,\n      ...transformOptions(options)\n    };\n    this.options.interpolation = {\n      ...defOpts.interpolation,\n      ...this.options.interpolation\n    };\n    if (options.keySeparator !== undefined) {\n      this.options.userDefinedKeySeparator = options.keySeparator;\n    }\n    if (options.nsSeparator !== undefined) {\n      this.options.userDefinedNsSeparator = options.nsSeparator;\n    }\n    if (typeof this.options.overloadTranslationOptionHandler !== 'function') {\n      this.options.overloadTranslationOptionHandler = defOpts.overloadTranslationOptionHandler;\n    }\n    if (this.options.showSupportNotice !== false && !usesLocize(this) && !getSupportNoticeShown()) {\n      if (typeof console !== 'undefined' && typeof console.info !== 'undefined') console.info('🌐 i18next is maintained with support from Locize — consider powering your project with managed localization (AI, CDN, integrations): https://locize.com 💙');\n      setSupportNoticeShown();\n    }\n    const createClassOnDemand = ClassOrObject => {\n      if (!ClassOrObject) return null;\n      if (typeof ClassOrObject === 'function') return new ClassOrObject();\n      return ClassOrObject;\n    };\n    if (!this.options.isClone) {\n      if (this.modules.logger) {\n        baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n      } else {\n        baseLogger.init(null, this.options);\n      }\n      let formatter;\n      if (this.modules.formatter) {\n        formatter = this.modules.formatter;\n      } else {\n        formatter = Formatter;\n      }\n      const lu = new LanguageUtil(this.options);\n      this.store = new ResourceStore(this.options.resources, this.options);\n      const s = this.services;\n      s.logger = baseLogger;\n      s.resourceStore = this.store;\n      s.languageUtils = lu;\n      s.pluralResolver = new PluralResolver(lu, {\n        prepend: this.options.pluralSeparator,\n        simplifyPluralSuffix: this.options.simplifyPluralSuffix\n      });\n      const usingLegacyFormatFunction = this.options.interpolation.format && this.options.interpolation.format !== defOpts.interpolation.format;\n      if (usingLegacyFormatFunction) {\n        this.logger.deprecate(`init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting`);\n      }\n      if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n        s.formatter = createClassOnDemand(formatter);\n        if (s.formatter.init) s.formatter.init(s, this.options);\n        this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n      }\n      s.interpolator = new Interpolator(this.options);\n      s.utils = {\n        hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n      };\n      s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n      s.backendConnector.on('*', (event, ...args) => {\n        this.emit(event, ...args);\n      });\n      if (this.modules.languageDetector) {\n        s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n        if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n      }\n      if (this.modules.i18nFormat) {\n        s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n        if (s.i18nFormat.init) s.i18nFormat.init(this);\n      }\n      this.translator = new Translator(this.services, this.options);\n      this.translator.on('*', (event, ...args) => {\n        this.emit(event, ...args);\n      });\n      this.modules.external.forEach(m => {\n        if (m.init) m.init(this);\n      });\n    }\n    this.format = this.options.interpolation.format;\n    if (!callback) callback = noop;\n    if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n      const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n      if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n    }\n    if (!this.services.languageDetector && !this.options.lng) {\n      this.logger.warn('init: no languageDetector is used and no lng is defined');\n    }\n    const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n    storeApi.forEach(fcName => {\n      this[fcName] = (...args) => this.store[fcName](...args);\n    });\n    const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n    storeApiChained.forEach(fcName => {\n      this[fcName] = (...args) => {\n        this.store[fcName](...args);\n        return this;\n      };\n    });\n    const deferred = defer();\n    const load = () => {\n      const finish = (err, t) => {\n        this.isInitializing = false;\n        if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n        this.isInitialized = true;\n        if (!this.options.isClone) this.logger.log('initialized', this.options);\n        this.emit('initialized', this.options);\n        deferred.resolve(t);\n        callback(err, t);\n      };\n      if (this.languages && !this.isInitialized) return finish(null, this.t.bind(this));\n      this.changeLanguage(this.options.lng, finish);\n    };\n    if (this.options.resources || !this.options.initAsync) {\n      load();\n    } else {\n      setTimeout(load, 0);\n    }\n    return deferred;\n  }\n  loadResources(language, callback = noop) {\n    let usedCallback = callback;\n    const usedLng = isString(language) ? language : this.language;\n    if (typeof language === 'function') usedCallback = language;\n    if (!this.options.resources || this.options.partialBundledLanguages) {\n      if (usedLng?.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n      const toLoad = [];\n      const append = lng => {\n        if (!lng) return;\n        if (lng === 'cimode') return;\n        const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n        lngs.forEach(l => {\n          if (l === 'cimode') return;\n          if (toLoad.indexOf(l) < 0) toLoad.push(l);\n        });\n      };\n      if (!usedLng) {\n        const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        fallbacks.forEach(l => append(l));\n      } else {\n        append(usedLng);\n      }\n      this.options.preload?.forEach?.(l => append(l));\n      this.services.backendConnector.load(toLoad, this.options.ns, e => {\n        if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n        usedCallback(e);\n      });\n    } else {\n      usedCallback(null);\n    }\n  }\n  reloadResources(lngs, ns, callback) {\n    const deferred = defer();\n    if (typeof lngs === 'function') {\n      callback = lngs;\n      lngs = undefined;\n    }\n    if (typeof ns === 'function') {\n      callback = ns;\n      ns = undefined;\n    }\n    if (!lngs) lngs = this.languages;\n    if (!ns) ns = this.options.ns;\n    if (!callback) callback = noop;\n    this.services.backendConnector.reload(lngs, ns, err => {\n      deferred.resolve();\n      callback(err);\n    });\n    return deferred;\n  }\n  use(module) {\n    if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n    if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n    if (module.type === 'backend') {\n      this.modules.backend = module;\n    }\n    if (module.type === 'logger' || module.log && module.warn && module.error) {\n      this.modules.logger = module;\n    }\n    if (module.type === 'languageDetector') {\n      this.modules.languageDetector = module;\n    }\n    if (module.type === 'i18nFormat') {\n      this.modules.i18nFormat = module;\n    }\n    if (module.type === 'postProcessor') {\n      postProcessor.addPostProcessor(module);\n    }\n    if (module.type === 'formatter') {\n      this.modules.formatter = module;\n    }\n    if (module.type === '3rdParty') {\n      this.modules.external.push(module);\n    }\n    return this;\n  }\n  setResolvedLanguage(l) {\n    if (!l || !this.languages) return;\n    if (['cimode', 'dev'].indexOf(l) > -1) return;\n    for (let li = 0; li < this.languages.length; li++) {\n      const lngInLngs = this.languages[li];\n      if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n      if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n        this.resolvedLanguage = lngInLngs;\n        break;\n      }\n    }\n    if (!this.resolvedLanguage && this.languages.indexOf(l) < 0 && this.store.hasLanguageSomeTranslations(l)) {\n      this.resolvedLanguage = l;\n      this.languages.unshift(l);\n    }\n  }\n  changeLanguage(lng, callback) {\n    this.isLanguageChangingTo = lng;\n    const deferred = defer();\n    this.emit('languageChanging', lng);\n    const setLngProps = l => {\n      this.language = l;\n      this.languages = this.services.languageUtils.toResolveHierarchy(l);\n      this.resolvedLanguage = undefined;\n      this.setResolvedLanguage(l);\n    };\n    const done = (err, l) => {\n      if (l) {\n        if (this.isLanguageChangingTo === lng) {\n          setLngProps(l);\n          this.translator.changeLanguage(l);\n          this.isLanguageChangingTo = undefined;\n          this.emit('languageChanged', l);\n          this.logger.log('languageChanged', l);\n        }\n      } else {\n        this.isLanguageChangingTo = undefined;\n      }\n      deferred.resolve((...args) => this.t(...args));\n      if (callback) callback(err, (...args) => this.t(...args));\n    };\n    const setLng = lngs => {\n      if (!lng && !lngs && this.services.languageDetector) lngs = [];\n      const fl = isString(lngs) ? lngs : lngs && lngs[0];\n      const l = this.store.hasLanguageSomeTranslations(fl) ? fl : this.services.languageUtils.getBestMatchFromCodes(isString(lngs) ? [lngs] : lngs);\n      if (l) {\n        if (!this.language) {\n          setLngProps(l);\n        }\n        if (!this.translator.language) this.translator.changeLanguage(l);\n        this.services.languageDetector?.cacheUserLanguage?.(l);\n      }\n      this.loadResources(l, err => {\n        done(err, l);\n      });\n    };\n    if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n      setLng(this.services.languageDetector.detect());\n    } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n      if (this.services.languageDetector.detect.length === 0) {\n        this.services.languageDetector.detect().then(setLng);\n      } else {\n        this.services.languageDetector.detect(setLng);\n      }\n    } else {\n      setLng(lng);\n    }\n    return deferred;\n  }\n  getFixedT(lng, ns, keyPrefix) {\n    const fixedT = (key, opts, ...rest) => {\n      let o;\n      if (typeof opts !== 'object') {\n        o = this.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n      } else {\n        o = {\n          ...opts\n        };\n      }\n      o.lng = o.lng || fixedT.lng;\n      o.lngs = o.lngs || fixedT.lngs;\n      o.ns = o.ns || fixedT.ns;\n      if (o.keyPrefix !== '') o.keyPrefix = o.keyPrefix || keyPrefix || fixedT.keyPrefix;\n      const keySeparator = this.options.keySeparator || '.';\n      let resultKey;\n      if (o.keyPrefix && Array.isArray(key)) {\n        resultKey = key.map(k => {\n          if (typeof k === 'function') k = keysFromSelector(k, {\n            ...this.options,\n            ...opts\n          });\n          return `${o.keyPrefix}${keySeparator}${k}`;\n        });\n      } else {\n        if (typeof key === 'function') key = keysFromSelector(key, {\n          ...this.options,\n          ...opts\n        });\n        resultKey = o.keyPrefix ? `${o.keyPrefix}${keySeparator}${key}` : key;\n      }\n      return this.t(resultKey, o);\n    };\n    if (isString(lng)) {\n      fixedT.lng = lng;\n    } else {\n      fixedT.lngs = lng;\n    }\n    fixedT.ns = ns;\n    fixedT.keyPrefix = keyPrefix;\n    return fixedT;\n  }\n  t(...args) {\n    return this.translator?.translate(...args);\n  }\n  exists(...args) {\n    return this.translator?.exists(...args);\n  }\n  setDefaultNamespace(ns) {\n    this.options.defaultNS = ns;\n  }\n  hasLoadedNamespace(ns, options = {}) {\n    if (!this.isInitialized) {\n      this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n      return false;\n    }\n    if (!this.languages || !this.languages.length) {\n      this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n      return false;\n    }\n    const lng = options.lng || this.resolvedLanguage || this.languages[0];\n    const fallbackLng = this.options ? this.options.fallbackLng : false;\n    const lastLng = this.languages[this.languages.length - 1];\n    if (lng.toLowerCase() === 'cimode') return true;\n    const loadNotPending = (l, n) => {\n      const loadState = this.services.backendConnector.state[`${l}|${n}`];\n      return loadState === -1 || loadState === 0 || loadState === 2;\n    };\n    if (options.precheck) {\n      const preResult = options.precheck(this, loadNotPending);\n      if (preResult !== undefined) return preResult;\n    }\n    if (this.hasResourceBundle(lng, ns)) return true;\n    if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n    if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n    return false;\n  }\n  loadNamespaces(ns, callback) {\n    const deferred = defer();\n    if (!this.options.ns) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    if (isString(ns)) ns = [ns];\n    ns.forEach(n => {\n      if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n    });\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  loadLanguages(lngs, callback) {\n    const deferred = defer();\n    if (isString(lngs)) lngs = [lngs];\n    const preloaded = this.options.preload || [];\n    const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0 && this.services.languageUtils.isSupportedCode(lng));\n    if (!newLngs.length) {\n      if (callback) callback();\n      return Promise.resolve();\n    }\n    this.options.preload = preloaded.concat(newLngs);\n    this.loadResources(err => {\n      deferred.resolve();\n      if (callback) callback(err);\n    });\n    return deferred;\n  }\n  dir(lng) {\n    if (!lng) lng = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language);\n    if (!lng) return 'rtl';\n    try {\n      const l = new Intl.Locale(lng);\n      if (l && l.getTextInfo) {\n        const ti = l.getTextInfo();\n        if (ti && ti.direction) return ti.direction;\n      }\n    } catch (e) {}\n    const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n    const languageUtils = this.services?.languageUtils || new LanguageUtil(get());\n    if (lng.toLowerCase().indexOf('-latn') > 1) return 'ltr';\n    return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n  }\n  static createInstance(options = {}, callback) {\n    const instance = new I18n(options, callback);\n    instance.createInstance = I18n.createInstance;\n    return instance;\n  }\n  cloneInstance(options = {}, callback = noop) {\n    const forkResourceStore = options.forkResourceStore;\n    if (forkResourceStore) delete options.forkResourceStore;\n    const mergedOptions = {\n      ...this.options,\n      ...options,\n      ...{\n        isClone: true\n      }\n    };\n    const clone = new I18n(mergedOptions);\n    if (options.debug !== undefined || options.prefix !== undefined) {\n      clone.logger = clone.logger.clone(options);\n    }\n    const membersToCopy = ['store', 'services', 'language'];\n    membersToCopy.forEach(m => {\n      clone[m] = this[m];\n    });\n    clone.services = {\n      ...this.services\n    };\n    clone.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    if (forkResourceStore) {\n      const clonedData = Object.keys(this.store.data).reduce((prev, l) => {\n        prev[l] = {\n          ...this.store.data[l]\n        };\n        prev[l] = Object.keys(prev[l]).reduce((acc, n) => {\n          acc[n] = {\n            ...prev[l][n]\n          };\n          return acc;\n        }, prev[l]);\n        return prev;\n      }, {});\n      clone.store = new ResourceStore(clonedData, mergedOptions);\n      clone.services.resourceStore = clone.store;\n    }\n    if (options.interpolation) {\n      const defOpts = get();\n      const mergedInterpolation = {\n        ...defOpts.interpolation,\n        ...this.options.interpolation,\n        ...options.interpolation\n      };\n      const mergedForInterpolator = {\n        ...mergedOptions,\n        interpolation: mergedInterpolation\n      };\n      clone.services.interpolator = new Interpolator(mergedForInterpolator);\n    }\n    clone.translator = new Translator(clone.services, mergedOptions);\n    clone.translator.on('*', (event, ...args) => {\n      clone.emit(event, ...args);\n    });\n    clone.init(mergedOptions, callback);\n    clone.translator.options = mergedOptions;\n    clone.translator.backendConnector.services.utils = {\n      hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n    };\n    return clone;\n  }\n  toJSON() {\n    return {\n      options: this.options,\n      store: this.store,\n      language: this.language,\n      languages: this.languages,\n      resolvedLanguage: this.resolvedLanguage\n    };\n  }\n}\nconst instance = I18n.createInstance();\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, keysFromSelector as keyFromSelector, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import i18next, { t } from \"i18next\";\nimport { SlashCommandRegistry } from \"@chativa/core\";\nimport type { CommandContext } from \"@chativa/core\";\n\n/**\n * Per-locale strings for a slash command.\n */\nexport interface CommandTranslations {\n  description?: string;\n  /** Optional parameter hint, e.g. \"[count]\" or \"<text>\" */\n  usage?: string;\n}\n\n/**\n * Config object passed to `registerCommand()`.\n *\n * @example\n * registerCommand({\n *   name: \"help\",\n *   translations: {\n *     en: { description: \"Show available topics\", usage: \"[topic]\" },\n *     tr: { description: \"Konuları göster\",        usage: \"[konu]\"  },\n *   },\n *   execute({ args }) {\n *     console.log(\"help\", args);\n *   },\n * });\n */\nexport interface LocalizedCommandConfig {\n  name: string;\n  /**\n   * Locale → translations map.\n   * At minimum supply an \"en\" entry so there is always a fallback.\n   */\n  translations: Record<string, CommandTranslations>;\n  execute(context: CommandContext): void;\n}\n\n/**\n * Register a slash command with inline per-locale translations.\n *\n * The helper:\n * 1. Injects the provided strings into i18next (namespace \"translation\")\n *    under the keys `commands.<name>.description` and `commands.<name>.usage`.\n * 2. Registers the command in `SlashCommandRegistry` with lazy description\n *    and usage getters so they are re-evaluated on every render (picks up\n *    language switches automatically).\n */\nexport function registerCommand(config: LocalizedCommandConfig): void {\n  const { name, translations, execute } = config;\n\n  // Inject translations into i18next for every supplied locale\n  for (const [lng, strings] of Object.entries(translations)) {\n    const resources: Record<string, string> = {};\n    if (strings.description !== undefined) {\n      resources[`commands.${name}.description`] = strings.description;\n    }\n    if (strings.usage !== undefined) {\n      resources[`commands.${name}.usage`] = strings.usage;\n    }\n    if (Object.keys(resources).length > 0) {\n      i18next.addResources(lng, \"translation\", resources);\n    }\n  }\n\n  SlashCommandRegistry.register({\n    name,\n    description: () => t(`commands.${name}.description`),\n    usage: () => {\n      const val = t(`commands.${name}.usage`, { defaultValue: \"\" });\n      return val;\n    },\n    execute,\n  });\n}\n","/**\n * marked v13.0.3 - a markdown parser\n * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n    return {\n        async: false,\n        breaks: false,\n        extensions: null,\n        gfm: true,\n        hooks: null,\n        pedantic: false,\n        renderer: null,\n        silent: false,\n        tokenizer: null,\n        walkTokens: null,\n    };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n    _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape$1(html, encode) {\n    if (encode) {\n        if (escapeTest.test(html)) {\n            return html.replace(escapeReplace, getEscapeReplacement);\n        }\n    }\n    else {\n        if (escapeTestNoEncode.test(html)) {\n            return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n        }\n    }\n    return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n    // explicitly match decimal, hex, and named HTML entities\n    return html.replace(unescapeTest, (_, n) => {\n        n = n.toLowerCase();\n        if (n === 'colon')\n            return ':';\n        if (n.charAt(0) === '#') {\n            return n.charAt(1) === 'x'\n                ? String.fromCharCode(parseInt(n.substring(2), 16))\n                : String.fromCharCode(+n.substring(1));\n        }\n        return '';\n    });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n    let source = typeof regex === 'string' ? regex : regex.source;\n    opt = opt || '';\n    const obj = {\n        replace: (name, val) => {\n            let valSource = typeof val === 'string' ? val : val.source;\n            valSource = valSource.replace(caret, '$1');\n            source = source.replace(name, valSource);\n            return obj;\n        },\n        getRegex: () => {\n            return new RegExp(source, opt);\n        },\n    };\n    return obj;\n}\nfunction cleanUrl(href) {\n    try {\n        href = encodeURI(href).replace(/%25/g, '%');\n    }\n    catch {\n        return null;\n    }\n    return href;\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n    // ensure that every cell-delimiting pipe has a space\n    // before it to distinguish it from an escaped pipe\n    const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n        let escaped = false;\n        let curr = offset;\n        while (--curr >= 0 && str[curr] === '\\\\')\n            escaped = !escaped;\n        if (escaped) {\n            // odd number of slashes means | is escaped\n            // so we leave it alone\n            return '|';\n        }\n        else {\n            // add space before unescaped |\n            return ' |';\n        }\n    }), cells = row.split(/ \\|/);\n    let i = 0;\n    // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n    if (!cells[0].trim()) {\n        cells.shift();\n    }\n    if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n        cells.pop();\n    }\n    if (count) {\n        if (cells.length > count) {\n            cells.splice(count);\n        }\n        else {\n            while (cells.length < count)\n                cells.push('');\n        }\n    }\n    for (; i < cells.length; i++) {\n        // leading or trailing whitespace is ignored per the gfm spec\n        cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n    }\n    return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n    const l = str.length;\n    if (l === 0) {\n        return '';\n    }\n    // Length of suffix matching the invert condition.\n    let suffLen = 0;\n    // Step left until we fail to match the invert condition.\n    while (suffLen < l) {\n        const currChar = str.charAt(l - suffLen - 1);\n        if (currChar === c && !invert) {\n            suffLen++;\n        }\n        else if (currChar !== c && invert) {\n            suffLen++;\n        }\n        else {\n            break;\n        }\n    }\n    return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n    if (str.indexOf(b[1]) === -1) {\n        return -1;\n    }\n    let level = 0;\n    for (let i = 0; i < str.length; i++) {\n        if (str[i] === '\\\\') {\n            i++;\n        }\n        else if (str[i] === b[0]) {\n            level++;\n        }\n        else if (str[i] === b[1]) {\n            level--;\n            if (level < 0) {\n                return i;\n            }\n        }\n    }\n    return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n    const href = link.href;\n    const title = link.title ? escape$1(link.title) : null;\n    const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n    if (cap[0].charAt(0) !== '!') {\n        lexer.state.inLink = true;\n        const token = {\n            type: 'link',\n            raw,\n            href,\n            title,\n            text,\n            tokens: lexer.inlineTokens(text),\n        };\n        lexer.state.inLink = false;\n        return token;\n    }\n    return {\n        type: 'image',\n        raw,\n        href,\n        title,\n        text: escape$1(text),\n    };\n}\nfunction indentCodeCompensation(raw, text) {\n    const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n    if (matchIndentToCode === null) {\n        return text;\n    }\n    const indentToCode = matchIndentToCode[1];\n    return text\n        .split('\\n')\n        .map(node => {\n        const matchIndentInNode = node.match(/^\\s+/);\n        if (matchIndentInNode === null) {\n            return node;\n        }\n        const [indentInNode] = matchIndentInNode;\n        if (indentInNode.length >= indentToCode.length) {\n            return node.slice(indentToCode.length);\n        }\n        return node;\n    })\n        .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n    options;\n    rules; // set by the lexer\n    lexer; // set by the lexer\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    space(src) {\n        const cap = this.rules.block.newline.exec(src);\n        if (cap && cap[0].length > 0) {\n            return {\n                type: 'space',\n                raw: cap[0],\n            };\n        }\n    }\n    code(src) {\n        const cap = this.rules.block.code.exec(src);\n        if (cap) {\n            const text = cap[0].replace(/^ {1,4}/gm, '');\n            return {\n                type: 'code',\n                raw: cap[0],\n                codeBlockStyle: 'indented',\n                text: !this.options.pedantic\n                    ? rtrim(text, '\\n')\n                    : text,\n            };\n        }\n    }\n    fences(src) {\n        const cap = this.rules.block.fences.exec(src);\n        if (cap) {\n            const raw = cap[0];\n            const text = indentCodeCompensation(raw, cap[3] || '');\n            return {\n                type: 'code',\n                raw,\n                lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n                text,\n            };\n        }\n    }\n    heading(src) {\n        const cap = this.rules.block.heading.exec(src);\n        if (cap) {\n            let text = cap[2].trim();\n            // remove trailing #s\n            if (/#$/.test(text)) {\n                const trimmed = rtrim(text, '#');\n                if (this.options.pedantic) {\n                    text = trimmed.trim();\n                }\n                else if (!trimmed || / $/.test(trimmed)) {\n                    // CommonMark requires space before trailing #s\n                    text = trimmed.trim();\n                }\n            }\n            return {\n                type: 'heading',\n                raw: cap[0],\n                depth: cap[1].length,\n                text,\n                tokens: this.lexer.inline(text),\n            };\n        }\n    }\n    hr(src) {\n        const cap = this.rules.block.hr.exec(src);\n        if (cap) {\n            return {\n                type: 'hr',\n                raw: rtrim(cap[0], '\\n'),\n            };\n        }\n    }\n    blockquote(src) {\n        const cap = this.rules.block.blockquote.exec(src);\n        if (cap) {\n            let lines = rtrim(cap[0], '\\n').split('\\n');\n            let raw = '';\n            let text = '';\n            const tokens = [];\n            while (lines.length > 0) {\n                let inBlockquote = false;\n                const currentLines = [];\n                let i;\n                for (i = 0; i < lines.length; i++) {\n                    // get lines up to a continuation\n                    if (/^ {0,3}>/.test(lines[i])) {\n                        currentLines.push(lines[i]);\n                        inBlockquote = true;\n                    }\n                    else if (!inBlockquote) {\n                        currentLines.push(lines[i]);\n                    }\n                    else {\n                        break;\n                    }\n                }\n                lines = lines.slice(i);\n                const currentRaw = currentLines.join('\\n');\n                const currentText = currentRaw\n                    // precede setext continuation with 4 spaces so it isn't a setext\n                    .replace(/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g, '\\n    $1')\n                    .replace(/^ {0,3}>[ \\t]?/gm, '');\n                raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n                text = text ? `${text}\\n${currentText}` : currentText;\n                // parse blockquote lines as top level tokens\n                // merge paragraphs if this is a continuation\n                const top = this.lexer.state.top;\n                this.lexer.state.top = true;\n                this.lexer.blockTokens(currentText, tokens, true);\n                this.lexer.state.top = top;\n                // if there is no continuation then we are done\n                if (lines.length === 0) {\n                    break;\n                }\n                const lastToken = tokens[tokens.length - 1];\n                if (lastToken?.type === 'code') {\n                    // blockquote continuation cannot be preceded by a code block\n                    break;\n                }\n                else if (lastToken?.type === 'blockquote') {\n                    // include continuation in nested blockquote\n                    const oldToken = lastToken;\n                    const newText = oldToken.raw + '\\n' + lines.join('\\n');\n                    const newToken = this.blockquote(newText);\n                    tokens[tokens.length - 1] = newToken;\n                    raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n                    text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n                    break;\n                }\n                else if (lastToken?.type === 'list') {\n                    // include continuation in nested list\n                    const oldToken = lastToken;\n                    const newText = oldToken.raw + '\\n' + lines.join('\\n');\n                    const newToken = this.list(newText);\n                    tokens[tokens.length - 1] = newToken;\n                    raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n                    text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n                    lines = newText.substring(tokens[tokens.length - 1].raw.length).split('\\n');\n                    continue;\n                }\n            }\n            return {\n                type: 'blockquote',\n                raw,\n                tokens,\n                text,\n            };\n        }\n    }\n    list(src) {\n        let cap = this.rules.block.list.exec(src);\n        if (cap) {\n            let bull = cap[1].trim();\n            const isordered = bull.length > 1;\n            const list = {\n                type: 'list',\n                raw: '',\n                ordered: isordered,\n                start: isordered ? +bull.slice(0, -1) : '',\n                loose: false,\n                items: [],\n            };\n            bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n            if (this.options.pedantic) {\n                bull = isordered ? bull : '[*+-]';\n            }\n            // Get next list item\n            const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n            let endsWithBlankLine = false;\n            // Check if current bullet point can start a new List Item\n            while (src) {\n                let endEarly = false;\n                let raw = '';\n                let itemContents = '';\n                if (!(cap = itemRegex.exec(src))) {\n                    break;\n                }\n                if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n                    break;\n                }\n                raw = cap[0];\n                src = src.substring(raw.length);\n                let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n                let nextLine = src.split('\\n', 1)[0];\n                let blankLine = !line.trim();\n                let indent = 0;\n                if (this.options.pedantic) {\n                    indent = 2;\n                    itemContents = line.trimStart();\n                }\n                else if (blankLine) {\n                    indent = cap[1].length + 1;\n                }\n                else {\n                    indent = cap[2].search(/[^ ]/); // Find first non-space char\n                    indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n                    itemContents = line.slice(indent);\n                    indent += cap[1].length;\n                }\n                if (blankLine && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n                    raw += nextLine + '\\n';\n                    src = src.substring(nextLine.length + 1);\n                    endEarly = true;\n                }\n                if (!endEarly) {\n                    const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n                    const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n                    const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n                    const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n                    // Check if following lines should be included in List Item\n                    while (src) {\n                        const rawLine = src.split('\\n', 1)[0];\n                        nextLine = rawLine;\n                        // Re-align to follow commonmark nesting rules\n                        if (this.options.pedantic) {\n                            nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, '  ');\n                        }\n                        // End list item if found code fences\n                        if (fencesBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of new heading\n                        if (headingBeginRegex.test(nextLine)) {\n                            break;\n                        }\n                        // End list item if found start of new bullet\n                        if (nextBulletRegex.test(nextLine)) {\n                            break;\n                        }\n                        // Horizontal rule found\n                        if (hrRegex.test(src)) {\n                            break;\n                        }\n                        if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n                            itemContents += '\\n' + nextLine.slice(indent);\n                        }\n                        else {\n                            // not enough indentation\n                            if (blankLine) {\n                                break;\n                            }\n                            // paragraph continuation unless last line was a different block level element\n                            if (line.search(/[^ ]/) >= 4) { // indented code block\n                                break;\n                            }\n                            if (fencesBeginRegex.test(line)) {\n                                break;\n                            }\n                            if (headingBeginRegex.test(line)) {\n                                break;\n                            }\n                            if (hrRegex.test(line)) {\n                                break;\n                            }\n                            itemContents += '\\n' + nextLine;\n                        }\n                        if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n                            blankLine = true;\n                        }\n                        raw += rawLine + '\\n';\n                        src = src.substring(rawLine.length + 1);\n                        line = nextLine.slice(indent);\n                    }\n                }\n                if (!list.loose) {\n                    // If the previous item ended with a blank line, the list is loose\n                    if (endsWithBlankLine) {\n                        list.loose = true;\n                    }\n                    else if (/\\n *\\n *$/.test(raw)) {\n                        endsWithBlankLine = true;\n                    }\n                }\n                let istask = null;\n                let ischecked;\n                // Check for task list items\n                if (this.options.gfm) {\n                    istask = /^\\[[ xX]\\] /.exec(itemContents);\n                    if (istask) {\n                        ischecked = istask[0] !== '[ ] ';\n                        itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n                    }\n                }\n                list.items.push({\n                    type: 'list_item',\n                    raw,\n                    task: !!istask,\n                    checked: ischecked,\n                    loose: false,\n                    text: itemContents,\n                    tokens: [],\n                });\n                list.raw += raw;\n            }\n            // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n            list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();\n            list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();\n            list.raw = list.raw.trimEnd();\n            // Item child tokens handled here at end because we needed to have the final item to trim it first\n            for (let i = 0; i < list.items.length; i++) {\n                this.lexer.state.top = false;\n                list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n                if (!list.loose) {\n                    // Check if list should be loose\n                    const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n                    const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n                    list.loose = hasMultipleLineBreaks;\n                }\n            }\n            // Set all items to loose if list is loose\n            if (list.loose) {\n                for (let i = 0; i < list.items.length; i++) {\n                    list.items[i].loose = true;\n                }\n            }\n            return list;\n        }\n    }\n    html(src) {\n        const cap = this.rules.block.html.exec(src);\n        if (cap) {\n            const token = {\n                type: 'html',\n                block: true,\n                raw: cap[0],\n                pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n                text: cap[0],\n            };\n            return token;\n        }\n    }\n    def(src) {\n        const cap = this.rules.block.def.exec(src);\n        if (cap) {\n            const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n            const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n            const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n            return {\n                type: 'def',\n                tag,\n                raw: cap[0],\n                href,\n                title,\n            };\n        }\n    }\n    table(src) {\n        const cap = this.rules.block.table.exec(src);\n        if (!cap) {\n            return;\n        }\n        if (!/[:|]/.test(cap[2])) {\n            // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n            return;\n        }\n        const headers = splitCells(cap[1]);\n        const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n        const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n        const item = {\n            type: 'table',\n            raw: cap[0],\n            header: [],\n            align: [],\n            rows: [],\n        };\n        if (headers.length !== aligns.length) {\n            // header and align columns must be equal, rows can be different.\n            return;\n        }\n        for (const align of aligns) {\n            if (/^ *-+: *$/.test(align)) {\n                item.align.push('right');\n            }\n            else if (/^ *:-+: *$/.test(align)) {\n                item.align.push('center');\n            }\n            else if (/^ *:-+ *$/.test(align)) {\n                item.align.push('left');\n            }\n            else {\n                item.align.push(null);\n            }\n        }\n        for (let i = 0; i < headers.length; i++) {\n            item.header.push({\n                text: headers[i],\n                tokens: this.lexer.inline(headers[i]),\n                header: true,\n                align: item.align[i],\n            });\n        }\n        for (const row of rows) {\n            item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n                return {\n                    text: cell,\n                    tokens: this.lexer.inline(cell),\n                    header: false,\n                    align: item.align[i],\n                };\n            }));\n        }\n        return item;\n    }\n    lheading(src) {\n        const cap = this.rules.block.lheading.exec(src);\n        if (cap) {\n            return {\n                type: 'heading',\n                raw: cap[0],\n                depth: cap[2].charAt(0) === '=' ? 1 : 2,\n                text: cap[1],\n                tokens: this.lexer.inline(cap[1]),\n            };\n        }\n    }\n    paragraph(src) {\n        const cap = this.rules.block.paragraph.exec(src);\n        if (cap) {\n            const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n                ? cap[1].slice(0, -1)\n                : cap[1];\n            return {\n                type: 'paragraph',\n                raw: cap[0],\n                text,\n                tokens: this.lexer.inline(text),\n            };\n        }\n    }\n    text(src) {\n        const cap = this.rules.block.text.exec(src);\n        if (cap) {\n            return {\n                type: 'text',\n                raw: cap[0],\n                text: cap[0],\n                tokens: this.lexer.inline(cap[0]),\n            };\n        }\n    }\n    escape(src) {\n        const cap = this.rules.inline.escape.exec(src);\n        if (cap) {\n            return {\n                type: 'escape',\n                raw: cap[0],\n                text: escape$1(cap[1]),\n            };\n        }\n    }\n    tag(src) {\n        const cap = this.rules.inline.tag.exec(src);\n        if (cap) {\n            if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n                this.lexer.state.inLink = true;\n            }\n            else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n                this.lexer.state.inLink = false;\n            }\n            if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n                this.lexer.state.inRawBlock = true;\n            }\n            else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n                this.lexer.state.inRawBlock = false;\n            }\n            return {\n                type: 'html',\n                raw: cap[0],\n                inLink: this.lexer.state.inLink,\n                inRawBlock: this.lexer.state.inRawBlock,\n                block: false,\n                text: cap[0],\n            };\n        }\n    }\n    link(src) {\n        const cap = this.rules.inline.link.exec(src);\n        if (cap) {\n            const trimmedUrl = cap[2].trim();\n            if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n                // commonmark requires matching angle brackets\n                if (!(/>$/.test(trimmedUrl))) {\n                    return;\n                }\n                // ending angle bracket cannot be escaped\n                const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n                if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n                    return;\n                }\n            }\n            else {\n                // find closing parenthesis\n                const lastParenIndex = findClosingBracket(cap[2], '()');\n                if (lastParenIndex > -1) {\n                    const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n                    const linkLen = start + cap[1].length + lastParenIndex;\n                    cap[2] = cap[2].substring(0, lastParenIndex);\n                    cap[0] = cap[0].substring(0, linkLen).trim();\n                    cap[3] = '';\n                }\n            }\n            let href = cap[2];\n            let title = '';\n            if (this.options.pedantic) {\n                // split pedantic href and title\n                const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n                if (link) {\n                    href = link[1];\n                    title = link[3];\n                }\n            }\n            else {\n                title = cap[3] ? cap[3].slice(1, -1) : '';\n            }\n            href = href.trim();\n            if (/^</.test(href)) {\n                if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n                    // pedantic allows starting angle bracket without ending angle bracket\n                    href = href.slice(1);\n                }\n                else {\n                    href = href.slice(1, -1);\n                }\n            }\n            return outputLink(cap, {\n                href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n                title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n            }, cap[0], this.lexer);\n        }\n    }\n    reflink(src, links) {\n        let cap;\n        if ((cap = this.rules.inline.reflink.exec(src))\n            || (cap = this.rules.inline.nolink.exec(src))) {\n            const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n            const link = links[linkString.toLowerCase()];\n            if (!link) {\n                const text = cap[0].charAt(0);\n                return {\n                    type: 'text',\n                    raw: text,\n                    text,\n                };\n            }\n            return outputLink(cap, link, cap[0], this.lexer);\n        }\n    }\n    emStrong(src, maskedSrc, prevChar = '') {\n        let match = this.rules.inline.emStrongLDelim.exec(src);\n        if (!match)\n            return;\n        // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n        if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n            return;\n        const nextChar = match[1] || match[2] || '';\n        if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n            // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n            const lLength = [...match[0]].length - 1;\n            let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n            const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n            endReg.lastIndex = 0;\n            // Clip maskedSrc to same section of string as src (move to lexer?)\n            maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n            while ((match = endReg.exec(maskedSrc)) != null) {\n                rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n                if (!rDelim)\n                    continue; // skip single * in __abc*abc__\n                rLength = [...rDelim].length;\n                if (match[3] || match[4]) { // found another Left Delim\n                    delimTotal += rLength;\n                    continue;\n                }\n                else if (match[5] || match[6]) { // either Left or Right Delim\n                    if (lLength % 3 && !((lLength + rLength) % 3)) {\n                        midDelimTotal += rLength;\n                        continue; // CommonMark Emphasis Rules 9-10\n                    }\n                }\n                delimTotal -= rLength;\n                if (delimTotal > 0)\n                    continue; // Haven't found enough closing delimiters\n                // Remove extra characters. *a*** -> *a*\n                rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n                // char length can be >1 for unicode characters;\n                const lastCharLength = [...match[0]][0].length;\n                const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n                // Create `em` if smallest delimiter has odd char count. *a***\n                if (Math.min(lLength, rLength) % 2) {\n                    const text = raw.slice(1, -1);\n                    return {\n                        type: 'em',\n                        raw,\n                        text,\n                        tokens: this.lexer.inlineTokens(text),\n                    };\n                }\n                // Create 'strong' if smallest delimiter has even char count. **a***\n                const text = raw.slice(2, -2);\n                return {\n                    type: 'strong',\n                    raw,\n                    text,\n                    tokens: this.lexer.inlineTokens(text),\n                };\n            }\n        }\n    }\n    codespan(src) {\n        const cap = this.rules.inline.code.exec(src);\n        if (cap) {\n            let text = cap[2].replace(/\\n/g, ' ');\n            const hasNonSpaceChars = /[^ ]/.test(text);\n            const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n            if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n                text = text.substring(1, text.length - 1);\n            }\n            text = escape$1(text, true);\n            return {\n                type: 'codespan',\n                raw: cap[0],\n                text,\n            };\n        }\n    }\n    br(src) {\n        const cap = this.rules.inline.br.exec(src);\n        if (cap) {\n            return {\n                type: 'br',\n                raw: cap[0],\n            };\n        }\n    }\n    del(src) {\n        const cap = this.rules.inline.del.exec(src);\n        if (cap) {\n            return {\n                type: 'del',\n                raw: cap[0],\n                text: cap[2],\n                tokens: this.lexer.inlineTokens(cap[2]),\n            };\n        }\n    }\n    autolink(src) {\n        const cap = this.rules.inline.autolink.exec(src);\n        if (cap) {\n            let text, href;\n            if (cap[2] === '@') {\n                text = escape$1(cap[1]);\n                href = 'mailto:' + text;\n            }\n            else {\n                text = escape$1(cap[1]);\n                href = text;\n            }\n            return {\n                type: 'link',\n                raw: cap[0],\n                text,\n                href,\n                tokens: [\n                    {\n                        type: 'text',\n                        raw: text,\n                        text,\n                    },\n                ],\n            };\n        }\n    }\n    url(src) {\n        let cap;\n        if (cap = this.rules.inline.url.exec(src)) {\n            let text, href;\n            if (cap[2] === '@') {\n                text = escape$1(cap[0]);\n                href = 'mailto:' + text;\n            }\n            else {\n                // do extended autolink path validation\n                let prevCapZero;\n                do {\n                    prevCapZero = cap[0];\n                    cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n                } while (prevCapZero !== cap[0]);\n                text = escape$1(cap[0]);\n                if (cap[1] === 'www.') {\n                    href = 'http://' + cap[0];\n                }\n                else {\n                    href = cap[0];\n                }\n            }\n            return {\n                type: 'link',\n                raw: cap[0],\n                text,\n                href,\n                tokens: [\n                    {\n                        type: 'text',\n                        raw: text,\n                        text,\n                    },\n                ],\n            };\n        }\n    }\n    inlineText(src) {\n        const cap = this.rules.inline.text.exec(src);\n        if (cap) {\n            let text;\n            if (this.lexer.state.inRawBlock) {\n                text = cap[0];\n            }\n            else {\n                text = escape$1(cap[0]);\n            }\n            return {\n                type: 'text',\n                raw: cap[0],\n                text,\n            };\n        }\n    }\n}\n\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n    .replace(/bull/g, bullet) // lists can interrupt\n    .replace(/blockCode/g, / {4}/) // indented code blocks can interrupt\n    .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n    .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n    .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n    .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n    .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n    .replace('label', _blockLabel)\n    .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n    .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n    .replace(/bull/g, bullet)\n    .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n    + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n    + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n    + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n    + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n    + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n    + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n    + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n    + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n    + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n    + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n    + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n    + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n    + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n    + ')', 'i')\n    .replace('comment', _comment)\n    .replace('tag', _tag)\n    .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n    .getRegex();\nconst paragraph = edit(_paragraph)\n    .replace('hr', hr)\n    .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n    .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n    .replace('|table', '')\n    .replace('blockquote', ' {0,3}>')\n    .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n    .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n    .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n    .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n    .replace('paragraph', paragraph)\n    .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n    blockquote,\n    code: blockCode,\n    def,\n    fences,\n    heading,\n    hr,\n    html,\n    lheading,\n    list,\n    newline,\n    paragraph,\n    table: noopTest,\n    text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n    + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n    + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n    .replace('hr', hr)\n    .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n    .replace('blockquote', ' {0,3}>')\n    .replace('code', ' {4}[^\\\\n]')\n    .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n    .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n    .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n    .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n    .getRegex();\nconst blockGfm = {\n    ...blockNormal,\n    table: gfmTable,\n    paragraph: edit(_paragraph)\n        .replace('hr', hr)\n        .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n        .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n        .replace('table', gfmTable) // interrupt paragraphs with table\n        .replace('blockquote', ' {0,3}>')\n        .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n        .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n        .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n        .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n        .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n    ...blockNormal,\n    html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n        + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n        + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n        .replace('comment', _comment)\n        .replace(/tag/g, '(?!(?:'\n        + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n        + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n        + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n        .getRegex(),\n    def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n    heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n    fences: noopTest, // fences not supported\n    lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n    paragraph: edit(_paragraph)\n        .replace('hr', hr)\n        .replace('heading', ' *#{1,6} *[^\\n]')\n        .replace('lheading', lheading)\n        .replace('|table', '')\n        .replace('blockquote', ' {0,3}>')\n        .replace('|fences', '')\n        .replace('|list', '')\n        .replace('|html', '')\n        .replace('|tag', '')\n        .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = '\\\\p{P}\\\\p{S}';\nconst punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u')\n    .replace(/punctuation/g, _punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n    + '|[^*]+(?=[^*])' // Consume to delim\n    + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n    + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n    + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n    + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n    + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n    + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n    .replace(/punct/g, _punctuation)\n    .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n    + '|[^_]+(?=[^_])' // Consume to delim\n    + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n    + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n    + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n    + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n    + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n    .replace(/punct/g, _punctuation)\n    .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n    .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n    .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n    .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n    + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n    + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n    + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n    + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n    + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n    .replace('comment', _inlineComment)\n    .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n    .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n    .replace('label', _inlineLabel)\n    .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n    .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n    .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n    .replace('label', _inlineLabel)\n    .replace('ref', _blockLabel)\n    .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n    .replace('ref', _blockLabel)\n    .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n    .replace('reflink', reflink)\n    .replace('nolink', nolink)\n    .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n    _backpedal: noopTest, // only used for GFM url\n    anyPunctuation,\n    autolink,\n    blockSkip,\n    br,\n    code: inlineCode,\n    del: noopTest,\n    emStrongLDelim,\n    emStrongRDelimAst,\n    emStrongRDelimUnd,\n    escape,\n    link,\n    nolink,\n    punctuation,\n    reflink,\n    reflinkSearch,\n    tag,\n    text: inlineText,\n    url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n    ...inlineNormal,\n    link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n        .replace('label', _inlineLabel)\n        .getRegex(),\n    reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n        .replace('label', _inlineLabel)\n        .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n    ...inlineNormal,\n    escape: edit(escape).replace('])', '~|])').getRegex(),\n    url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n        .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n        .getRegex(),\n    _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n    del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n    text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/,\n};\n/**\n * GFM + Line Breaks Inline Grammar\n */\nconst inlineBreaks = {\n    ...inlineGfm,\n    br: edit(br).replace('{2,}', '*').getRegex(),\n    text: edit(inlineGfm.text)\n        .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n        .replace(/\\{2,\\}/g, '*')\n        .getRegex(),\n};\n/**\n * exports\n */\nconst block = {\n    normal: blockNormal,\n    gfm: blockGfm,\n    pedantic: blockPedantic,\n};\nconst inline = {\n    normal: inlineNormal,\n    gfm: inlineGfm,\n    breaks: inlineBreaks,\n    pedantic: inlinePedantic,\n};\n\n/**\n * Block Lexer\n */\nclass _Lexer {\n    tokens;\n    options;\n    state;\n    tokenizer;\n    inlineQueue;\n    constructor(options) {\n        // TokenList cannot be created in one go\n        this.tokens = [];\n        this.tokens.links = Object.create(null);\n        this.options = options || _defaults;\n        this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n        this.tokenizer = this.options.tokenizer;\n        this.tokenizer.options = this.options;\n        this.tokenizer.lexer = this;\n        this.inlineQueue = [];\n        this.state = {\n            inLink: false,\n            inRawBlock: false,\n            top: true,\n        };\n        const rules = {\n            block: block.normal,\n            inline: inline.normal,\n        };\n        if (this.options.pedantic) {\n            rules.block = block.pedantic;\n            rules.inline = inline.pedantic;\n        }\n        else if (this.options.gfm) {\n            rules.block = block.gfm;\n            if (this.options.breaks) {\n                rules.inline = inline.breaks;\n            }\n            else {\n                rules.inline = inline.gfm;\n            }\n        }\n        this.tokenizer.rules = rules;\n    }\n    /**\n     * Expose Rules\n     */\n    static get rules() {\n        return {\n            block,\n            inline,\n        };\n    }\n    /**\n     * Static Lex Method\n     */\n    static lex(src, options) {\n        const lexer = new _Lexer(options);\n        return lexer.lex(src);\n    }\n    /**\n     * Static Lex Inline Method\n     */\n    static lexInline(src, options) {\n        const lexer = new _Lexer(options);\n        return lexer.inlineTokens(src);\n    }\n    /**\n     * Preprocessing\n     */\n    lex(src) {\n        src = src\n            .replace(/\\r\\n|\\r/g, '\\n');\n        this.blockTokens(src, this.tokens);\n        for (let i = 0; i < this.inlineQueue.length; i++) {\n            const next = this.inlineQueue[i];\n            this.inlineTokens(next.src, next.tokens);\n        }\n        this.inlineQueue = [];\n        return this.tokens;\n    }\n    blockTokens(src, tokens = [], lastParagraphClipped = false) {\n        if (this.options.pedantic) {\n            src = src.replace(/\\t/g, '    ').replace(/^ +$/gm, '');\n        }\n        else {\n            src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n                return leading + '    '.repeat(tabs.length);\n            });\n        }\n        let token;\n        let lastToken;\n        let cutSrc;\n        while (src) {\n            if (this.options.extensions\n                && this.options.extensions.block\n                && this.options.extensions.block.some((extTokenizer) => {\n                    if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n                        src = src.substring(token.raw.length);\n                        tokens.push(token);\n                        return true;\n                    }\n                    return false;\n                })) {\n                continue;\n            }\n            // newline\n            if (token = this.tokenizer.space(src)) {\n                src = src.substring(token.raw.length);\n                if (token.raw.length === 1 && tokens.length > 0) {\n                    // if there's a single \\n as a spacer, it's terminating the last line,\n                    // so move it there so that we don't get unnecessary paragraph tags\n                    tokens[tokens.length - 1].raw += '\\n';\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // code\n            if (token = this.tokenizer.code(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                // An indented code block cannot interrupt a paragraph.\n                if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // fences\n            if (token = this.tokenizer.fences(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // heading\n            if (token = this.tokenizer.heading(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // hr\n            if (token = this.tokenizer.hr(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // blockquote\n            if (token = this.tokenizer.blockquote(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // list\n            if (token = this.tokenizer.list(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // html\n            if (token = this.tokenizer.html(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // def\n            if (token = this.tokenizer.def(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.raw;\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else if (!this.tokens.links[token.tag]) {\n                    this.tokens.links[token.tag] = {\n                        href: token.href,\n                        title: token.title,\n                    };\n                }\n                continue;\n            }\n            // table (gfm)\n            if (token = this.tokenizer.table(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // lheading\n            if (token = this.tokenizer.lheading(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // top-level paragraph\n            // prevent paragraph consuming extensions by clipping 'src' to extension start\n            cutSrc = src;\n            if (this.options.extensions && this.options.extensions.startBlock) {\n                let startIndex = Infinity;\n                const tempSrc = src.slice(1);\n                let tempStart;\n                this.options.extensions.startBlock.forEach((getStartIndex) => {\n                    tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n                    if (typeof tempStart === 'number' && tempStart >= 0) {\n                        startIndex = Math.min(startIndex, tempStart);\n                    }\n                });\n                if (startIndex < Infinity && startIndex >= 0) {\n                    cutSrc = src.substring(0, startIndex + 1);\n                }\n            }\n            if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n                lastToken = tokens[tokens.length - 1];\n                if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue.pop();\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                lastParagraphClipped = (cutSrc.length !== src.length);\n                src = src.substring(token.raw.length);\n                continue;\n            }\n            // text\n            if (token = this.tokenizer.text(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && lastToken.type === 'text') {\n                    lastToken.raw += '\\n' + token.raw;\n                    lastToken.text += '\\n' + token.text;\n                    this.inlineQueue.pop();\n                    this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            if (src) {\n                const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n                if (this.options.silent) {\n                    console.error(errMsg);\n                    break;\n                }\n                else {\n                    throw new Error(errMsg);\n                }\n            }\n        }\n        this.state.top = true;\n        return tokens;\n    }\n    inline(src, tokens = []) {\n        this.inlineQueue.push({ src, tokens });\n        return tokens;\n    }\n    /**\n     * Lexing/Compiling\n     */\n    inlineTokens(src, tokens = []) {\n        let token, lastToken, cutSrc;\n        // String with links masked to avoid interference with em and strong\n        let maskedSrc = src;\n        let match;\n        let keepPrevChar, prevChar;\n        // Mask out reflinks\n        if (this.tokens.links) {\n            const links = Object.keys(this.tokens.links);\n            if (links.length > 0) {\n                while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n                    if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n                        maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n                    }\n                }\n            }\n        }\n        // Mask out other blocks\n        while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n        }\n        // Mask out escaped characters\n        while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n            maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n        }\n        while (src) {\n            if (!keepPrevChar) {\n                prevChar = '';\n            }\n            keepPrevChar = false;\n            // extensions\n            if (this.options.extensions\n                && this.options.extensions.inline\n                && this.options.extensions.inline.some((extTokenizer) => {\n                    if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n                        src = src.substring(token.raw.length);\n                        tokens.push(token);\n                        return true;\n                    }\n                    return false;\n                })) {\n                continue;\n            }\n            // escape\n            if (token = this.tokenizer.escape(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // tag\n            if (token = this.tokenizer.tag(src)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // link\n            if (token = this.tokenizer.link(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // reflink, nolink\n            if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n                src = src.substring(token.raw.length);\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            // em & strong\n            if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // code\n            if (token = this.tokenizer.codespan(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // br\n            if (token = this.tokenizer.br(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // del (gfm)\n            if (token = this.tokenizer.del(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // autolink\n            if (token = this.tokenizer.autolink(src)) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // url (gfm)\n            if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n                src = src.substring(token.raw.length);\n                tokens.push(token);\n                continue;\n            }\n            // text\n            // prevent inlineText consuming extensions by clipping 'src' to extension start\n            cutSrc = src;\n            if (this.options.extensions && this.options.extensions.startInline) {\n                let startIndex = Infinity;\n                const tempSrc = src.slice(1);\n                let tempStart;\n                this.options.extensions.startInline.forEach((getStartIndex) => {\n                    tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n                    if (typeof tempStart === 'number' && tempStart >= 0) {\n                        startIndex = Math.min(startIndex, tempStart);\n                    }\n                });\n                if (startIndex < Infinity && startIndex >= 0) {\n                    cutSrc = src.substring(0, startIndex + 1);\n                }\n            }\n            if (token = this.tokenizer.inlineText(cutSrc)) {\n                src = src.substring(token.raw.length);\n                if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n                    prevChar = token.raw.slice(-1);\n                }\n                keepPrevChar = true;\n                lastToken = tokens[tokens.length - 1];\n                if (lastToken && lastToken.type === 'text') {\n                    lastToken.raw += token.raw;\n                    lastToken.text += token.text;\n                }\n                else {\n                    tokens.push(token);\n                }\n                continue;\n            }\n            if (src) {\n                const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n                if (this.options.silent) {\n                    console.error(errMsg);\n                    break;\n                }\n                else {\n                    throw new Error(errMsg);\n                }\n            }\n        }\n        return tokens;\n    }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n    options;\n    parser; // set by the parser\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    space(token) {\n        return '';\n    }\n    code({ text, lang, escaped }) {\n        const langString = (lang || '').match(/^\\S*/)?.[0];\n        const code = text.replace(/\\n$/, '') + '\\n';\n        if (!langString) {\n            return '<pre><code>'\n                + (escaped ? code : escape$1(code, true))\n                + '</code></pre>\\n';\n        }\n        return '<pre><code class=\"language-'\n            + escape$1(langString)\n            + '\">'\n            + (escaped ? code : escape$1(code, true))\n            + '</code></pre>\\n';\n    }\n    blockquote({ tokens }) {\n        const body = this.parser.parse(tokens);\n        return `<blockquote>\\n${body}</blockquote>\\n`;\n    }\n    html({ text }) {\n        return text;\n    }\n    heading({ tokens, depth }) {\n        return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\\n`;\n    }\n    hr(token) {\n        return '<hr>\\n';\n    }\n    list(token) {\n        const ordered = token.ordered;\n        const start = token.start;\n        let body = '';\n        for (let j = 0; j < token.items.length; j++) {\n            const item = token.items[j];\n            body += this.listitem(item);\n        }\n        const type = ordered ? 'ol' : 'ul';\n        const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n        return '<' + type + startAttr + '>\\n' + body + '</' + type + '>\\n';\n    }\n    listitem(item) {\n        let itemBody = '';\n        if (item.task) {\n            const checkbox = this.checkbox({ checked: !!item.checked });\n            if (item.loose) {\n                if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n                    item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n                    if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                        item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n                    }\n                }\n                else {\n                    item.tokens.unshift({\n                        type: 'text',\n                        raw: checkbox + ' ',\n                        text: checkbox + ' ',\n                    });\n                }\n            }\n            else {\n                itemBody += checkbox + ' ';\n            }\n        }\n        itemBody += this.parser.parse(item.tokens, !!item.loose);\n        return `<li>${itemBody}</li>\\n`;\n    }\n    checkbox({ checked }) {\n        return '<input '\n            + (checked ? 'checked=\"\" ' : '')\n            + 'disabled=\"\" type=\"checkbox\">';\n    }\n    paragraph({ tokens }) {\n        return `<p>${this.parser.parseInline(tokens)}</p>\\n`;\n    }\n    table(token) {\n        let header = '';\n        // header\n        let cell = '';\n        for (let j = 0; j < token.header.length; j++) {\n            cell += this.tablecell(token.header[j]);\n        }\n        header += this.tablerow({ text: cell });\n        let body = '';\n        for (let j = 0; j < token.rows.length; j++) {\n            const row = token.rows[j];\n            cell = '';\n            for (let k = 0; k < row.length; k++) {\n                cell += this.tablecell(row[k]);\n            }\n            body += this.tablerow({ text: cell });\n        }\n        if (body)\n            body = `<tbody>${body}</tbody>`;\n        return '<table>\\n'\n            + '<thead>\\n'\n            + header\n            + '</thead>\\n'\n            + body\n            + '</table>\\n';\n    }\n    tablerow({ text }) {\n        return `<tr>\\n${text}</tr>\\n`;\n    }\n    tablecell(token) {\n        const content = this.parser.parseInline(token.tokens);\n        const type = token.header ? 'th' : 'td';\n        const tag = token.align\n            ? `<${type} align=\"${token.align}\">`\n            : `<${type}>`;\n        return tag + content + `</${type}>\\n`;\n    }\n    /**\n     * span level renderer\n     */\n    strong({ tokens }) {\n        return `<strong>${this.parser.parseInline(tokens)}</strong>`;\n    }\n    em({ tokens }) {\n        return `<em>${this.parser.parseInline(tokens)}</em>`;\n    }\n    codespan({ text }) {\n        return `<code>${text}</code>`;\n    }\n    br(token) {\n        return '<br>';\n    }\n    del({ tokens }) {\n        return `<del>${this.parser.parseInline(tokens)}</del>`;\n    }\n    link({ href, title, tokens }) {\n        const text = this.parser.parseInline(tokens);\n        const cleanHref = cleanUrl(href);\n        if (cleanHref === null) {\n            return text;\n        }\n        href = cleanHref;\n        let out = '<a href=\"' + href + '\"';\n        if (title) {\n            out += ' title=\"' + title + '\"';\n        }\n        out += '>' + text + '</a>';\n        return out;\n    }\n    image({ href, title, text }) {\n        const cleanHref = cleanUrl(href);\n        if (cleanHref === null) {\n            return text;\n        }\n        href = cleanHref;\n        let out = `<img src=\"${href}\" alt=\"${text}\"`;\n        if (title) {\n            out += ` title=\"${title}\"`;\n        }\n        out += '>';\n        return out;\n    }\n    text(token) {\n        return 'tokens' in token && token.tokens ? this.parser.parseInline(token.tokens) : token.text;\n    }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n    // no need for block level renderers\n    strong({ text }) {\n        return text;\n    }\n    em({ text }) {\n        return text;\n    }\n    codespan({ text }) {\n        return text;\n    }\n    del({ text }) {\n        return text;\n    }\n    html({ text }) {\n        return text;\n    }\n    text({ text }) {\n        return text;\n    }\n    link({ text }) {\n        return '' + text;\n    }\n    image({ text }) {\n        return '' + text;\n    }\n    br() {\n        return '';\n    }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n    options;\n    renderer;\n    textRenderer;\n    constructor(options) {\n        this.options = options || _defaults;\n        this.options.renderer = this.options.renderer || new _Renderer();\n        this.renderer = this.options.renderer;\n        this.renderer.options = this.options;\n        this.renderer.parser = this;\n        this.textRenderer = new _TextRenderer();\n    }\n    /**\n     * Static Parse Method\n     */\n    static parse(tokens, options) {\n        const parser = new _Parser(options);\n        return parser.parse(tokens);\n    }\n    /**\n     * Static Parse Inline Method\n     */\n    static parseInline(tokens, options) {\n        const parser = new _Parser(options);\n        return parser.parseInline(tokens);\n    }\n    /**\n     * Parse Loop\n     */\n    parse(tokens, top = true) {\n        let out = '';\n        for (let i = 0; i < tokens.length; i++) {\n            const anyToken = tokens[i];\n            // Run any renderer extensions\n            if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {\n                const genericToken = anyToken;\n                const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n                if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n                    out += ret || '';\n                    continue;\n                }\n            }\n            const token = anyToken;\n            switch (token.type) {\n                case 'space': {\n                    out += this.renderer.space(token);\n                    continue;\n                }\n                case 'hr': {\n                    out += this.renderer.hr(token);\n                    continue;\n                }\n                case 'heading': {\n                    out += this.renderer.heading(token);\n                    continue;\n                }\n                case 'code': {\n                    out += this.renderer.code(token);\n                    continue;\n                }\n                case 'table': {\n                    out += this.renderer.table(token);\n                    continue;\n                }\n                case 'blockquote': {\n                    out += this.renderer.blockquote(token);\n                    continue;\n                }\n                case 'list': {\n                    out += this.renderer.list(token);\n                    continue;\n                }\n                case 'html': {\n                    out += this.renderer.html(token);\n                    continue;\n                }\n                case 'paragraph': {\n                    out += this.renderer.paragraph(token);\n                    continue;\n                }\n                case 'text': {\n                    let textToken = token;\n                    let body = this.renderer.text(textToken);\n                    while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n                        textToken = tokens[++i];\n                        body += '\\n' + this.renderer.text(textToken);\n                    }\n                    if (top) {\n                        out += this.renderer.paragraph({\n                            type: 'paragraph',\n                            raw: body,\n                            text: body,\n                            tokens: [{ type: 'text', raw: body, text: body }],\n                        });\n                    }\n                    else {\n                        out += body;\n                    }\n                    continue;\n                }\n                default: {\n                    const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n                    if (this.options.silent) {\n                        console.error(errMsg);\n                        return '';\n                    }\n                    else {\n                        throw new Error(errMsg);\n                    }\n                }\n            }\n        }\n        return out;\n    }\n    /**\n     * Parse Inline Tokens\n     */\n    parseInline(tokens, renderer) {\n        renderer = renderer || this.renderer;\n        let out = '';\n        for (let i = 0; i < tokens.length; i++) {\n            const anyToken = tokens[i];\n            // Run any renderer extensions\n            if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[anyToken.type]) {\n                const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n                if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n                    out += ret || '';\n                    continue;\n                }\n            }\n            const token = anyToken;\n            switch (token.type) {\n                case 'escape': {\n                    out += renderer.text(token);\n                    break;\n                }\n                case 'html': {\n                    out += renderer.html(token);\n                    break;\n                }\n                case 'link': {\n                    out += renderer.link(token);\n                    break;\n                }\n                case 'image': {\n                    out += renderer.image(token);\n                    break;\n                }\n                case 'strong': {\n                    out += renderer.strong(token);\n                    break;\n                }\n                case 'em': {\n                    out += renderer.em(token);\n                    break;\n                }\n                case 'codespan': {\n                    out += renderer.codespan(token);\n                    break;\n                }\n                case 'br': {\n                    out += renderer.br(token);\n                    break;\n                }\n                case 'del': {\n                    out += renderer.del(token);\n                    break;\n                }\n                case 'text': {\n                    out += renderer.text(token);\n                    break;\n                }\n                default: {\n                    const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n                    if (this.options.silent) {\n                        console.error(errMsg);\n                        return '';\n                    }\n                    else {\n                        throw new Error(errMsg);\n                    }\n                }\n            }\n        }\n        return out;\n    }\n}\n\nclass _Hooks {\n    options;\n    constructor(options) {\n        this.options = options || _defaults;\n    }\n    static passThroughHooks = new Set([\n        'preprocess',\n        'postprocess',\n        'processAllTokens',\n    ]);\n    /**\n     * Process markdown before marked\n     */\n    preprocess(markdown) {\n        return markdown;\n    }\n    /**\n     * Process HTML after marked is finished\n     */\n    postprocess(html) {\n        return html;\n    }\n    /**\n     * Process all tokens before walk tokens\n     */\n    processAllTokens(tokens) {\n        return tokens;\n    }\n}\n\nclass Marked {\n    defaults = _getDefaults();\n    options = this.setOptions;\n    parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n    parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n    Parser = _Parser;\n    Renderer = _Renderer;\n    TextRenderer = _TextRenderer;\n    Lexer = _Lexer;\n    Tokenizer = _Tokenizer;\n    Hooks = _Hooks;\n    constructor(...args) {\n        this.use(...args);\n    }\n    /**\n     * Run callback for every token\n     */\n    walkTokens(tokens, callback) {\n        let values = [];\n        for (const token of tokens) {\n            values = values.concat(callback.call(this, token));\n            switch (token.type) {\n                case 'table': {\n                    const tableToken = token;\n                    for (const cell of tableToken.header) {\n                        values = values.concat(this.walkTokens(cell.tokens, callback));\n                    }\n                    for (const row of tableToken.rows) {\n                        for (const cell of row) {\n                            values = values.concat(this.walkTokens(cell.tokens, callback));\n                        }\n                    }\n                    break;\n                }\n                case 'list': {\n                    const listToken = token;\n                    values = values.concat(this.walkTokens(listToken.items, callback));\n                    break;\n                }\n                default: {\n                    const genericToken = token;\n                    if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n                        this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n                            const tokens = genericToken[childTokens].flat(Infinity);\n                            values = values.concat(this.walkTokens(tokens, callback));\n                        });\n                    }\n                    else if (genericToken.tokens) {\n                        values = values.concat(this.walkTokens(genericToken.tokens, callback));\n                    }\n                }\n            }\n        }\n        return values;\n    }\n    use(...args) {\n        const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n        args.forEach((pack) => {\n            // copy options to new object\n            const opts = { ...pack };\n            // set async to true if it was set to true before\n            opts.async = this.defaults.async || opts.async || false;\n            // ==-- Parse \"addon\" extensions --== //\n            if (pack.extensions) {\n                pack.extensions.forEach((ext) => {\n                    if (!ext.name) {\n                        throw new Error('extension name required');\n                    }\n                    if ('renderer' in ext) { // Renderer extensions\n                        const prevRenderer = extensions.renderers[ext.name];\n                        if (prevRenderer) {\n                            // Replace extension with func to run new extension but fall back if false\n                            extensions.renderers[ext.name] = function (...args) {\n                                let ret = ext.renderer.apply(this, args);\n                                if (ret === false) {\n                                    ret = prevRenderer.apply(this, args);\n                                }\n                                return ret;\n                            };\n                        }\n                        else {\n                            extensions.renderers[ext.name] = ext.renderer;\n                        }\n                    }\n                    if ('tokenizer' in ext) { // Tokenizer Extensions\n                        if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n                            throw new Error(\"extension level must be 'block' or 'inline'\");\n                        }\n                        const extLevel = extensions[ext.level];\n                        if (extLevel) {\n                            extLevel.unshift(ext.tokenizer);\n                        }\n                        else {\n                            extensions[ext.level] = [ext.tokenizer];\n                        }\n                        if (ext.start) { // Function to check for start of token\n                            if (ext.level === 'block') {\n                                if (extensions.startBlock) {\n                                    extensions.startBlock.push(ext.start);\n                                }\n                                else {\n                                    extensions.startBlock = [ext.start];\n                                }\n                            }\n                            else if (ext.level === 'inline') {\n                                if (extensions.startInline) {\n                                    extensions.startInline.push(ext.start);\n                                }\n                                else {\n                                    extensions.startInline = [ext.start];\n                                }\n                            }\n                        }\n                    }\n                    if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n                        extensions.childTokens[ext.name] = ext.childTokens;\n                    }\n                });\n                opts.extensions = extensions;\n            }\n            // ==-- Parse \"overwrite\" extensions --== //\n            if (pack.renderer) {\n                const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n                for (const prop in pack.renderer) {\n                    if (!(prop in renderer)) {\n                        throw new Error(`renderer '${prop}' does not exist`);\n                    }\n                    if (['options', 'parser'].includes(prop)) {\n                        // ignore options property\n                        continue;\n                    }\n                    const rendererProp = prop;\n                    let rendererFunc = pack.renderer[rendererProp];\n                    if (!pack.useNewRenderer) {\n                        // TODO: Remove this in next major version\n                        rendererFunc = this.#convertRendererFunction(rendererFunc, rendererProp, renderer);\n                    }\n                    const prevRenderer = renderer[rendererProp];\n                    // Replace renderer with func to run extension, but fall back if false\n                    renderer[rendererProp] = (...args) => {\n                        let ret = rendererFunc.apply(renderer, args);\n                        if (ret === false) {\n                            ret = prevRenderer.apply(renderer, args);\n                        }\n                        return ret || '';\n                    };\n                }\n                opts.renderer = renderer;\n            }\n            if (pack.tokenizer) {\n                const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n                for (const prop in pack.tokenizer) {\n                    if (!(prop in tokenizer)) {\n                        throw new Error(`tokenizer '${prop}' does not exist`);\n                    }\n                    if (['options', 'rules', 'lexer'].includes(prop)) {\n                        // ignore options, rules, and lexer properties\n                        continue;\n                    }\n                    const tokenizerProp = prop;\n                    const tokenizerFunc = pack.tokenizer[tokenizerProp];\n                    const prevTokenizer = tokenizer[tokenizerProp];\n                    // Replace tokenizer with func to run extension, but fall back if false\n                    // @ts-expect-error cannot type tokenizer function dynamically\n                    tokenizer[tokenizerProp] = (...args) => {\n                        let ret = tokenizerFunc.apply(tokenizer, args);\n                        if (ret === false) {\n                            ret = prevTokenizer.apply(tokenizer, args);\n                        }\n                        return ret;\n                    };\n                }\n                opts.tokenizer = tokenizer;\n            }\n            // ==-- Parse Hooks extensions --== //\n            if (pack.hooks) {\n                const hooks = this.defaults.hooks || new _Hooks();\n                for (const prop in pack.hooks) {\n                    if (!(prop in hooks)) {\n                        throw new Error(`hook '${prop}' does not exist`);\n                    }\n                    if (prop === 'options') {\n                        // ignore options property\n                        continue;\n                    }\n                    const hooksProp = prop;\n                    const hooksFunc = pack.hooks[hooksProp];\n                    const prevHook = hooks[hooksProp];\n                    if (_Hooks.passThroughHooks.has(prop)) {\n                        // @ts-expect-error cannot type hook function dynamically\n                        hooks[hooksProp] = (arg) => {\n                            if (this.defaults.async) {\n                                return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n                                    return prevHook.call(hooks, ret);\n                                });\n                            }\n                            const ret = hooksFunc.call(hooks, arg);\n                            return prevHook.call(hooks, ret);\n                        };\n                    }\n                    else {\n                        // @ts-expect-error cannot type hook function dynamically\n                        hooks[hooksProp] = (...args) => {\n                            let ret = hooksFunc.apply(hooks, args);\n                            if (ret === false) {\n                                ret = prevHook.apply(hooks, args);\n                            }\n                            return ret;\n                        };\n                    }\n                }\n                opts.hooks = hooks;\n            }\n            // ==-- Parse WalkTokens extensions --== //\n            if (pack.walkTokens) {\n                const walkTokens = this.defaults.walkTokens;\n                const packWalktokens = pack.walkTokens;\n                opts.walkTokens = function (token) {\n                    let values = [];\n                    values.push(packWalktokens.call(this, token));\n                    if (walkTokens) {\n                        values = values.concat(walkTokens.call(this, token));\n                    }\n                    return values;\n                };\n            }\n            this.defaults = { ...this.defaults, ...opts };\n        });\n        return this;\n    }\n    // TODO: Remove this in next major release\n    #convertRendererFunction(func, prop, renderer) {\n        switch (prop) {\n            case 'heading':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, renderer.parser.parseInline(token.tokens), token.depth, unescape(renderer.parser.parseInline(token.tokens, renderer.parser.textRenderer)));\n                };\n            case 'code':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.text, token.lang, !!token.escaped);\n                };\n            case 'table':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    let header = '';\n                    // header\n                    let cell = '';\n                    for (let j = 0; j < token.header.length; j++) {\n                        cell += this.tablecell({\n                            text: token.header[j].text,\n                            tokens: token.header[j].tokens,\n                            header: true,\n                            align: token.align[j],\n                        });\n                    }\n                    header += this.tablerow({ text: cell });\n                    let body = '';\n                    for (let j = 0; j < token.rows.length; j++) {\n                        const row = token.rows[j];\n                        cell = '';\n                        for (let k = 0; k < row.length; k++) {\n                            cell += this.tablecell({\n                                text: row[k].text,\n                                tokens: row[k].tokens,\n                                header: false,\n                                align: token.align[k],\n                            });\n                        }\n                        body += this.tablerow({ text: cell });\n                    }\n                    return func.call(this, header, body);\n                };\n            case 'blockquote':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    const body = this.parser.parse(token.tokens);\n                    return func.call(this, body);\n                };\n            case 'list':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    const ordered = token.ordered;\n                    const start = token.start;\n                    const loose = token.loose;\n                    let body = '';\n                    for (let j = 0; j < token.items.length; j++) {\n                        const item = token.items[j];\n                        const checked = item.checked;\n                        const task = item.task;\n                        let itemBody = '';\n                        if (item.task) {\n                            const checkbox = this.checkbox({ checked: !!checked });\n                            if (loose) {\n                                if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n                                    item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n                                    if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n                                        item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n                                    }\n                                }\n                                else {\n                                    item.tokens.unshift({\n                                        type: 'text',\n                                        text: checkbox + ' ',\n                                    });\n                                }\n                            }\n                            else {\n                                itemBody += checkbox + ' ';\n                            }\n                        }\n                        itemBody += this.parser.parse(item.tokens, loose);\n                        body += this.listitem({\n                            type: 'list_item',\n                            raw: itemBody,\n                            text: itemBody,\n                            task,\n                            checked: !!checked,\n                            loose,\n                            tokens: item.tokens,\n                        });\n                    }\n                    return func.call(this, body, ordered, start);\n                };\n            case 'html':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.text, token.block);\n                };\n            case 'paragraph':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, this.parser.parseInline(token.tokens));\n                };\n            case 'escape':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.text);\n                };\n            case 'link':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.href, token.title, this.parser.parseInline(token.tokens));\n                };\n            case 'image':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.href, token.title, token.text);\n                };\n            case 'strong':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, this.parser.parseInline(token.tokens));\n                };\n            case 'em':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, this.parser.parseInline(token.tokens));\n                };\n            case 'codespan':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.text);\n                };\n            case 'del':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, this.parser.parseInline(token.tokens));\n                };\n            case 'text':\n                return function (token) {\n                    if (!token.type || token.type !== prop) {\n                        // @ts-ignore\n                        // eslint-disable-next-line prefer-rest-params\n                        return func.apply(this, arguments);\n                    }\n                    return func.call(this, token.text);\n                };\n            // do nothing\n        }\n        return func;\n    }\n    setOptions(opt) {\n        this.defaults = { ...this.defaults, ...opt };\n        return this;\n    }\n    lexer(src, options) {\n        return _Lexer.lex(src, options ?? this.defaults);\n    }\n    parser(tokens, options) {\n        return _Parser.parse(tokens, options ?? this.defaults);\n    }\n    #parseMarkdown(lexer, parser) {\n        return (src, options) => {\n            const origOpt = { ...options };\n            const opt = { ...this.defaults, ...origOpt };\n            // Show warning if an extension set async to true but the parse was called with async: false\n            if (this.defaults.async === true && origOpt.async === false) {\n                if (!opt.silent) {\n                    console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n                }\n                opt.async = true;\n            }\n            const throwError = this.#onError(!!opt.silent, !!opt.async);\n            // throw error in case of non string input\n            if (typeof src === 'undefined' || src === null) {\n                return throwError(new Error('marked(): input parameter is undefined or null'));\n            }\n            if (typeof src !== 'string') {\n                return throwError(new Error('marked(): input parameter is of type '\n                    + Object.prototype.toString.call(src) + ', string expected'));\n            }\n            if (opt.hooks) {\n                opt.hooks.options = opt;\n            }\n            if (opt.async) {\n                return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n                    .then(src => lexer(src, opt))\n                    .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n                    .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n                    .then(tokens => parser(tokens, opt))\n                    .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n                    .catch(throwError);\n            }\n            try {\n                if (opt.hooks) {\n                    src = opt.hooks.preprocess(src);\n                }\n                let tokens = lexer(src, opt);\n                if (opt.hooks) {\n                    tokens = opt.hooks.processAllTokens(tokens);\n                }\n                if (opt.walkTokens) {\n                    this.walkTokens(tokens, opt.walkTokens);\n                }\n                let html = parser(tokens, opt);\n                if (opt.hooks) {\n                    html = opt.hooks.postprocess(html);\n                }\n                return html;\n            }\n            catch (e) {\n                return throwError(e);\n            }\n        };\n    }\n    #onError(silent, async) {\n        return (e) => {\n            e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n            if (silent) {\n                const msg = '<p>An error occurred:</p><pre>'\n                    + escape$1(e.message + '', true)\n                    + '</pre>';\n                if (async) {\n                    return Promise.resolve(msg);\n                }\n                return msg;\n            }\n            if (async) {\n                return Promise.reject(e);\n            }\n            throw e;\n        };\n    }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n    return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n    marked.setOptions = function (options) {\n        markedInstance.setOptions(options);\n        marked.defaults = markedInstance.defaults;\n        changeDefaults(marked.defaults);\n        return marked;\n    };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n    markedInstance.use(...args);\n    marked.defaults = markedInstance.defaults;\n    changeDefaults(marked.defaults);\n    return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n    return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n","const {\n  slice,\n  forEach\n} = [];\nfunction defaults(obj) {\n  forEach.call(slice.call(arguments, 1), source => {\n    if (source) {\n      for (const prop in source) {\n        if (obj[prop] === undefined) obj[prop] = source[prop];\n      }\n    }\n  });\n  return obj;\n}\nfunction hasXSS(input) {\n  if (typeof input !== 'string') return false;\n\n  // Common XSS attack patterns\n  const xssPatterns = [/<\\s*script.*?>/i, /<\\s*\\/\\s*script\\s*>/i, /<\\s*img.*?on\\w+\\s*=/i, /<\\s*\\w+\\s*on\\w+\\s*=.*?>/i, /javascript\\s*:/i, /vbscript\\s*:/i, /expression\\s*\\(/i, /eval\\s*\\(/i, /alert\\s*\\(/i, /document\\.cookie/i, /document\\.write\\s*\\(/i, /window\\.location/i, /innerHTML/i];\n  return xssPatterns.some(pattern => pattern.test(input));\n}\n\n// eslint-disable-next-line no-control-regex\nconst fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nconst serializeCookie = function (name, val) {\n  let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n    path: '/'\n  };\n  const opt = options;\n  const value = encodeURIComponent(val);\n  let str = `${name}=${value}`;\n  if (opt.maxAge > 0) {\n    const maxAge = opt.maxAge - 0;\n    if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n    str += `; Max-Age=${Math.floor(maxAge)}`;\n  }\n  if (opt.domain) {\n    if (!fieldContentRegExp.test(opt.domain)) {\n      throw new TypeError('option domain is invalid');\n    }\n    str += `; Domain=${opt.domain}`;\n  }\n  if (opt.path) {\n    if (!fieldContentRegExp.test(opt.path)) {\n      throw new TypeError('option path is invalid');\n    }\n    str += `; Path=${opt.path}`;\n  }\n  if (opt.expires) {\n    if (typeof opt.expires.toUTCString !== 'function') {\n      throw new TypeError('option expires is invalid');\n    }\n    str += `; Expires=${opt.expires.toUTCString()}`;\n  }\n  if (opt.httpOnly) str += '; HttpOnly';\n  if (opt.secure) str += '; Secure';\n  if (opt.sameSite) {\n    const sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n    switch (sameSite) {\n      case true:\n        str += '; SameSite=Strict';\n        break;\n      case 'lax':\n        str += '; SameSite=Lax';\n        break;\n      case 'strict':\n        str += '; SameSite=Strict';\n        break;\n      case 'none':\n        str += '; SameSite=None';\n        break;\n      default:\n        throw new TypeError('option sameSite is invalid');\n    }\n  }\n  if (opt.partitioned) str += '; Partitioned';\n  return str;\n};\nconst cookie = {\n  create(name, value, minutes, domain) {\n    let cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n      path: '/',\n      sameSite: 'strict'\n    };\n    if (minutes) {\n      cookieOptions.expires = new Date();\n      cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n    }\n    if (domain) cookieOptions.domain = domain;\n    document.cookie = serializeCookie(name, value, cookieOptions);\n  },\n  read(name) {\n    const nameEQ = `${name}=`;\n    const ca = document.cookie.split(';');\n    for (let i = 0; i < ca.length; i++) {\n      let c = ca[i];\n      while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n      if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n    }\n    return null;\n  },\n  remove(name, domain) {\n    this.create(name, '', -1, domain);\n  }\n};\nvar cookie$1 = {\n  name: 'cookie',\n  // Deconstruct the options object and extract the lookupCookie property\n  lookup(_ref) {\n    let {\n      lookupCookie\n    } = _ref;\n    if (lookupCookie && typeof document !== 'undefined') {\n      return cookie.read(lookupCookie) || undefined;\n    }\n    return undefined;\n  },\n  // Deconstruct the options object and extract the lookupCookie, cookieMinutes, cookieDomain, and cookieOptions properties\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupCookie,\n      cookieMinutes,\n      cookieDomain,\n      cookieOptions\n    } = _ref2;\n    if (lookupCookie && typeof document !== 'undefined') {\n      cookie.create(lookupCookie, lng, cookieMinutes, cookieDomain, cookieOptions);\n    }\n  }\n};\n\nvar querystring = {\n  name: 'querystring',\n  // Deconstruct the options object and extract the lookupQuerystring property\n  lookup(_ref) {\n    let {\n      lookupQuerystring\n    } = _ref;\n    let found;\n    if (typeof window !== 'undefined') {\n      let {\n        search\n      } = window.location;\n      if (!window.location.search && window.location.hash?.indexOf('?') > -1) {\n        search = window.location.hash.substring(window.location.hash.indexOf('?'));\n      }\n      const query = search.substring(1);\n      const params = query.split('&');\n      for (let i = 0; i < params.length; i++) {\n        const pos = params[i].indexOf('=');\n        if (pos > 0) {\n          const key = params[i].substring(0, pos);\n          if (key === lookupQuerystring) {\n            found = params[i].substring(pos + 1);\n          }\n        }\n      }\n    }\n    return found;\n  }\n};\n\nvar hash = {\n  name: 'hash',\n  // Deconstruct the options object and extract the lookupHash property and the lookupFromHashIndex property\n  lookup(_ref) {\n    let {\n      lookupHash,\n      lookupFromHashIndex\n    } = _ref;\n    let found;\n    if (typeof window !== 'undefined') {\n      const {\n        hash\n      } = window.location;\n      if (hash && hash.length > 2) {\n        const query = hash.substring(1);\n        if (lookupHash) {\n          const params = query.split('&');\n          for (let i = 0; i < params.length; i++) {\n            const pos = params[i].indexOf('=');\n            if (pos > 0) {\n              const key = params[i].substring(0, pos);\n              if (key === lookupHash) {\n                found = params[i].substring(pos + 1);\n              }\n            }\n          }\n        }\n        if (found) return found;\n        if (!found && lookupFromHashIndex > -1) {\n          const language = hash.match(/\\/([a-zA-Z-]*)/g);\n          if (!Array.isArray(language)) return undefined;\n          const index = typeof lookupFromHashIndex === 'number' ? lookupFromHashIndex : 0;\n          return language[index]?.replace('/', '');\n        }\n      }\n    }\n    return found;\n  }\n};\n\nlet hasLocalStorageSupport = null;\nconst localStorageAvailable = () => {\n  if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n  try {\n    hasLocalStorageSupport = typeof window !== 'undefined' && window.localStorage !== null;\n    if (!hasLocalStorageSupport) {\n      return false;\n    }\n    const testKey = 'i18next.translate.boo';\n    window.localStorage.setItem(testKey, 'foo');\n    window.localStorage.removeItem(testKey);\n  } catch (e) {\n    hasLocalStorageSupport = false;\n  }\n  return hasLocalStorageSupport;\n};\nvar localStorage = {\n  name: 'localStorage',\n  // Deconstruct the options object and extract the lookupLocalStorage property\n  lookup(_ref) {\n    let {\n      lookupLocalStorage\n    } = _ref;\n    if (lookupLocalStorage && localStorageAvailable()) {\n      return window.localStorage.getItem(lookupLocalStorage) || undefined; // Undefined ensures type consistency with the previous version of this function\n    }\n    return undefined;\n  },\n  // Deconstruct the options object and extract the lookupLocalStorage property\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupLocalStorage\n    } = _ref2;\n    if (lookupLocalStorage && localStorageAvailable()) {\n      window.localStorage.setItem(lookupLocalStorage, lng);\n    }\n  }\n};\n\nlet hasSessionStorageSupport = null;\nconst sessionStorageAvailable = () => {\n  if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n  try {\n    hasSessionStorageSupport = typeof window !== 'undefined' && window.sessionStorage !== null;\n    if (!hasSessionStorageSupport) {\n      return false;\n    }\n    const testKey = 'i18next.translate.boo';\n    window.sessionStorage.setItem(testKey, 'foo');\n    window.sessionStorage.removeItem(testKey);\n  } catch (e) {\n    hasSessionStorageSupport = false;\n  }\n  return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n  name: 'sessionStorage',\n  lookup(_ref) {\n    let {\n      lookupSessionStorage\n    } = _ref;\n    if (lookupSessionStorage && sessionStorageAvailable()) {\n      return window.sessionStorage.getItem(lookupSessionStorage) || undefined;\n    }\n    return undefined;\n  },\n  cacheUserLanguage(lng, _ref2) {\n    let {\n      lookupSessionStorage\n    } = _ref2;\n    if (lookupSessionStorage && sessionStorageAvailable()) {\n      window.sessionStorage.setItem(lookupSessionStorage, lng);\n    }\n  }\n};\n\nvar navigator$1 = {\n  name: 'navigator',\n  lookup(options) {\n    const found = [];\n    if (typeof navigator !== 'undefined') {\n      const {\n        languages,\n        userLanguage,\n        language\n      } = navigator;\n      if (languages) {\n        // chrome only; not an array, so can't use .push.apply instead of iterating\n        for (let i = 0; i < languages.length; i++) {\n          found.push(languages[i]);\n        }\n      }\n      if (userLanguage) {\n        found.push(userLanguage);\n      }\n      if (language) {\n        found.push(language);\n      }\n    }\n    return found.length > 0 ? found : undefined;\n  }\n};\n\nvar htmlTag = {\n  name: 'htmlTag',\n  // Deconstruct the options object and extract the htmlTag property\n  lookup(_ref) {\n    let {\n      htmlTag\n    } = _ref;\n    let found;\n    const internalHtmlTag = htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n    if (internalHtmlTag && typeof internalHtmlTag.getAttribute === 'function') {\n      found = internalHtmlTag.getAttribute('lang');\n    }\n    return found;\n  }\n};\n\nvar path = {\n  name: 'path',\n  // Deconstruct the options object and extract the lookupFromPathIndex property\n  lookup(_ref) {\n    let {\n      lookupFromPathIndex\n    } = _ref;\n    if (typeof window === 'undefined') return undefined;\n    const language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n    if (!Array.isArray(language)) return undefined;\n    const index = typeof lookupFromPathIndex === 'number' ? lookupFromPathIndex : 0;\n    return language[index]?.replace('/', '');\n  }\n};\n\nvar subdomain = {\n  name: 'subdomain',\n  lookup(_ref) {\n    let {\n      lookupFromSubdomainIndex\n    } = _ref;\n    // If given get the subdomain index else 1\n    const internalLookupFromSubdomainIndex = typeof lookupFromSubdomainIndex === 'number' ? lookupFromSubdomainIndex + 1 : 1;\n    // get all matches if window.location. is existing\n    // first item of match is the match itself and the second is the first group match which should be the first subdomain match\n    // is the hostname no public domain get the or option of localhost\n    const language = typeof window !== 'undefined' && window.location?.hostname?.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i);\n\n    // if there is no match (null) return undefined\n    if (!language) return undefined;\n    // return the given group match\n    return language[internalLookupFromSubdomainIndex];\n  }\n};\n\n// some environments, throws when accessing document.cookie\nlet canCookies = false;\ntry {\n  // eslint-disable-next-line no-unused-expressions\n  document.cookie;\n  canCookies = true;\n  // eslint-disable-next-line no-empty\n} catch (e) {}\nconst order = ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'];\nif (!canCookies) order.splice(1, 1);\nconst getDefaults = () => ({\n  order,\n  lookupQuerystring: 'lng',\n  lookupCookie: 'i18next',\n  lookupLocalStorage: 'i18nextLng',\n  lookupSessionStorage: 'i18nextLng',\n  // cache user language\n  caches: ['localStorage'],\n  excludeCacheFor: ['cimode'],\n  // cookieMinutes: 10,\n  // cookieDomain: 'myDomain'\n\n  convertDetectedLanguage: l => l\n});\nclass Browser {\n  constructor(services) {\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    this.type = 'languageDetector';\n    this.detectors = {};\n    this.init(services, options);\n  }\n  init() {\n    let services = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n      languageUtils: {}\n    };\n    let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    let i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    this.services = services;\n    this.options = defaults(options, this.options || {}, getDefaults());\n    if (typeof this.options.convertDetectedLanguage === 'string' && this.options.convertDetectedLanguage.indexOf('15897') > -1) {\n      this.options.convertDetectedLanguage = l => l.replace('-', '_');\n    }\n\n    // backwards compatibility\n    if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n    this.i18nOptions = i18nOptions;\n    this.addDetector(cookie$1);\n    this.addDetector(querystring);\n    this.addDetector(localStorage);\n    this.addDetector(sessionStorage);\n    this.addDetector(navigator$1);\n    this.addDetector(htmlTag);\n    this.addDetector(path);\n    this.addDetector(subdomain);\n    this.addDetector(hash);\n  }\n  addDetector(detector) {\n    this.detectors[detector.name] = detector;\n    return this;\n  }\n  detect() {\n    let detectionOrder = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.order;\n    let detected = [];\n    detectionOrder.forEach(detectorName => {\n      if (this.detectors[detectorName]) {\n        let lookup = this.detectors[detectorName].lookup(this.options);\n        if (lookup && typeof lookup === 'string') lookup = [lookup];\n        if (lookup) detected = detected.concat(lookup);\n      }\n    });\n    detected = detected.filter(d => d !== undefined && d !== null && !hasXSS(d)).map(d => this.options.convertDetectedLanguage(d));\n    if (this.services && this.services.languageUtils && this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n    return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n  }\n  cacheUserLanguage(lng) {\n    let caches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.options.caches;\n    if (!caches) return;\n    if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n    caches.forEach(cacheName => {\n      if (this.detectors[cacheName]) this.detectors[cacheName].cacheUserLanguage(lng, this.options);\n    });\n  }\n}\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","import i18next from 'i18next';\nimport LanguageDetector from 'i18next-browser-languagedetector';\nimport en from './en.json';\nimport tr from './tr.json';\n\ni18next\n    .use(LanguageDetector)\n    .init({\n        fallbackLng: 'en',\n        debug: false,\n        showSupportNotice: false,\n        resources: {\n            en: { translation: en },\n            tr: { translation: tr },\n        },\n        interpolation: {\n            escapeValue: false, // Lit zaten güvenlidir\n        },\n    });\n\nexport default i18next;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\n\nexport interface LinkMetadata {\n  title?: string;\n  description?: string;\n  image?: string;\n  favicon?: string;\n  domain?: string;\n}\n\nexport type LinkMetadataFetcher = (url: string) => Promise<LinkMetadata>;\nexport type PreviewVariant = \"compact\" | \"expanded\";\n\nconst cache = new Map<string, LinkMetadata>();\n\nfunction extractDomain(url: string): string {\n  try {\n    return new URL(url).hostname;\n  } catch {\n    return url;\n  }\n}\n\nfunction getFaviconUrl(url: string): string {\n  try {\n    const u = new URL(url);\n    return `https://www.google.com/s2/favicons?domain=${u.hostname}&sz=32`;\n  } catch {\n    return \"\";\n  }\n}\n\n@customElement(\"link-preview-card\")\nexport class LinkPreviewCard extends LitElement {\n  static override styles = css`\n    :host {\n      display: block;\n    }\n\n    :host([variant=\"compact\"]) {\n      max-width: 320px;\n    }\n\n    :host([variant=\"expanded\"]) {\n      max-width: 100%;\n    }\n\n    a {\n      display: flex;\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      overflow: hidden;\n      text-decoration: none;\n      color: inherit;\n      background: #ffffff;\n      transition: box-shadow 0.2s, transform 0.15s;\n    }\n\n    :host([variant=\"compact\"]) a {\n      flex-direction: row;\n    }\n\n    :host([variant=\"expanded\"]) a {\n      flex-direction: row;\n    }\n\n    a:hover {\n      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n      transform: translateY(-1px);\n    }\n\n    .preview-image {\n      object-fit: cover;\n      flex-shrink: 0;\n      background: #f1f5f9;\n    }\n\n    :host([variant=\"compact\"]) .preview-image {\n      width: 80px;\n      min-height: 80px;\n    }\n\n    :host([variant=\"expanded\"]) .preview-image {\n      width: 120px;\n      min-height: 120px;\n    }\n\n    .preview-body {\n      display: flex;\n      flex-direction: column;\n      gap: 4px;\n      min-width: 0;\n      flex: 1;\n    }\n\n    :host([variant=\"compact\"]) .preview-body {\n      padding: 10px 12px;\n    }\n\n    :host([variant=\"expanded\"]) .preview-body {\n      padding: 12px 16px;\n    }\n\n    .preview-domain {\n      display: flex;\n      align-items: center;\n      gap: 6px;\n      color: #64748b;\n    }\n\n    :host([variant=\"compact\"]) .preview-domain {\n      font-size: 0.7rem;\n    }\n\n    :host([variant=\"expanded\"]) .preview-domain {\n      font-size: 0.75rem;\n    }\n\n    .preview-domain img {\n      border-radius: 3px;\n    }\n\n    :host([variant=\"compact\"]) .preview-domain img {\n      width: 14px;\n      height: 14px;\n    }\n\n    :host([variant=\"expanded\"]) .preview-domain img {\n      width: 16px;\n      height: 16px;\n    }\n\n    .preview-title {\n      font-weight: 600;\n      color: #1e293b;\n      line-height: 1.3;\n      display: -webkit-box;\n      -webkit-box-orient: vertical;\n      overflow: hidden;\n    }\n\n    :host([variant=\"compact\"]) .preview-title {\n      font-size: 0.8rem;\n      -webkit-line-clamp: 2;\n    }\n\n    :host([variant=\"expanded\"]) .preview-title {\n      font-size: 0.9rem;\n      -webkit-line-clamp: 2;\n    }\n\n    .preview-desc {\n      color: #64748b;\n      line-height: 1.4;\n      display: -webkit-box;\n      -webkit-box-orient: vertical;\n      overflow: hidden;\n    }\n\n    :host([variant=\"compact\"]) .preview-desc {\n      font-size: 0.72rem;\n      -webkit-line-clamp: 2;\n    }\n\n    :host([variant=\"expanded\"]) .preview-desc {\n      font-size: 0.8rem;\n      -webkit-line-clamp: 3;\n    }\n\n    .preview-loading {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      color: #94a3b8;\n    }\n\n    :host([variant=\"compact\"]) .preview-loading {\n      padding: 12px 14px;\n      font-size: 0.75rem;\n    }\n\n    :host([variant=\"expanded\"]) .preview-loading {\n      padding: 16px 18px;\n      font-size: 0.8rem;\n    }\n\n    .preview-loading .spinner {\n      border: 2px solid #e2e8f0;\n      border-top-color: #94a3b8;\n      border-radius: 50%;\n      animation: link-preview-spin 0.8s linear infinite;\n    }\n\n    :host([variant=\"compact\"]) .preview-loading .spinner {\n      width: 14px;\n      height: 14px;\n    }\n\n    :host([variant=\"expanded\"]) .preview-loading .spinner {\n      width: 18px;\n      height: 18px;\n    }\n\n    @keyframes link-preview-spin {\n      to { transform: rotate(360deg); }\n    }\n\n    .preview-fallback {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      color: #4f46e5;\n    }\n\n    :host([variant=\"compact\"]) .preview-fallback {\n      padding: 10px 12px;\n      font-size: 0.78rem;\n    }\n\n    :host([variant=\"expanded\"]) .preview-fallback {\n      padding: 14px 16px;\n      font-size: 0.85rem;\n    }\n\n    .preview-fallback img {\n      border-radius: 3px;\n    }\n\n    :host([variant=\"compact\"]) .preview-fallback img {\n      width: 14px;\n      height: 14px;\n    }\n\n    :host([variant=\"expanded\"]) .preview-fallback img {\n      width: 18px;\n      height: 18px;\n    }\n\n    .preview-fallback .link-icon {\n      flex-shrink: 0;\n    }\n\n    :host([variant=\"compact\"]) .preview-fallback .link-icon {\n      width: 16px;\n      height: 16px;\n    }\n\n    :host([variant=\"expanded\"]) .preview-fallback .link-icon {\n      width: 20px;\n      height: 20px;\n    }\n  `;\n\n  @property({ type: String }) url = \"\";\n  @property({ type: String, reflect: true }) variant: PreviewVariant = \"compact\";\n  @property({ type: Function }) metadataFetcher: LinkMetadataFetcher | null = null;\n\n  @state() private _metadata: LinkMetadata | null = null;\n  @state() private _loading = false;\n  @state() private _error = false;\n\n  override connectedCallback() {\n    super.connectedCallback();\n    this._fetchMetadata();\n  }\n\n  override updated(changed: Map<string, unknown>) {\n    if (changed.has(\"url\") && changed.get(\"url\") !== undefined) {\n      this._fetchMetadata();\n    }\n  }\n\n  private async _fetchMetadata() {\n    if (!this.url) return;\n\n    if (cache.has(this.url)) {\n      this._metadata = cache.get(this.url)!;\n      return;\n    }\n\n    const fetcher = this.metadataFetcher ?? (window as unknown as Record<string, unknown>).chativaMetadataFetcher as LinkMetadataFetcher | undefined;\n\n    if (!fetcher) {\n      this._error = true;\n      return;\n    }\n\n    this._loading = true;\n    try {\n      const meta = await fetcher(this.url);\n      cache.set(this.url, meta);\n      this._metadata = meta;\n    } catch {\n      this._error = true;\n    } finally {\n      this._loading = false;\n    }\n  }\n\n  private _renderLoading() {\n    return html`\n      <a href=${this.url} target=\"_blank\" rel=\"noopener noreferrer\">\n        <div class=\"preview-loading\">\n          <div class=\"spinner\"></div>\n          <span>${extractDomain(this.url)}</span>\n        </div>\n      </a>\n    `;\n  }\n\n  private _renderFallback() {\n    const domain = extractDomain(this.url);\n    const favicon = getFaviconUrl(this.url);\n    return html`\n      <a href=${this.url} target=\"_blank\" rel=\"noopener noreferrer\">\n        <div class=\"preview-fallback\">\n          <svg class=\"link-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"/>\n            <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"/>\n          </svg>\n          ${favicon ? html`<img src=${favicon} alt=\"\" />` : nothing}\n          <span>${domain}</span>\n        </div>\n      </a>\n    `;\n  }\n\n  private _renderPreview(meta: LinkMetadata) {\n    const domain = meta.domain ?? extractDomain(this.url);\n    const favicon = meta.favicon ?? getFaviconUrl(this.url);\n    return html`\n      <a href=${this.url} target=\"_blank\" rel=\"noopener noreferrer\">\n        ${meta.image\n          ? html`<img class=\"preview-image\" src=${meta.image} alt=\"\" loading=\"lazy\" />`\n          : nothing}\n        <div class=\"preview-body\">\n          <div class=\"preview-domain\">\n            ${favicon ? html`<img src=${favicon} alt=\"\" />` : nothing}\n            <span>${domain}</span>\n          </div>\n          ${meta.title\n            ? html`<div class=\"preview-title\">${meta.title}</div>`\n            : nothing}\n          ${meta.description\n            ? html`<div class=\"preview-desc\">${meta.description}</div>`\n            : nothing}\n        </div>\n      </a>\n    `;\n  }\n\n  render() {\n    if (this._loading) return this._renderLoading();\n    if (this._metadata) return this._renderPreview(this._metadata);\n    if (this._error) return this._renderFallback();\n    return this._renderFallback();\n  }\n}\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { marked } from \"marked\";\nimport { t } from \"i18next\";\nimport i18next from \"../i18n/i18n\";\nimport { MessageTypeRegistry, chatStore, type MessageSender, type MessageStatus } from \"@chativa/core\";\nimport type { LinkMetadataFetcher } from \"./LinkPreviewCard\";\nimport \"./LinkPreviewCard\";\n\n\n@customElement(\"default-text-message\")\nexport class DefaultTextMessage extends LitElement {\n  static override styles = css`\n    :host {\n      display: block;\n    }\n\n    .message {\n      display: flex;\n      align-items: flex-end;\n      gap: 8px;\n      max-width: 82%;\n      margin-bottom: 2px;\n    }\n\n    .message.bot {\n      margin-right: auto;\n    }\n\n    .message.user {\n      margin-left: auto;\n      flex-direction: row-reverse;\n    }\n\n    .avatar {\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      background: #ede9fe;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n      overflow: hidden;\n    }\n\n    .avatar.hidden { visibility: hidden; }\n\n    .avatar.user-avatar {\n      background: #e0f2fe;\n    }\n\n    .avatar svg {\n      width: 16px;\n      height: 16px;\n      color: #7c3aed;\n    }\n\n    .avatar.user-avatar svg {\n      color: #0369a1;\n    }\n\n    .avatar img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      border-radius: 50%;\n    }\n\n    /* Markdown styles for bot bubbles */\n    .message.bot .bubble p { margin: 0 0 6px; }\n    .message.bot .bubble p:last-child { margin: 0; }\n    .message.bot .bubble code {\n      background: rgba(0,0,0,0.08);\n      border-radius: 3px;\n      padding: 1px 5px;\n      font-size: 0.82em;\n      font-family: monospace;\n    }\n    .message.bot .bubble pre {\n      background: rgba(0,0,0,0.06);\n      border-radius: 6px;\n      padding: 8px 12px;\n      overflow-x: auto;\n      margin: 6px 0;\n    }\n    .message.bot .bubble pre code { background: none; padding: 0; }\n    .message.bot .bubble a { color: #4f46e5; text-decoration: underline; }\n    .message.bot .bubble ul,\n    .message.bot .bubble ol { margin: 4px 0; padding-left: 18px; }\n    .message.bot .bubble strong { font-weight: 600; }\n    .message.bot .bubble em { font-style: italic; }\n\n    .message.user .bubble p { margin: 0 0 6px; }\n    .message.user .bubble p:last-child { margin: 0; }\n    .message.user .bubble strong { font-weight: 600; }\n    .message.user .bubble em { font-style: italic; }\n    .message.user .bubble code {\n      background: rgba(255,255,255,0.2);\n      border-radius: 3px;\n      padding: 1px 5px;\n      font-size: 0.82em;\n      font-family: monospace;\n    }\n    .message.user .bubble a { color: #ffffff; text-decoration: underline; }\n    .message.user .bubble ul,\n    .message.user .bubble ol { margin: 4px 0; padding-left: 18px; }\n\n    .content {\n      display: flex;\n      flex-direction: column;\n      gap: 3px;\n    }\n\n    .message.user .content {\n      align-items: flex-end;\n    }\n\n    .bubble {\n      padding: 9px 13px;\n      font-size: 0.875rem;\n      line-height: 1.5;\n      word-break: break-word;\n      max-width: 100%;\n    }\n\n    .message.bot .bubble {\n      background: #f1f5f9;\n      color: #0f172a;\n      border-radius: 4px 16px 16px 16px;\n    }\n\n    .message.user .bubble {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n      border-radius: 16px 4px 16px 16px;\n    }\n\n    /* Streaming caret — shown while a bot bubble is still being streamed\n       (data.streaming), so token-by-token output reads as a live message. */\n    .stream-caret {\n      display: inline-block;\n      width: 2px;\n      height: 1em;\n      margin-left: 1px;\n      vertical-align: text-bottom;\n      background: currentColor;\n      opacity: 0.7;\n      animation: chativa-caret-blink 1s steps(1) infinite;\n    }\n\n    @keyframes chativa-caret-blink {\n      50% { opacity: 0; }\n    }\n\n    .meta {\n      display: flex;\n      align-items: center;\n      gap: 4px;\n    }\n\n    .message.user .meta {\n      justify-content: flex-end;\n    }\n\n    .time {\n      font-size: 0.6875rem;\n      color: #94a3b8;\n      padding: 0 2px;\n    }\n\n    /* Status tick icons */\n    .status-icon {\n      display: flex;\n      align-items: center;\n      line-height: 1;\n    }\n\n    .status-icon svg {\n      width: 14px;\n      height: 14px;\n    }\n\n    .status-icon.sending svg {\n      animation: chativa-status-spin 0.9s linear infinite;\n      transform-origin: 50% 50%;\n    }\n\n    @keyframes chativa-status-spin {\n      to { transform: rotate(360deg); }\n    }\n\n    .feedback {\n      display: flex;\n      gap: 2px;\n      opacity: 0;\n      transition: opacity 0.15s;\n      padding: 0 2px;\n    }\n\n    .message.bot:hover .feedback,\n    .feedback.active {\n      opacity: 1;\n    }\n\n    .feedback-btn {\n      background: none;\n      border: 1px solid transparent;\n      border-radius: 6px;\n      padding: 2px 5px;\n      cursor: pointer;\n      font-size: 0.75rem;\n      line-height: 1;\n      color: #94a3b8;\n      transition: border-color 0.15s, background 0.15s, color 0.15s;\n    }\n\n    .feedback-btn:hover {\n      border-color: #e2e8f0;\n      background: #f8fafc;\n      color: #64748b;\n    }\n\n    .feedback-btn.selected-like {\n      border-color: #bbf7d0;\n      background: #f0fdf4;\n      color: #16a34a;\n    }\n\n    .feedback-btn.selected-dislike {\n      border-color: #fecaca;\n      background: #fef2f2;\n      color: #dc2626;\n    }\n\n    .feedback-btn:disabled {\n      cursor: default;\n      opacity: 0.7;\n    }\n\n    .link-previews {\n      display: flex;\n      flex-direction: column;\n      gap: 6px;\n      margin-top: 4px;\n    }\n  `;\n\n  @property({ type: Object }) messageData: Record<string, unknown> = {};\n  @property({ type: String }) sender: MessageSender = \"bot\";\n  @property({ type: String }) messageId = \"\";\n  @property({ type: Number }) timestamp = 0;\n  /** When true the avatar is invisible (still occupies space for alignment). */\n  @property({ type: Boolean }) hideAvatar = false;\n  @property({ type: String }) status: MessageStatus = \"sent\";\n  @property({ type: Function }) metadataFetcher: LinkMetadataFetcher | null = null;\n\n  @state() private _feedback: \"like\" | \"dislike\" | null = null;\n\n  private _onLangChange = () => { this.requestUpdate(); };\n\n  /** Whether feedback is locked by the bot (DisableFeedbackButton event). */\n  private get _feedbackDisabled(): boolean {\n    return !!(this.messageData as Record<string, unknown>)?.feedbackDisabled;\n  }\n\n  /** Effective feedback state: server-confirmed value takes priority over local. */\n  private get _effectiveFeedback(): \"like\" | \"dislike\" | null {\n    if (this._feedbackDisabled) {\n      const ft = (this.messageData as Record<string, unknown>)?.feedbackType;\n      if (ft === 0) return \"like\";\n      if (ft === 1) return \"dislike\";\n    }\n    return this._feedback;\n  }\n\n  override connectedCallback() {\n    super.connectedCallback();\n    i18next.on(\"languageChanged\", this._onLangChange);\n  }\n\n  override disconnectedCallback() {\n    i18next.off(\"languageChanged\", this._onLangChange);\n    super.disconnectedCallback();\n  }\n\n  private _onFeedback(type: \"like\" | \"dislike\") {\n    if (this._feedbackDisabled) return;\n    if (this._feedback === type) {\n      this._feedback = null;\n      return;\n    }\n    this._feedback = type;\n    this.dispatchEvent(\n      new CustomEvent(\"chativa-feedback\", {\n        bubbles: true,\n        composed: true,\n        detail: { messageId: this.messageId, feedback: type },\n      })\n    );\n  }\n\n  private get _time(): string {\n    if (!this.timestamp) return \"\";\n    return new Date(this.timestamp).toLocaleTimeString([], {\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n    });\n  }\n\n  private _renderBotAvatar(avatarUrl?: string) {\n    return html`\n      <div class=\"avatar ${this.hideAvatar ? \"hidden\" : \"\"}\">\n        ${avatarUrl\n          ? html`<img src=${avatarUrl} alt=\"bot avatar\" />`\n          : html`\n              <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                <rect x=\"5\" y=\"8\" width=\"14\" height=\"12\" rx=\"2.5\" />\n                <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                <circle cx=\"14.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                <path\n                  d=\"M9.5 17c.5.5 1.4.8 2.5.8s2-.3 2.5-.8\"\n                  stroke=\"white\"\n                  stroke-width=\"1.2\"\n                  stroke-linecap=\"round\"\n                  fill=\"none\"\n                />\n              </svg>\n            `}\n      </div>\n    `;\n  }\n\n  private _renderUserAvatar(avatarUrl?: string) {\n    return html`\n      <div class=\"avatar user-avatar ${this.hideAvatar ? \"hidden\" : \"\"}\">\n        ${avatarUrl\n          ? html`<img src=${avatarUrl} alt=\"user avatar\" />`\n          : html`\n              <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path d=\"M12 12c2.7 0 4.8-2.1 4.8-4.8S14.7 2.4 12 2.4 7.2 4.5 7.2 7.2 9.3 12 12 12zm0 2.4c-3.2 0-9.6 1.6-9.6 4.8v2.4h19.2v-2.4c0-3.2-6.4-4.8-9.6-4.8z\"/>\n              </svg>\n            `}\n      </div>\n    `;\n  }\n\n  private _renderStatusIcon() {\n    if (this.status === \"sending\") {\n      // Loading spinner — message is in flight\n      return html`\n        <span class=\"status-icon sending\" aria-label=\"${t(\"message.statusSending\")}\">\n          <svg viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n            <circle cx=\"7\" cy=\"7\" r=\"5\" stroke=\"#cbd5e1\" stroke-width=\"2\" opacity=\"0.4\"/>\n            <path d=\"M12 7a5 5 0 0 0-5-5\" stroke=\"#94a3b8\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n          </svg>\n        </span>\n      `;\n    }\n    const color = \"var(--chativa-primary-color, #4f46e5)\";\n    if (this.status === \"read\") {\n      // Double tick — bot acknowledged the message\n      return html`\n        <span class=\"status-icon\" aria-label=\"${t(\"message.statusRead\")}\">\n          <svg viewBox=\"0 0 18 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n            <path d=\"M1 6l4 4L13 1\" stroke=${color} stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n            <path d=\"M6 6l4 4L18 1\" stroke=${color} stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n          </svg>\n        </span>\n      `;\n    }\n    // Single tick — sent\n    return html`\n      <span class=\"status-icon\" aria-label=\"${t(\"message.statusSent\")}\">\n        <svg viewBox=\"0 0 14 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n          <path d=\"M1 5l4 4L13 1\" stroke=${color} stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n        </svg>\n      </span>\n    `;\n  }\n\n  private _renderLinkPreviews() {\n    const urls = this.messageData?.urls as string[] | undefined;\n    if (!urls || urls.length === 0) return nothing;\n\n    const previewVariant = (this.messageData?.previewVariant as string) ?? \"compact\";\n    const fetcher = this.metadataFetcher ?? (window as unknown as Record<string, unknown>).chativaMetadataFetcher as LinkMetadataFetcher | undefined;\n\n    return html`\n      <div class=\"link-previews\">\n        ${urls.map((url) => html`\n          <link-preview-card\n            .url=${url}\n            variant=${previewVariant}\n            .metadataFetcher=${fetcher ?? null}\n          ></link-preview-card>\n        `)}\n      </div>\n    `;\n  }\n\n  render() {\n    const isUser = this.sender === \"user\";\n    const raw = String(this.messageData?.text ?? \"\");\n    const bubbleContent = isUser && !this.messageData?._markdown\n      ? raw\n      : unsafeHTML(marked.parse(raw, { async: false }) as string);\n\n    const theme = chatStore.getState().theme;\n    const avatarCfg = theme.avatar;\n    const showBotAvatar = avatarCfg?.showBot !== false;\n    const showUserAvatar = avatarCfg?.showUser !== false;\n    const showStatus = theme.showMessageStatus === true && isUser;\n\n    const senderLabel = isUser ? t(\"message.from.user\") : t(\"message.from.bot\");\n    const articleLabel = `${senderLabel}: ${raw}`;\n\n    return html`\n      <div class=\"message ${isUser ? \"user\" : \"bot\"}\" role=\"article\" aria-label=\"${articleLabel}\">\n        ${!isUser && showBotAvatar ? this._renderBotAvatar(avatarCfg?.bot) : nothing}\n        ${isUser && showUserAvatar ? this._renderUserAvatar(avatarCfg?.user) : nothing}\n        <div class=\"content\">\n          <div class=\"bubble\">${bubbleContent}${!isUser && Boolean(this.messageData?.streaming)\n            ? html`<span class=\"stream-caret\" aria-hidden=\"true\"></span>`\n            : nothing}</div>\n          ${this._renderLinkPreviews()}\n          ${!isUser ? html`\n            <div class=\"feedback ${this._effectiveFeedback ? \"active\" : \"\"}\">\n              <button\n                class=\"feedback-btn ${this._effectiveFeedback === \"like\" ? \"selected-like\" : \"\"}\"\n                aria-label=\"${t(\"message.likeButton\")}\"\n                aria-pressed=\"${this._effectiveFeedback === \"like\"}\"\n                ?disabled=${this._feedbackDisabled}\n                @click=${() => this._onFeedback(\"like\")}\n              >👍</button>\n              <button\n                class=\"feedback-btn ${this._effectiveFeedback === \"dislike\" ? \"selected-dislike\" : \"\"}\"\n                aria-label=\"${t(\"message.dislikeButton\")}\"\n                aria-pressed=\"${this._effectiveFeedback === \"dislike\"}\"\n                ?disabled=${this._feedbackDisabled}\n                @click=${() => this._onFeedback(\"dislike\")}\n              >👎</button>\n            </div>\n          ` : nothing}\n          ${this._time || showStatus ? html`\n            <div class=\"meta\">\n              ${this._time ? html`<span class=\"time\" aria-hidden=\"true\">${this._time}</span>` : nothing}\n              ${showStatus ? this._renderStatusIcon() : nothing}\n            </div>\n          ` : nothing}\n        </div>\n      </div>\n    `;\n  }\n}\n\nMessageTypeRegistry.register(\n  \"text\",\n  DefaultTextMessage as unknown as typeof HTMLElement\n);\n\nexport default DefaultTextMessage;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { MessageTypeRegistry, type MessageSender, type MessageAction } from \"@chativa/core\";\n\n/**\n * Quick-reply message component.\n * Renders a text bubble followed by tappable chip buttons.\n * On chip click, fires a `chat-action` event (bubbles + composed) with the\n * action value as detail, then hides the chips (one-time use).\n *\n * Register a message of type \"quick-reply\" with:\n *   { text: \"...\", actions: [{ label: \"Yes\" }, { label: \"No\", value: \"/no\" }] }\n */\n@customElement(\"quick-reply-message\")\nexport class QuickReplyMessage extends LitElement {\n  static override styles = css`\n    :host {\n      display: block;\n    }\n\n    .message {\n      display: flex;\n      align-items: flex-end;\n      gap: 8px;\n      max-width: 82%;\n      margin-bottom: 2px;\n    }\n\n    .message.bot { margin-right: auto; }\n    .message.user { margin-left: auto; flex-direction: row-reverse; }\n\n    .avatar {\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      background: #ede9fe;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n    }\n\n    .avatar.hidden { visibility: hidden; }\n\n    .avatar svg { width: 16px; height: 16px; color: #7c3aed; }\n\n    .content {\n      display: flex;\n      flex-direction: column;\n      gap: 3px;\n    }\n\n    .message.user .content { align-items: flex-end; }\n\n    .bubble {\n      padding: 9px 13px;\n      font-size: 0.875rem;\n      line-height: 1.5;\n      word-break: break-word;\n      max-width: 100%;\n    }\n\n    .message.bot .bubble {\n      background: #f1f5f9;\n      color: #0f172a;\n      border-radius: 4px 16px 16px 16px;\n    }\n\n    .message.user .bubble {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n      border-radius: 16px 4px 16px 16px;\n    }\n\n    .time {\n      font-size: 0.6875rem;\n      color: #94a3b8;\n      padding: 0 4px;\n    }\n\n    /* Quick reply chips */\n    .chips {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 6px;\n      margin-top: 6px;\n      max-width: 260px;\n    }\n\n    .chip {\n      padding: 6px 14px;\n      border: 1.5px solid var(--chativa-primary-color, #4f46e5);\n      border-radius: 999px;\n      background: transparent;\n      color: var(--chativa-primary-color, #4f46e5);\n      font-size: 0.8125rem;\n      font-weight: 500;\n      cursor: pointer;\n      transition: background 0.15s, color 0.15s;\n      font-family: inherit;\n    }\n\n    .chip:hover {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #fff;\n    }\n\n    .chip:active { opacity: 0.8; }\n\n    .chip.selected {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #fff;\n      font-weight: 600;\n    }\n\n    .chip.selected::before {\n      content: \"✓ \";\n    }\n\n    .chip[disabled] {\n      cursor: default;\n    }\n\n    .chip.dimmed {\n      opacity: 0.5;\n    }\n  `;\n\n  @property({ type: Object }) messageData: Record<string, unknown> = {};\n  @property({ type: String }) sender: MessageSender = \"bot\";\n  @property({ type: Number }) timestamp = 0;\n  @property({ type: Boolean }) hideAvatar = false;\n\n  /** True once a chip has been tapped — chips disappear (one-time use). */\n  @state() private _used = false;\n\n  /** The value (or label) of the chip the user tapped, when keepActions is true. */\n  @state() private _selectedValue: string | null = null;\n\n  private get _time(): string {\n    if (!this.timestamp) return \"\";\n    return new Date(this.timestamp).toLocaleTimeString([], {\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n    });\n  }\n\n  private _onChipClick(action: MessageAction) {\n    const keepActions = Boolean(this.messageData?.keepActions);\n\n    // After first selection: ignore further taps (single-choice).\n    if (this._used) return;\n\n    if (action.url) {\n      window.open(action.url, \"_blank\", \"noopener\");\n      return;\n    }\n\n    this._used = true;\n    this._selectedValue = action.value ?? action.label;\n\n    // When keepActions is true, the chips stay rendered (with the tapped one\n    // marked as selected, the rest dimmed and disabled). Otherwise they vanish.\n    if (!keepActions) {\n      this._selectedValue = null; // legacy behaviour — chips go away entirely\n    }\n\n    this.dispatchEvent(\n      new CustomEvent<string>(\"chat-action\", {\n        detail: action.value ?? action.label,\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  render() {\n    const isUser = this.sender === \"user\";\n    const actions = this.messageData?.actions as MessageAction[] | undefined;\n    const keepActions = Boolean(this.messageData?.keepActions);\n    const showChips =\n      actions && actions.length > 0 && (!this._used || (keepActions && this._selectedValue !== null));\n\n    return html`\n      <div class=\"message ${isUser ? \"user\" : \"bot\"}\">\n        ${!isUser\n          ? html`\n              <div class=\"avatar ${this.hideAvatar ? \"hidden\" : \"\"}\">\n                <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <rect x=\"5\" y=\"8\" width=\"14\" height=\"12\" rx=\"2.5\" />\n                  <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <circle cx=\"14.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <path\n                    d=\"M9.5 17c.5.5 1.4.8 2.5.8s2-.3 2.5-.8\"\n                    stroke=\"white\"\n                    stroke-width=\"1.2\"\n                    stroke-linecap=\"round\"\n                    fill=\"none\"\n                  />\n                </svg>\n              </div>\n            `\n          : nothing}\n        <div class=\"content\">\n          ${this.messageData?.text\n            ? html`<div class=\"bubble\">${this.messageData.text as string}</div>`\n            : nothing}\n          ${showChips ? html`\n            <div class=\"chips\">\n              ${actions!.map((action) => {\n                const value = action.value ?? action.label;\n                const isSelected = this._selectedValue === value;\n                const isDimmed = this._selectedValue !== null && !isSelected;\n                return html`\n                  <button\n                    class=\"chip ${isSelected ? \"selected\" : \"\"} ${isDimmed ? \"dimmed\" : \"\"}\"\n                    type=\"button\"\n                    ?disabled=${this._used}\n                    aria-pressed=${isSelected ? \"true\" : \"false\"}\n                    @click=${() => this._onChipClick(action)}\n                  >${action.label}</button>\n                `;\n              })}\n            </div>\n          ` : nothing}\n          ${this._time && !this.hideAvatar\n            ? html`<span class=\"time\">${this._time}</span>`\n            : nothing}\n        </div>\n      </div>\n    `;\n  }\n}\n\nMessageTypeRegistry.register(\n  \"quick-reply\",\n  QuickReplyMessage as unknown as typeof HTMLElement\n);\n\nexport default QuickReplyMessage;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { MessageTypeRegistry, type MessageSender } from \"@chativa/core\";\n\n/**\n * Image message component.\n * Renders a bot bubble containing an image, with an optional caption below.\n *\n * Register a message of type \"image\" with:\n *   { src: \"https://...\", alt?: \"description\", caption?: \"Caption text\" }\n */\n@customElement(\"image-message\")\nexport class ImageMessage extends LitElement {\n  static override styles = css`\n    :host {\n      display: block;\n    }\n\n    .message {\n      display: flex;\n      align-items: flex-end;\n      gap: 8px;\n      max-width: 82%;\n      margin-bottom: 2px;\n    }\n\n    .message.bot { margin-right: auto; }\n    .message.user { margin-left: auto; flex-direction: row-reverse; }\n\n    .avatar {\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      background: #ede9fe;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n    }\n\n    .avatar.hidden { visibility: hidden; }\n    .avatar svg { width: 16px; height: 16px; color: #7c3aed; }\n\n    .content {\n      display: flex;\n      flex-direction: column;\n      gap: 3px;\n    }\n\n    .image-wrap {\n      border-radius: 4px 16px 16px 16px;\n      overflow: hidden;\n      background: #f1f5f9;\n      max-width: 240px;\n      cursor: pointer;\n    }\n\n    .message.user .image-wrap {\n      border-radius: 16px 4px 16px 16px;\n    }\n\n    .image-wrap img {\n      display: block;\n      width: 100%;\n      max-width: 240px;\n      object-fit: cover;\n      transition: opacity 0.2s;\n    }\n\n    .image-wrap img.loading {\n      opacity: 0;\n    }\n\n    .skeleton {\n      width: 240px;\n      height: 160px;\n      background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n      background-size: 200% 100%;\n      animation: shimmer 1.4s infinite;\n    }\n\n    @keyframes shimmer {\n      0% { background-position: 200% 0; }\n      100% { background-position: -200% 0; }\n    }\n\n    .caption {\n      font-size: 0.8125rem;\n      color: #64748b;\n      padding: 0 4px;\n      max-width: 240px;\n      line-height: 1.4;\n    }\n\n    .time {\n      font-size: 0.6875rem;\n      color: #94a3b8;\n      padding: 0 4px;\n    }\n  `;\n\n  @property({ type: Object }) messageData: Record<string, unknown> = {};\n  @property({ type: String }) sender: MessageSender = \"bot\";\n  @property({ type: Number }) timestamp = 0;\n  @property({ type: Boolean }) hideAvatar = false;\n\n  @state() private _loaded = false;\n\n  private get _time(): string {\n    if (!this.timestamp) return \"\";\n    return new Date(this.timestamp).toLocaleTimeString([], {\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n    });\n  }\n\n  render() {\n    const isUser = this.sender === \"user\";\n    const src = String(this.messageData?.src ?? \"\");\n    const alt = String(this.messageData?.alt ?? \"\");\n    const caption = this.messageData?.caption\n      ? String(this.messageData.caption)\n      : null;\n\n    return html`\n      <div class=\"message ${isUser ? \"user\" : \"bot\"}\">\n        ${!isUser\n          ? html`\n              <div class=\"avatar ${this.hideAvatar ? \"hidden\" : \"\"}\">\n                <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <rect x=\"5\" y=\"8\" width=\"14\" height=\"12\" rx=\"2.5\" />\n                  <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <circle cx=\"14.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <path\n                    d=\"M9.5 17c.5.5 1.4.8 2.5.8s2-.3 2.5-.8\"\n                    stroke=\"white\"\n                    stroke-width=\"1.2\"\n                    stroke-linecap=\"round\"\n                    fill=\"none\"\n                  />\n                </svg>\n              </div>\n            `\n          : nothing}\n        <div class=\"content\">\n          <div\n            class=\"image-wrap\"\n            @click=${() => src && window.open(src, \"_blank\")}\n            title=\"${alt || \"image\"}\"\n          >\n            ${!this._loaded ? html`<div class=\"skeleton\"></div>` : nothing}\n            <img\n              src=\"${src}\"\n              alt=\"${alt}\"\n              class=\"${this._loaded ? \"\" : \"loading\"}\"\n              @load=${() => { this._loaded = true; }}\n            />\n          </div>\n          ${caption ? html`<span class=\"caption\">${caption}</span>` : nothing}\n          ${this._time ? html`<span class=\"time\">${this._time}</span>` : nothing}\n        </div>\n      </div>\n    `;\n  }\n}\n\nMessageTypeRegistry.register(\n  \"image\",\n  ImageMessage as unknown as typeof HTMLElement\n);\n\nexport default ImageMessage;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { MessageTypeRegistry, type MessageSender, type MessageAction } from \"@chativa/core\";\n\n/**\n * Hero card message component.\n * Renders a structured card with an optional image, title, subtitle and action buttons.\n * Buttons dispatch `chat-action` events (bubbles + composed) with the action value.\n *\n * Register a message of type \"card\" with:\n *   {\n *     image?: \"https://...\",\n *     title: \"Card Title\",\n *     subtitle?: \"Supporting text\",\n *     buttons?: [{ label: \"Learn More\", value?: \"/learn-more\" }]\n *   }\n */\n@customElement(\"card-message\")\nexport class CardMessage extends LitElement {\n  static override styles = css`\n    :host {\n      display: block;\n    }\n\n    .message {\n      display: flex;\n      align-items: flex-end;\n      gap: 8px;\n      max-width: 82%;\n      margin-bottom: 2px;\n    }\n\n    .message.bot { margin-right: auto; }\n    .message.user { margin-left: auto; flex-direction: row-reverse; }\n\n    .avatar {\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      background: #ede9fe;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n    }\n\n    .avatar.hidden { visibility: hidden; }\n    .avatar svg { width: 16px; height: 16px; color: #7c3aed; }\n\n    .content {\n      display: flex;\n      flex-direction: column;\n      gap: 3px;\n    }\n\n    .card {\n      background: #ffffff;\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      overflow: hidden;\n      width: 260px;\n      box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\n    }\n\n    .card-image {\n      width: 100%;\n      height: 140px;\n      object-fit: cover;\n      display: block;\n    }\n\n    .card-image-skeleton {\n      width: 100%;\n      height: 140px;\n      background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n      background-size: 200% 100%;\n      animation: shimmer 1.4s infinite;\n    }\n\n    @keyframes shimmer {\n      0% { background-position: 200% 0; }\n      100% { background-position: -200% 0; }\n    }\n\n    .card-body {\n      padding: 12px 14px;\n    }\n\n    .card-title {\n      font-size: 0.9375rem;\n      font-weight: 600;\n      color: #0f172a;\n      margin: 0 0 4px;\n      line-height: 1.35;\n    }\n\n    .card-subtitle {\n      font-size: 0.8125rem;\n      color: #64748b;\n      margin: 0;\n      line-height: 1.45;\n    }\n\n    .card-divider {\n      height: 1px;\n      background: #f1f5f9;\n      margin: 0;\n    }\n\n    .card-actions {\n      display: flex;\n      flex-direction: column;\n    }\n\n    .card-btn {\n      background: none;\n      border: none;\n      border-bottom: 1px solid #f1f5f9;\n      padding: 10px 14px;\n      font-size: 0.875rem;\n      font-weight: 500;\n      color: var(--chativa-primary-color, #4f46e5);\n      cursor: pointer;\n      text-align: left;\n      font-family: inherit;\n      transition: background 0.15s;\n    }\n\n    .card-btn:last-child {\n      border-bottom: none;\n    }\n\n    .card-btn:hover {\n      background: #f8fafc;\n    }\n\n    .card-btn:active {\n      background: #f1f5f9;\n    }\n\n    .time {\n      font-size: 0.6875rem;\n      color: #94a3b8;\n      padding: 0 4px;\n    }\n  `;\n\n  @property({ type: Object }) messageData: Record<string, unknown> = {};\n  @property({ type: String }) sender: MessageSender = \"bot\";\n  @property({ type: Number }) timestamp = 0;\n  @property({ type: Boolean }) hideAvatar = false;\n\n  @state() private _imgLoaded = false;\n\n  private get _time(): string {\n    if (!this.timestamp) return \"\";\n    return new Date(this.timestamp).toLocaleTimeString([], {\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n    });\n  }\n\n  private _onButtonClick(action: MessageAction) {\n    if (action.url) {\n      window.open(action.url, \"_blank\", \"noopener\");\n      return;\n    }\n\n    this.dispatchEvent(\n      new CustomEvent<string>(\"chat-action\", {\n        detail: action.value ?? action.label,\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  render() {\n    const isUser = this.sender === \"user\";\n    const image = this.messageData?.image ? String(this.messageData.image) : null;\n    const title = String(this.messageData?.title ?? \"\");\n    const subtitle = this.messageData?.subtitle\n      ? String(this.messageData.subtitle)\n      : null;\n    const buttons = (this.messageData?.buttons ?? []) as MessageAction[];\n\n    return html`\n      <div class=\"message ${isUser ? \"user\" : \"bot\"}\">\n        ${!isUser\n          ? html`\n              <div class=\"avatar ${this.hideAvatar ? \"hidden\" : \"\"}\">\n                <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <rect x=\"5\" y=\"8\" width=\"14\" height=\"12\" rx=\"2.5\" />\n                  <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <circle cx=\"14.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <path\n                    d=\"M9.5 17c.5.5 1.4.8 2.5.8s2-.3 2.5-.8\"\n                    stroke=\"white\"\n                    stroke-width=\"1.2\"\n                    stroke-linecap=\"round\"\n                    fill=\"none\"\n                  />\n                </svg>\n              </div>\n            `\n          : nothing}\n        <div class=\"content\">\n          <div class=\"card\">\n            ${image\n              ? html`\n                  ${!this._imgLoaded ? html`<div class=\"card-image-skeleton\"></div>` : nothing}\n                  <img\n                    class=\"card-image\"\n                    src=\"${image}\"\n                    alt=\"${title}\"\n                    style=\"${this._imgLoaded ? \"\" : \"display:none\"}\"\n                    @load=${() => { this._imgLoaded = true; }}\n                  />\n                `\n              : nothing}\n            <div class=\"card-body\">\n              <p class=\"card-title\">${title}</p>\n              ${subtitle ? html`<p class=\"card-subtitle\">${subtitle}</p>` : nothing}\n            </div>\n            ${buttons.length > 0 ? html`\n              <div class=\"card-divider\"></div>\n              <div class=\"card-actions\">\n                ${buttons.map(\n                  (btn) => html`\n                    <button\n                      class=\"card-btn\"\n                      type=\"button\"\n                      @click=${() => this._onButtonClick(btn)}\n                    >${btn.label}</button>\n                  `\n                )}\n              </div>\n            ` : nothing}\n          </div>\n          ${this._time ? html`<span class=\"time\">${this._time}</span>` : nothing}\n        </div>\n      </div>\n    `;\n  }\n}\n\nMessageTypeRegistry.register(\n  \"card\",\n  CardMessage as unknown as typeof HTMLElement\n);\n\nexport default CardMessage;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { unsafeHTML } from \"lit/directives/unsafe-html.js\";\nimport { marked } from \"marked\";\nimport { MessageTypeRegistry, type MessageSender, type MessageAction } from \"@chativa/core\";\n\n/** Strip the wrapping <p>…</p> that marked adds for inline content. */\nfunction renderInlineMarkdown(text: string): ReturnType<typeof unsafeHTML> {\n  const html = (marked.parse(text, { async: false }) as string).replace(/^<p>(.*)<\\/p>\\n?$/s, \"$1\");\n  return unsafeHTML(html);\n}\n\n/**\n * Buttons message component.\n * Renders a bot text bubble followed by a vertical list of full-width action buttons.\n *\n * Default (one-time) mode — `data.persistent` omitted or false:\n *   Once a button is tapped, the list is replaced by \"✓ Selected label\".\n *   Further clicks are ignored.\n *\n * Persistent mode — `data.persistent: true`:\n *   Buttons remain visible after selection. The chosen button is highlighted.\n *   The user can re-click another button to change their selection.\n *\n * Register a message of type \"buttons\" with:\n *   {\n *     text?: \"Please choose an option:\",\n *     persistent?: true,                       // optional — default false\n *     buttons: [{ label: \"Option A\" }, { label: \"Option B\", value: \"/b\" }]\n *   }\n */\n@customElement(\"buttons-message\")\nexport class ButtonsMessage extends LitElement {\n  static override styles = css`\n    :host {\n      display: block;\n    }\n\n    .message {\n      display: flex;\n      align-items: flex-end;\n      gap: 8px;\n      max-width: 82%;\n      margin-bottom: 2px;\n    }\n\n    .message.bot { margin-right: auto; }\n    .message.user { margin-left: auto; flex-direction: row-reverse; }\n\n    .avatar {\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      background: #ede9fe;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n    }\n\n    .avatar.hidden { visibility: hidden; }\n    .avatar svg { width: 16px; height: 16px; color: #7c3aed; }\n\n    .content {\n      display: flex;\n      flex-direction: column;\n      gap: 6px;\n    }\n\n    .bubble {\n      padding: 9px 13px;\n      font-size: 0.875rem;\n      line-height: 1.5;\n      word-break: break-word;\n      background: #f1f5f9;\n      color: #0f172a;\n      border-radius: 4px 16px 16px 16px;\n    }\n\n    .btn-list {\n      display: flex;\n      flex-direction: column;\n      gap: 6px;\n      width: 220px;\n    }\n\n    .action-btn {\n      width: 100%;\n      padding: 9px 14px;\n      background: #ffffff;\n      border: 1.5px solid var(--chativa-primary-color, #4f46e5);\n      border-radius: 10px;\n      color: var(--chativa-primary-color, #4f46e5);\n      font-size: 0.875rem;\n      font-weight: 500;\n      cursor: pointer;\n      text-align: center;\n      font-family: inherit;\n      transition: background 0.15s, color 0.15s, opacity 0.15s;\n    }\n\n    .action-btn:hover:not(:disabled) {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n    }\n\n    .action-btn:active:not(:disabled) {\n      opacity: 0.85;\n    }\n\n    /* Persistent mode — selected state */\n    .action-btn.selected {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n    }\n\n    /* Persistent mode — unselected but locked (after another is picked) */\n    .action-btn.unselected {\n      opacity: 0.45;\n      cursor: default;\n    }\n\n    .selected-label {\n      font-size: 0.8125rem;\n      color: #64748b;\n      padding: 2px 4px;\n    }\n\n    .time {\n      font-size: 0.6875rem;\n      color: #94a3b8;\n      padding: 0 4px;\n    }\n  `;\n\n  @property({ type: Object }) messageData: Record<string, unknown> = {};\n  @property({ type: String }) sender: MessageSender = \"bot\";\n  @property({ type: Number }) timestamp = 0;\n  @property({ type: Boolean }) hideAvatar = false;\n\n  @state() private _selected: string | null = null;\n\n  private get _persistent(): boolean {\n    return Boolean(this.messageData?.persistent);\n  }\n\n  private get _time(): string {\n    if (!this.timestamp) return \"\";\n    return new Date(this.timestamp).toLocaleTimeString([], {\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n    });\n  }\n\n  private _onButtonClick(action: MessageAction) {\n    if (this._persistent) {\n      // Allow re-selection; deselect if same button clicked again\n      if (this._selected === action.label) {\n        this._selected = null;\n        return;\n      }\n      this._selected = action.label;\n    } else {\n      // One-time mode: lock after first click\n      if (this._selected !== null) return;\n      this._selected = action.label;\n    }\n\n    if (action.url) {\n      window.open(action.url, \"_blank\", \"noopener\");\n      return;\n    }\n\n    this.dispatchEvent(\n      new CustomEvent<{ text: string; markdown?: boolean }>(\"chat-action\", {\n        detail: { text: action.value ?? action.label, markdown: true },\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  render() {\n    const isUser = this.sender === \"user\";\n    const text = this.messageData?.text ? String(this.messageData.text) : null;\n    const buttons = (this.messageData?.buttons ?? []) as MessageAction[];\n    const persistent = this._persistent;\n\n    return html`\n      <div class=\"message ${isUser ? \"user\" : \"bot\"}\">\n        ${!isUser\n          ? html`\n              <div class=\"avatar ${this.hideAvatar ? \"hidden\" : \"\"}\">\n                <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <rect x=\"5\" y=\"8\" width=\"14\" height=\"12\" rx=\"2.5\" />\n                  <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <circle cx=\"14.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <path\n                    d=\"M9.5 17c.5.5 1.4.8 2.5.8s2-.3 2.5-.8\"\n                    stroke=\"white\"\n                    stroke-width=\"1.2\"\n                    stroke-linecap=\"round\"\n                    fill=\"none\"\n                  />\n                </svg>\n              </div>\n            `\n          : nothing}\n        <div class=\"content\">\n          ${text ? html`<div class=\"bubble\">${text}</div>` : nothing}\n\n          ${!persistent && this._selected !== null\n            /* One-time mode: replace buttons with confirmation label */\n            ? html`<span class=\"selected-label\">✓ ${renderInlineMarkdown(this._selected!)}</span>`\n            /* Persistent mode or pre-selection: show full button list */\n            : html`\n                <div class=\"btn-list\">\n                  ${buttons.map((btn) => {\n                    const isSelected = this._selected === btn.label;\n                    const isOther = persistent && this._selected !== null && !isSelected;\n                    return html`\n                      <button\n                        class=\"action-btn ${isSelected ? \"selected\" : \"\"} ${isOther ? \"unselected\" : \"\"}\"\n                        type=\"button\"\n                        ?disabled=${isOther}\n                        @click=${() => this._onButtonClick(btn)}\n                      >${renderInlineMarkdown(btn.label)}</button>\n                    `;\n                  })}\n                </div>\n              `}\n\n          ${this._time ? html`<span class=\"time\">${this._time}</span>` : nothing}\n        </div>\n      </div>\n    `;\n  }\n}\n\nMessageTypeRegistry.register(\n  \"buttons\",\n  ButtonsMessage as unknown as typeof HTMLElement\n);\n\nexport default ButtonsMessage;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { MessageTypeRegistry, type MessageSender } from \"@chativa/core\";\n\n/**\n * File attachment message component.\n * Renders a downloadable file card with file type icon, name and size.\n *\n * Register a message of type \"file\" with:\n *   { url: \"https://...\", name: \"report.pdf\", size?: 2048000, mimeType?: \"application/pdf\" }\n */\n\nfunction formatBytes(bytes: number): string {\n  if (bytes < 1024) return `${bytes} B`;\n  if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n  if (bytes < 1024 * 1024 * 1024) return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n  return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;\n}\n\nfunction fileIconAndColor(mimeType: string, name: string): { icon: string; color: string; bg: string } {\n  const ext = name.split(\".\").pop()?.toLowerCase() ?? \"\";\n  const mime = mimeType.toLowerCase();\n\n  if (mime.includes(\"pdf\") || ext === \"pdf\")\n    return { icon: \"pdf\", color: \"#dc2626\", bg: \"#fef2f2\" };\n  if (mime.includes(\"image\") || [\"jpg\", \"jpeg\", \"png\", \"gif\", \"webp\", \"svg\"].includes(ext))\n    return { icon: \"image\", color: \"#0284c7\", bg: \"#f0f9ff\" };\n  if (mime.includes(\"video\") || [\"mp4\", \"webm\", \"mov\", \"avi\"].includes(ext))\n    return { icon: \"video\", color: \"#7c3aed\", bg: \"#f5f3ff\" };\n  if (mime.includes(\"audio\") || [\"mp3\", \"wav\", \"ogg\", \"m4a\"].includes(ext))\n    return { icon: \"audio\", color: \"#db2777\", bg: \"#fdf2f8\" };\n  if (mime.includes(\"zip\") || mime.includes(\"archive\") || [\"zip\", \"rar\", \"7z\", \"tar\", \"gz\"].includes(ext))\n    return { icon: \"zip\", color: \"#ea580c\", bg: \"#fff7ed\" };\n  if (mime.includes(\"spreadsheet\") || mime.includes(\"excel\") || [\"xls\", \"xlsx\", \"csv\"].includes(ext))\n    return { icon: \"sheet\", color: \"#16a34a\", bg: \"#f0fdf4\" };\n  if (mime.includes(\"presentation\") || mime.includes(\"powerpoint\") || [\"ppt\", \"pptx\"].includes(ext))\n    return { icon: \"slide\", color: \"#ea580c\", bg: \"#fff7ed\" };\n  if (mime.includes(\"word\") || mime.includes(\"document\") || [\"doc\", \"docx\"].includes(ext))\n    return { icon: \"doc\", color: \"#0284c7\", bg: \"#f0f9ff\" };\n  return { icon: \"file\", color: \"#64748b\", bg: \"#f8fafc\" };\n}\n\nfunction renderFileIcon(icon: string, color: string) {\n  // All icons are simple SVG shapes\n  const icons: Record<string, string> = {\n    pdf: `<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm4 18H6V4h7v5h5v11zm-4-8H9v-1h5v1zm0 2H9v-1h5v1zm-2 2H9v-1h3v1z\" fill=\"${color}\"/>`,\n    image: `<path d=\"M21 19V5c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2zM8.5 13.5l2.5 3.01L14.5 12l4.5 6H5l3.5-4.5z\" fill=\"${color}\"/>`,\n    video: `<path d=\"M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z\" fill=\"${color}\"/>`,\n    audio: `<path d=\"M12 3v10.55c-.59-.34-1.27-.55-2-.55-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4V7h4V3h-6z\" fill=\"${color}\"/>`,\n    zip: `<path d=\"M20 6h-2.18c.07-.33.18-.65.18-1 0-1.66-1.34-3-3-3-1.05 0-1.96.54-2.5 1.35l-.5.67-.5-.68C10.96 2.54 10.05 2 9 2 7.34 2 6 3.34 6 5c0 .35.11.67.18 1H4c-1.11 0-1.99.89-1.99 2L2 19c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2zm-5-2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM9 4c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm11 15H4v-2l8-5 8 5v2zm0-4.5l-8-5-8 5V8h3v1h2V8h2v1h2V8h3v6.5z\" fill=\"${color}\"/>`,\n    sheet: `<path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 14H7v-2h5v2zm5-4H7v-2h10v2zm0-4H7V7h10v2z\" fill=\"${color}\"/>`,\n    slide: `<path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-7 3c1.93 0 3.5 1.57 3.5 3.5S13.93 13 12 13s-3.5-1.57-3.5-3.5S10.07 6 12 6zm7 13H5v-.23c0-.62.28-1.2.76-1.58C7.47 15.82 9.64 15 12 15s4.53.82 6.24 2.19c.48.38.76.97.76 1.58V19z\" fill=\"${color}\"/>`,\n    doc: `<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z\" fill=\"${color}\"/>`,\n    file: `<path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm4 18H6V4h7v5h5v11z\" fill=\"${color}\"/>`,\n  };\n  return `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">${icons[icon] ?? icons.file}</svg>`;\n}\n\n@customElement(\"file-message\")\nexport class FileMessage extends LitElement {\n  static override styles = css`\n    :host { display: block; }\n\n    .message {\n      display: flex;\n      align-items: flex-end;\n      gap: 8px;\n      max-width: 82%;\n      margin-bottom: 2px;\n    }\n\n    .message.bot { margin-right: auto; }\n    .message.user { margin-left: auto; flex-direction: row-reverse; }\n\n    .avatar {\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      background: #ede9fe;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n    }\n\n    .avatar.hidden { visibility: hidden; }\n    .avatar svg { width: 16px; height: 16px; color: #7c3aed; }\n\n    .content {\n      display: flex;\n      flex-direction: column;\n      gap: 3px;\n    }\n\n    .file-card {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n      padding: 11px 14px;\n      background: #f8fafc;\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      text-decoration: none;\n      min-width: 200px;\n      max-width: 260px;\n      transition: background 0.15s, border-color 0.15s;\n      cursor: pointer;\n    }\n\n    .file-card:hover {\n      background: #f1f5f9;\n      border-color: #cbd5e1;\n    }\n\n    .file-icon {\n      width: 40px;\n      height: 40px;\n      border-radius: 10px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n    }\n\n    .file-info {\n      flex: 1;\n      min-width: 0;\n    }\n\n    .file-name {\n      font-size: 0.8125rem;\n      font-weight: 600;\n      color: #0f172a;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      margin-bottom: 2px;\n    }\n\n    .file-meta {\n      font-size: 0.75rem;\n      color: #94a3b8;\n    }\n\n    .download-icon {\n      flex-shrink: 0;\n      color: #94a3b8;\n    }\n\n    .time {\n      font-size: 0.6875rem;\n      color: #94a3b8;\n      padding: 0 4px;\n    }\n  `;\n\n  @property({ type: Object }) messageData: Record<string, unknown> = {};\n  @property({ type: String }) sender: MessageSender = \"bot\";\n  @property({ type: Number }) timestamp = 0;\n  @property({ type: Boolean }) hideAvatar = false;\n\n  private get _time(): string {\n    if (!this.timestamp) return \"\";\n    return new Date(this.timestamp).toLocaleTimeString([], {\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n    });\n  }\n\n  render() {\n    const isUser = this.sender === \"user\";\n    const url = String(this.messageData?.url ?? \"#\");\n    const name = String(this.messageData?.name ?? \"file\");\n    const size = this.messageData?.size as number | undefined;\n    const mimeType = String(this.messageData?.mimeType ?? \"\");\n\n    const { icon, color, bg } = fileIconAndColor(mimeType, name);\n\n    return html`\n      <div class=\"message ${isUser ? \"user\" : \"bot\"}\">\n        ${!isUser\n          ? html`\n              <div class=\"avatar ${this.hideAvatar ? \"hidden\" : \"\"}\">\n                <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <rect x=\"5\" y=\"8\" width=\"14\" height=\"12\" rx=\"2.5\" />\n                  <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <circle cx=\"14.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <path d=\"M9.5 17c.5.5 1.4.8 2.5.8s2-.3 2.5-.8\" stroke=\"white\" stroke-width=\"1.2\" stroke-linecap=\"round\" fill=\"none\" />\n                </svg>\n              </div>\n            `\n          : nothing}\n        <div class=\"content\">\n          <a class=\"file-card\" href=\"${url}\" download=\"${name}\" target=\"_blank\" rel=\"noopener\">\n            <div class=\"file-icon\" style=\"background: ${bg}\">\n              <div .innerHTML=${renderFileIcon(icon, color)}></div>\n            </div>\n            <div class=\"file-info\">\n              <div class=\"file-name\" title=\"${name}\">${name}</div>\n              <div class=\"file-meta\">${size ? formatBytes(size) : \"Download\"}</div>\n            </div>\n            <svg class=\"download-icon\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n              <path d=\"M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z\"/>\n            </svg>\n          </a>\n          ${this._time ? html`<span class=\"time\">${this._time}</span>` : nothing}\n        </div>\n      </div>\n    `;\n  }\n}\n\nMessageTypeRegistry.register(\n  \"file\",\n  FileMessage as unknown as typeof HTMLElement\n);\n\nexport default FileMessage;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { MessageTypeRegistry, type MessageSender } from \"@chativa/core\";\n\n/**\n * Video message component.\n * Renders a native HTML5 video player with optional poster and caption.\n *\n * Register a message of type \"video\" with:\n *   { src: \"https://...\", poster?: \"https://...\", caption?: \"Caption text\" }\n */\n@customElement(\"video-message\")\nexport class VideoMessage extends LitElement {\n  static override styles = css`\n    :host { display: block; }\n\n    .message {\n      display: flex;\n      align-items: flex-end;\n      gap: 8px;\n      max-width: 82%;\n      margin-bottom: 2px;\n    }\n\n    .message.bot { margin-right: auto; }\n    .message.user { margin-left: auto; flex-direction: row-reverse; }\n\n    .avatar {\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      background: #ede9fe;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n    }\n\n    .avatar.hidden { visibility: hidden; }\n    .avatar svg { width: 16px; height: 16px; color: #7c3aed; }\n\n    .content {\n      display: flex;\n      flex-direction: column;\n      gap: 3px;\n    }\n\n    .video-wrap {\n      border-radius: 4px 16px 16px 16px;\n      overflow: hidden;\n      background: #0f172a;\n      max-width: 280px;\n    }\n\n    .message.user .video-wrap {\n      border-radius: 16px 4px 16px 16px;\n    }\n\n    video {\n      display: block;\n      width: 100%;\n      max-width: 280px;\n      max-height: 200px;\n      object-fit: contain;\n      background: #0f172a;\n    }\n\n    .caption {\n      font-size: 0.8125rem;\n      color: #64748b;\n      padding: 0 4px;\n      max-width: 280px;\n      line-height: 1.4;\n    }\n\n    .time {\n      font-size: 0.6875rem;\n      color: #94a3b8;\n      padding: 0 4px;\n    }\n  `;\n\n  @property({ type: Object }) messageData: Record<string, unknown> = {};\n  @property({ type: String }) sender: MessageSender = \"bot\";\n  @property({ type: Number }) timestamp = 0;\n  @property({ type: Boolean }) hideAvatar = false;\n\n  private get _time(): string {\n    if (!this.timestamp) return \"\";\n    return new Date(this.timestamp).toLocaleTimeString([], {\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n    });\n  }\n\n  render() {\n    const isUser = this.sender === \"user\";\n    const src = String(this.messageData?.src ?? \"\");\n    const poster = this.messageData?.poster ? String(this.messageData.poster) : undefined;\n    const caption = this.messageData?.caption ? String(this.messageData.caption) : null;\n\n    return html`\n      <div class=\"message ${isUser ? \"user\" : \"bot\"}\">\n        ${!isUser\n          ? html`\n              <div class=\"avatar ${this.hideAvatar ? \"hidden\" : \"\"}\">\n                <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <rect x=\"5\" y=\"8\" width=\"14\" height=\"12\" rx=\"2.5\" />\n                  <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <circle cx=\"14.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <path d=\"M9.5 17c.5.5 1.4.8 2.5.8s2-.3 2.5-.8\" stroke=\"white\" stroke-width=\"1.2\" stroke-linecap=\"round\" fill=\"none\" />\n                </svg>\n              </div>\n            `\n          : nothing}\n        <div class=\"content\">\n          <div class=\"video-wrap\">\n            <video\n              src=\"${src}\"\n              poster=\"${poster ?? \"\"}\"\n              controls\n              preload=\"metadata\"\n              playsinline\n            ></video>\n          </div>\n          ${caption ? html`<span class=\"caption\">${caption}</span>` : nothing}\n          ${this._time ? html`<span class=\"time\">${this._time}</span>` : nothing}\n        </div>\n      </div>\n    `;\n  }\n}\n\nMessageTypeRegistry.register(\n  \"video\",\n  VideoMessage as unknown as typeof HTMLElement\n);\n\nexport default VideoMessage;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { MessageTypeRegistry, type MessageSender, type MessageAction } from \"@chativa/core\";\n\n/**\n * Carousel message component.\n * Renders a horizontal scrollable row of rich cards with prev/next navigation.\n * Card buttons dispatch `chat-action` events (bubbles + composed).\n *\n * Register a message of type \"carousel\" with:\n *   {\n *     cards: [\n *       {\n *         image?: \"https://...\",\n *         title: \"Card Title\",\n *         subtitle?: \"Supporting text\",\n *         buttons?: [{ label: \"Learn More\", value?: \"/learn-more\" }]\n *       }\n *     ]\n *   }\n */\n\ninterface CarouselCard {\n  image?: string;\n  title: string;\n  subtitle?: string;\n  buttons?: MessageAction[];\n}\n\n@customElement(\"carousel-message\")\nexport class CarouselMessage extends LitElement {\n  static override styles = css`\n    :host { display: block; }\n\n    .message {\n      display: flex;\n      align-items: flex-start;\n      gap: 8px;\n      max-width: 100%;\n      margin-bottom: 2px;\n    }\n\n    .message.bot { margin-right: auto; }\n    .message.user { margin-left: auto; flex-direction: row-reverse; }\n\n    .avatar {\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      background: #ede9fe;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n      margin-top: 2px;\n    }\n\n    .avatar.hidden { visibility: hidden; }\n    .avatar svg { width: 16px; height: 16px; color: #7c3aed; }\n\n    .content {\n      display: flex;\n      flex-direction: column;\n      gap: 6px;\n      min-width: 0;\n      flex: 1;\n    }\n\n    /* ── Navigation row ── */\n    .carousel-nav {\n      display: flex;\n      align-items: center;\n      gap: 6px;\n    }\n\n    .nav-btn {\n      flex-shrink: 0;\n      width: 26px;\n      height: 26px;\n      border-radius: 50%;\n      border: 1.5px solid #e2e8f0;\n      background: #ffffff;\n      color: #475569;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);\n      transition: background 0.15s, border-color 0.15s, opacity 0.15s;\n      padding: 0;\n    }\n\n    .nav-btn:hover:not(:disabled) {\n      background: #f1f5f9;\n      border-color: #cbd5e1;\n    }\n\n    .nav-btn:disabled {\n      opacity: 0.3;\n      cursor: default;\n      box-shadow: none;\n    }\n\n    .nav-btn svg {\n      width: 14px;\n      height: 14px;\n      flex-shrink: 0;\n    }\n\n    /* ── Carousel track ── */\n    .carousel {\n      display: flex;\n      gap: 10px;\n      overflow-x: auto;\n      scroll-snap-type: x mandatory;\n      -webkit-overflow-scrolling: touch;\n      flex: 1;\n      min-width: 0;\n    }\n\n    /* Hide scrollbar */\n    .carousel::-webkit-scrollbar { display: none; }\n    .carousel { scrollbar-width: none; }\n\n    .card {\n      background: #ffffff;\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      overflow: hidden;\n      width: 200px;\n      flex-shrink: 0;\n      scroll-snap-align: start;\n      box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);\n    }\n\n    .card-image {\n      width: 100%;\n      height: 120px;\n      object-fit: cover;\n      display: block;\n    }\n\n    .card-image-skeleton {\n      width: 100%;\n      height: 120px;\n      background: linear-gradient(90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75%);\n      background-size: 200% 100%;\n      animation: shimmer 1.4s infinite;\n    }\n\n    @keyframes shimmer {\n      0% { background-position: 200% 0; }\n      100% { background-position: -200% 0; }\n    }\n\n    .card-body {\n      padding: 10px 12px;\n    }\n\n    .card-title {\n      font-size: 0.875rem;\n      font-weight: 600;\n      color: #0f172a;\n      margin: 0 0 3px;\n      line-height: 1.3;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n\n    .card-subtitle {\n      font-size: 0.75rem;\n      color: #64748b;\n      margin: 0;\n      line-height: 1.4;\n      display: -webkit-box;\n      -webkit-line-clamp: 2;\n      -webkit-box-orient: vertical;\n      overflow: hidden;\n    }\n\n    .card-divider {\n      height: 1px;\n      background: #f1f5f9;\n    }\n\n    .card-actions { display: flex; flex-direction: column; }\n\n    .card-btn {\n      background: none;\n      border: none;\n      border-bottom: 1px solid #f1f5f9;\n      padding: 8px 12px;\n      font-size: 0.8125rem;\n      font-weight: 500;\n      color: var(--chativa-primary-color, #4f46e5);\n      cursor: pointer;\n      text-align: center;\n      font-family: inherit;\n      transition: background 0.15s;\n    }\n\n    .card-btn:last-child { border-bottom: none; }\n    .card-btn:hover { background: #f8fafc; }\n    .card-btn:active { background: #f1f5f9; }\n\n    /* ── Dot indicators ── */\n    .dots {\n      display: flex;\n      gap: 5px;\n      justify-content: center;\n    }\n\n    .dot {\n      width: 5px;\n      height: 5px;\n      border-radius: 50%;\n      background: #e2e8f0;\n      transition: background 0.2s, transform 0.2s;\n    }\n\n    .dot.active {\n      background: var(--chativa-primary-color, #4f46e5);\n      transform: scale(1.3);\n    }\n\n    .time {\n      font-size: 0.6875rem;\n      color: #94a3b8;\n      padding: 0 4px;\n    }\n  `;\n\n  @property({ type: Object }) messageData: Record<string, unknown> = {};\n  @property({ type: String }) sender: MessageSender = \"bot\";\n  @property({ type: Number }) timestamp = 0;\n  @property({ type: Boolean }) hideAvatar = false;\n\n  @state() private _currentIndex = 0;\n  @state() private _loadedImages = new Set<number>();\n\n  private get _time(): string {\n    if (!this.timestamp) return \"\";\n    return new Date(this.timestamp).toLocaleTimeString([], {\n      hour: \"2-digit\",\n      minute: \"2-digit\",\n    });\n  }\n\n  private _scrollTo(index: number) {\n    const carousel = this.renderRoot.querySelector(\".carousel\") as HTMLElement | null;\n    if (!carousel) return;\n    const cards = carousel.querySelectorAll<HTMLElement>(\".card\");\n    const card = cards[index];\n    if (!card) return;\n    this._currentIndex = index;\n    carousel.scrollTo({ left: card.offsetLeft, behavior: \"smooth\" });\n  }\n\n  private _onButtonClick(action: MessageAction) {\n    if (action.url) {\n      window.open(action.url, \"_blank\", \"noopener\");\n      return;\n    }\n\n    this.dispatchEvent(\n      new CustomEvent<string>(\"chat-action\", {\n        detail: action.value ?? action.label,\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  private _onImageLoad(index: number) {\n    this._loadedImages = new Set(this._loadedImages).add(index);\n  }\n\n  render() {\n    const isUser = this.sender === \"user\";\n    const cards = (this.messageData?.cards ?? []) as CarouselCard[];\n    const total = cards.length;\n    const atStart = this._currentIndex === 0;\n    const atEnd = this._currentIndex >= total - 1;\n\n    return html`\n      <div class=\"message ${isUser ? \"user\" : \"bot\"}\">\n        ${!isUser\n          ? html`\n              <div class=\"avatar ${this.hideAvatar ? \"hidden\" : \"\"}\">\n                <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                  <rect x=\"5\" y=\"8\" width=\"14\" height=\"12\" rx=\"2.5\" />\n                  <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <circle cx=\"14.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                  <path d=\"M9.5 17c.5.5 1.4.8 2.5.8s2-.3 2.5-.8\" stroke=\"white\" stroke-width=\"1.2\" stroke-linecap=\"round\" fill=\"none\" />\n                </svg>\n              </div>\n            `\n          : nothing}\n        <div class=\"content\">\n          <div class=\"carousel-nav\">\n            <!-- Prev button -->\n            <button\n              class=\"nav-btn\"\n              ?disabled=${atStart}\n              @click=${() => this._scrollTo(this._currentIndex - 1)}\n              title=\"Previous\"\n            >\n              <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/>\n              </svg>\n            </button>\n\n            <!-- Scrollable track -->\n            <div class=\"carousel\">\n              ${cards.map(\n                (card, i) => html`\n                  <div class=\"card\">\n                    ${card.image\n                      ? html`\n                          ${!this._loadedImages.has(i)\n                            ? html`<div class=\"card-image-skeleton\"></div>`\n                            : nothing}\n                          <img\n                            class=\"card-image\"\n                            src=\"${card.image}\"\n                            alt=\"${card.title}\"\n                            style=\"${this._loadedImages.has(i) ? \"\" : \"display:none\"}\"\n                            @load=${() => this._onImageLoad(i)}\n                          />\n                        `\n                      : nothing}\n                    <div class=\"card-body\">\n                      <p class=\"card-title\" title=\"${card.title}\">${card.title}</p>\n                      ${card.subtitle\n                        ? html`<p class=\"card-subtitle\">${card.subtitle}</p>`\n                        : nothing}\n                    </div>\n                    ${card.buttons && card.buttons.length > 0\n                      ? html`\n                          <div class=\"card-divider\"></div>\n                          <div class=\"card-actions\">\n                            ${card.buttons.map(\n                              (btn) => html`\n                                <button\n                                  class=\"card-btn\"\n                                  type=\"button\"\n                                  @click=${() => this._onButtonClick(btn)}\n                                >${btn.label}</button>\n                              `\n                            )}\n                          </div>\n                        `\n                      : nothing}\n                  </div>\n                `\n              )}\n            </div>\n\n            <!-- Next button -->\n            <button\n              class=\"nav-btn\"\n              ?disabled=${atEnd}\n              @click=${() => this._scrollTo(this._currentIndex + 1)}\n              title=\"Next\"\n            >\n              <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/>\n              </svg>\n            </button>\n          </div>\n\n          <!-- Dot indicators (only when > 1 card) -->\n          ${total > 1 ? html`\n            <div class=\"dots\">\n              ${cards.map(\n                (_, i) => html`\n                  <div\n                    class=\"dot ${i === this._currentIndex ? \"active\" : \"\"}\"\n                    @click=${() => this._scrollTo(i)}\n                    style=\"cursor: pointer\"\n                  ></div>\n                `\n              )}\n            </div>\n          ` : nothing}\n\n          ${this._time ? html`<span class=\"time\">${this._time}</span>` : nothing}\n        </div>\n      </div>\n    `;\n  }\n}\n\nMessageTypeRegistry.register(\n  \"carousel\",\n  CarouselMessage as unknown as typeof HTMLElement\n);\n\nexport default CarouselMessage;\n","import { LitElement, html, css } from \"lit\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { t } from \"i18next\";\nimport i18next from \"../i18n/i18n\";\n\ninterface EmojiCategory {\n  label: string;\n  icon: string;\n  emojis: string[];\n}\n\nconst CATEGORIES: EmojiCategory[] = [\n  {\n    label: \"Smileys\",\n    icon: \"😀\",\n    emojis: [\n      \"😀\",\"😃\",\"😄\",\"😁\",\"😆\",\"😅\",\"🤣\",\"😂\",\"🙂\",\"🙃\",\n      \"😉\",\"😊\",\"😇\",\"🥰\",\"😍\",\"🤩\",\"😘\",\"😗\",\"😚\",\"😙\",\n      \"🥲\",\"😋\",\"😛\",\"😜\",\"🤪\",\"😝\",\"🤑\",\"🤗\",\"🤭\",\"🤫\",\n      \"🤔\",\"🤐\",\"🤨\",\"😐\",\"😑\",\"😶\",\"😏\",\"😒\",\"🙄\",\"😬\",\n      \"🤥\",\"😌\",\"😔\",\"😪\",\"🤤\",\"😴\",\"😷\",\"🤒\",\"🤕\",\"🤢\",\n      \"🤮\",\"🤧\",\"🥵\",\"🥶\",\"🥴\",\"😵\",\"🤯\",\"🤠\",\"🥳\",\"🥸\",\n      \"😎\",\"🤓\",\"🧐\",\"😕\",\"😟\",\"🙁\",\"☹️\",\"😮\",\"😯\",\"😲\",\n      \"😳\",\"🥺\",\"😦\",\"😧\",\"😨\",\"😰\",\"😥\",\"😢\",\"😭\",\"😱\",\n    ],\n  },\n  {\n    label: \"Gestures\",\n    icon: \"👍\",\n    emojis: [\n      \"👋\",\"🤚\",\"🖐️\",\"✋\",\"🖖\",\"👌\",\"🤌\",\"🤏\",\"✌️\",\"🤞\",\n      \"🤟\",\"🤘\",\"🤙\",\"👈\",\"👉\",\"👆\",\"🖕\",\"👇\",\"☝️\",\"👍\",\n      \"👎\",\"✊\",\"👊\",\"🤛\",\"🤜\",\"👏\",\"🙌\",\"👐\",\"🤲\",\"🤝\",\n      \"🙏\",\"✍️\",\"💅\",\"🤳\",\"💪\",\"🦾\",\"🦿\",\"🦵\",\"🦶\",\"👂\",\n    ],\n  },\n  {\n    label: \"Hearts\",\n    icon: \"❤️\",\n    emojis: [\n      \"❤️\",\"🧡\",\"💛\",\"💚\",\"💙\",\"💜\",\"🖤\",\"🤍\",\"🤎\",\"💔\",\n      \"❣️\",\"💕\",\"💞\",\"💓\",\"💗\",\"💖\",\"💘\",\"💝\",\"💟\",\"☮️\",\n      \"✝️\",\"☪️\",\"🕉️\",\"✡️\",\"🔯\",\"🕎\",\"☯️\",\"☦️\",\"🛐\",\"⛎\",\n    ],\n  },\n  {\n    label: \"Animals\",\n    icon: \"🐶\",\n    emojis: [\n      \"🐶\",\"🐱\",\"🐭\",\"🐹\",\"🐰\",\"🦊\",\"🐻\",\"🐼\",\"🐻‍❄️\",\"🐨\",\n      \"🐯\",\"🦁\",\"🐮\",\"🐷\",\"🐸\",\"🐵\",\"🙈\",\"🙉\",\"🙊\",\"🐔\",\n      \"🐧\",\"🐦\",\"🐤\",\"🦆\",\"🦅\",\"🦉\",\"🦇\",\"🐺\",\"🐗\",\"🐴\",\n      \"🦄\",\"🐝\",\"🐛\",\"🦋\",\"🐌\",\"🐞\",\"🐜\",\"🦟\",\"🦗\",\"🐢\",\n    ],\n  },\n  {\n    label: \"Food\",\n    icon: \"🍕\",\n    emojis: [\n      \"🍎\",\"🍊\",\"🍋\",\"🍇\",\"🍓\",\"🍒\",\"🍑\",\"🥭\",\"🍍\",\"🥥\",\n      \"🍅\",\"🍆\",\"🥑\",\"🌽\",\"🌶️\",\"🥕\",\"🧅\",\"🧄\",\"🥔\",\"🍠\",\n      \"🍞\",\"🥐\",\"🧀\",\"🍳\",\"🥞\",\"🧇\",\"🥓\",\"🌭\",\"🍔\",\"🍟\",\n      \"🍕\",\"🌮\",\"🌯\",\"🥗\",\"🍝\",\"🍜\",\"🍲\",\"🍛\",\"🍣\",\"🍱\",\n    ],\n  },\n  {\n    label: \"Travel\",\n    icon: \"✈️\",\n    emojis: [\n      \"🚗\",\"🚕\",\"🚙\",\"🚌\",\"🏎️\",\"🚓\",\"🚑\",\"🚒\",\"🚐\",\"🛻\",\n      \"🚚\",\"🚛\",\"🚜\",\"🏍️\",\"🛵\",\"🚲\",\"🛴\",\"🛺\",\"🚁\",\"✈️\",\n      \"🚀\",\"🛸\",\"🛶\",\"⛵\",\"🚤\",\"🛥️\",\"🛳️\",\"⛴️\",\"🚢\",\"🏠\",\n      \"🗼\",\"🗽\",\"⛪\",\"🕌\",\"🛕\",\"🕍\",\"⛩️\",\"🏰\",\"🏯\",\"🗺️\",\n    ],\n  },\n  {\n    label: \"Objects\",\n    icon: \"💡\",\n    emojis: [\n      \"⌚\",\"📱\",\"💻\",\"⌨️\",\"🖥️\",\"🖨️\",\"📷\",\"📸\",\"📹\",\"🎥\",\n      \"📞\",\"☎️\",\"📺\",\"📻\",\"🎙️\",\"🎚️\",\"🎛️\",\"🧭\",\"⏱️\",\"⏰\",\n      \"💡\",\"🔦\",\"🕯️\",\"🪔\",\"🧲\",\"🔋\",\"💰\",\"💳\",\"💎\",\"🔑\",\n      \"🗝️\",\"🔨\",\"🪓\",\"⛏️\",\"🔧\",\"🔩\",\"🪛\",\"🔫\",\"🧨\",\"💣\",\n    ],\n  },\n  {\n    label: \"Symbols\",\n    icon: \"✨\",\n    emojis: [\n      \"✨\",\"🌟\",\"💫\",\"⭐\",\"🌙\",\"☀️\",\"🌈\",\"⚡\",\"❄️\",\"🔥\",\n      \"💥\",\"🌊\",\"🌀\",\"🌪️\",\"🌫️\",\"🌤️\",\"⛅\",\"🌦️\",\"🌧️\",\"⛈️\",\n      \"❓\",\"❗\",\"💯\",\"🔴\",\"🟠\",\"🟡\",\"🟢\",\"🔵\",\"🟣\",\"⚫\",\n      \"⚪\",\"🟤\",\"🔶\",\"🔷\",\"🔸\",\"🔹\",\"🔺\",\"🔻\",\"💠\",\"🔘\",\n    ],\n  },\n];\n\n@customElement(\"emoji-picker\")\nexport class EmojiPicker extends LitElement {\n  static override styles = css`\n    :host {\n      display: block;\n    }\n\n    .picker {\n      width: 300px;\n      background: #ffffff;\n      border: 1px solid #e2e8f0;\n      border-radius: 14px;\n      box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);\n      overflow: hidden;\n      display: flex;\n      flex-direction: column;\n    }\n\n    /* Category tabs */\n    .tabs {\n      display: flex;\n      padding: 8px 8px 0;\n      gap: 2px;\n      background: #f8fafc;\n      border-bottom: 1px solid #e2e8f0;\n      overflow-x: auto;\n      scrollbar-width: none;\n    }\n\n    .tabs::-webkit-scrollbar {\n      display: none;\n    }\n\n    .tab {\n      flex-shrink: 0;\n      width: 32px;\n      height: 32px;\n      border: none;\n      background: transparent;\n      border-radius: 8px 8px 0 0;\n      cursor: pointer;\n      font-size: 1.1rem;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      transition: background 0.1s;\n      position: relative;\n    }\n\n    .tab:hover {\n      background: #e2e8f0;\n    }\n\n    .tab.active {\n      background: #ffffff;\n    }\n\n    .tab.active::after {\n      content: \"\";\n      position: absolute;\n      bottom: -1px;\n      left: 0;\n      right: 0;\n      height: 2px;\n      background: var(--chativa-primary-color, #4f46e5);\n      border-radius: 2px 2px 0 0;\n    }\n\n    /* Search */\n    .search-wrap {\n      padding: 8px 10px 6px;\n      border-bottom: 1px solid #f1f5f9;\n    }\n\n    .search-input {\n      width: 100%;\n      height: 30px;\n      padding: 0 10px;\n      border: 1.5px solid #e2e8f0;\n      border-radius: 8px;\n      font-size: 0.8125rem;\n      color: #0f172a;\n      background: #f8fafc;\n      outline: none;\n      box-sizing: border-box;\n      font-family: inherit;\n      transition: border-color 0.15s;\n    }\n\n    .search-input:focus {\n      border-color: var(--chativa-primary-color, #4f46e5);\n    }\n\n    .search-input::placeholder {\n      color: #94a3b8;\n    }\n\n    /* Emoji grid */\n    .grid {\n      display: grid;\n      grid-template-columns: repeat(8, 1fr);\n      padding: 8px;\n      gap: 2px;\n      max-height: 200px;\n      overflow-y: auto;\n      scrollbar-width: thin;\n      scrollbar-color: #e2e8f0 transparent;\n    }\n\n    .grid::-webkit-scrollbar {\n      width: 4px;\n    }\n\n    .grid::-webkit-scrollbar-track {\n      background: transparent;\n    }\n\n    .grid::-webkit-scrollbar-thumb {\n      background: #e2e8f0;\n      border-radius: 4px;\n    }\n\n    .emoji-btn {\n      width: 100%;\n      aspect-ratio: 1;\n      border: none;\n      background: transparent;\n      border-radius: 6px;\n      font-size: 1.25rem;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      line-height: 1;\n      transition: background 0.1s, transform 0.1s;\n      padding: 0;\n    }\n\n    .emoji-btn:hover {\n      background: #f1f5f9;\n      transform: scale(1.2);\n    }\n\n    .emoji-btn:active {\n      transform: scale(0.9);\n    }\n\n    .no-results {\n      grid-column: 1 / -1;\n      padding: 20px;\n      text-align: center;\n      font-size: 0.8125rem;\n      color: #94a3b8;\n    }\n  `;\n\n  @state() private _activeCategory = 0;\n  @state() private _search = \"\";\n  private _onLangChange = () => { this.requestUpdate(); };\n\n  override connectedCallback() {\n    super.connectedCallback();\n    i18next.on(\"languageChanged\", this._onLangChange);\n  }\n\n  override disconnectedCallback() {\n    i18next.off(\"languageChanged\", this._onLangChange);\n    super.disconnectedCallback();\n  }\n\n  private _onSearch(e: Event) {\n    this._search = (e.target as HTMLInputElement).value;\n  }\n\n  private _selectEmoji(emoji: string) {\n    this.dispatchEvent(\n      new CustomEvent<string>(\"emoji-select\", {\n        detail: emoji,\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  private get _visibleEmojis(): string[] {\n    const q = this._search.trim();\n    if (q) {\n      // Simple search: look in all categories\n      return CATEGORIES.flatMap((c) => c.emojis).filter((e) => e.includes(q));\n    }\n    return CATEGORIES[this._activeCategory].emojis;\n  }\n\n  render() {\n    const emojis = this._visibleEmojis;\n\n    return html`\n      <div class=\"picker\">\n        <div class=\"tabs\">\n          ${CATEGORIES.map(\n            (cat, i) => html`\n              <button\n                class=\"tab ${i === this._activeCategory && !this._search ? \"active\" : \"\"}\"\n                @click=${() => { this._activeCategory = i; this._search = \"\"; }}\n                title=${cat.label}\n              >${cat.icon}</button>\n            `\n          )}\n        </div>\n\n        <div class=\"search-wrap\">\n          <input\n            class=\"search-input\"\n            type=\"text\"\n            placeholder=\"${t(\"emojiPicker.searchPlaceholder\")}\"\n            .value=${this._search}\n            @input=${this._onSearch}\n            autocomplete=\"off\"\n          />\n        </div>\n\n        <div class=\"grid\">\n          ${emojis.length === 0\n            ? html`<span class=\"no-results\">${t(\"emojiPicker.noResults\")}</span>`\n            : emojis.map(\n                (emoji) => html`\n                  <button\n                    class=\"emoji-btn\"\n                    type=\"button\"\n                    @click=${() => this._selectEmoji(emoji)}\n                  >${emoji}</button>\n                `\n              )}\n        </div>\n      </div>\n    `;\n  }\n}\n\nexport default EmojiPicker;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { t } from \"i18next\";\nimport i18next from \"../i18n/i18n\";\nimport { chatStore, SlashCommandRegistry, resolveText, type ISlashCommand } from \"@chativa/core\";\nimport \"./EmojiPicker\";\n\n@customElement(\"chat-input\")\nclass ChatInput extends LitElement {\n  static override styles = css`\n    :host {\n      display: block;\n      flex-shrink: 0;\n      position: relative;\n    }\n\n    .input-area {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      padding: 10px 12px 12px;\n      background: var(--chativa-background, #ffffff);\n      border-top: 1px solid #f1f5f9;\n      position: relative;\n    }\n\n    .input-area.drag-over {\n      background: #ede9fe;\n      border-top-color: var(--chativa-primary-color, #4f46e5);\n    }\n\n    .icon-btn {\n      width: 34px;\n      height: 34px;\n      border-radius: 50%;\n      border: none;\n      background: transparent;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      color: #94a3b8;\n      flex-shrink: 0;\n      padding: 0;\n      transition: color 0.15s, background 0.15s;\n    }\n\n    .icon-btn:hover {\n      color: #64748b;\n      background: #f1f5f9;\n    }\n\n    .icon-btn.active {\n      color: var(--chativa-primary-color, #4f46e5);\n      background: #ede9fe;\n    }\n\n    .icon-btn svg {\n      width: 20px;\n      height: 20px;\n    }\n\n    .text-input {\n      flex: 1;\n      min-width: 0;\n      min-height: 36px;\n      max-height: 120px;\n      padding: 8px 14px;\n      border: 1.5px solid #e2e8f0;\n      border-radius: 18px;\n      font-size: 0.875rem;\n      line-height: 1.4;\n      color: #0f172a;\n      background: #f8fafc;\n      outline: none;\n      font-family: inherit;\n      transition: border-color 0.15s, background 0.15s;\n      resize: none;\n      overflow-y: auto;\n      box-sizing: border-box;\n      display: block;\n    }\n\n    .text-input::placeholder {\n      color: #94a3b8;\n    }\n\n    .text-input:focus {\n      border-color: var(--chativa-primary-color, #4f46e5);\n      background: #ffffff;\n    }\n\n    .text-input:disabled {\n      opacity: 0.5;\n      cursor: not-allowed;\n    }\n\n    .input-area.disconnected {\n      opacity: 0.6;\n      pointer-events: none;\n    }\n\n    .send-btn {\n      width: 36px;\n      height: 36px;\n      border-radius: 50%;\n      border: none;\n      background: var(--chativa-primary-color, #4f46e5);\n      color: white;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n      padding: 0;\n      transition: opacity 0.15s, transform 0.15s;\n    }\n\n    .send-btn:hover {\n      opacity: 0.9;\n    }\n\n    .send-btn:active {\n      transform: scale(0.92);\n    }\n\n    .send-btn:disabled {\n      opacity: 0.4;\n      cursor: not-allowed;\n      transform: none;\n    }\n\n    .send-btn svg {\n      width: 18px;\n      height: 18px;\n    }\n\n    /* Hidden file input */\n    .file-input {\n      display: none;\n    }\n\n    /* File previews */\n    .file-previews {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 6px;\n      padding: 8px 12px 0;\n      background: #ffffff;\n    }\n\n    .file-chip {\n      display: flex;\n      align-items: center;\n      gap: 6px;\n      padding: 4px 10px 4px 8px;\n      background: #f1f5f9;\n      border: 1px solid #e2e8f0;\n      border-radius: 999px;\n      font-size: 0.75rem;\n      color: #374151;\n      max-width: 200px;\n    }\n\n    .file-chip-name {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    .file-chip-size {\n      color: #94a3b8;\n      flex-shrink: 0;\n    }\n\n    .file-chip-remove {\n      flex-shrink: 0;\n      width: 16px;\n      height: 16px;\n      border: none;\n      background: none;\n      padding: 0;\n      cursor: pointer;\n      color: #94a3b8;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      border-radius: 50%;\n      transition: background 0.1s, color 0.1s;\n    }\n\n    .file-chip-remove:hover {\n      background: #e2e8f0;\n      color: #374151;\n    }\n\n    /* Emoji picker popup */\n    .picker-popup {\n      position: absolute;\n      bottom: calc(100% + 8px);\n      left: 8px;\n      z-index: 100;\n    }\n\n    /* Slash command popup */\n    .slash-popup {\n      position: absolute;\n      bottom: calc(100% + 8px);\n      left: 12px;\n      right: 12px;\n      z-index: 101;\n      background: #ffffff;\n      border: 1px solid #e2e8f0;\n      border-radius: 10px;\n      box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n      overflow: hidden;\n    }\n\n    .slash-item {\n      display: flex;\n      align-items: baseline;\n      gap: 8px;\n      padding: 9px 14px;\n      cursor: pointer;\n      transition: background 0.1s;\n      border: none;\n      background: none;\n      width: 100%;\n      text-align: left;\n    }\n\n    .slash-item:hover,\n    .slash-item.focused {\n      background: #f1f5f9;\n    }\n\n    .slash-item-name {\n      font-size: 0.875rem;\n      font-weight: 600;\n      color: var(--chativa-primary-color, #4f46e5);\n      white-space: nowrap;\n    }\n\n    .slash-item-usage {\n      font-size: 0.8125rem;\n      color: #94a3b8;\n      white-space: nowrap;\n    }\n\n    .slash-item-desc {\n      font-size: 0.8125rem;\n      color: #64748b;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    /* ── Mobile: prevent iOS auto-zoom on input focus ──────── */\n    @media (max-width: 480px) {\n      .text-input {\n        font-size: 1rem; /* ≥16px stops iOS Safari from zooming */\n      }\n    }\n  `;\n\n  @property({ type: String }) value = \"\";\n  @state() private _pickerOpen = false;\n  @state() private _files: File[] = [];\n  @state() private _dragOver = false;\n  @state() private _slashMatches: ISlashCommand[] = [];\n  @state() private _slashFocusIdx = 0;\n\n  private _onLangChange = () => { this.requestUpdate(); };\n  private _unsubscribeChatStore!: () => void;\n\n  // ── Text input ────────────────────────────────────────────\n\n  private _onInput(e: Event) {\n    const el = e.target as HTMLTextAreaElement;\n    this.value = el.value;\n    el.style.height = \"auto\";\n    el.style.height = `${el.scrollHeight}px`;\n    this._updateSlashMatches();\n  }\n\n  private _updateSlashMatches() {\n    if (this.value.startsWith(\"/\")) {\n      const query = this.value.slice(1).toLowerCase();\n      this._slashMatches = SlashCommandRegistry.list().filter(\n        (cmd) => cmd.name.toLowerCase().startsWith(query)\n      );\n      this._slashFocusIdx = 0;\n    } else {\n      this._slashMatches = [];\n    }\n  }\n\n  private _onKeyDown(e: KeyboardEvent) {\n    // Navigate slash popup with arrow keys\n    if (this._slashMatches.length > 0) {\n      if (e.key === \"ArrowDown\") {\n        e.preventDefault();\n        this._slashFocusIdx = (this._slashFocusIdx + 1) % this._slashMatches.length;\n        return;\n      }\n      if (e.key === \"ArrowUp\") {\n        e.preventDefault();\n        this._slashFocusIdx =\n          (this._slashFocusIdx - 1 + this._slashMatches.length) % this._slashMatches.length;\n        return;\n      }\n      if (e.key === \"Tab\" || (e.key === \"Enter\" && this._slashMatches.length > 0)) {\n        e.preventDefault();\n        this._selectSlashCommand(this._slashMatches[this._slashFocusIdx]);\n        return;\n      }\n      if (e.key === \"Escape\") {\n        this._slashMatches = [];\n        return;\n      }\n    }\n\n    if (e.key === \"Enter\" && !e.shiftKey) {\n      e.preventDefault();\n      this._send();\n    }\n    if (e.key === \"Escape\" && this._pickerOpen) {\n      this._pickerOpen = false;\n    }\n  }\n\n  private _selectSlashCommand(cmd: ISlashCommand) {\n    this.value = `/${cmd.name} `;\n    this._slashMatches = [];\n    this.updateComplete.then(() => {\n      const ta = this.shadowRoot?.querySelector<HTMLTextAreaElement>(\".text-input\");\n      if (ta) {\n        ta.focus();\n        ta.style.height = \"auto\";\n        ta.style.height = `${ta.scrollHeight}px`;\n      }\n    });\n  }\n\n  private _send() {\n    const text = this.value.trim();\n    const hasFiles = this._files.length > 0;\n\n    // Execute slash command if exact match\n    if (text.startsWith(\"/\")) {\n      const parts = text.slice(1).split(\" \");\n      const name = parts[0];\n      const args = parts.slice(1).join(\" \");\n      if (SlashCommandRegistry.execute(name, args)) {\n        this.value = \"\";\n        this._slashMatches = [];\n        this._resetTextarea();\n        return;\n      }\n    }\n\n    if (hasFiles) {\n      this.dispatchEvent(\n        new CustomEvent<{ files: File[]; text: string }>(\"send-file\", {\n          detail: { files: [...this._files], text },\n          bubbles: true,\n          composed: true,\n        })\n      );\n      this._files = [];\n    }\n\n    if (text && !hasFiles) {\n      this.dispatchEvent(\n        new CustomEvent<string>(\"send-message\", {\n          detail: text,\n          bubbles: true,\n          composed: true,\n        })\n      );\n    } else if (text && hasFiles) {\n      // text sent as part of send-file event — nothing extra needed\n    }\n\n    this.value = \"\";\n    this._slashMatches = [];\n    this._resetTextarea();\n  }\n\n  private _resetTextarea() {\n    this.updateComplete.then(() => {\n      const ta = this.shadowRoot?.querySelector<HTMLTextAreaElement>(\".text-input\");\n      if (ta) ta.style.height = \"auto\";\n    });\n  }\n\n  // ── Emoji picker ──────────────────────────────────────────\n\n  private _togglePicker() {\n    this._pickerOpen = !this._pickerOpen;\n  }\n\n  private _onEmojiSelect(e: CustomEvent<string>) {\n    const emoji = e.detail;\n    const ta = this.shadowRoot?.querySelector<HTMLTextAreaElement>(\".text-input\");\n    if (ta) {\n      const start = ta.selectionStart ?? this.value.length;\n      const end = ta.selectionEnd ?? this.value.length;\n      this.value = this.value.slice(0, start) + emoji + this.value.slice(end);\n      this.updateComplete.then(() => {\n        const el = this.shadowRoot?.querySelector<HTMLTextAreaElement>(\".text-input\");\n        if (el) {\n          el.focus();\n          const pos = start + emoji.length;\n          el.setSelectionRange(pos, pos);\n        }\n      });\n    } else {\n      this.value += emoji;\n    }\n    this._pickerOpen = false;\n  }\n\n  // ── File upload ───────────────────────────────────────────\n\n  private _openFilePicker() {\n    this.shadowRoot?.querySelector<HTMLInputElement>(\".file-input\")?.click();\n  }\n\n  private _onFileChange(e: Event) {\n    const input = e.target as HTMLInputElement;\n    if (input.files) this._addFiles(Array.from(input.files));\n    input.value = \"\";\n  }\n\n  private _addFiles(files: File[]) {\n    this._files = [...this._files, ...files];\n  }\n\n  /** Public API: add files from an external source (e.g. widget-level drag-drop). */\n  addFiles(files: File[]) {\n    this._addFiles(files);\n  }\n\n  private _removeFile(index: number) {\n    this._files = this._files.filter((_, i) => i !== index);\n  }\n\n  private _formatSize(bytes: number): string {\n    if (bytes < 1024) return `${bytes} B`;\n    if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n    return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n  }\n\n  private _onDragOver(e: DragEvent) {\n    e.preventDefault();\n    this._dragOver = true;\n  }\n\n  private _onDragLeave() {\n    this._dragOver = false;\n  }\n\n  private _onDrop(e: DragEvent) {\n    e.preventDefault();\n    e.stopPropagation(); // prevent widget-level handler from double-processing\n    this._dragOver = false;\n    const files = e.dataTransfer?.files;\n    if (files && files.length > 0) this._addFiles(Array.from(files));\n  }\n\n  // ── Document click (close popups) ─────────────────────────\n\n  private _onDocumentClick = (e: MouseEvent) => {\n    if (!this._pickerOpen && this._slashMatches.length === 0) return;\n    const path = e.composedPath();\n    if (!path.includes(this)) {\n      this._pickerOpen = false;\n      this._slashMatches = [];\n    }\n  };\n\n  // ── Lifecycle ─────────────────────────────────────────────\n\n  connectedCallback() {\n    super.connectedCallback();\n    document.addEventListener(\"click\", this._onDocumentClick);\n    i18next.on(\"languageChanged\", this._onLangChange);\n    this._unsubscribeChatStore = chatStore.subscribe(() => this.requestUpdate());\n  }\n\n  disconnectedCallback() {\n    document.removeEventListener(\"click\", this._onDocumentClick);\n    i18next.off(\"languageChanged\", this._onLangChange);\n    this._unsubscribeChatStore?.();\n    super.disconnectedCallback();\n  }\n\n  // ── Render ────────────────────────────────────────────────\n\n  render() {\n    const hasText = this.value.trim().length > 0;\n    const hasFiles = this._files.length > 0;\n    const connected = chatStore.getState().connectorStatus === \"connected\";\n\n    return html`\n      ${this._files.length > 0 ? html`\n        <div class=\"file-previews\">\n          ${this._files.map((f, i) => html`\n            <div class=\"file-chip\">\n              <span class=\"file-chip-name\" title=${f.name}>${f.name}</span>\n              <span class=\"file-chip-size\">${this._formatSize(f.size)}</span>\n              <button\n                class=\"file-chip-remove\"\n                type=\"button\"\n                aria-label=\"${t(\"input.removeFile\", { name: f.name })}\"\n                @click=${() => this._removeFile(i)}\n              >\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" width=\"10\" height=\"10\">\n                  <path d=\"M18 6L6 18M6 6l12 12\" stroke-linecap=\"round\"/>\n                </svg>\n              </button>\n            </div>\n          `)}\n        </div>\n      ` : nothing}\n\n      <div\n        class=\"input-area ${connected ? \"\" : \"disconnected\"} ${this._dragOver ? \"drag-over\" : \"\"}\"\n        @dragover=${this._onDragOver}\n        @dragleave=${this._onDragLeave}\n        @drop=${this._onDrop}\n      >\n        <!-- File attachment button -->\n        ${chatStore.getState().theme.enableFileUpload !== false ? html`\n        <input\n          class=\"file-input\"\n          type=\"file\"\n          multiple\n          @change=${this._onFileChange}\n        />\n        <button\n          class=\"icon-btn ${hasFiles ? \"active\" : \"\"}\"\n          type=\"button\"\n          aria-label=\"${t(\"input.attachFile\")}\"\n          ?disabled=${!connected}\n          @click=${(e: MouseEvent) => { e.stopPropagation(); this._openFilePicker(); }}\n        >\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.75\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n          </svg>\n        </button>\n        ` : nothing}\n\n        <!-- Emoji button -->\n        <button\n          class=\"icon-btn ${this._pickerOpen ? \"active\" : \"\"}\"\n          type=\"button\"\n          aria-label=\"${t(\"input.emoji\")}\"\n          aria-haspopup=\"true\"\n          aria-expanded=\"${this._pickerOpen}\"\n          aria-controls=\"emoji-popup\"\n          ?disabled=${!connected}\n          @click=${(e: MouseEvent) => { e.stopPropagation(); this._togglePicker(); }}\n        >\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.75\" xmlns=\"http://www.w3.org/2000/svg\">\n            <circle cx=\"12\" cy=\"12\" r=\"10\" />\n            <path d=\"M8 13s1.5 2 4 2 4-2 4-2\" stroke-linecap=\"round\" />\n            <circle cx=\"9\" cy=\"9.5\" r=\"1\" fill=\"currentColor\" stroke=\"none\" />\n            <circle cx=\"15\" cy=\"9.5\" r=\"1\" fill=\"currentColor\" stroke=\"none\" />\n          </svg>\n        </button>\n\n        <textarea\n          class=\"text-input\"\n          rows=\"1\"\n          .value=${this.value}\n          @input=${this._onInput}\n          @keydown=${this._onKeyDown}\n          placeholder=\"${t(\"input.placeholder\")}\"\n          aria-label=\"${t(\"input.placeholder\")}\"\n          aria-autocomplete=\"list\"\n          aria-expanded=\"${this._slashMatches.length > 0}\"\n          aria-controls=\"${this._slashMatches.length > 0 ? \"slash-popup\" : nothing}\"\n          aria-owns=\"${this._slashMatches.length > 0 ? \"slash-popup\" : nothing}\"\n          autocomplete=\"off\"\n          spellcheck=\"true\"\n          ?disabled=${!connected}\n        ></textarea>\n\n        <button\n          class=\"send-btn\"\n          type=\"button\"\n          ?disabled=${(!hasText && !hasFiles) || !connected}\n          @click=${this._send}\n          aria-label=\"${t(\"input.send\")}\"\n        >\n          <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n            <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\" />\n          </svg>\n        </button>\n      </div>\n\n      <!-- Slash command popup -->\n      ${this._slashMatches.length > 0 ? html`\n        <div class=\"slash-popup\" id=\"slash-popup\" role=\"listbox\">\n          ${this._slashMatches.map((cmd, i) => html`\n            <button\n              class=\"slash-item ${i === this._slashFocusIdx ? \"focused\" : \"\"}\"\n              type=\"button\"\n              role=\"option\"\n              aria-selected=\"${i === this._slashFocusIdx}\"\n              @click=${() => this._selectSlashCommand(cmd)}\n            >\n              <span class=\"slash-item-name\">/${cmd.name}</span>\n              ${resolveText(cmd.usage) ? html`<span class=\"slash-item-usage\">${resolveText(cmd.usage)}</span>` : nothing}\n              <span class=\"slash-item-desc\">${resolveText(cmd.description)}</span>\n            </button>\n          `)}\n        </div>\n      ` : nothing}\n\n      <!-- Emoji picker popup -->\n      ${this._pickerOpen ? html`\n        <div class=\"picker-popup\" id=\"emoji-popup\" @click=${(e: MouseEvent) => e.stopPropagation()}>\n          <emoji-picker @emoji-select=${this._onEmojiSelect}></emoji-picker>\n        </div>\n      ` : nothing}\n    `;\n  }\n}\n\nexport default ChatInput;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { t } from \"i18next\";\nimport \"../i18n/i18n\";\nimport type { ToolCall } from \"@chativa/core\";\n\n/**\n * <tool-call-card> — a single tool invocation.\n *\n * Collapsed: one row with the tool name, a status chip\n * (running / completed / error) and a chevron. Expanded: the invocation\n * parameters plus the result or error payload. Errors expand automatically\n * so failures are visible at a glance.\n */\n@customElement(\"tool-call-card\")\nexport class ToolCallCard extends LitElement {\n  static override styles = css`\n    :host {\n      display: block;\n    }\n\n    .card {\n      border: 1px solid #e2e8f0;\n      border-radius: 10px;\n      background: #ffffff;\n      overflow: hidden;\n    }\n\n    .head {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      width: 100%;\n      padding: 8px 10px;\n      border: none;\n      background: transparent;\n      cursor: pointer;\n      font-family: inherit;\n      font-size: 0.78rem;\n      color: #1e293b;\n      text-align: left;\n    }\n\n    .head:hover {\n      background: #f8fafc;\n    }\n\n    .tool-icon {\n      width: 14px;\n      height: 14px;\n      flex-shrink: 0;\n      color: #64748b;\n    }\n\n    .name {\n      font-weight: 600;\n      font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    .chip {\n      display: inline-flex;\n      align-items: center;\n      gap: 4px;\n      padding: 2px 8px;\n      border-radius: 999px;\n      border: 1px solid #e2e8f0;\n      font-size: 0.68rem;\n      font-weight: 500;\n      flex-shrink: 0;\n      margin-left: auto;\n    }\n\n    .chip.running {\n      color: #475569;\n    }\n\n    .chip.completed {\n      color: #15803d;\n      border-color: #bbf7d0;\n      background: #f0fdf4;\n    }\n\n    .chip.error {\n      color: #b91c1c;\n      border-color: #fecaca;\n      background: #fef2f2;\n    }\n\n    .chip svg {\n      width: 11px;\n      height: 11px;\n    }\n\n    .spinner {\n      width: 10px;\n      height: 10px;\n      border: 2px solid #e2e8f0;\n      border-top-color: #64748b;\n      border-radius: 50%;\n      animation: tool-card-spin 0.8s linear infinite;\n    }\n\n    @keyframes tool-card-spin {\n      to { transform: rotate(360deg); }\n    }\n\n    .chevron {\n      width: 14px;\n      height: 14px;\n      flex-shrink: 0;\n      color: #94a3b8;\n      transition: transform 0.15s;\n    }\n\n    .chevron.open {\n      transform: rotate(180deg);\n    }\n\n    .body {\n      padding: 0 10px 10px;\n      display: flex;\n      flex-direction: column;\n      gap: 8px;\n    }\n\n    .section-label {\n      font-size: 0.62rem;\n      font-weight: 600;\n      letter-spacing: 0.08em;\n      text-transform: uppercase;\n      color: #94a3b8;\n      margin-bottom: 4px;\n    }\n\n    pre {\n      margin: 0;\n      padding: 8px 10px;\n      border: 1px solid #e2e8f0;\n      border-radius: 8px;\n      background: #f8fafc;\n      font-size: 0.7rem;\n      font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n      color: #334155;\n      white-space: pre-wrap;\n      word-break: break-word;\n      max-height: 200px;\n      overflow: auto;\n    }\n\n    .error-box {\n      padding: 8px 10px;\n      border: 1px solid #fecaca;\n      border-radius: 8px;\n      background: #fef2f2;\n      font-size: 0.72rem;\n      color: #b91c1c;\n      word-break: break-word;\n    }\n  `;\n\n  @property({ type: Object }) toolCall: ToolCall | null = null;\n\n  @state() private _expanded = false;\n  /** Once the user toggles manually, stop auto-expanding on error. */\n  private _userToggled = false;\n  private _autoExpandedFor: string | null = null;\n\n  protected override willUpdate(): void {\n    const tc = this.toolCall;\n    // Auto-expand failures once per invocation so errors are never hidden.\n    if (tc && tc.status === \"error\" && !this._userToggled && this._autoExpandedFor !== tc.id) {\n      this._autoExpandedFor = tc.id;\n      this._expanded = true;\n    }\n  }\n\n  private _toggle(): void {\n    this._userToggled = true;\n    this._expanded = !this._expanded;\n  }\n\n  private _renderChip(tc: ToolCall) {\n    if (tc.status === \"running\") {\n      return html`<span class=\"chip running\"><span class=\"spinner\"></span>${t(\"toolCalls.running\")}</span>`;\n    }\n    if (tc.status === \"error\") {\n      return html`<span class=\"chip error\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\" stroke-width=\"2\"/><path d=\"M15 9l-6 6M9 9l6 6\"/></svg>\n        ${t(\"toolCalls.error\")}\n      </span>`;\n    }\n    return html`<span class=\"chip completed\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\" stroke-width=\"2\"/><path d=\"M8.5 12.2l2.3 2.3 4.7-4.8\"/></svg>\n      ${t(\"toolCalls.completed\")}\n    </span>`;\n  }\n\n  private _pretty(value: unknown): string {\n    if (typeof value === \"string\") return value;\n    try {\n      return JSON.stringify(value, null, 2);\n    } catch {\n      return String(value);\n    }\n  }\n\n  render() {\n    const tc = this.toolCall;\n    if (!tc) return nothing;\n\n    // `params` comes straight off the wire — guard against null and\n    // non-object values, not just undefined (Object.keys(null) throws).\n    const hasParams =\n      tc.params != null &&\n      typeof tc.params === \"object\" &&\n      Object.keys(tc.params).length > 0;\n    const hasResult = tc.status === \"completed\" && tc.result !== undefined;\n    const hasError = tc.status === \"error\" && !!tc.error;\n\n    return html`\n      <div class=\"card\">\n        <button\n          class=\"head\"\n          @click=${this._toggle}\n          aria-expanded=${this._expanded}\n          aria-label=\"${tc.name} — ${t(`toolCalls.${tc.status}`)}\"\n        >\n          <svg class=\"tool-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"/>\n          </svg>\n          <span class=\"name\">${tc.name}</span>\n          ${this._renderChip(tc)}\n          <svg class=\"chevron ${this._expanded ? \"open\" : \"\"}\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M6 9l6 6 6-6\"/>\n          </svg>\n        </button>\n\n        ${this._expanded\n          ? html`\n              <div class=\"body\">\n                ${hasParams\n                  ? html`<div>\n                      <div class=\"section-label\">${t(\"toolCalls.parameters\")}</div>\n                      <pre>${this._pretty(tc.params)}</pre>\n                    </div>`\n                  : nothing}\n                ${hasResult\n                  ? html`<div>\n                      <div class=\"section-label\">${t(\"toolCalls.result\")}</div>\n                      <pre>${this._pretty(tc.result)}</pre>\n                    </div>`\n                  : nothing}\n                ${hasError\n                  ? html`<div>\n                      <div class=\"section-label\">${t(\"toolCalls.error\")}</div>\n                      <div class=\"error-box\">${tc.error}</div>\n                    </div>`\n                  : nothing}\n              </div>\n            `\n          : nothing}\n      </div>\n    `;\n  }\n}\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { t } from \"i18next\";\nimport \"../i18n/i18n\";\nimport type { ToolCall } from \"@chativa/core\";\nimport \"./ToolCallCard\";\n\n/**\n * <tool-call-activity> — one-line tool activity strip, expandable to the\n * full invocation trace.\n *\n * Two modes:\n * - `live` — rendered by the message list while the bot is still working.\n *   The line shows the currently running tool's description (or name) with\n *   a spinner.\n * - attached (default) — rendered right above a bot message that carries a\n *   `data.toolCalls` trace. The line shows a compact summary\n *   (\"N operations · M failed\").\n *\n * Clicking the line toggles the full list of <tool-call-card>s.\n */\n@customElement(\"tool-call-activity\")\nexport class ToolCallActivity extends LitElement {\n  static override styles = css`\n    :host {\n      display: block;\n      max-width: 340px;\n    }\n\n    .line {\n      display: flex;\n      align-items: center;\n      gap: 7px;\n      width: 100%;\n      padding: 5px 10px;\n      border: 1px solid #e2e8f0;\n      border-radius: 999px;\n      background: #f8fafc;\n      cursor: pointer;\n      font-family: inherit;\n      font-size: 0.72rem;\n      color: #475569;\n      text-align: left;\n    }\n\n    .line:hover {\n      background: #f1f5f9;\n    }\n\n    .line-icon {\n      width: 13px;\n      height: 13px;\n      flex-shrink: 0;\n      color: #64748b;\n    }\n\n    .label {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      min-width: 0;\n    }\n\n    .names {\n      font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n      font-weight: 600;\n      color: #334155;\n    }\n\n    .count-error {\n      color: #b91c1c;\n      font-weight: 600;\n      flex-shrink: 0;\n    }\n\n    .spinner {\n      width: 11px;\n      height: 11px;\n      flex-shrink: 0;\n      border: 2px solid #e2e8f0;\n      border-top-color: #4f46e5;\n      border-radius: 50%;\n      animation: tool-activity-spin 0.8s linear infinite;\n    }\n\n    @keyframes tool-activity-spin {\n      to { transform: rotate(360deg); }\n    }\n\n    .chevron {\n      width: 13px;\n      height: 13px;\n      flex-shrink: 0;\n      margin-left: auto;\n      color: #94a3b8;\n      transition: transform 0.15s;\n    }\n\n    .chevron.open {\n      transform: rotate(180deg);\n    }\n\n    .trace {\n      display: flex;\n      flex-direction: column;\n      gap: 6px;\n      margin-top: 6px;\n    }\n  `;\n\n  @property({ type: Array }) toolCalls: ToolCall[] = [];\n  /** Live mode — the bot is still working; show the current tool + spinner. */\n  @property({ type: Boolean }) live = false;\n\n  @state() private _expanded = false;\n\n  private _toggle(): void {\n    this._expanded = !this._expanded;\n  }\n\n  /** Unique tool names, in invocation order — tells the user *which* tools ran. */\n  private get _toolNames(): string {\n    return [...new Set(this.toolCalls.map((tc) => tc.name))].join(\", \");\n  }\n\n  private _lineContent() {\n    const calls = this.toolCalls;\n    const running = [...calls].reverse().find((tc) => tc.status === \"running\");\n    const errorCount = calls.filter((tc) => tc.status === \"error\").length;\n\n    if (this.live && running) {\n      return html`\n        <span class=\"spinner\" aria-hidden=\"true\"></span>\n        <span class=\"label\">\n          <span class=\"names\">${running.name}</span>\n          ${running.description ? html` · ${running.description}` : nothing}\n        </span>\n      `;\n    }\n\n    return html`\n      <svg class=\"line-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n        <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\"/>\n      </svg>\n      <span class=\"label\" title=\"${this._toolNames}\">\n        <span class=\"names\">${this._toolNames}</span>\n        · ${t(\"toolCalls.summary\", { count: calls.length })}\n      </span>\n      ${errorCount > 0\n        ? html`<span class=\"count-error\">${t(\"toolCalls.failed\", { count: errorCount })}</span>`\n        : nothing}\n    `;\n  }\n\n  render() {\n    if (this.toolCalls.length === 0) return nothing;\n\n    return html`\n      <button\n        class=\"line\"\n        @click=${this._toggle}\n        aria-expanded=${this._expanded}\n        aria-label=\"${t(\"toolCalls.ariaToggle\")}\"\n      >\n        ${this._lineContent()}\n        <svg class=\"chevron ${this._expanded ? \"open\" : \"\"}\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n          <path d=\"M6 9l6 6 6-6\"/>\n        </svg>\n      </button>\n\n      ${this._expanded\n        ? html`\n            <div class=\"trace\">\n              ${this.toolCalls.map(\n                (tc) => html`<tool-call-card .toolCall=${tc}></tool-call-card>`,\n              )}\n            </div>\n          `\n        : nothing}\n    `;\n  }\n}\n","import { LitElement, html, css } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { unsafeStatic } from \"lit/static-html.js\";\nimport { html as staticHtml } from \"lit/static-html.js\";\nimport { t } from \"i18next\";\nimport i18next from \"../i18n/i18n\";\n\nimport { messageStore, chatStore, type StoredMessage, type ToolCall } from \"@chativa/core\";\nimport \"./ToolCallActivity\";\n\nfunction resolveTag(component: typeof HTMLElement): string {\n  const name = customElements.getName?.(component);\n  if (name) return name;\n\n  // Fallback for browsers without customElements.getName():\n  // create a temporary instance to read its tagName.\n  try {\n    const tmp = new component();\n    const tag = tmp.tagName?.toLowerCase();\n    if (tag && tag.includes(\"-\")) return tag;\n  } catch { /* custom element may require arguments */ }\n\n  return \"default-text-message\";\n}\n\n@customElement(\"chat-message-list\")\nclass ChatMessageList extends LitElement {\n  static override styles = css`\n    :host {\n      display: flex;\n      flex-direction: column;\n      flex: 1;\n      min-height: 0;\n      position: relative;\n    }\n\n    .list {\n      flex: 1;\n      overflow-y: auto;\n      padding: 16px;\n      display: flex;\n      flex-direction: column;\n      gap: 2px;\n      scroll-behavior: smooth;\n    }\n\n    /* Custom scrollbar */\n    .list::-webkit-scrollbar {\n      width: 4px;\n    }\n    .list::-webkit-scrollbar-track {\n      background: transparent;\n    }\n    .list::-webkit-scrollbar-thumb {\n      background: #e2e8f0;\n      border-radius: 4px;\n    }\n    .list::-webkit-scrollbar-thumb:hover {\n      background: #cbd5e1;\n    }\n\n    /* Search result bar */\n    .search-result-bar {\n      padding: 6px 16px;\n      font-size: 0.75rem;\n      color: #64748b;\n      background: #f8fafc;\n      border-bottom: 1px solid #e2e8f0;\n      flex-shrink: 0;\n      text-align: center;\n    }\n\n    /* Load more history button */\n    .load-more-btn {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 6px;\n      width: 100%;\n      padding: 8px 12px;\n      margin-bottom: 8px;\n      border: 1px solid #e2e8f0;\n      border-radius: 8px;\n      background: #f8fafc;\n      color: #64748b;\n      font-size: 0.8125rem;\n      font-weight: 500;\n      cursor: pointer;\n      transition: background 0.15s, border-color 0.15s;\n      flex-shrink: 0;\n    }\n\n    .load-more-btn:hover {\n      background: #f1f5f9;\n      border-color: #cbd5e1;\n    }\n\n    .load-more-btn:disabled {\n      opacity: 0.6;\n      cursor: not-allowed;\n    }\n\n    .empty {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      flex: 1;\n      gap: 12px;\n      padding: 24px;\n      text-align: center;\n    }\n\n    .empty-icon {\n      width: 56px;\n      height: 56px;\n      border-radius: 50%;\n      background: #ede9fe;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n\n    .empty-icon svg {\n      width: 28px;\n      height: 28px;\n      color: #7c3aed;\n    }\n\n    .empty-title {\n      font-size: 0.9375rem;\n      font-weight: 600;\n      color: #0f172a;\n      margin: 0;\n    }\n\n    .empty-subtitle {\n      font-size: 0.8125rem;\n      color: #64748b;\n      margin: 0;\n    }\n\n    /* Loading state */\n    .connecting {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      flex: 1;\n      gap: 14px;\n      padding: 24px;\n      text-align: center;\n    }\n\n    .spinner {\n      width: 36px;\n      height: 36px;\n      border: 3px solid #e2e8f0;\n      border-top-color: var(--chativa-primary-color, #4f46e5);\n      border-radius: 50%;\n      animation: spin 0.8s linear infinite;\n    }\n\n    @keyframes spin {\n      to { transform: rotate(360deg); }\n    }\n\n    .connecting-text {\n      font-size: 0.8125rem;\n      color: #64748b;\n      margin: 0;\n    }\n\n    /* Live tool-call activity strip (bot is working) */\n    .tool-activity-live {\n      margin-top: 4px;\n      width: fit-content;\n      max-width: 85%;\n    }\n\n    /* Trace attached above a delivered bot message */\n    .tool-activity-attached {\n      margin: 6px 0 2px;\n      width: fit-content;\n      max-width: 85%;\n    }\n\n    /* Align with the bubble, past the 28px avatar + 8px gap */\n    .tool-activity-attached.avatar-offset {\n      margin-left: 36px;\n    }\n\n    /* Typing indicator */\n    .typing-bubble {\n      display: flex;\n      align-items: center;\n      gap: 5px;\n      padding: 10px 14px;\n      background: #f1f5f9;\n      border-radius: 18px 18px 18px 4px;\n      width: fit-content;\n      margin-top: 4px;\n    }\n\n    .typing-bubble span {\n      display: block;\n      width: 7px;\n      height: 7px;\n      background: #94a3b8;\n      border-radius: 50%;\n      animation: typing-bounce 1.2s infinite ease-in-out;\n    }\n\n    .typing-bubble span:nth-child(1) { animation-delay: 0s; }\n    .typing-bubble span:nth-child(2) { animation-delay: 0.2s; }\n    .typing-bubble span:nth-child(3) { animation-delay: 0.4s; }\n\n    @keyframes typing-bounce {\n      0%, 60%, 100% { transform: translateY(0); opacity: 0.5; }\n      30% { transform: translateY(-5px); opacity: 1; }\n    }\n\n    /* New-message pill */\n    .new-msg-pill {\n      position: absolute;\n      bottom: 12px;\n      left: 50%;\n      transform: translateX(-50%);\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #fff;\n      font-size: 0.75rem;\n      font-weight: 600;\n      padding: 6px 14px;\n      border-radius: 999px;\n      cursor: pointer;\n      border: none;\n      box-shadow: 0 4px 14px rgba(79,70,229,0.35);\n      display: flex;\n      align-items: center;\n      gap: 6px;\n      animation: pill-in 0.2s ease;\n      white-space: nowrap;\n      z-index: 10;\n    }\n\n    @keyframes pill-in {\n      from { opacity: 0; transform: translateX(-50%) translateY(8px); }\n      to   { opacity: 1; transform: translateX(-50%) translateY(0); }\n    }\n\n    /* Reconnecting banner */\n    .reconnecting-banner {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      padding: 8px 14px;\n      background: #fefce8;\n      border: 1px solid #fde047;\n      border-radius: 10px;\n      margin-bottom: 8px;\n      font-size: 0.8125rem;\n      color: #854d0e;\n      flex-shrink: 0;\n    }\n\n    .mini-spinner {\n      width: 14px;\n      height: 14px;\n      border: 2px solid #fde047;\n      border-top-color: #854d0e;\n      border-radius: 50%;\n      animation: spin 0.8s linear infinite;\n      flex-shrink: 0;\n    }\n\n    /* Error state */\n    .error-state {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      flex: 1;\n      gap: 14px;\n      padding: 24px;\n      text-align: center;\n    }\n\n    .error-icon {\n      width: 52px;\n      height: 52px;\n      border-radius: 50%;\n      background: #fee2e2;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n\n    .error-icon svg { width: 26px; height: 26px; color: #ef4444; }\n\n    .error-title { font-size: 0.9375rem; font-weight: 600; color: #0f172a; margin: 0; }\n    .error-subtitle { font-size: 0.8125rem; color: #64748b; margin: 0; }\n\n    .retry-btn {\n      padding: 8px 20px;\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #fff;\n      border: none;\n      border-radius: 20px;\n      font-size: 0.875rem;\n      font-weight: 600;\n      cursor: pointer;\n      transition: opacity 0.15s;\n    }\n\n    .retry-btn:hover { opacity: 0.88; }\n  `;\n\n  private _onLangChange = () => { this.requestUpdate(); };\n\n  private _unsubscribeMessages!: () => void;\n  private _unsubscribeChatStore!: () => void;\n  private _isAtBottom = true;\n  private _hasNewMessages = false;\n  private _prevMessageCount = 0;\n  private _prevVersion = 0;\n  private _prevIsTyping = false;\n  private _prevToolCallCount = 0;\n  /** Set to true while a history load is in-flight; cleared in updated(). */\n  private _prevIsLoadingHistory = false;\n  /** scrollHeight captured just before history load starts. */\n  private _scrollHeightBeforeHistory = 0;\n\n  private get _list(): Element | null {\n    return this.shadowRoot?.querySelector(\".list\") ?? null;\n  }\n\n  connectedCallback() {\n    super.connectedCallback();\n    this._unsubscribeMessages = messageStore.subscribe(() =>\n      this.requestUpdate()\n    );\n    this._unsubscribeChatStore = chatStore.subscribe(() =>\n      this.requestUpdate()\n    );\n    i18next.on(\"languageChanged\", this._onLangChange);\n  }\n\n  disconnectedCallback() {\n    this._unsubscribeMessages?.();\n    this._unsubscribeChatStore?.();\n    i18next.off(\"languageChanged\", this._onLangChange);\n    this._list?.removeEventListener(\"scroll\", this._onScroll);\n    super.disconnectedCallback();\n  }\n\n  private _onScroll = () => {\n    const list = this._list;\n    if (!list) return;\n    const threshold = 60;\n    this._isAtBottom =\n      list.scrollTop + list.clientHeight >= list.scrollHeight - threshold;\n    if (this._isAtBottom) {\n      this._hasNewMessages = false;\n      this.requestUpdate();\n    }\n  };\n\n  firstUpdated() {\n    this._list?.addEventListener(\"scroll\", this._onScroll, { passive: true });\n  }\n\n  updated() {\n    const { messages, version } = messageStore.getState();\n    const currentCount = messages.length;\n    const { isTyping, isLoadingHistory, activeToolCalls } = chatStore.getState();\n\n    const typingChanged = isTyping !== this._prevIsTyping;\n    this._prevIsTyping = isTyping;\n\n    // The live tool-activity strip appearing/growing changes list height\n    const toolCallsChanged = activeToolCalls.length !== this._prevToolCallCount;\n    this._prevToolCallCount = activeToolCalls.length;\n\n    // Detect when history loading just finished (true → false transition)\n    const historyJustLoaded = this._prevIsLoadingHistory && !isLoadingHistory;\n    this._prevIsLoadingHistory = isLoadingHistory;\n\n    if (historyJustLoaded && this._scrollHeightBeforeHistory > 0) {\n      // Restore scroll so the user stays at the same visual position after prepend\n      requestAnimationFrame(() => {\n        const list = this._list;\n        if (list) {\n          const delta = list.scrollHeight - this._scrollHeightBeforeHistory;\n          list.scrollTop += delta;\n        }\n        this._scrollHeightBeforeHistory = 0;\n      });\n      this._prevMessageCount = currentCount;\n      this._prevVersion = version;\n      return;\n    }\n\n    const countIncreased = currentCount > this._prevMessageCount;\n    // True when an existing message was mutated (e.g. GenUI chunk appended)\n    const storeUpdated = version > this._prevVersion;\n    this._prevMessageCount = currentCount;\n    this._prevVersion = version;\n\n    // While history is being prepended at the top, skip auto-scroll logic entirely\n    if (isLoadingHistory) return;\n\n    // After /clear — reset scroll flags\n    if (currentCount === 0) {\n      this._hasNewMessages = false;\n      this._isAtBottom = true;\n      return;\n    }\n\n    if (countIncreased) {\n      // New message arrived\n      if (this._isAtBottom) {\n        this._pinToBottom();\n      } else {\n        this._hasNewMessages = true;\n        this.requestUpdate();\n      }\n    } else if (storeUpdated && this._isAtBottom) {\n      // Existing message updated (GenUI chunk, status change, etc.) — keep pinned\n      this._pinToBottom();\n    } else if (storeUpdated && !this._isAtBottom) {\n      // GenUI update while user is scrolled up — show pill\n      this._hasNewMessages = true;\n      this.requestUpdate();\n    } else if ((typingChanged || toolCallsChanged) && this._isAtBottom) {\n      this._pinToBottom();\n    }\n  }\n\n  private _pinToBottom() {\n    requestAnimationFrame(() => {\n      if (!this._isAtBottom) return;\n      const list = this._list;\n      if (list) list.scrollTop = list.scrollHeight;\n    });\n  }\n\n  private _scrollToBottom() {\n    const list = this._list;\n    if (!list) return;\n    list.scrollTo({ top: list.scrollHeight, behavior: \"smooth\" });\n    this._isAtBottom = true;\n    this._hasNewMessages = false;\n    this.requestUpdate();\n  }\n\n  private _retry() {\n    this.dispatchEvent(\n      new CustomEvent(\"chat-retry\", { bubbles: true, composed: true })\n    );\n  }\n\n  private _loadHistory() {\n    // Capture scrollHeight now; updated() will apply the delta after data loads\n    this._scrollHeightBeforeHistory = this._list?.scrollHeight ?? 0;\n    this.dispatchEvent(\n      new CustomEvent(\"chat-load-history\", { bubbles: true, composed: true })\n    );\n  }\n\n  private _renderMessage(msg: StoredMessage, i: number, messages: StoredMessage[]) {\n    const tag = msg.component\n      ? resolveTag(msg.component)\n      : \"default-text-message\";\n    const next = messages[i + 1];\n    const isLastInGroup = !next || next.from !== msg.from;\n    const rendered = staticHtml`<${unsafeStatic(tag)}\n      .messageData=${msg.data}\n      .sender=${msg.from ?? \"bot\"}\n      .messageId=${msg.id}\n      .timestamp=${isLastInGroup ? (msg.timestamp ?? 0) : 0}\n      .hideAvatar=${!isLastInGroup}\n      .status=${msg.status ?? \"sent\"}\n    ></${unsafeStatic(tag)}>`;\n\n    // Tool-call trace attaches at list level so every message type — built-in\n    // or custom (e.g. a GenUI weather widget) — gets the activity line above it.\n    const toolCalls = msg.from !== \"user\"\n      ? (msg.data?.toolCalls as ToolCall[] | undefined)\n      : undefined;\n    // Array.isArray also shields against connector-supplied non-array values\n    // (data.toolCalls passes through core with only an undefined check).\n    if (!Array.isArray(toolCalls) || toolCalls.length === 0) return rendered;\n\n    const showBotAvatar = chatStore.getState().theme.avatar?.showBot !== false;\n    return html`\n      <div class=\"tool-activity-attached ${showBotAvatar ? \"avatar-offset\" : \"\"}\">\n        <tool-call-activity .toolCalls=${toolCalls}></tool-call-activity>\n      </div>\n      ${rendered}\n    `;\n  }\n\n  render() {\n    const messages = messageStore.getState().messages;\n    const { connectorStatus, isTyping, reconnectAttempt, hasMoreHistory, isLoadingHistory, searchQuery, activeToolCalls } = chatStore.getState();\n\n    const displayMessages = searchQuery\n      ? messages.filter((msg) => {\n          const text = (msg.data?.text as string | undefined) ?? \"\";\n          const q = searchQuery.toLowerCase();\n          if (text.toLowerCase().includes(q)) return true;\n          try { return JSON.stringify(msg.data).toLowerCase().includes(q); }\n          catch { return false; }\n        })\n      : messages;\n\n    // Error state: all reconnect attempts exhausted\n    if (connectorStatus === \"error\") {\n      return html`\n        <div class=\"list\">\n          <div class=\"error-state\">\n            <div class=\"error-icon\">\n              <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"/>\n              </svg>\n            </div>\n            <p class=\"error-title\">${t(\"messageList.errorTitle\")}</p>\n            <p class=\"error-subtitle\">${t(\"messageList.errorSubtitle\")}</p>\n            <button class=\"retry-btn\" @click=${this._retry}>${t(\"messageList.retry\")}</button>\n          </div>\n        </div>\n      `;\n    }\n\n    // Initial connecting (no messages yet)\n    if ((connectorStatus === \"connecting\" || connectorStatus === \"idle\") && messages.length === 0) {\n      return html`\n        <div class=\"list\">\n          <div class=\"connecting\" role=\"status\" aria-label=\"${t(\"messageList.connecting\")}\">\n            <div class=\"spinner\" aria-hidden=\"true\"></div>\n            <p class=\"connecting-text\" aria-hidden=\"true\">${t(\"messageList.connecting\")}</p>\n          </div>\n        </div>\n      `;\n    }\n\n    return html`\n      <div\n        class=\"list\"\n        role=\"log\"\n        aria-live=\"polite\"\n        aria-label=\"${t(\"messageList.ariaLabel\")}\"\n        aria-relevant=\"additions\"\n      >\n        ${connectorStatus === \"connecting\" && messages.length > 0 ? html`\n          <div class=\"reconnecting-banner\" role=\"status\">\n            <div class=\"mini-spinner\" aria-hidden=\"true\"></div>\n            ${t(\"messageList.reconnecting\", { attempt: reconnectAttempt })}\n          </div>\n        ` : null}\n\n        ${hasMoreHistory ? html`\n          <button\n            class=\"load-more-btn\"\n            ?disabled=${isLoadingHistory}\n            @click=${this._loadHistory}\n          >\n            ${isLoadingHistory\n              ? html`<div class=\"mini-spinner\" role=\"status\" aria-label=\"${t(\"messageList.loadingHistory\")}\"></div>`\n              : html`<span aria-hidden=\"true\">↑</span> ${t(\"messageList.loadMore\", { defaultValue: \"Load previous messages\" })}`}\n          </button>\n        ` : null}\n\n        ${searchQuery ? html`\n          <div class=\"search-result-bar\" role=\"status\" aria-live=\"polite\">\n            ${displayMessages.length === 0\n              ? t(\"messageList.searchEmpty\")\n              : t(\"messageList.searchResult\", { count: displayMessages.length })}\n          </div>\n        ` : null}\n\n        ${displayMessages.length === 0 && !searchQuery\n          ? html`\n              <div class=\"empty\" aria-label=\"${t(\"messageList.emptyTitle\")}\">\n                <div class=\"empty-icon\" aria-hidden=\"true\">\n                  <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                    <path\n                      d=\"M20 2H4a2 2 0 0 0-2 2v18l4-4h14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm-2 10H6V10h12v2zm0-3H6V7h12v2z\"\n                    />\n                  </svg>\n                </div>\n                <p class=\"empty-title\">${t(\"messageList.emptyTitle\")}</p>\n                <p class=\"empty-subtitle\">${t(\"messageList.emptySubtitle\")}</p>\n              </div>\n            `\n          : displayMessages.map((msg, i) => this._renderMessage(msg, i, displayMessages))}\n\n        ${activeToolCalls.length > 0 ? html`\n          <div class=\"tool-activity-live\" role=\"status\">\n            <tool-call-activity live .toolCalls=${activeToolCalls}></tool-call-activity>\n          </div>\n        ` : null}\n\n        ${isTyping ? html`\n          <div\n            class=\"typing-bubble\"\n            role=\"status\"\n            aria-label=\"${t(\"messageList.typingIndicator\")}\"\n          >\n            <span aria-hidden=\"true\"></span>\n            <span aria-hidden=\"true\"></span>\n            <span aria-hidden=\"true\"></span>\n          </div>\n        ` : null}\n      </div>\n      ${this._hasNewMessages ? html`\n        <button class=\"new-msg-pill\" @click=${this._scrollToBottom}>\n          <span aria-hidden=\"true\">↓</span> ${t(\"messageList.newMessage\")}\n        </button>\n      ` : null}\n    `;\n  }\n}\n\nexport default ChatMessageList;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { t } from \"i18next\";\nimport { ChatbotMixin } from \"../mixins/ChatbotMixin\";\n\n@customElement(\"chat-header\")\nclass ChatHeader extends ChatbotMixin(LitElement) {\n  static override styles = css`\n    :host {\n      display: block;\n      flex-shrink: 0;\n    }\n\n    .header {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n      padding: 14px 16px;\n      background: linear-gradient(\n        135deg,\n        var(--chativa-primary-color, #4f46e5) 0%,\n        var(--chativa-primary-dark, #7c3aed) 100%\n      );\n      cursor: grab;\n      user-select: none;\n    }\n\n    .header:active {\n      cursor: grabbing;\n    }\n\n    .avatar {\n      width: 40px;\n      height: 40px;\n      border-radius: 50%;\n      background: rgba(255, 255, 255, 0.18);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n      pointer-events: none;\n    }\n\n    .avatar svg {\n      width: 22px;\n      height: 22px;\n      color: white;\n    }\n\n    .avatar img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      border-radius: 50%;\n    }\n\n    .info {\n      flex: 1;\n      min-width: 0;\n      pointer-events: none;\n    }\n\n    .title {\n      display: block;\n      color: white;\n      font-weight: 700;\n      font-size: 0.9375rem;\n      letter-spacing: -0.01em;\n      line-height: 1.25;\n    }\n\n    .status {\n      display: flex;\n      align-items: center;\n      gap: 5px;\n      margin-top: 3px;\n    }\n\n    .status-dot {\n      width: 7px;\n      height: 7px;\n      border-radius: 50%;\n      background: #4ade80;\n      flex-shrink: 0;\n      transition: background 0.3s ease;\n    }\n\n    .status-dot.connecting {\n      background: #fbbf24;\n      animation: pulse 1.2s ease-in-out infinite;\n    }\n\n    .status-dot.error {\n      background: #f87171;\n    }\n\n    .status-dot.disconnected {\n      background: #94a3b8;\n    }\n\n    @keyframes pulse {\n      0%, 100% { opacity: 1; transform: scale(1); }\n      50% { opacity: 0.45; transform: scale(0.75); }\n    }\n\n    .status-text {\n      color: rgba(255, 255, 255, 0.75);\n      font-size: 0.75rem;\n      font-weight: 400;\n    }\n\n    .actions {\n      display: flex;\n      align-items: center;\n      gap: 4px;\n      flex-shrink: 0;\n    }\n\n    .icon-btn {\n      width: 32px;\n      height: 32px;\n      border-radius: 50%;\n      border: none;\n      background: rgba(255, 255, 255, 0.12);\n      color: white;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      transition: background 0.15s ease;\n      flex-shrink: 0;\n      padding: 0;\n    }\n\n    .icon-btn:hover {\n      background: rgba(255, 255, 255, 0.25);\n    }\n\n    .icon-btn svg {\n      width: 15px;\n      height: 15px;\n    }\n\n    .icon-btn.active {\n      background: rgba(255, 255, 255, 0.3);\n    }\n\n    /* Search bar */\n    .search-bar {\n      display: flex;\n      align-items: center;\n      gap: 6px;\n      flex: 1;\n      min-width: 0;\n    }\n\n    .search-input {\n      flex: 1;\n      min-width: 0;\n      padding: 6px 10px;\n      border: 1.5px solid rgba(255, 255, 255, 0.4);\n      border-radius: 8px;\n      background: rgba(255, 255, 255, 0.15);\n      color: white;\n      font-size: 0.875rem;\n      font-family: inherit;\n      outline: none;\n    }\n\n    .search-input::placeholder {\n      color: rgba(255, 255, 255, 0.6);\n    }\n\n    .search-input:focus {\n      border-color: rgba(255, 255, 255, 0.8);\n      background: rgba(255, 255, 255, 0.22);\n    }\n  `;\n\n  /**\n   * When true, show a \"conversations\" icon button in the header actions area.\n   * The button dispatches a `show-conversations` event (bubbles, composed).\n   * Set by `ChatWidget` when `theme.enableMultiConversation` is on.\n   */\n  @property({ type: Boolean, attribute: \"show-conv-toggle\" }) showConvToggle = false;\n\n  @state() private _searchOpen = false;\n\n  private get _statusLabel(): string {\n    switch (this.themeState.connectorStatus) {\n      case \"connecting\": return t(\"header.status.connecting\");\n      case \"connected\": return t(\"header.status.connected\");\n      case \"error\": return t(\"header.status.error\");\n      case \"disconnected\": return t(\"header.status.disconnected\");\n      default: return t(\"header.status.offline\");\n    }\n  }\n\n  private _onHeaderMouseDown(e: MouseEvent) {\n    if ((e.target as Element).closest(\".actions, .search-bar\")) return;\n    e.preventDefault();\n    this.dispatchEvent(\n      new CustomEvent(\"chat-drag-start\", {\n        detail: { clientX: e.clientX, clientY: e.clientY },\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  private _onHeaderTouchStart(e: TouchEvent) {\n    if ((e.target as Element).closest(\".actions, .search-bar\")) return;\n    const touch = e.touches[0];\n    this.dispatchEvent(\n      new CustomEvent(\"chat-drag-start\", {\n        detail: { clientX: touch.clientX, clientY: touch.clientY },\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  private _onConvToggle() {\n    this.dispatchEvent(\n      new CustomEvent(\"show-conversations\", { bubbles: true, composed: true })\n    );\n  }\n\n  private _toggleSearch() {\n    this._searchOpen = !this._searchOpen;\n    if (!this._searchOpen) {\n      this.themeState.clearSearch();\n    } else {\n      this.updateComplete.then(() => {\n        this.shadowRoot?.querySelector<HTMLInputElement>(\".search-input\")?.focus();\n      });\n    }\n  }\n\n  private _onSearchInput(e: Event) {\n    this.themeState.setSearchQuery((e.target as HTMLInputElement).value);\n  }\n\n  private _onSearchKeydown(e: KeyboardEvent) {\n    if (e.key === \"Escape\") this._toggleSearch();\n  }\n\n  private _renderHeaderAvatar(headerUrl?: string) {\n    if (headerUrl) {\n      return html`<div class=\"avatar\"><img src=${headerUrl} alt=\"bot avatar\" /></div>`;\n    }\n    return html`\n      <div class=\"avatar\">\n        <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n          <rect x=\"5\" y=\"8\" width=\"14\" height=\"12\" rx=\"2.5\" />\n          <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n          <circle cx=\"14.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n          <path d=\"M9.5 17c.5.5 1.4.8 2.5.8s2-.3 2.5-.8\" stroke=\"white\" stroke-width=\"1.2\" stroke-linecap=\"round\" fill=\"none\" />\n          <path d=\"M12 5v3\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n          <circle cx=\"12\" cy=\"4\" r=\"1.5\" fill=\"white\" />\n        </svg>\n      </div>`;\n  }\n\n  render() {\n    const { connectorStatus, isFullscreen, allowFullscreen, theme } = this.themeState;\n    const enableSearch = theme.enableSearch !== false;\n    return html`\n      <div\n        class=\"header\"\n        @mousedown=${this._onHeaderMouseDown}\n        @touchstart=${this._onHeaderTouchStart}\n      >\n        ${this.showConvToggle && !this._searchOpen ? html`\n          <button\n            class=\"icon-btn\"\n            @click=${this._onConvToggle}\n            aria-label=\"Back to conversations\"\n            title=\"Back to conversations\"\n          >\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path d=\"M19 12H5M12 5l-7 7 7 7\"/>\n            </svg>\n          </button>\n        ` : nothing}\n\n        ${this._searchOpen ? nothing : html`\n          ${this._renderHeaderAvatar(theme.avatar?.header)}\n          <div class=\"info\">\n            <span class=\"title\">${t(\"header.title\")}</span>\n            <div class=\"status\">\n              <span class=\"status-dot ${connectorStatus}\"></span>\n              <span class=\"status-text\">${this._statusLabel}</span>\n            </div>\n          </div>\n        `}\n\n        ${enableSearch && this._searchOpen ? html`\n          <div class=\"search-bar\">\n            <input\n              class=\"search-input\"\n              type=\"search\"\n              placeholder=${t(\"header.search.placeholder\")}\n              @input=${this._onSearchInput}\n              @keydown=${this._onSearchKeydown}\n              autocomplete=\"off\"\n            />\n          </div>\n        ` : nothing}\n\n        <div class=\"actions\">\n          ${enableSearch ? html`\n            <button\n              class=\"icon-btn ${this._searchOpen ? \"active\" : \"\"}\"\n              @click=${this._toggleSearch}\n              aria-label=${t(\"header.search.toggle\")}\n              title=${t(\"header.search.toggle\")}\n            >\n              ${this._searchOpen\n                ? html`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M18 6L6 18M6 6l12 12\" /></svg>`\n                : html`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"11\" cy=\"11\" r=\"7\" /><path d=\"M21 21l-4.35-4.35\" /></svg>`}\n            </button>\n          ` : nothing}\n\n          ${allowFullscreen ? html`\n            <button\n              class=\"icon-btn\"\n              @click=${() => this.themeState.toggleFullscreen()}\n              aria-label=\"${isFullscreen ? t(\"header.fullscreen.exit\") : t(\"header.fullscreen.enter\")}\"\n              title=\"${isFullscreen ? t(\"header.fullscreen.exit\") : t(\"header.fullscreen.enter\")}\"\n            >\n              ${isFullscreen\n                ? html`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8 3v3a2 2 0 0 1-2 2H3M21 8h-3a2 2 0 0 1-2-2V3M3 16h3a2 2 0 0 1 2 2v3M16 21v-3a2 2 0 0 1 2-2h3\" /></svg>`\n                : html`<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3\" /></svg>`}\n            </button>\n          ` : nothing}\n\n          <button\n            class=\"icon-btn\"\n            @click=${() => this.dispatchEvent(new CustomEvent(\"chat-minimize-requested\", { bubbles: true, composed: true }))}\n            aria-label=\"${t(\"header.minimize\")}\"\n            title=\"${t(\"header.minimize\")}\"\n          >\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path d=\"M6 12h12\" />\n            </svg>\n          </button>\n\n          <button\n            class=\"icon-btn\"\n            @click=${() => this.dispatchEvent(new CustomEvent(\"chat-close-requested\", { bubbles: true, composed: true }))}\n            aria-label=\"${t(\"header.close\")}\"\n            title=\"${t(\"header.close\")}\"\n          >\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" xmlns=\"http://www.w3.org/2000/svg\">\n              <path d=\"M18 6L6 18M6 6l12 12\" />\n            </svg>\n          </button>\n        </div>\n      </div>\n    `;\n  }\n}\n\nexport default ChatHeader;\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { conversationStore } from \"@chativa/core\";\nimport type { Conversation } from \"@chativa/core\";\n\n/**\n * `<conversation-list>` — sidebar component for agent-panel mode.\n *\n * Reads from `conversationStore` and emits:\n *  - `conversation-select`  (detail: { id: string })\n *  - `new-conversation`     (no detail)\n *  - `conversation-close`   (detail: { id: string })\n */\n@customElement(\"conversation-list\")\nexport class ConversationList extends LitElement {\n  static override styles = css`\n    :host {\n      display: flex;\n      flex-direction: column;\n      height: 100%;\n      background: #f8fafc;\n      border-right: 1px solid #e2e8f0;\n      font-family: var(--chativa-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif);\n      min-width: 0;\n    }\n\n    /* ── Header ── */\n    .header {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      padding: 16px 14px 12px;\n      border-bottom: 1px solid #e2e8f0;\n      flex-shrink: 0;\n    }\n\n    .header-title {\n      font-size: 0.8125rem;\n      font-weight: 700;\n      letter-spacing: 0.07em;\n      text-transform: uppercase;\n      color: #94a3b8;\n    }\n\n    .new-btn {\n      width: 28px;\n      height: 28px;\n      border-radius: 8px;\n      border: 1.5px solid #e2e8f0;\n      background: white;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      cursor: pointer;\n      color: #64748b;\n      font-size: 1.1rem;\n      line-height: 1;\n      transition: background 0.15s, border-color 0.15s, color 0.15s;\n      padding: 0;\n    }\n\n    .new-btn:hover {\n      background: #ede9fe;\n      border-color: #4f46e5;\n      color: #4f46e5;\n    }\n\n    /* ── List ── */\n    .list {\n      flex: 1;\n      overflow-y: auto;\n      padding: 6px 0;\n    }\n\n    /* ── Item ── */\n    .item {\n      display: flex;\n      align-items: center;\n      gap: 10px;\n      padding: 9px 14px;\n      cursor: pointer;\n      position: relative;\n      transition: background 0.12s;\n    }\n\n    .item:hover {\n      background: #f1f5f9;\n    }\n\n    .item.active {\n      background: #ede9fe;\n    }\n\n    .item.closed {\n      opacity: 0.5;\n    }\n\n    /* ── Avatar ── */\n    .avatar {\n      width: 36px;\n      height: 36px;\n      border-radius: 50%;\n      background: var(--chativa-primary-color, #4f46e5);\n      color: white;\n      font-size: 0.8125rem;\n      font-weight: 700;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n      overflow: hidden;\n    }\n\n    .avatar img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n    }\n\n    /* ── Text ── */\n    .info {\n      flex: 1;\n      min-width: 0;\n    }\n\n    .name {\n      font-size: 0.875rem;\n      font-weight: 600;\n      color: #0f172a;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n\n    .last {\n      font-size: 0.75rem;\n      color: #94a3b8;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      margin-top: 1px;\n    }\n\n    /* ── Right side: badge + close ── */\n    .right {\n      display: flex;\n      flex-direction: column;\n      align-items: flex-end;\n      gap: 4px;\n      flex-shrink: 0;\n    }\n\n    .badge {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: white;\n      border-radius: 10px;\n      font-size: 0.6875rem;\n      font-weight: 700;\n      min-width: 18px;\n      height: 18px;\n      padding: 0 5px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n\n    .close-btn {\n      width: 18px;\n      height: 18px;\n      border: none;\n      background: transparent;\n      cursor: pointer;\n      color: #94a3b8;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      border-radius: 4px;\n      opacity: 0;\n      transition: opacity 0.15s, color 0.15s;\n      padding: 0;\n    }\n\n    .item:hover .close-btn {\n      opacity: 1;\n    }\n\n    .close-btn:hover {\n      color: #ef4444;\n    }\n\n    /* ── Status dot ── */\n    .status-dot {\n      width: 8px;\n      height: 8px;\n      border-radius: 50%;\n      flex-shrink: 0;\n    }\n\n    .status-dot.open    { background: #22c55e; }\n    .status-dot.pending { background: #f59e0b; }\n    .status-dot.resolved,\n    .status-dot.closed  { background: #94a3b8; }\n\n    /* ── Empty state ── */\n    .empty {\n      padding: 32px 16px;\n      text-align: center;\n      color: #94a3b8;\n      font-size: 0.8125rem;\n    }\n  `;\n\n  @state() private _convs: Conversation[] = [];\n  @state() private _activeId: string | null = null;\n  private _unsub!: () => void;\n\n  override connectedCallback() {\n    super.connectedCallback();\n    const s = conversationStore.getState();\n    this._convs = s.conversations;\n    this._activeId = s.activeConversationId;\n    this._unsub = conversationStore.subscribe(() => {\n      const next = conversationStore.getState();\n      this._convs = next.conversations;\n      this._activeId = next.activeConversationId;\n    });\n  }\n\n  override disconnectedCallback() {\n    this._unsub?.();\n    super.disconnectedCallback();\n  }\n\n  private _initials(name: string): string {\n    return name\n      .split(\" \")\n      .slice(0, 2)\n      .map((w) => w[0] ?? \"\")\n      .join(\"\")\n      .toUpperCase();\n  }\n\n  private _onSelect(id: string) {\n    this.dispatchEvent(\n      new CustomEvent(\"conversation-select\", {\n        detail: { id },\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  private _onNew() {\n    this.dispatchEvent(\n      new CustomEvent(\"new-conversation\", { bubbles: true, composed: true })\n    );\n  }\n\n  private _onClose(e: Event, id: string) {\n    e.stopPropagation();\n    this.dispatchEvent(\n      new CustomEvent(\"conversation-close\", {\n        detail: { id },\n        bubbles: true,\n        composed: true,\n      })\n    );\n  }\n\n  override render() {\n    return html`\n      <div class=\"header\">\n        <span class=\"header-title\">Conversations</span>\n        <button class=\"new-btn\" @click=${this._onNew} title=\"New conversation\" aria-label=\"New conversation\">\n          <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/>\n          </svg>\n        </button>\n      </div>\n\n      <div class=\"list\" role=\"listbox\" aria-label=\"Conversations\">\n        ${this._convs.length === 0\n          ? html`<div class=\"empty\">No conversations yet</div>`\n          : this._convs.map((c) => html`\n            <div\n              class=\"item ${c.id === this._activeId ? \"active\" : \"\"} ${c.status === \"closed\" ? \"closed\" : \"\"}\"\n              role=\"option\"\n              aria-selected=${c.id === this._activeId}\n              @click=${() => this._onSelect(c.id)}\n            >\n              <div class=\"avatar\">\n                ${c.avatar\n                  ? html`<img src=${c.avatar} alt=${c.contact ?? c.title} />`\n                  : this._initials(c.contact ?? c.title)}\n              </div>\n\n              <div class=\"info\">\n                <div class=\"name\">${c.contact ?? c.title}</div>\n                ${c.lastMessage\n                  ? html`<div class=\"last\">${c.lastMessage}</div>`\n                  : nothing}\n              </div>\n\n              <div class=\"right\">\n                ${c.unreadCount\n                  ? html`<div class=\"badge\">${c.unreadCount}</div>`\n                  : nothing}\n                <button\n                  class=\"close-btn\"\n                  @click=${(e: Event) => this._onClose(e, c.id)}\n                  title=\"Close conversation\"\n                  aria-label=\"Close conversation\"\n                >\n                  <svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\">\n                    <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"/>\n                  </svg>\n                </button>\n              </div>\n\n              <div class=\"status-dot ${c.status}\" title=${c.status}></div>\n            </div>\n          `)\n        }\n      </div>\n    `;\n  }\n}\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { t } from \"i18next\";\nimport \"../i18n/i18n\";\nimport { chatStore, type EndOfConversationSurveyConfig } from \"@chativa/core\";\nimport { ChatbotMixin } from \"../mixins/ChatbotMixin\";\n\n/**\n * End-of-conversation survey — star rating + optional comment.\n *\n * Rendered two ways:\n *  - `inline` (default): via `MessageTypeRegistry` as a bot-authored card inside\n *    the message list. `.messageData` / `.messageId` are set by `ChatMessageList`.\n *  - `screen`: as a full-height overlay inside `ChatWidget`. Set `overlay=true`.\n *\n * On submit, dispatches `survey-submitted` (bubbles, composed) with\n * `{ rating, comment, kind, messageId? }`. `ChatWidget` calls\n * `ChatEngine.sendSurvey(...)`, marks the message as `submitted: true`, and\n * the card re-renders in its thank-you state.\n */\n@customElement(\"end-of-conversation-survey\")\nexport class EndOfConversationSurvey extends ChatbotMixin(LitElement) {\n  static override styles = css`\n    :host {\n      display: block;\n      --ring: rgba(79, 70, 229, 0.35);\n    }\n\n    :host([overlay]) {\n      flex: 1;\n      min-height: 0;\n      display: block;\n    }\n\n    .card {\n      background: #ffffff;\n      border: 1px solid var(--chativa-border, #e2e8f0);\n      border-radius: 14px;\n      padding: 18px 20px;\n      box-shadow: 0 2px 10px rgba(0, 0, 0, 0.06);\n      max-width: 340px;\n      margin: 8px 0;\n      font-family: inherit;\n      color: var(--chativa-text, #0f172a);\n    }\n\n    :host([overlay]) .card {\n      max-width: none;\n      margin: 0;\n      height: 100%;\n      display: flex;\n      flex-direction: column;\n      border: none;\n      border-radius: 0;\n      box-shadow: none;\n      padding: 24px 20px;\n      box-sizing: border-box;\n    }\n\n    :host([overlay]) .title {\n      margin-top: 8px;\n    }\n\n    :host([overlay]) textarea {\n      flex: 1;\n      min-height: 96px;\n    }\n\n    :host([overlay]) .actions {\n      margin-top: auto;\n      padding-top: 16px;\n      border-top: 1px solid var(--chativa-border, #e2e8f0);\n      gap: 10px;\n    }\n\n    :host([overlay]) .actions button {\n      flex: 1;\n      padding: 12px 16px;\n      font-size: 0.875rem;\n      font-weight: 600;\n      min-height: 44px;\n    }\n\n    .title {\n      margin: 0 0 14px;\n      font-size: 0.9375rem;\n      font-weight: 600;\n      text-align: center;\n    }\n\n    .stars {\n      display: flex;\n      justify-content: center;\n      gap: 6px;\n      margin-bottom: 14px;\n    }\n\n    .star {\n      font-size: 2rem;\n      line-height: 1;\n      background: none;\n      border: none;\n      padding: 2px;\n      cursor: pointer;\n      opacity: 0.3;\n      transition: transform 0.1s ease, opacity 0.1s ease;\n      user-select: none;\n    }\n\n    .star:focus-visible {\n      outline: 2px solid var(--ring);\n      border-radius: 4px;\n    }\n\n    .star--active { opacity: 1; }\n    .star--hovered { transform: scale(1.2); opacity: 1; }\n    .star[disabled] { cursor: default; }\n\n    textarea {\n      width: 100%;\n      box-sizing: border-box;\n      min-height: 72px;\n      padding: 8px 10px;\n      font-family: inherit;\n      font-size: 0.875rem;\n      border: 1px solid var(--chativa-border, #cbd5e1);\n      border-radius: 8px;\n      resize: vertical;\n      margin-bottom: 10px;\n      color: inherit;\n      transition: border-color 0.15s, box-shadow 0.15s;\n    }\n\n    textarea:focus {\n      outline: none;\n      border-color: var(--chativa-primary-color, #4f46e5);\n      box-shadow: 0 0 0 3px var(--ring);\n    }\n\n    textarea.invalid {\n      border-color: #ef4444;\n    }\n\n    textarea.invalid:focus {\n      border-color: #ef4444;\n      box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.25);\n    }\n\n    .required-note {\n      margin: -6px 0 8px;\n      font-size: 0.75rem;\n      color: #ef4444;\n      text-align: left;\n    }\n\n    /* ── Thank-you state ──────────────────────────────────────── */\n\n    .thanks {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      text-align: center;\n      gap: 14px;\n      padding: 24px 4px 8px;\n    }\n\n    :host([overlay]) .thanks {\n      flex: 1;\n      padding: 0;\n      gap: 0;\n    }\n\n    .thanks-main {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 14px;\n    }\n\n    :host([overlay]) .thanks-main {\n      flex: 1;\n      justify-content: center;\n    }\n\n    .thanks-icon {\n      width: 96px;\n      height: 96px;\n      flex-shrink: 0;\n    }\n\n    .thanks-title {\n      margin: 0;\n      font-size: 1rem;\n      font-weight: 600;\n      color: var(--chativa-primary-color, #4f46e5);\n    }\n\n    .thanks-body {\n      margin: 0;\n      font-size: 0.875rem;\n      color: var(--chativa-secondary-color, #475569);\n      max-width: 28ch;\n      line-height: 1.4;\n    }\n\n    .thanks-footer {\n      margin-top: 4px;\n      width: 100%;\n      display: flex;\n      justify-content: center;\n    }\n\n    :host([overlay]) .thanks-footer {\n      margin-top: 0;\n      padding-top: 16px;\n      border-top: 1px solid var(--chativa-border, #e2e8f0);\n    }\n\n    .close-btn {\n      width: 100%;\n      max-width: 320px;\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n      border: none;\n      border-radius: 6px;\n      padding: 12px 22px;\n      font-size: 0.875rem;\n      font-weight: 600;\n      letter-spacing: 0.03em;\n      text-transform: uppercase;\n      cursor: pointer;\n      transition: opacity 0.15s;\n      font-family: inherit;\n    }\n\n    .close-btn:hover { opacity: 0.9; }\n\n    .actions {\n      display: flex;\n      justify-content: center;\n      gap: 8px;\n    }\n\n    button.primary {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n      border: none;\n      border-radius: 8px;\n      padding: 8px 22px;\n      font-size: 0.875rem;\n      font-weight: 500;\n      cursor: pointer;\n      transition: opacity 0.15s;\n    }\n\n    button.primary:hover { opacity: 0.88; }\n    button.primary:disabled {\n      background: #cbd5e1;\n      cursor: not-allowed;\n    }\n\n    button.secondary {\n      background: transparent;\n      color: var(--chativa-secondary-color, #475569);\n      border: 1px solid var(--chativa-border, #cbd5e1);\n      border-radius: 8px;\n      padding: 8px 16px;\n      font-size: 0.875rem;\n      cursor: pointer;\n    }\n\n  `;\n\n  /** Populated automatically when rendered via ChatMessageList. */\n  @property({ type: Object }) messageData: Record<string, unknown> = {};\n  @property({ type: String }) messageId = \"\";\n\n  /** Set to true when rendered as a fullscreen overlay (screen mode). */\n  @property({ type: Boolean, reflect: true }) overlay = false;\n\n  @state() private _rating = 0;\n  @state() private _hovered = 0;\n  @state() private _comment = \"\";\n  @state() private _submitted = false;\n\n  private get _config(): EndOfConversationSurveyConfig {\n    return chatStore.getState().theme.endOfConversationSurvey ?? {};\n  }\n\n  private get _maxRating(): number {\n    const n = this._config.maxRating;\n    return typeof n === \"number\" && n > 0 ? n : 5;\n  }\n\n  private get _requireCommentBelow(): number {\n    const n = this._config.requireCommentBelow;\n    return typeof n === \"number\" ? n : 3;\n  }\n\n  private _onStar(n: number) {\n    this._rating = n;\n  }\n\n  private _onComment(e: Event) {\n    this._comment = (e.target as HTMLTextAreaElement).value;\n  }\n\n  private get _commentRequired(): boolean {\n    const threshold = this._requireCommentBelow;\n    return (\n      threshold > 0 &&\n      this._rating > 0 &&\n      this._rating <= threshold &&\n      this._comment.trim() === \"\"\n    );\n  }\n\n  private get _submitDisabled(): boolean {\n    return this._rating === 0 || this._commentRequired;\n  }\n\n  private _submit() {\n    if (this._rating === 0 || this._commentRequired) return;\n    this._submitted = true;\n    this.dispatchEvent(\n      new CustomEvent(\"survey-submitted\", {\n        bubbles: true,\n        composed: true,\n        detail: {\n          rating: this._rating,\n          comment: this._comment.trim(),\n          kind: this._config.kind ?? 1,\n          messageId: this.messageId,\n        },\n      }),\n    );\n  }\n\n  private _skip() {\n    this.dispatchEvent(\n      new CustomEvent(\"survey-skipped\", {\n        bubbles: true,\n        composed: true,\n        detail: { messageId: this.messageId },\n      }),\n    );\n  }\n\n  private _close() {\n    this.dispatchEvent(\n      new CustomEvent(\"survey-close\", {\n        bubbles: true,\n        composed: true,\n        detail: { messageId: this.messageId },\n      }),\n    );\n  }\n\n  private _renderStars() {\n    const stars = Array.from({ length: this._maxRating }, (_, i) => i + 1);\n    const active = this._hovered || this._rating;\n    return html`\n      <div\n        class=\"stars\"\n        role=\"group\"\n        aria-label=${t(\"survey.ratingLabel\")}\n      >\n        ${stars.map(\n          (n) => html`\n            <button\n              class=\"star ${n <= active ? \"star--active\" : \"\"} ${n ===\n              this._hovered\n                ? \"star--hovered\"\n                : \"\"}\"\n              type=\"button\"\n              aria-label=${t(\"survey.starLabel\", { count: n })}\n              aria-pressed=${n === this._rating}\n              @click=${() => this._onStar(n)}\n              @mouseenter=${() => {\n                this._hovered = n;\n              }}\n              @mouseleave=${() => {\n                this._hovered = 0;\n              }}\n            >\n              ⭐\n            </button>\n          `,\n        )}\n      </div>\n    `;\n  }\n\n  private _renderThanks() {\n    return html`\n      <div class=\"thanks\">\n        <div class=\"thanks-main\">\n          <svg class=\"thanks-icon\" viewBox=\"0 0 120 120\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n            <circle cx=\"60\" cy=\"60\" r=\"44\" fill=\"#dcfce7\" />\n            <circle cx=\"60\" cy=\"60\" r=\"30\" fill=\"#16a34a\" />\n            <path d=\"M46 60 l10 10 l18 -20\" stroke=\"#ffffff\" stroke-width=\"5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" fill=\"none\" />\n            ${[\n              [18, 30],\n              [100, 32],\n              [22, 92],\n              [98, 88],\n              [58, 14],\n              [60, 108],\n            ].map(\n              ([cx, cy]) => html`<g transform=\"translate(${cx} ${cy})\">\n                <path d=\"M0 -4 L1.2 -1.2 L4 0 L1.2 1.2 L0 4 L-1.2 1.2 L-4 0 L-1.2 -1.2 Z\" fill=\"#86efac\" opacity=\"0.75\" />\n              </g>`,\n            )}\n          </svg>\n          <h3 class=\"thanks-title\">${t(\"survey.thankYouTitle\")}</h3>\n          <p class=\"thanks-body\">${t(\"survey.thankYouBody\")}</p>\n        </div>\n        <div class=\"thanks-footer\">\n          <button class=\"close-btn\" type=\"button\" @click=${this._close}>\n            ${t(\"survey.close\")}\n          </button>\n        </div>\n      </div>\n    `;\n  }\n\n  override render() {\n    if (this._submitted) {\n      return html`<div class=\"card\">${this._renderThanks()}</div>`;\n    }\n    const needsComment = this._commentRequired;\n    return html`\n      <div class=\"card\">\n        <h3 class=\"title\">${t(\"survey.title\")}</h3>\n        ${this._renderStars()}\n        <textarea\n          class=${needsComment ? \"invalid\" : \"\"}\n          placeholder=${t(\"survey.commentPlaceholder\")}\n          aria-invalid=${needsComment}\n          .value=${this._comment}\n          @input=${this._onComment}\n        ></textarea>\n        ${needsComment\n          ? html`<div class=\"required-note\">${t(\"survey.commentRequired\")}</div>`\n          : nothing}\n        <div class=\"actions\">\n          <button\n            class=\"primary\"\n            type=\"button\"\n            ?disabled=${this._submitDisabled}\n            @click=${this._submit}\n          >\n            ${t(\"survey.submit\")}\n          </button>\n          <button class=\"secondary\" type=\"button\" @click=${this._skip}>\n            ${t(\"survey.skip\")}\n          </button>\n        </div>\n      </div>\n    `;\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    \"end-of-conversation-survey\": EndOfConversationSurvey;\n  }\n}\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { t } from \"i18next\";\nimport {\n  ChatEngine,\n  MultiConversationEngine,\n  ConnectorRegistry,\n  MessageTypeRegistry,\n  messageStore,\n  chatStore,\n  createOutgoingMessage,\n  applyGlobalSettings,\n  type EndOfConversationSurveyConfig,\n  type SurveyPayload,\n} from \"@chativa/core\";\nimport { ChatbotMixin } from \"../mixins/ChatbotMixin\";\nimport { registerCommand } from \"../commands/index\";\n\nimport \"./DefaultTextMessage\";\nimport \"./QuickReplyMessage\";\nimport \"./ImageMessage\";\nimport \"./CardMessage\";\nimport \"./ButtonsMessage\";\nimport \"./FileMessage\";\nimport \"./VideoMessage\";\nimport \"./CarouselMessage\";\nimport \"./ChatInput\";\nimport \"./ChatMessageList\";\nimport \"./ChatHeader\";\nimport \"./ConversationList\";\nimport \"./EndOfConversationSurvey\";\nMessageTypeRegistry.setFallback(\n  customElements.get(\"default-text-message\") as unknown as typeof HTMLElement\n);\n\nconst SIZE_PX: Record<string, number> = { small: 44, medium: 56, large: 68 };\n\n@customElement(\"chat-iva\")\nexport class ChatWidget extends ChatbotMixin(LitElement) {\n  static override styles = css`\n    :host {\n      display: block;\n    }\n\n    @keyframes slideUp {\n      from { opacity: 0; transform: translateY(18px) scale(0.96); }\n      to   { opacity: 1; transform: translateY(0) scale(1); }\n    }\n\n    @keyframes fadeIn {\n      from { opacity: 0; }\n      to   { opacity: 1; }\n    }\n\n    @keyframes slideInFromRight {\n      from { opacity: 0; transform: translateX(24px); }\n      to   { opacity: 1; transform: translateX(0); }\n    }\n\n    @keyframes slideInFromLeft {\n      from { opacity: 0; transform: translateX(-24px); }\n      to   { opacity: 1; transform: translateX(0); }\n    }\n\n    .widget {\n      position: fixed;\n      display: flex;\n      flex-direction: column;\n      background: var(--chativa-background, #ffffff);\n      border-radius: 16px;\n      box-shadow: 0 24px 64px rgba(0, 0, 0, 0.14), 0 6px 20px rgba(0, 0, 0, 0.08);\n      overflow: hidden;\n      animation: slideUp 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);\n      z-index: 9999;\n      font-family: var(--chativa-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif);\n      transition: border-radius 0.25s ease, box-shadow 0.25s ease;\n    }\n\n    .widget.fullscreen {\n      inset: 0 !important;\n      width: 100% !important;\n      height: 100% !important;\n      border-radius: 0 !important;\n      animation: fadeIn 0.2s ease;\n    }\n\n    /* ── Side-panel mode ───────────────────────────────────── */\n    .widget.side-panel {\n      border-radius: 0 !important;\n      height: 100dvh !important;\n      top: 0 !important;\n      bottom: 0 !important;\n      box-shadow: -4px 0 32px rgba(0, 0, 0, 0.12), -1px 0 8px rgba(0, 0, 0, 0.06);\n      animation: slideInFromRight 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);\n    }\n\n    .widget.side-panel.from-left {\n      box-shadow: 4px 0 32px rgba(0, 0, 0, 0.12), 1px 0 8px rgba(0, 0, 0, 0.06);\n      animation: slideInFromLeft 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);\n    }\n\n    /* ── Inline mode ───────────────────────────────────────── */\n    .widget.inline-mode {\n      position: static !important;\n      inset: unset !important;\n      box-shadow: 0 2px 16px rgba(0, 0, 0, 0.08);\n      border-radius: 12px;\n      animation: fadeIn 0.15s ease;\n      width: 100% !important;\n      height: 100% !important;\n      min-height: 400px;\n    }\n\n    /* ── Conversation list view (popup multi-conv) ─────────── */\n    conversation-list {\n      flex: 1;\n      overflow: hidden;\n      animation: slideInFromLeft 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);\n    }\n\n    /* Applied directly via JS — no transition during drag */\n    .widget.dragging {\n      transition: none !important;\n      animation: none !important;\n      user-select: none;\n      cursor: grabbing;\n    }\n\n    @media (max-width: 480px) {\n      .widget:not(.inline-mode) {\n        /*\n         * --_vv-top / --_vv-height are set by the visualViewport JS listener\n         * so the widget tracks the visible area above the virtual keyboard on iOS.\n         * Fallback values (0px / 100dvh) cover Android and non-iOS browsers.\n         */\n        top: var(--_vv-top, 0px) !important;\n        left: 0 !important;\n        right: 0 !important;\n        bottom: auto !important;\n        width: 100% !important;\n        height: var(--_vv-height, 100dvh) !important;\n        border-radius: 0 !important;\n        animation: fadeIn 0.18s ease;\n      }\n    }\n\n    /* ── File drop overlay ─────────────────────────────────── */\n    .drop-overlay {\n      position: absolute;\n      inset: 0;\n      background: rgba(79, 70, 229, 0.07);\n      border: 2.5px dashed rgba(79, 70, 229, 0.45);\n      border-radius: inherit;\n      z-index: 200;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      gap: 10px;\n      pointer-events: none;\n      backdrop-filter: blur(1px);\n      animation: fadeIn 0.12s ease;\n    }\n\n    .drop-overlay-icon {\n      color: var(--chativa-primary-color, #4f46e5);\n      opacity: 0.85;\n    }\n\n    .drop-overlay-label {\n      font-size: 0.9375rem;\n      font-weight: 700;\n      color: var(--chativa-primary-color, #4f46e5);\n      letter-spacing: -0.01em;\n    }\n\n    .drop-overlay-sub {\n      font-size: 0.8125rem;\n      color: rgba(79, 70, 229, 0.65);\n    }\n\n  `;\n\n  @property({ type: String }) connector = \"dummy\";\n\n  /**\n   * Set as HTML attribute to start in fullscreen and hide the toggle:\n   *   <chat-iva fullscreen-only></chat-iva>\n   * Equivalent to: setFullscreen(true) + setAllowFullscreen(false)\n   */\n  @property({ type: Boolean, attribute: \"fullscreen-only\" })\n  get fulllscreenOnly(): boolean { return false; }\n  set fulllscreenOnly(_v: boolean) {\n    this.themeState.setFullscreen(true);\n    this.themeState.setAllowFullscreen(false);\n  }\n\n  // ── File-drop overlay ────────────────────────────────────────────────\n\n  @state() private _showDropOverlay = false;\n  @state() private _showConvList = false;\n  /** True when screen-mode survey is currently displayed over the message list. */\n  @state() private _showSurveyOverlay = false;\n  /** True once the end-of-conversation survey has been submitted or skipped this session. */\n  private _surveyResolved = false;\n  /** True once the inline survey message has been injected this session. */\n  private _inlineSurveyInjected = false;\n  /** Depth counter to handle dragenter/dragleave firing over child elements. */\n  private _dropDepth = 0;\n\n  // ── Drag state — NOT @state to avoid per-frame re-renders ────────────\n\n  /** Last stable drag position (used in _positionStyle). Triggers a render only at drag start/end. */\n  private _dragPos: { left: number; top: number } | null = null;\n  private _wasOpened = false;\n\n  private _dragAnchor: {\n    mouseX: number;\n    mouseY: number;\n    widgetLeft: number;\n    widgetTop: number;\n  } | null = null;\n\n  // ── Lifecycle ────────────────────────────────────────────────────────\n\n  private _unsubscribeMessages!: () => void;\n  private _engine!: ChatEngine;\n  private _multiEngine: MultiConversationEngine | null = null;\n  /** True once the engine has been initialised (on first open). */\n  private _engineInitialised = false;\n  private _vvRafId: number | null = null;\n\n  /**\n   * Tracks the visual viewport (the area above the virtual keyboard on iOS).\n   * On iOS Safari, `position: fixed` elements shift when the keyboard opens\n   * because the visual viewport scrolls. We compensate by setting CSS custom\n   * properties `--_vv-top` and `--_vv-height` on the host element; the shadow\n   * stylesheet uses `var(--_vv-top)` / `var(--_vv-height)` inside the mobile\n   * media query so that the widget always fills exactly the visible area.\n   * rAF-throttled to avoid layout thrashing during keyboard animation.\n   */\n  private _onVisualViewport = () => {\n    if (this._vvRafId !== null) return;\n    this._vvRafId = requestAnimationFrame(() => {\n      this._vvRafId = null;\n      if (window.innerWidth > 480) return;\n      const vv = window.visualViewport;\n      if (!vv) return;\n      this.style.setProperty(\"--_vv-top\",    `${Math.round(vv.offsetTop)}px`);\n      this.style.setProperty(\"--_vv-height\", `${Math.round(vv.height)}px`);\n    });\n  };\n\n  connectedCallback() {\n    super.connectedCallback();\n\n    // Apply window.chativaSettings (once) before anything else\n    applyGlobalSettings();\n\n    // Register built-in slash commands with inline translations\n    registerCommand({\n      name: \"clear\",\n      translations: {\n        en: { description: \"Clear all messages from the chat\" },\n        tr: { description: \"Tüm mesajları temizle\" },\n      },\n      execute() {\n        messageStore.getState().clear();\n      },\n    });\n\n    // Prefer connector from global settings, fall back to HTML attribute\n    const connectorName = this.themeState.activeConnector !== \"dummy\"\n      ? this.themeState.activeConnector\n      : this.connector;\n    const adapter = ConnectorRegistry.get(connectorName);\n    this._multiEngine = new MultiConversationEngine(adapter);\n    this._engine = this._multiEngine.chatEngine;\n    this._unsubscribeMessages = messageStore.subscribe(() => this.requestUpdate());\n    window.visualViewport?.addEventListener(\"resize\", this._onVisualViewport);\n    window.visualViewport?.addEventListener(\"scroll\", this._onVisualViewport);\n    document.addEventListener(\"keydown\", this._onKeyDown);\n    this.addEventListener(\"chat-drag-start\", this._onDragStart as EventListener);\n    this.addEventListener(\"chat-action\", this._onChatAction as EventListener);\n    this.addEventListener(\"chat-retry\", this._onChatRetry as EventListener);\n    this.addEventListener(\"chativa-feedback\", this._onFeedback as EventListener);\n    this.addEventListener(\"send-file\", this._onSendFile as EventListener);\n    this.addEventListener(\"chat-load-history\", this._onLoadHistory as EventListener);\n    this.addEventListener(\"genui-send-event\", this._onGenUISendEvent as EventListener);\n    this.addEventListener(\"show-conversations\", this._onShowConversations as EventListener);\n    this.addEventListener(\"conversation-select\", this._onConvSelect as EventListener);\n    this.addEventListener(\"new-conversation\", this._onNewConv as EventListener);\n    this.addEventListener(\"conversation-close\", this._onConvClose as EventListener);\n    this.addEventListener(\"chat-close-requested\", this._onCloseRequested as EventListener);\n    this.addEventListener(\"chat-minimize-requested\", this._onMinimizeRequested as EventListener);\n    this.addEventListener(\"chat-reset-survey-state\", this._onResetSurveyState as EventListener);\n    this.addEventListener(\"survey-submitted\", this._onSurveySubmitted as EventListener);\n    this.addEventListener(\"survey-skipped\", this._onSurveySkipped as EventListener);\n    this.addEventListener(\"survey-close\", this._onSurveyClose as EventListener);\n  }\n\n  disconnectedCallback() {\n    this._unsubscribeMessages?.();\n    this._multiEngine?.destroy().catch(() => {});\n    // connectedCallback builds a fresh engine on re-attach — drop the dead\n    // reference and re-arm lazy init so the new engine actually connects.\n    this._multiEngine = null;\n    this._engineInitialised = false;\n    window.visualViewport?.removeEventListener(\"resize\", this._onVisualViewport);\n    window.visualViewport?.removeEventListener(\"scroll\", this._onVisualViewport);\n    if (this._vvRafId !== null) cancelAnimationFrame(this._vvRafId);\n    document.removeEventListener(\"keydown\", this._onKeyDown);\n    this.removeEventListener(\"chat-drag-start\", this._onDragStart as EventListener);\n    this.removeEventListener(\"chat-action\", this._onChatAction as EventListener);\n    this.removeEventListener(\"chat-retry\", this._onChatRetry as EventListener);\n    this.removeEventListener(\"chativa-feedback\", this._onFeedback as EventListener);\n    this.removeEventListener(\"send-file\", this._onSendFile as EventListener);\n    this.removeEventListener(\"chat-load-history\", this._onLoadHistory as EventListener);\n    this.removeEventListener(\"genui-send-event\", this._onGenUISendEvent as EventListener);\n    this.removeEventListener(\"show-conversations\", this._onShowConversations as EventListener);\n    this.removeEventListener(\"conversation-select\", this._onConvSelect as EventListener);\n    this.removeEventListener(\"new-conversation\", this._onNewConv as EventListener);\n    this.removeEventListener(\"conversation-close\", this._onConvClose as EventListener);\n    this.removeEventListener(\"chat-close-requested\", this._onCloseRequested as EventListener);\n    this.removeEventListener(\"chat-minimize-requested\", this._onMinimizeRequested as EventListener);\n    this.removeEventListener(\"chat-reset-survey-state\", this._onResetSurveyState as EventListener);\n    this.removeEventListener(\"survey-submitted\", this._onSurveySubmitted as EventListener);\n    this.removeEventListener(\"survey-skipped\", this._onSurveySkipped as EventListener);\n    this.removeEventListener(\"survey-close\", this._onSurveyClose as EventListener);\n    this._detachDragListeners();\n    super.disconnectedCallback();\n  }\n\n  // ── Drag handling — direct DOM, zero re-renders during drag ──────────\n\n  private get _windowMode() {\n    return this.theme.windowMode ?? \"popup\";\n  }\n\n  private _onDragStart = (e: CustomEvent<{ clientX: number; clientY: number }>) => {\n    if (this.themeState.isFullscreen || this._windowMode !== \"popup\") return;\n\n    const widget = this._widget;\n    if (!widget) return;\n\n    const rect = widget.getBoundingClientRect();\n\n    // Store anchor in current left/top coordinates\n    this._dragAnchor = {\n      mouseX: e.detail.clientX,\n      mouseY: e.detail.clientY,\n      widgetLeft: rect.left,\n      widgetTop: rect.top,\n    };\n\n    // Switch from corner-based to left/top positioning (ONE re-render)\n    this._dragPos = { left: rect.left, top: rect.top };\n    this.requestUpdate();\n\n    // Add dragging class directly — no re-render needed\n    this.updateComplete.then(() => {\n      this._widget?.classList.add(\"dragging\");\n    });\n\n    document.addEventListener(\"mousemove\", this._onMouseMove);\n    document.addEventListener(\"mouseup\", this._onMouseUp);\n    document.addEventListener(\"touchmove\", this._onTouchMove, { passive: false });\n    document.addEventListener(\"touchend\", this._onMouseUp);\n  };\n\n  private _onMouseMove = (e: MouseEvent) => this._applyDrag(e.clientX, e.clientY);\n\n  private _onTouchMove = (e: TouchEvent) => {\n    e.preventDefault();\n    this._applyDrag(e.touches[0].clientX, e.touches[0].clientY);\n  };\n\n  private _applyDrag(clientX: number, clientY: number) {\n    if (!this._dragAnchor) return;\n\n    const dx = clientX - this._dragAnchor.mouseX;\n    const dy = clientY - this._dragAnchor.mouseY;\n\n    const { layout } = this.theme;\n    const w = parseInt(layout?.width ?? \"360\", 10) || 360;\n    const h = parseInt(layout?.height ?? \"520\", 10) || 520;\n\n    const left = Math.min(Math.max(this._dragAnchor.widgetLeft + dx, -w + 80), window.innerWidth - 80);\n    const top  = Math.min(Math.max(this._dragAnchor.widgetTop  + dy, 0), window.innerHeight - Math.min(h, 80));\n\n    // Direct DOM update — NO Lit re-render triggered\n    const widget = this._widget;\n    if (widget) {\n      widget.style.left = `${left}px`;\n      widget.style.top  = `${top}px`;\n    }\n    // Keep in sync so _onMouseUp gets the final value cheaply\n    this._dragPos = { left, top };\n  }\n\n  private _onMouseUp = () => {\n    // Remove dragging class directly — no re-render\n    this._widget?.classList.remove(\"dragging\");\n    this._dragAnchor = null;\n    this._detachDragListeners();\n    // ONE re-render to bake final position into template style binding\n    this.requestUpdate();\n  };\n\n  private _detachDragListeners() {\n    document.removeEventListener(\"mousemove\", this._onMouseMove);\n    document.removeEventListener(\"mouseup\", this._onMouseUp);\n    document.removeEventListener(\"touchmove\", this._onTouchMove);\n    document.removeEventListener(\"touchend\", this._onMouseUp);\n  }\n\n  private get _widget(): HTMLElement | null {\n    return this.shadowRoot?.querySelector<HTMLElement>(\".widget\") ?? null;\n  }\n\n  // ── Message sending ──────────────────────────────────────────────────\n\n  private handleSendMessage(e: CustomEvent<string>) {\n    const text = e.detail?.trim();\n    if (!text) return;\n    this._engine\n      .send(createOutgoingMessage(text))\n      .catch((err: unknown) => console.error(\"[ChatWidget] Send failed:\", err));\n  }\n\n  private _onChatAction = (e: Event) => {\n    const raw = (e as CustomEvent<string | { text: string; markdown?: boolean }>).detail;\n    const text = (typeof raw === \"string\" ? raw : raw?.text)?.trim();\n    const markdown = typeof raw === \"object\" && raw?.markdown === true;\n    if (!text) return;\n    const msg = createOutgoingMessage(text);\n    if (markdown) msg.data._markdown = true;\n    this._engine\n      .send(msg)\n      .catch((err: unknown) => console.error(\"[ChatWidget] Action send failed:\", err));\n  };\n\n  private _onFeedback = (e: CustomEvent<{ messageId: string; feedback: \"like\" | \"dislike\" }>) => {\n    this._engine\n      .sendFeedback(e.detail.messageId, e.detail.feedback)\n      .catch((err: unknown) => console.error(\"[ChatWidget] Feedback failed:\", err));\n  };\n\n  private _onChatRetry = () => {\n    this._engine.init().catch((err: unknown) =>\n      console.error(\"[ChatWidget] Reconnect failed:\", err)\n    );\n  };\n\n  private _onSendFile = (e: CustomEvent<{ files: File[]; text: string }>) => {\n    const { files, text } = e.detail;\n    for (const file of files) {\n      this._engine.sendFile(file, text ? { caption: text } : undefined)\n        .catch((err: unknown) => console.error(\"[ChatWidget] sendFile failed:\", err));\n    }\n  };\n\n  private _onLoadHistory = () => {\n    this._engine.loadHistory()\n      .catch((err: unknown) => console.error(\"[ChatWidget] loadHistory failed:\", err));\n  };\n\n  private _onGenUISendEvent = (e: CustomEvent<{ msgId: string; eventType: string; payload: unknown }>) => {\n    this._engine.receiveComponentEvent(e.detail.msgId, e.detail.eventType, e.detail.payload);\n  };\n\n  // ── Multi-conversation handlers ───────────────────────────────────────\n\n  private _onShowConversations = () => {\n    this._showConvList = true;\n  };\n\n  private _onConvSelect = (e: CustomEvent<{ id: string }>) => {\n    this._showConvList = false;\n    this._multiEngine?.switchTo(e.detail.id).catch((err: unknown) =>\n      console.error(\"[ChatWidget] switchTo failed:\", err)\n    );\n  };\n\n  private _onNewConv = () => {\n    this._showConvList = false;\n    this._multiEngine?.createNew().catch((err: unknown) =>\n      console.error(\"[ChatWidget] createNew failed:\", err)\n    );\n  };\n\n  private _onConvClose = (e: CustomEvent<{ id: string }>) => {\n    this._multiEngine?.close(e.detail.id).catch((err: unknown) =>\n      console.error(\"[ChatWidget] close failed:\", err)\n    );\n  };\n\n  // ── End-of-conversation survey ───────────────────────────────────────\n\n  private _getSurveyConfig(): EndOfConversationSurveyConfig | null {\n    const cfg = this.theme.endOfConversationSurvey;\n    if (!cfg || !cfg.enabled) return null;\n    return cfg;\n  }\n\n  /**\n   * Decide whether to intercept a user-initiated close in order to show the survey.\n   * Called from the header close button and the Escape key path.\n   */\n  private _requestClose(): void {\n    const cfg = this._getSurveyConfig();\n    if (!cfg || (cfg.trigger ?? \"onClose\") !== \"onClose\") {\n      this.themeState.close();\n      return;\n    }\n\n    // Survey already active this session — either showing the form, showing\n    // the thank-you screen, or already submitted. In every case a close\n    // press means \"wrap up\" and should run the reset flow rather than\n    // opening another survey.\n    if (this._showSurveyOverlay || this._inlineSurveyInjected || this._surveyResolved) {\n      this._resetConversation();\n      return;\n    }\n\n    const mode = cfg.mode ?? \"screen\";\n    if (mode === \"screen\") {\n      this._showSurveyOverlay = true;\n      return;\n    }\n\n    // inline mode — append a bot-authored survey message and keep the widget open\n    this._inlineSurveyInjected = true;\n    const Component = MessageTypeRegistry.resolve(\"end-of-conversation-survey\");\n    messageStore.getState().addMessage({\n      id: `survey-${Date.now()}`,\n      type: \"end-of-conversation-survey\",\n      from: \"bot\",\n      data: {},\n      timestamp: Date.now(),\n      component: Component,\n    });\n  }\n\n  private _onCloseRequested = () => {\n    this._requestClose();\n  };\n\n  private _onMinimizeRequested = () => {\n    // Minimize bypasses the survey — the user is just hiding the widget.\n    this.themeState.close();\n  };\n\n  private _onResetSurveyState = () => {\n    // Lets tooling (e.g. the sandbox) re-trigger the survey without a full reload.\n    this._surveyResolved = false;\n    this._inlineSurveyInjected = false;\n    this._showSurveyOverlay = false;\n  };\n\n  private _onSurveySubmitted = (e: CustomEvent<SurveyPayload & { messageId?: string }>) => {\n    const { rating, comment, kind } = e.detail;\n    this._engine\n      .sendSurvey({ rating, comment, kind })\n      .catch((err: unknown) => console.error(\"[ChatWidget] sendSurvey failed:\", err));\n    // The component transitions to its thank-you state; reset runs only when\n    // the user explicitly clicks the close button (`survey-close`) or when a\n    // second close press is interpreted as skip.\n    this._surveyResolved = true;\n  };\n\n  private _onSurveySkipped = () => {\n    this._resetConversation();\n  };\n\n  private _onSurveyClose = () => {\n    this._resetConversation();\n  };\n\n  /**\n   * Reset the widget after a survey submit / skip.\n   *\n   * When `resetOnSubmit` is true (default), fully tear down the engine and\n   * connector, wipe runtime state, and rebuild the engine so the next open\n   * starts from scratch (fresh connection, empty history, launcher view).\n   * Theme config and the active connector *name* are preserved; host pages\n   * can listen for `chativa-reset` to swap the registered connector instance\n   * before the rebuild (e.g. rotate a DirectLine userId / token).\n   *\n   * When `resetOnSubmit` is false, the session is kept alive — we only close\n   * the widget and reset local survey flags so the next close can trigger\n   * the survey again.\n   */\n  private _resetConversation(): void {\n    const cfg = this._getSurveyConfig();\n    const doFullReset = cfg?.resetOnSubmit !== false; // default: true\n\n    if (!doFullReset) {\n      this._surveyResolved = false;\n      this._inlineSurveyInjected = false;\n      this._showSurveyOverlay = false;\n      this.themeState.close();\n      return;\n    }\n\n    this.dispatchEvent(\n      new CustomEvent(\"chativa-reset\", { bubbles: true, composed: true }),\n    );\n\n    const rebuild = () => {\n      // Clear runtime state but keep theme, active connector, and fullscreen prefs.\n      messageStore.getState().clear();\n      chatStore.setState({\n        connectorStatus: \"idle\",\n        isTyping: false,\n        unreadCount: 0,\n        reconnectAttempt: 0,\n        hasMoreHistory: false,\n        isLoadingHistory: false,\n        historyCursor: undefined,\n        searchQuery: \"\",\n        activeToolCalls: [],\n        isFullscreen: false,\n        isRendered: false,\n      });\n\n      // Widget-local flags.\n      this._surveyResolved = false;\n      this._inlineSurveyInjected = false;\n      this._showSurveyOverlay = false;\n      this._showConvList = false;\n      this._showDropOverlay = false;\n      this._dropDepth = 0;\n\n      // Rebuild the engine so the next open reconnects fresh. The host page\n      // may have swapped the registered connector in its `chativa-reset`\n      // listener; ConnectorRegistry.get picks up whatever is there now.\n      const connectorName = chatStore.getState().activeConnector;\n      const adapter = ConnectorRegistry.get(connectorName);\n      this._multiEngine = new MultiConversationEngine(adapter);\n      this._engine = this._multiEngine.chatEngine;\n      this._engineInitialised = false;\n\n      this.themeState.close();\n    };\n\n    const prev = this._multiEngine;\n    this._multiEngine = null;\n    this._engine = undefined as unknown as ChatEngine;\n\n    if (prev) {\n      prev.destroy()\n        .catch((err: unknown) => console.error(\"[ChatWidget] reset: destroy failed:\", err))\n        .finally(rebuild);\n    } else {\n      rebuild();\n    }\n  }\n\n  // ── Widget-level file drop ────────────────────────────────────────────\n\n  private _onFileDragEnter = (e: DragEvent) => {\n    if (!e.dataTransfer?.types.includes(\"Files\")) return;\n    e.preventDefault();\n    this._dropDepth++;\n    this._showDropOverlay = true;\n  };\n\n  private _onFileDragOver = (e: DragEvent) => {\n    if (!e.dataTransfer?.types.includes(\"Files\")) return;\n    e.preventDefault();\n  };\n\n  private _onFileDragLeave = () => {\n    this._dropDepth--;\n    if (this._dropDepth <= 0) {\n      this._dropDepth = 0;\n      this._showDropOverlay = false;\n    }\n  };\n\n  private _onFileDrop = (e: DragEvent) => {\n    e.preventDefault();\n    this._dropDepth = 0;\n    this._showDropOverlay = false;\n    const files = Array.from(e.dataTransfer?.files ?? []);\n    if (files.length === 0) return;\n    // Forward files to ChatInput queue so the user can optionally add a caption\n    const chatInput = this.shadowRoot?.querySelector(\"chat-input\") as (Element & { addFiles(f: File[]): void }) | null;\n    chatInput?.addFiles(files);\n  };\n\n  // ── Accessibility: focus trap + ESC to close ─────────────────────────\n\n  /** Element focused before the dialog opened — restored when it closes. */\n  private _prevActiveElement: HTMLElement | null = null;\n\n  /**\n   * Walk the composed shadow tree and collect all focusable elements in DOM\n   * order. Needed because querySelectorAll does not pierce shadow roots.\n   */\n  private _getFocusable(): HTMLElement[] {\n    const SELECTOR =\n      'a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n    const result: HTMLElement[] = [];\n    const collect = (root: ShadowRoot | Element) => {\n      for (const el of root.querySelectorAll<HTMLElement>(\"*\")) {\n        if ((el as HTMLElement).matches?.(SELECTOR)) result.push(el);\n        if (el.shadowRoot) collect(el.shadowRoot);\n      }\n    };\n    if (this.shadowRoot) collect(this.shadowRoot);\n    return result;\n  }\n\n  private _onKeyDown = (e: KeyboardEvent) => {\n    if (!this.themeState.isOpened) return;\n\n    if (e.key === \"Escape\") {\n      e.preventDefault();\n      this._requestClose();\n      return;\n    }\n\n    if (e.key !== \"Tab\") return;\n\n    const focusable = this._getFocusable();\n    if (focusable.length === 0) return;\n\n    // Resolve the deeply-nested active element across shadow roots\n    let active: Element | null = document.activeElement;\n    while (active?.shadowRoot?.activeElement) {\n      active = active.shadowRoot.activeElement;\n    }\n\n    const idx = focusable.indexOf(active as HTMLElement);\n\n    if (!e.shiftKey && (idx === -1 || idx >= focusable.length - 1)) {\n      e.preventDefault();\n      focusable[0].focus();\n    } else if (e.shiftKey && idx <= 0) {\n      e.preventDefault();\n      focusable[focusable.length - 1].focus();\n    }\n  };\n\n  // ── Focus management ─────────────────────────────────────────────────\n\n  protected override updated(changed: Map<PropertyKey, unknown>) {\n    super.updated?.(changed);\n    const isOpened = this.themeState.isOpened;\n\n    if (isOpened && !this._wasOpened) {\n      // Lazy-connect: initialise the engine on first open.\n      // Deferred past this update cycle — init() synchronously sets the\n      // connector status in chatStore, which would re-schedule an update\n      // while this one is still in progress (Lit change-in-update warning).\n      // The isConnected check keeps a deferred init from resurrecting an\n      // engine that disconnectedCallback already destroyed.\n      if (!this._engineInitialised) {\n        this._engineInitialised = true;\n        this.updateComplete.then(() => {\n          if (!this.isConnected) return;\n          this._multiEngine?.init().catch((err: unknown) => {\n            console.error(\"[ChatWidget] Engine init failed:\", err);\n          });\n        });\n      }\n      // Store previously focused element so we can restore it on close\n      this._prevActiveElement = document.activeElement as HTMLElement;\n      this.updateComplete.then(() => {\n        const input = this.shadowRoot\n          ?.querySelector(\"chat-input\")\n          ?.shadowRoot?.querySelector<HTMLElement>(\".text-input\");\n        input?.focus();\n      });\n    }\n\n    if (!isOpened && this._wasOpened) {\n      // Return focus to the element that was active before the dialog opened\n      this._prevActiveElement?.focus();\n      this._prevActiveElement = null;\n    }\n\n    this._wasOpened = isOpened;\n  }\n\n  // ── Positioning ──────────────────────────────────────────────────────\n\n  private get _positionStyle(): string {\n    const mode = this._windowMode;\n    const isFullscreen = this.themeState.isFullscreen || mode === \"fullscreen\";\n\n    if (isFullscreen || mode === \"inline\") return \"\";\n\n    const { positionMargin, layout, size, position } = this.theme;\n    const w  = layout?.width  ?? \"360px\";\n    const ht = layout?.height ?? \"520px\";\n\n    if (mode === \"side-panel\") {\n      const side = position.endsWith(\"left\") ? \"left: 0\" : \"right: 0\";\n      return `${side}; top: 0; width: ${w}; height: 100dvh;`;\n    }\n\n    // popup (default)\n    if (this._dragPos) {\n      return `left: ${this._dragPos.left}px; top: ${this._dragPos.top}px; width: ${w}; height: ${ht};`;\n    }\n\n    const hLevel = layout?.horizontalSpace ?? positionMargin ?? \"2\";\n    const vLevel = layout?.verticalSpace   ?? positionMargin ?? \"2\";\n    const mH     = `${Number(hLevel) * 0.5 + 0.5}rem`;\n    const mV     = `${Number(vLevel) * 0.5 + 0.5}rem`;\n    const btnPx  = SIZE_PX[size ?? \"medium\"] ?? 56;\n    const vOff   = `calc(${mV} + ${btnPx}px + 12px)`;\n    const [v, h] = (position ?? \"bottom-right\").split(\"-\");\n    return `${v}: ${vOff}; ${h}: ${mH}; width: ${w}; height: ${ht};`;\n  }\n\n  // ── Render ───────────────────────────────────────────────────────────\n\n  render() {\n    if (!this.themeState.isOpened) return nothing;\n\n    const mode = this._windowMode;\n    const isFullscreen = this.themeState.isFullscreen || mode === \"fullscreen\";\n    const isFromLeft = this.theme.position.endsWith(\"left\");\n\n    const cls = [\n      \"widget\",\n      isFullscreen ? \"fullscreen\" : \"\",\n      mode === \"side-panel\" ? \"side-panel\" : \"\",\n      mode === \"side-panel\" && isFromLeft ? \"from-left\" : \"\",\n      mode === \"inline\" ? \"inline-mode\" : \"\",\n    ].filter(Boolean).join(\" \");\n\n    return html`\n      <div\n        class=\"${cls}\"\n        role=\"dialog\"\n        aria-modal=\"true\"\n        aria-label=\"${t(\"widget.title\")}\"\n        style=\"${this._positionStyle}\"\n        @dragenter=${this._onFileDragEnter}\n        @dragover=${this._onFileDragOver}\n        @dragleave=${this._onFileDragLeave}\n        @drop=${this._onFileDrop}\n      >\n        ${this._showConvList && this.theme.enableMultiConversation ? html`\n          <conversation-list></conversation-list>\n        ` : this._showSurveyOverlay ? html`\n          <chat-header .showConvToggle=${this.theme.enableMultiConversation === true}></chat-header>\n          <end-of-conversation-survey overlay></end-of-conversation-survey>\n        ` : html`\n          <chat-header .showConvToggle=${this.theme.enableMultiConversation === true}></chat-header>\n          <chat-message-list></chat-message-list>\n          <chat-input @send-message=${this.handleSendMessage.bind(this)}></chat-input>\n        `}\n\n        ${this._showDropOverlay ? html`\n          <div class=\"drop-overlay\" aria-hidden=\"true\">\n            <svg class=\"drop-overlay-icon\" width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n              <path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\"/>\n            </svg>\n            <span class=\"drop-overlay-label\">${t(\"input.dropHere\")}</span>\n            <span class=\"drop-overlay-sub\">${t(\"input.dropHereSubtitle\")}</span>\n          </div>\n        ` : nothing}\n      </div>\n    `;\n  }\n\n}\n\nexport default ChatWidget;\n","import { LitElement, html, css } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport {\n  ConnectorRegistry,\n  MultiConversationEngine,\n  messageStore,\n  conversationStore,\n  createOutgoingMessage,\n} from \"@chativa/core\";\nimport { registerCommand } from \"../commands/index\";\nimport \"./ConversationList\";\nimport \"./ChatHeader\";\nimport \"./ChatMessageList\";\nimport \"./ChatInput\";\n\n/**\n * `<agent-panel>` — embedded multi-conversation panel for agent / support desk use.\n *\n * Shows a sidebar with the conversation list on the left and the active chat on the right.\n * Does NOT show a floating button — it's meant to be embedded directly in an application.\n *\n * Attributes:\n *   connector  — name of the registered connector (default: \"dummy\")\n *   sidebar-width — CSS width of the conversation sidebar (default: \"260px\")\n *\n * Example:\n *   <agent-panel connector=\"dummy\"></agent-panel>\n */\n@customElement(\"agent-panel\")\nexport class AgentPanel extends LitElement {\n  static override styles = css`\n    :host {\n      display: flex;\n      flex-direction: column;\n      width: 100%;\n      height: 100%;\n      font-family: var(--chativa-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif);\n      background: white;\n      border-radius: 12px;\n      overflow: hidden;\n      box-shadow: 0 4px 32px rgba(0, 0, 0, 0.1);\n    }\n\n    .panel {\n      display: flex;\n      flex: 1;\n      overflow: hidden;\n      min-height: 0;\n    }\n\n    /* ── Sidebar ── */\n    .sidebar {\n      flex-shrink: 0;\n      display: flex;\n      flex-direction: column;\n      overflow: hidden;\n    }\n\n    /* ── Chat area ── */\n    .chat-area {\n      flex: 1;\n      display: flex;\n      flex-direction: column;\n      overflow: hidden;\n      min-width: 0;\n      background: white;\n    }\n\n    /* ── Empty state (no active conversation) ── */\n    .no-conv {\n      flex: 1;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      gap: 12px;\n      color: #94a3b8;\n    }\n\n    .no-conv-icon {\n      opacity: 0.35;\n    }\n\n    .no-conv-text {\n      font-size: 0.875rem;\n      font-weight: 500;\n    }\n  `;\n\n  @property({ type: String }) connector = \"dummy\";\n  @property({ type: String, attribute: \"sidebar-width\" }) sidebarWidth = \"260px\";\n\n  @state() private _activeId: string | null = null;\n  @state() private _msgVersion = 0;\n\n  private _engine!: MultiConversationEngine;\n  private _unsubConv!: () => void;\n  private _unsubMsg!: () => void;\n\n  override connectedCallback() {\n    super.connectedCallback();\n\n    // Register built-in /clear command\n    registerCommand({\n      name: \"clear\",\n      translations: {\n        en: { description: \"Clear messages\" },\n        tr: { description: \"Mesajları temizle\" },\n      },\n      execute() {\n        messageStore.getState().clear();\n      },\n    });\n\n    const adapter = ConnectorRegistry.get(this.connector);\n    this._engine = new MultiConversationEngine(adapter);\n    this._engine.init().catch((err: unknown) => {\n      console.error(\"[AgentPanel] Engine init failed:\", err);\n    });\n\n    this._unsubConv = conversationStore.subscribe(() => {\n      this._activeId = conversationStore.getState().activeConversationId;\n    });\n    this._unsubMsg = messageStore.subscribe(() => {\n      this._msgVersion = messageStore.getState().version;\n    });\n    this._activeId = conversationStore.getState().activeConversationId;\n\n    // Note: send-message is bound via template (@send-message on <chat-input>)\n    // All other events bubble up composedly from inner shadow components\n    this.addEventListener(\"conversation-select\", this._onConvSelect as EventListener);\n    this.addEventListener(\"new-conversation\", this._onNewConv as EventListener);\n    this.addEventListener(\"conversation-close\", this._onConvClose as EventListener);\n    this.addEventListener(\"chat-action\", this._onChatAction as EventListener);\n    this.addEventListener(\"chativa-feedback\", this._onFeedback as EventListener);\n    this.addEventListener(\"chat-retry\", this._onRetry as EventListener);\n    this.addEventListener(\"send-file\", this._onSendFile as EventListener);\n    this.addEventListener(\"chat-load-history\", this._onLoadHistory as EventListener);\n    this.addEventListener(\"genui-send-event\", this._onGenUISendEvent as EventListener);\n  }\n\n  override disconnectedCallback() {\n    this._unsubConv?.();\n    this._unsubMsg?.();\n    this._engine?.destroy().catch(() => {});\n    this.removeEventListener(\"conversation-select\", this._onConvSelect as EventListener);\n    this.removeEventListener(\"new-conversation\", this._onNewConv as EventListener);\n    this.removeEventListener(\"conversation-close\", this._onConvClose as EventListener);\n    this.removeEventListener(\"chat-action\", this._onChatAction as EventListener);\n    this.removeEventListener(\"chativa-feedback\", this._onFeedback as EventListener);\n    this.removeEventListener(\"chat-retry\", this._onRetry as EventListener);\n    this.removeEventListener(\"send-file\", this._onSendFile as EventListener);\n    this.removeEventListener(\"chat-load-history\", this._onLoadHistory as EventListener);\n    this.removeEventListener(\"genui-send-event\", this._onGenUISendEvent as EventListener);\n    super.disconnectedCallback();\n  }\n\n  // ── Event handlers ────────────────────────────────────────────────────\n\n  private _onConvSelect = (e: CustomEvent<{ id: string }>) => {\n    this._engine.switchTo(e.detail.id).catch((err: unknown) =>\n      console.error(\"[AgentPanel] switchTo failed:\", err)\n    );\n  };\n\n  private _onNewConv = () => {\n    this._engine.createNew().catch((err: unknown) =>\n      console.error(\"[AgentPanel] createNew failed:\", err)\n    );\n  };\n\n  private _onConvClose = (e: CustomEvent<{ id: string }>) => {\n    this._engine.close(e.detail.id).catch((err: unknown) =>\n      console.error(\"[AgentPanel] close failed:\", err)\n    );\n  };\n\n  private _onSendMessage = (e: CustomEvent<string>) => {\n    const text = e.detail?.trim();\n    if (!text) return;\n    this._engine.chatEngine\n      .send(createOutgoingMessage(text))\n      .catch((err: unknown) => console.error(\"[AgentPanel] Send failed:\", err));\n  };\n\n  private _onChatAction = (e: Event) => {\n    const text = (e as CustomEvent<string>).detail?.trim();\n    if (!text) return;\n    this._engine.chatEngine\n      .send(createOutgoingMessage(text))\n      .catch((err: unknown) => console.error(\"[AgentPanel] Action send failed:\", err));\n  };\n\n  private _onFeedback = (e: CustomEvent<{ messageId: string; feedback: \"like\" | \"dislike\" }>) => {\n    this._engine.chatEngine\n      .sendFeedback(e.detail.messageId, e.detail.feedback)\n      .catch((err: unknown) => console.error(\"[AgentPanel] Feedback failed:\", err));\n  };\n\n  private _onRetry = () => {\n    this._engine.chatEngine\n      .init()\n      .catch((err: unknown) => console.error(\"[AgentPanel] Reconnect failed:\", err));\n  };\n\n  private _onSendFile = (e: CustomEvent<{ files: File[]; text: string }>) => {\n    const { files, text } = e.detail;\n    for (const file of files) {\n      this._engine.chatEngine\n        .sendFile(file, text ? { caption: text } : undefined)\n        .catch((err: unknown) => console.error(\"[AgentPanel] sendFile failed:\", err));\n    }\n  };\n\n  private _onLoadHistory = () => {\n    this._engine.chatEngine\n      .loadHistory()\n      .catch((err: unknown) => console.error(\"[AgentPanel] loadHistory failed:\", err));\n  };\n\n  private _onGenUISendEvent = (\n    e: CustomEvent<{ msgId: string; eventType: string; payload: unknown }>\n  ) => {\n    this._engine.chatEngine.receiveComponentEvent(\n      e.detail.msgId,\n      e.detail.eventType,\n      e.detail.payload\n    );\n  };\n\n  // ── Render ────────────────────────────────────────────────────────────\n\n  override render() {\n    // Subscribe to msgVersion to force re-render on message changes\n    void this._msgVersion;\n\n    return html`\n      <div class=\"panel\">\n        <!-- Sidebar -->\n        <div class=\"sidebar\" style=\"width: ${this.sidebarWidth}\">\n          <conversation-list></conversation-list>\n        </div>\n\n        <!-- Chat area -->\n        <div class=\"chat-area\">\n          ${this._activeId === null\n            ? html`\n                <div class=\"no-conv\">\n                  <svg class=\"no-conv-icon\" width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"/>\n                  </svg>\n                  <span class=\"no-conv-text\">Select a conversation</span>\n                </div>\n              `\n            : html`\n                <chat-header></chat-header>\n                <chat-message-list></chat-message-list>\n                <chat-input @send-message=${this._onSendMessage}></chat-input>\n              `}\n        </div>\n      </div>\n    `;\n  }\n}\n\ndeclare global {\n  interface HTMLElementTagNameMap {\n    \"agent-panel\": AgentPanel;\n  }\n}\n","import { LitElement, html, css, nothing } from \"lit\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { t } from \"i18next\";\nimport { ChatbotMixin } from \"../mixins/ChatbotMixin\";\n\nconst SIZE_PX: Record<string, number> = { small: 44, medium: 56, large: 68 };\n\n@customElement(\"chat-bot-button\")\nclass ChatBotButton extends ChatbotMixin(LitElement) {\n  static override styles = css`\n    :host {\n      display: block;\n    }\n\n    /**\n     * .launcher — the positioned wrapper that handles placement + click.\n     * Expose via ::part(launcher) so consumers can fully override appearance.\n     *\n     * Default slot: if no children are provided the gradient circle + animated\n     * icons are shown.  When children ARE slotted in, the wrapper stays\n     * positioned and handles the toggle, but the visual is entirely up to the\n     * consumer.\n     */\n    .launcher {\n      position: fixed;\n      cursor: pointer;\n      border: none;\n      outline: none;\n      border-radius: 50%;\n      background: linear-gradient(\n        135deg,\n        var(--chativa-primary-color, #4f46e5) 0%,\n        var(--chativa-primary-dark, #7c3aed) 100%\n      );\n      color: white;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      box-shadow: 0 4px 20px rgba(79, 70, 229, 0.45),\n        0 2px 8px rgba(0, 0, 0, 0.12);\n      transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1),\n        box-shadow 0.2s ease;\n      z-index: 10000;\n      padding: 0;\n    }\n\n    /* When the slot has custom content, fully reset default styles so the\n       consumer's slotted element defines the appearance.\n       !important needed to override the inline width/height from #positionStyle(). */\n    .launcher.has-slot {\n      background: transparent;\n      box-shadow: none;\n      border-radius: 0;\n      width: auto !important;\n      height: auto !important;\n    }\n\n    .launcher:hover {\n      transform: scale(1.08);\n      box-shadow: 0 6px 28px rgba(79, 70, 229, 0.55),\n        0 4px 14px rgba(0, 0, 0, 0.18);\n    }\n\n    .launcher.has-slot:hover {\n      transform: scale(1.08);\n      box-shadow: none;\n    }\n\n    .launcher:active {\n      transform: scale(0.94);\n    }\n\n    .launcher:focus-visible {\n      outline: 3px solid var(--chativa-primary-color, #4f46e5);\n      outline-offset: 3px;\n    }\n\n    /* Default icon animation (only shown when no slot content) */\n    .icon-wrap {\n      position: relative;\n      width: 24px;\n      height: 24px;\n    }\n\n    .icon-wrap svg {\n      position: absolute;\n      inset: 0;\n      width: 24px;\n      height: 24px;\n      transition: opacity 0.25s ease, transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n    }\n\n    .icon-chat {\n      opacity: 1;\n      transform: scale(1) rotate(0deg);\n    }\n\n    .icon-close {\n      opacity: 0;\n      transform: scale(0.4) rotate(-90deg);\n    }\n\n    .launcher.is-open .icon-chat {\n      opacity: 0;\n      transform: scale(0.4) rotate(90deg);\n    }\n\n    .launcher.is-open .icon-close {\n      opacity: 1;\n      transform: scale(1) rotate(0deg);\n    }\n\n    /* Slotted content — display as block so images keep their natural aspect ratio */\n    ::slotted(*) {\n      display: block;\n    }\n\n    /* Unread badge */\n    .badge {\n      position: absolute;\n      top: -4px;\n      right: -4px;\n      min-width: 18px;\n      height: 18px;\n      padding: 0 4px;\n      background: #ef4444;\n      color: #fff;\n      border-radius: 999px;\n      font-size: 0.6875rem;\n      font-weight: 700;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      box-shadow: 0 0 0 2px #fff;\n      pointer-events: none;\n      line-height: 1;\n      animation: badge-pop 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);\n    }\n\n    @keyframes badge-pop {\n      from { transform: scale(0); }\n      to   { transform: scale(1); }\n    }\n\n    /* When slotted content is provided and hideButtonOnOpen is enabled,\n       hide the button while chat is open */\n    .launcher.has-slot.hide-on-open.is-open {\n      display: none;\n    }\n\n    /* On mobile chat goes fullscreen — hide the toggle button so it\n       doesn't float above the open chat panel. */\n    @media (max-width: 480px) {\n      .launcher.is-open {\n        display: none;\n      }\n    }\n  `;\n\n  /** True when consumer has placed content in the default slot */\n  @state() private _hasSlot = false;\n\n  private _onSlotChange(e: Event) {\n    const slot = e.target as HTMLSlotElement;\n    this._hasSlot = slot.assignedNodes({ flatten: true }).length > 0;\n  }\n\n  #positionStyle(): string {\n    const { position, positionMargin, size } = this.theme;\n    const m = positionMargin ? `${Number(positionMargin) * 0.5 + 0.5}rem` : \"1rem\";\n    const [v, h] = (position ?? \"bottom-right\").split(\"-\");\n    if (this._hasSlot) {\n      return `${v}: ${m}; ${h}: ${m};`;\n    }\n    const px = SIZE_PX[size ?? \"medium\"] ?? 56;\n    return `${v}: ${m}; ${h}: ${m}; width: ${px}px; height: ${px}px;`;\n  }\n\n  render() {\n    const { isOpened: isOpen, unreadCount } = this.themeState;\n    const hideOnOpen = this.theme.hideButtonOnOpen === true;\n    const classes = [\n      \"launcher\",\n      isOpen ? \"is-open\" : \"\",\n      this._hasSlot ? \"has-slot\" : \"\",\n      this._hasSlot && hideOnOpen ? \"hide-on-open\" : \"\",\n    ]\n      .filter(Boolean)\n      .join(\" \");\n\n    return html`\n      <button\n        class=\"${classes}\"\n        part=\"launcher\"\n        style=\"${this.#positionStyle()}\"\n        @click=${() => this.themeState.toggle()}\n        aria-label=\"${isOpen ? t(\"chatButton.close\") : t(\"chatButton.open\")}\"\n        aria-expanded=\"${isOpen}\"\n      >\n        <slot @slotchange=${this._onSlotChange}>\n          <!-- Default: animated chat / close icons -->\n          <span class=\"icon-wrap\" aria-hidden=\"true\">\n            <svg\n              class=\"icon-chat\"\n              viewBox=\"0 0 24 24\"\n              fill=\"currentColor\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              aria-hidden=\"true\"\n            >\n              <path\n                d=\"M20 2H4a2 2 0 0 0-2 2v18l4-4h14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm-2 10H6V10h12v2zm0-3H6V7h12v2z\"\n              />\n            </svg>\n            <svg\n              class=\"icon-close\"\n              viewBox=\"0 0 24 24\"\n              fill=\"none\"\n              stroke=\"currentColor\"\n              stroke-width=\"2.5\"\n              stroke-linecap=\"round\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              aria-hidden=\"true\"\n            >\n              <path d=\"M18 6L6 18M6 6l12 12\" />\n            </svg>\n          </span>\n        </slot>\n        ${unreadCount > 0 && !isOpen\n          ? html`<span class=\"badge\" aria-label=\"${unreadCount} unread messages\">\n              <span aria-hidden=\"true\">${unreadCount > 9 ? \"9+\" : unreadCount}</span>\n            </span>`\n          : nothing}\n      </button>\n    `;\n  }\n}\n\nexport default ChatBotButton;\n","import type { ChativaSettings } from \"@chativa/core\";\n\nexport interface RenderOptions extends ChativaSettings {\n    /**\n     * Floating button configuration.\n     * - `false`  → no button\n     * - `true`   → default animated button (default)\n     * - `string` → treated as innerHTML for the button (e.g. an `<img>` tag)\n     * - `Node`   → appended as a child of `<chat-bot-button>` (slot content)\n     */\n    button?: boolean | string | Node;\n}\n\n/**\n * Mount the Chativa chat widget into a container element.\n *\n * ```js\n * Chativa.render(document.body, {\n *     connector: myConnector,\n *     theme:  { colors: { primary: \"#1B1464\" } },\n *     locale: \"tr\",\n *     i18n:   { en: { header: { title: \"Hey!\" } }, tr: { header: { title: \"Selam!\" } } },\n *     button: '<img src=\"bot.gif\" alt=\"Chat\" style=\"width:96px;height:62px\" />',\n * });\n * ```\n */\nexport function render(\n    container: HTMLElement,\n    options: RenderOptions = {},\n): { widget: HTMLElement; button: HTMLElement | null } {\n    const { button: buttonOpt = true, ...settings } = options;\n\n    // Apply settings so applyGlobalSettings() picks them up in connectedCallback\n    window.chativaSettings = { ...window.chativaSettings, ...settings };\n\n    // Push theme colors as CSS custom properties onto the container so that\n    // any light-DOM styles (outside shadow roots) can use var(--chativa-*).\n    if (settings.theme?.colors) {\n        const c = settings.theme.colors;\n        const map: Record<string, string | undefined> = {\n            \"--chativa-primary-color\": c.primary,\n            \"--chativa-secondary-color\": c.secondary,\n            \"--chativa-background-color\": c.background,\n            \"--chativa-text-color\": c.text,\n            \"--chativa-border-color\": c.border,\n        };\n        for (const [prop, value] of Object.entries(map)) {\n            if (value) container.style.setProperty(prop, value);\n        }\n    }\n\n    // Create button\n    let btn: HTMLElement | null = null;\n    if (buttonOpt !== false) {\n        btn = document.createElement(\"chat-bot-button\");\n        if (typeof buttonOpt === \"string\") {\n            btn.innerHTML = buttonOpt;\n        } else if (buttonOpt instanceof Node) {\n            btn.appendChild(buttonOpt);\n        }\n        container.appendChild(btn);\n    }\n\n    // Create widget\n    const widget = document.createElement(\"chat-iva\");\n    container.appendChild(widget);\n\n    return { widget, button: btn };\n}\n","import { i18next as L, MessageTypeRegistry as ne, ChativaElement as g, t as le, chatStore as ce } from \"@chativa/core\";\nimport { css as f, html as a, nothing as c, svg as B } from \"lit\";\nimport { property as l, customElement as b, state as $ } from \"lit/decorators.js\";\nconst pe = {\n  \"genui.form.processing\": \"Processing…\",\n  \"genui.form.submit\": \"Submit\",\n  \"genui.form.successTitle\": \"Success\",\n  \"genui.form.successDefault\": \"Done!\",\n  \"genui.form.errorDefault\": \"Something went wrong.\",\n  \"genui.appointment.title\": \"Book an Appointment\",\n  \"genui.appointment.submit\": \"Book Now\",\n  \"genui.appointment.successDefault\": \"Appointment successfully booked.\",\n  \"genui.appointment.codeHint\": \"Please save this code for your reference.\",\n  \"genui.appointment.copy\": \"Copy\",\n  \"genui.appointment.copied\": \"Copied!\",\n  \"genui.rating.ariaLabel\": \"Star rating\",\n  \"genui.rating.starLabel\": \"{{count}} star\",\n  \"genui.rating.submit\": \"Submit\",\n  \"genui.rating.thankYou\": \"Thank you for your feedback!\",\n  \"genui.datePicker.label\": \"Select date\"\n}, de = {\n  \"genui.form.processing\": \"İşleniyor…\",\n  \"genui.form.submit\": \"Gönder\",\n  \"genui.form.successTitle\": \"Başarılı\",\n  \"genui.form.successDefault\": \"Tamamlandı!\",\n  \"genui.form.errorDefault\": \"Bir şeyler ters gitti.\",\n  \"genui.appointment.title\": \"Randevu Al\",\n  \"genui.appointment.submit\": \"Şimdi Randevu Al\",\n  \"genui.appointment.successDefault\": \"Randevunuz başarıyla alındı.\",\n  \"genui.appointment.codeHint\": \"Bu kodu referans olarak saklayın.\",\n  \"genui.appointment.copy\": \"Kopyala\",\n  \"genui.appointment.copied\": \"Kopyalandı!\",\n  \"genui.rating.ariaLabel\": \"Yıldız puanı\",\n  \"genui.rating.starLabel\": \"{{count}} yıldız\",\n  \"genui.rating.submit\": \"Gönder\",\n  \"genui.rating.thankYou\": \"Geri bildiriminiz için teşekkür ederiz!\",\n  \"genui.datePicker.label\": \"Tarih seçin\"\n};\nfunction te() {\n  L.addResources(\"en\", \"translation\", pe), L.addResources(\"tr\", \"translation\", de);\n}\nL.isInitialized ? te() : L.on(\"initialized\", te);\nconst G = /* @__PURE__ */ new Map(), m = {\n  /**\n   * Register a LitElement constructor under a name.\n   * @param name      Must match `AIChunkUI.component` sent by the connector.\n   * @param component LitElement constructor (or any HTMLElement subclass).\n   * @param opts.schema  Optional schema for prop validation at render time.\n   */\n  register(e, t, s) {\n    G.set(e, { component: t, schema: s?.schema });\n  },\n  /** Resolve a registered entry, or undefined if not found. */\n  resolve(e) {\n    return G.get(e);\n  },\n  has(e) {\n    return G.has(e);\n  },\n  /** Remove a registration. */\n  unregister(e) {\n    G.delete(e);\n  },\n  /** List all registered names. */\n  list() {\n    return Array.from(G.keys());\n  },\n  /** Reset — for use in tests only. */\n  clear() {\n    G.clear();\n  }\n}, re = f`\n  .chativa-bubble {\n    background: #f1f5f9;\n    color: #0f172a;\n    border-radius: 4px 16px 16px 16px;\n    padding: 9px 13px;\n    font-family: var(--chativa-font-family, inherit);\n    font-size: 0.875rem;\n    line-height: 1.5;\n    white-space: pre-wrap;\n    word-break: break-word;\n    width: fit-content;\n    max-width: 100%;\n    box-sizing: border-box;\n  }\n`;\nvar he = Object.defineProperty, ue = Object.getOwnPropertyDescriptor, C = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? ue(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && he(t, s, i), i;\n};\nlet x = class extends g {\n  constructor() {\n    super(...arguments), this.messageData = {}, this.sender = \"bot\", this.messageId = \"\", this.timestamp = 0, this.hideAvatar = !1, this.status = \"sent\", this.debug = !1, this._instances = /* @__PURE__ */ new Map(), this._listeners = /* @__PURE__ */ new Map(), this._dispatchedEvents = /* @__PURE__ */ new Set(), this._sendEvent = (e, t, s) => {\n      const r = this._listeners.get(e);\n      r && r.forEach(({ targetId: i, cb: o }) => {\n        (i === void 0 || i === s) && o(t);\n      }), this.dispatchEvent(\n        new CustomEvent(\"genui-send-event\", {\n          detail: { msgId: this.messageId, eventType: e, payload: t, sourceId: s },\n          bubbles: !0,\n          composed: !0\n        })\n      );\n    }, this._listenEvent = (e, t, s) => {\n      this._listeners.has(e) || this._listeners.set(e, /* @__PURE__ */ new Set()), this._listeners.get(e).add({ targetId: s, cb: t });\n    };\n  }\n  // ── Chunk rendering ───────────────────────────────────────────────────────\n  _renderTextChunk(e) {\n    return a`<div class=\"chunk-enter chativa-bubble\">${e.content}</div>`;\n  }\n  _renderUIChunk(e) {\n    const t = m.resolve(e.component);\n    if (!t)\n      return this.debug ? a`\n        <div class=\"unknown-fallback chunk-enter\">\n          <strong>Unknown component:</strong> \"${e.component}\"\n        </div>\n      ` : a``;\n    if (t.schema) {\n      const r = t.schema.safeParse(e.props);\n      if (!r.success)\n        return console.error(`[GenUI] Prop validation failed for \"${e.component}\":`, r.error), a`\n          <div class=\"error-fallback chunk-enter\">\n            <strong>Invalid props</strong> for \"${e.component}\" — see console for details.\n          </div>\n        `;\n    }\n    let s = this._instances.get(e.id);\n    if (!s) {\n      s = new t.component(), this._instances.set(e.id, s);\n      const r = s;\n      r.sendEvent = (i, o) => this._sendEvent(i, o, e.id), r.listenEvent = (i, o) => this._listenEvent(i, o, e.id), r.tFn = (i, o) => le(i, { defaultValue: o ?? i }), r.onLangChange = (i) => (L.on(\"languageChanged\", i), () => L.off(\"languageChanged\", i));\n    }\n    return Object.assign(s, e.props), a`<div class=\"chunk-enter\">${s}</div>`;\n  }\n  // ── Dispatch pending event chunks ─────────────────────────────────────────\n  _dispatchEventChunks(e) {\n    for (const t of e) {\n      if (this._dispatchedEvents.has(t.id)) continue;\n      this._dispatchedEvents.add(t.id);\n      const s = this._listeners.get(t.name);\n      s && s.forEach(({ targetId: r, cb: i }) => {\n        (t.for === void 0 || r === void 0 || r === t.for) && i(t.payload);\n      });\n    }\n  }\n  // ── Render ────────────────────────────────────────────────────────────────\n  get _time() {\n    return this.timestamp ? new Date(this.timestamp).toLocaleTimeString([], {\n      hour: \"2-digit\",\n      minute: \"2-digit\"\n    }) : \"\";\n  }\n  _renderAvatar(e) {\n    return a`\n      <div class=\"avatar ${this.hideAvatar ? \"hidden\" : \"\"}\">\n        ${e ? a`<img src=${e} alt=\"bot avatar\" />` : a`\n              <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n                <rect x=\"5\" y=\"8\" width=\"14\" height=\"12\" rx=\"2.5\" />\n                <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                <circle cx=\"14.5\" cy=\"13\" r=\"1.5\" fill=\"white\" />\n                <path\n                  d=\"M9.5 17c.5.5 1.4.8 2.5.8s2-.3 2.5-.8\"\n                  stroke=\"white\"\n                  stroke-width=\"1.2\"\n                  stroke-linecap=\"round\"\n                  fill=\"none\"\n                />\n              </svg>\n            `}\n      </div>\n    `;\n  }\n  render() {\n    const e = this.messageData, t = e?.chunks ?? [], s = e?.streamingComplete ?? !1, r = t.filter((p) => p.type === \"event\");\n    this._dispatchEventChunks(r);\n    const i = t.filter(\n      (p) => p.type !== \"event\"\n    ), o = i[i.length - 1], n = !s && (!o || o.type !== \"ui\"), d = ce.getState().theme.avatar, h = d?.showBot !== !1;\n    return a`\n      <div class=\"message\" role=\"article\">\n        ${h ? this._renderAvatar(d?.bot) : c}\n        <div class=\"content\">\n          <div class=\"genui-wrapper\">\n            ${i.map((p) => p.type === \"text\" ? this._renderTextChunk(p) : p.type === \"ui\" ? this._renderUIChunk(p) : c)}\n            ${n ? a`\n              <div class=\"typing-dots\">\n                <span></span><span></span><span></span>\n              </div>\n            ` : c}\n          </div>\n          ${this._time ? a`<span class=\"time\" aria-hidden=\"true\">${this._time}</span>` : c}\n        </div>\n      </div>\n    `;\n  }\n};\nx.styles = [re, f`\n    :host {\n      display: block;\n      width: 100%;\n    }\n\n    /* Same row layout as the built-in message types so GenUI content\n       lines up with regular bot bubbles (avatar gutter + 82% cap). */\n    .message {\n      display: flex;\n      align-items: flex-end;\n      gap: 8px;\n      max-width: 82%;\n      margin-right: auto;\n      margin-bottom: 2px;\n    }\n\n    .avatar {\n      width: 28px;\n      height: 28px;\n      border-radius: 50%;\n      background: #ede9fe;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n      overflow: hidden;\n    }\n\n    .avatar.hidden { visibility: hidden; }\n\n    .avatar svg {\n      width: 16px;\n      height: 16px;\n      color: #7c3aed;\n    }\n\n    .avatar img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      border-radius: 50%;\n    }\n\n    .content {\n      display: flex;\n      flex-direction: column;\n      gap: 3px;\n      flex: 1;\n      min-width: 0;\n      /* Single inheritance point for the whole GenUI subtree — built-in and\n         custom components pick this up unless they override it themselves. */\n      font-family: var(--chativa-font-family, inherit);\n    }\n\n    /* Text chunks render as regular bot bubbles (shared chativa-bubble\n       look from ../styles/bubble) so mixed text + component streams read\n       like one conversation. */\n\n    .genui-wrapper {\n      display: flex;\n      flex-direction: column;\n      gap: 10px;\n      padding: 4px 0;\n      min-width: 0;\n    }\n\n    .chunk-enter {\n      animation: chunkFadeIn 0.35s ease-out both;\n      max-width: 100%;\n      min-width: 0;\n    }\n\n    /* Custom components can declare any width — never let them push\n       past the message column (widget viewport). */\n    .chunk-enter > * {\n      max-width: 100%;\n      box-sizing: border-box;\n    }\n\n    .time {\n      font-size: 0.6875rem;\n      color: #94a3b8;\n      padding: 0 2px;\n    }\n\n    @keyframes chunkFadeIn {\n      from { opacity: 0; transform: translateY(8px); }\n      to   { opacity: 1; transform: translateY(0); }\n    }\n\n    .typing-dots {\n      display: flex;\n      gap: 4px;\n      padding: 6px 2px;\n      align-items: center;\n    }\n\n    .typing-dots span {\n      width: 7px;\n      height: 7px;\n      border-radius: 50%;\n      background: #94a3b8;\n      animation: dotBounce 1.2s infinite ease-in-out;\n    }\n\n    .typing-dots span:nth-child(2) { animation-delay: 0.15s; }\n    .typing-dots span:nth-child(3) { animation-delay: 0.30s; }\n\n    @keyframes dotBounce {\n      0%, 80%, 100% { transform: translateY(0); opacity: 0.5; }\n      40%            { transform: translateY(-5px); opacity: 1; }\n    }\n\n    .error-fallback {\n      padding: 10px 14px;\n      border: 1px dashed #f87171;\n      border-radius: 8px;\n      color: #ef4444;\n      font-size: 0.8125rem;\n      font-family: inherit;\n    }\n\n    .unknown-fallback {\n      padding: 10px 14px;\n      border: 1px dashed #fb923c;\n      border-radius: 8px;\n      color: #ea580c;\n      font-size: 0.8125rem;\n      font-family: inherit;\n    }\n  `];\nC([\n  l({ type: Object })\n], x.prototype, \"messageData\", 2);\nC([\n  l({ type: String })\n], x.prototype, \"sender\", 2);\nC([\n  l({ type: String })\n], x.prototype, \"messageId\", 2);\nC([\n  l({ type: Number })\n], x.prototype, \"timestamp\", 2);\nC([\n  l({ type: Boolean })\n], x.prototype, \"hideAvatar\", 2);\nC([\n  l({ type: String })\n], x.prototype, \"status\", 2);\nC([\n  l({ type: Boolean })\n], x.prototype, \"debug\", 2);\nx = C([\n  b(\"genui-message\")\n], x);\ntry {\n  ne.register(\"genui\", x);\n} catch {\n}\nvar fe = Object.defineProperty, ge = Object.getOwnPropertyDescriptor, se = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? ge(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && fe(t, s, i), i;\n};\nlet V = class extends g {\n  constructor() {\n    super(...arguments), this.content = \"\";\n  }\n  render() {\n    return a`<div class=\"chativa-bubble\">${this.content}</div>`;\n  }\n};\nV.styles = [\n  re,\n  f`\n      :host {\n        display: block;\n      }\n    `\n];\nse([\n  l({ type: String })\n], V.prototype, \"content\", 2);\nV = se([\n  b(\"genui-text-block\")\n], V);\nvar be = Object.defineProperty, me = Object.getOwnPropertyDescriptor, R = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? me(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && be(t, s, i), i;\n};\nlet P = class extends g {\n  constructor() {\n    super(...arguments), this.title = \"\", this.description = \"\", this.image = \"\", this.actions = [];\n  }\n  _onAction(e) {\n    this.dispatchEvent(\n      new CustomEvent(\"chat-action\", {\n        detail: e,\n        bubbles: !0,\n        composed: !0\n      })\n    );\n  }\n  render() {\n    return a`\n      <div class=\"card\">\n        ${this.image ? a`<img class=\"card-image\" src=${this.image} alt=${this.title} />` : c}\n        <div class=\"card-body\">\n          ${this.title ? a`<h3 class=\"card-title\">${this.title}</h3>` : c}\n          ${this.description ? a`<p class=\"card-description\">${this.description}</p>` : c}\n          ${this.actions.length > 0 ? a`\n                <div class=\"card-actions\">\n                  ${this.actions.map(\n      (e) => a`\n                      <button\n                        class=\"action-btn\"\n                        type=\"button\"\n                        @click=${() => this._onAction(e.value)}\n                      >${e.label}</button>\n                    `\n    )}\n                </div>\n              ` : c}\n        </div>\n      </div>\n    `;\n  }\n};\nP.styles = f`\n    :host {\n      display: block;\n    }\n\n    .card {\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      overflow: hidden;\n      background: #ffffff;\n      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n      transition: box-shadow 0.2s ease;\n      max-width: 320px;\n      font-family: inherit;\n    }\n\n    .card:hover {\n      box-shadow: 0 6px 20px rgba(0, 0, 0, 0.1);\n    }\n\n    .card-image {\n      width: 100%;\n      height: 160px;\n      object-fit: cover;\n      display: block;\n    }\n\n    .card-body {\n      padding: 14px 16px;\n    }\n\n    .card-title {\n      margin: 0 0 6px;\n      font-size: 1rem;\n      font-weight: 600;\n      color: #0f172a;\n    }\n\n    .card-description {\n      margin: 0 0 12px;\n      font-size: 0.8125rem;\n      color: #64748b;\n      line-height: 1.5;\n    }\n\n    .card-actions {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 8px;\n    }\n\n    .action-btn {\n      padding: 7px 14px;\n      border: 1.5px solid var(--chativa-primary-color, #4f46e5);\n      border-radius: 999px;\n      background: transparent;\n      color: var(--chativa-primary-color, #4f46e5);\n      font-size: 0.8125rem;\n      font-weight: 500;\n      cursor: pointer;\n      font-family: inherit;\n      transition: background 0.15s, color 0.15s;\n    }\n\n    .action-btn:hover {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n    }\n  `;\nR([\n  l({ type: String })\n], P.prototype, \"title\", 2);\nR([\n  l({ type: String })\n], P.prototype, \"description\", 2);\nR([\n  l({ type: String })\n], P.prototype, \"image\", 2);\nR([\n  l({ type: Array })\n], P.prototype, \"actions\", 2);\nP = R([\n  b(\"genui-card\")\n], P);\nvar xe = Object.defineProperty, ve = Object.getOwnPropertyDescriptor, I = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? ve(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && xe(t, s, i), i;\n};\nlet v = class extends g {\n  constructor() {\n    super(...arguments), this.title = \"\", this.fields = [], this.buttonText = \"\", this._submitted = !1, this._processing = !1, this._successMessage = \"\", this._errorMessage = \"\";\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.listenEvent?.(\"form_success\", (e) => {\n      this._processing = !1, this._submitted = !0;\n      const t = e;\n      this._successMessage = t.message ?? this.t(\"genui.form.successDefault\", { defaultValue: \"Done!\" });\n    }), this.listenEvent?.(\"form_error\", (e) => {\n      this._processing = !1;\n      const t = e;\n      this._errorMessage = t.message ?? this.t(\"genui.form.errorDefault\", { defaultValue: \"Something went wrong.\" });\n    });\n  }\n  _onSubmit(e) {\n    if (e.preventDefault(), this._processing || this._submitted) return;\n    const t = e.target, s = {};\n    new FormData(t).forEach((r, i) => {\n      s[i] = String(r);\n    }), this._processing = !0, this._errorMessage = \"\", this.sendEvent?.(\"form_submit\", s);\n  }\n  render() {\n    const e = this.buttonText || this.t(\"genui.form.submit\", { defaultValue: \"Submit\" });\n    return this._submitted ? a`\n        <div class=\"success-card\">\n          <div class=\"success-icon\">✅</div>\n          <h3 class=\"success-title\">${this.t(\"genui.form.successTitle\", { defaultValue: \"Success\" })}</h3>\n          <p class=\"success-message\">${this._successMessage}</p>\n        </div>\n      ` : a`\n      <div class=\"form-card\">\n        ${this.title ? a`<h3 class=\"form-title\">${this.title}</h3>` : c}\n        <form @submit=${this._onSubmit}>\n          ${this.fields.map((t) => a`\n            <div class=\"field\">\n              <label for=\"genui-field-${t.name}\">${t.label}</label>\n              <input\n                id=\"genui-field-${t.name}\"\n                name=${t.name}\n                type=${t.type}\n                placeholder=${t.placeholder ?? \"\"}\n                .value=${t.value ?? \"\"}\n                ?required=${t.required !== !1}\n                ?disabled=${t.disabled === !0 || this._processing}\n              />\n            </div>\n          `)}\n          <button\n            class=\"submit-btn\"\n            type=\"submit\"\n            ?disabled=${this._processing}\n          >\n            ${this._processing ? this.t(\"genui.form.processing\", { defaultValue: \"Processing…\" }) : e}\n          </button>\n          ${this._errorMessage ? a`<div class=\"error-msg\">${this._errorMessage}</div>` : c}\n        </form>\n      </div>\n    `;\n  }\n};\nv.styles = f`\n    :host {\n      display: block;\n    }\n\n    .form-card {\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      padding: 20px;\n      max-width: 360px;\n      background: #ffffff;\n      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n      font-family: inherit;\n    }\n\n    .form-title {\n      margin: 0 0 16px;\n      font-size: 1rem;\n      font-weight: 600;\n      color: #0f172a;\n    }\n\n    .field {\n      margin-bottom: 14px;\n    }\n\n    label {\n      display: block;\n      font-size: 0.8125rem;\n      font-weight: 500;\n      color: #475569;\n      margin-bottom: 4px;\n    }\n\n    input {\n      width: 100%;\n      padding: 8px 12px;\n      border: 1.5px solid #e2e8f0;\n      border-radius: 8px;\n      font-size: 0.875rem;\n      box-sizing: border-box;\n      background: #f8fafc;\n      color: #0f172a;\n      font-family: inherit;\n      transition: border-color 0.15s;\n      outline: none;\n    }\n\n    input:focus {\n      border-color: var(--chativa-primary-color, #4f46e5);\n      background: #ffffff;\n    }\n\n    input:disabled {\n      opacity: 0.6;\n      cursor: not-allowed;\n    }\n\n    .submit-btn {\n      width: 100%;\n      padding: 10px;\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n      border: none;\n      border-radius: 8px;\n      font-size: 0.875rem;\n      font-weight: 500;\n      cursor: pointer;\n      font-family: inherit;\n      transition: opacity 0.15s;\n      margin-top: 4px;\n    }\n\n    .submit-btn:hover { opacity: 0.9; }\n    .submit-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n\n    /* Success state */\n    .success-card {\n      border: 1px solid #bbf7d0;\n      border-radius: 12px;\n      padding: 20px;\n      max-width: 360px;\n      background: #f0fdf4;\n      text-align: center;\n      font-family: inherit;\n    }\n\n    .success-icon {\n      font-size: 2rem;\n      margin-bottom: 8px;\n    }\n\n    .success-title {\n      margin: 0 0 6px;\n      font-size: 1rem;\n      font-weight: 600;\n      color: #15803d;\n    }\n\n    .success-message {\n      font-size: 0.8125rem;\n      color: #166534;\n    }\n\n    .error-msg {\n      margin-top: 10px;\n      padding: 8px 12px;\n      background: #fef2f2;\n      border: 1px solid #fecaca;\n      border-radius: 6px;\n      font-size: 0.8125rem;\n      color: #dc2626;\n    }\n  `;\nI([\n  l({ type: String })\n], v.prototype, \"title\", 2);\nI([\n  l({ type: Array })\n], v.prototype, \"fields\", 2);\nI([\n  l({ type: String })\n], v.prototype, \"buttonText\", 2);\nI([\n  $()\n], v.prototype, \"_submitted\", 2);\nI([\n  $()\n], v.prototype, \"_processing\", 2);\nI([\n  $()\n], v.prototype, \"_successMessage\", 2);\nI([\n  $()\n], v.prototype, \"_errorMessage\", 2);\nv = I([\n  b(\"genui-form\")\n], v);\nvar ye = Object.defineProperty, _e = Object.getOwnPropertyDescriptor, Y = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? _e(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && ye(t, s, i), i;\n};\nlet S = class extends g {\n  constructor() {\n    super(...arguments), this.variant = \"info\", this.title = \"\", this.message = \"\", this.icon = \"\";\n  }\n  _defaultIcon() {\n    return {\n      info: \"ℹ️\",\n      success: \"✅\",\n      warning: \"⚠️\",\n      error: \"❌\"\n    }[this.variant] ?? \"ℹ️\";\n  }\n  render() {\n    const e = this.icon || this._defaultIcon();\n    return a`\n      <div class=\"alert alert--${this.variant}\" role=\"alert\">\n        <span class=\"icon\" aria-hidden=\"true\">${e}</span>\n        <div class=\"body\">\n          ${this.title ? a`<p class=\"title\">${this.title}</p>` : c}\n          ${this.message ? a`<p class=\"message\">${this.message}</p>` : c}\n        </div>\n      </div>\n    `;\n  }\n};\nS.styles = f`\n    :host { display: block; }\n\n    .alert {\n      display: flex;\n      gap: 12px;\n      align-items: flex-start;\n      padding: 14px 16px;\n      border-radius: 10px;\n      border-left: 4px solid;\n      font-family: inherit;\n      max-width: 420px;\n    }\n\n    .icon {\n      font-size: 1.125rem;\n      line-height: 1;\n      flex-shrink: 0;\n      margin-top: 1px;\n    }\n\n    .body { flex: 1; min-width: 0; }\n\n    .title {\n      margin: 0 0 2px;\n      font-size: 0.875rem;\n      font-weight: 600;\n    }\n\n    .message {\n      margin: 0;\n      font-size: 0.8125rem;\n      line-height: 1.5;\n    }\n\n    /* Variants */\n    .alert--info    { background: #eff6ff; border-color: #3b82f6; color: #1e40af; }\n    .alert--success { background: #f0fdf4; border-color: #22c55e; color: #15803d; }\n    .alert--warning { background: #fffbeb; border-color: #f59e0b; color: #92400e; }\n    .alert--error   { background: #fef2f2; border-color: #ef4444; color: #991b1b; }\n  `;\nY([\n  l({ type: String })\n], S.prototype, \"variant\", 2);\nY([\n  l({ type: String })\n], S.prototype, \"title\", 2);\nY([\n  l({ type: String })\n], S.prototype, \"message\", 2);\nY([\n  l({ type: String })\n], S.prototype, \"icon\", 2);\nS = Y([\n  b(\"genui-alert\")\n], S);\nvar we = Object.defineProperty, $e = Object.getOwnPropertyDescriptor, q = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? $e(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && we(t, s, i), i;\n};\nlet j = class extends g {\n  constructor() {\n    super(...arguments), this.label = \"\", this.items = [], this._selectedValue = \"\";\n  }\n  _onSelect(e) {\n    this._selectedValue || (this._selectedValue = e.value, this.dispatchEvent(\n      new CustomEvent(\"chat-action\", {\n        detail: e.value,\n        bubbles: !0,\n        composed: !0\n      })\n    ));\n  }\n  render() {\n    const e = !!this._selectedValue;\n    return a`\n      ${this.label ? a`<p class=\"label\">${this.label}</p>` : c}\n      <div class=\"buttons\" role=\"list\">\n        ${this.items.map((t) => a`\n          <button\n            class=\"reply-btn ${this._selectedValue === t.value ? \"reply-btn--selected\" : \"\"}\"\n            type=\"button\"\n            role=\"listitem\"\n            ?disabled=${e}\n            @click=${() => this._onSelect(t)}\n          >${t.label}</button>\n        `)}\n      </div>\n    `;\n  }\n};\nj.styles = f`\n    :host { display: block; }\n\n    .label {\n      font-size: 0.8125rem;\n      color: #64748b;\n      margin: 0 0 8px;\n      font-family: inherit;\n    }\n\n    .buttons {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 8px;\n    }\n\n    .reply-btn {\n      padding: 7px 16px;\n      border: 1.5px solid var(--chativa-primary-color, #4f46e5);\n      border-radius: 999px;\n      background: transparent;\n      color: var(--chativa-primary-color, #4f46e5);\n      font-size: 0.875rem;\n      font-weight: 500;\n      cursor: pointer;\n      font-family: inherit;\n      transition: background 0.15s, color 0.15s, opacity 0.15s;\n      white-space: nowrap;\n    }\n\n    .reply-btn:hover:not(:disabled) {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n    }\n\n    .reply-btn:disabled {\n      opacity: 0.4;\n      cursor: not-allowed;\n    }\n\n    .reply-btn--selected {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n      opacity: 1 !important;\n    }\n  `;\nq([\n  l({ type: String })\n], j.prototype, \"label\", 2);\nq([\n  l({ type: Array })\n], j.prototype, \"items\", 2);\nq([\n  $()\n], j.prototype, \"_selectedValue\", 2);\nj = q([\n  b(\"genui-quick-replies\")\n], j);\nvar ke = Object.defineProperty, Pe = Object.getOwnPropertyDescriptor, H = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? Pe(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && ke(t, s, i), i;\n};\nlet E = class extends g {\n  constructor() {\n    super(...arguments), this.title = \"\", this.ordered = !1, this.items = [];\n  }\n  _renderItems() {\n    return this.items.map((e, t) => a`\n      <li>\n        ${this.ordered ? a`<span class=\"item-number\">${t + 1}.</span>` : e.icon ? a`<span class=\"item-icon\" aria-hidden=\"true\">${e.icon}</span>` : a`<span class=\"item-icon\" aria-hidden=\"true\">•</span>`}\n        <div class=\"item-body\">\n          <div class=\"item-text\">${e.text}</div>\n          ${e.secondary ? a`<div class=\"item-secondary\">${e.secondary}</div>` : c}\n        </div>\n      </li>\n    `);\n  }\n  render() {\n    return a`\n      <div class=\"list-container\">\n        ${this.title ? a`<h3 class=\"list-title\">${this.title}</h3>` : c}\n        ${this.ordered ? a`<ol>${this._renderItems()}</ol>` : a`<ul>${this._renderItems()}</ul>`}\n      </div>\n    `;\n  }\n};\nE.styles = f`\n    :host { display: block; }\n\n    .list-container {\n      background: #ffffff;\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      padding: 16px;\n      max-width: 400px;\n      font-family: inherit;\n    }\n\n    .list-title {\n      margin: 0 0 12px;\n      font-size: 0.9375rem;\n      font-weight: 600;\n      color: #0f172a;\n    }\n\n    ol, ul {\n      margin: 0;\n      padding: 0;\n      list-style: none;\n      display: flex;\n      flex-direction: column;\n      gap: 6px;\n    }\n\n    li {\n      display: flex;\n      align-items: flex-start;\n      gap: 10px;\n      padding: 8px 10px;\n      background: #f8fafc;\n      border-radius: 8px;\n    }\n\n    .item-icon {\n      font-size: 1rem;\n      line-height: 1.4;\n      flex-shrink: 0;\n      min-width: 20px;\n      text-align: center;\n    }\n\n    .item-number {\n      font-size: 0.8125rem;\n      font-weight: 600;\n      color: var(--chativa-primary-color, #4f46e5);\n      flex-shrink: 0;\n      min-width: 20px;\n      line-height: 1.4;\n    }\n\n    .item-body { flex: 1; min-width: 0; }\n\n    .item-text {\n      font-size: 0.875rem;\n      color: #0f172a;\n      line-height: 1.4;\n    }\n\n    .item-secondary {\n      font-size: 0.75rem;\n      color: #94a3b8;\n      margin-top: 2px;\n    }\n  `;\nH([\n  l({ type: String })\n], E.prototype, \"title\", 2);\nH([\n  l({ type: Boolean })\n], E.prototype, \"ordered\", 2);\nH([\n  l({ type: Array })\n], E.prototype, \"items\", 2);\nE = H([\n  b(\"genui-list\")\n], E);\nvar Se = Object.defineProperty, ze = Object.getOwnPropertyDescriptor, J = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? ze(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && Se(t, s, i), i;\n};\nlet A = class extends g {\n  constructor() {\n    super(...arguments), this.title = \"\", this.columns = [], this.rows = [];\n  }\n  render() {\n    const e = this.columns.length === 0 && this.rows.every((t) => t.length === 2);\n    return a`\n      <div class=\"table-container\">\n        ${this.title ? a`<h3 class=\"table-title\">${this.title}</h3>` : c}\n        <div class=\"scroll-wrapper\">\n        <table>\n          ${this.columns.length > 0 ? a`\n            <thead>\n              <tr>\n                ${this.columns.map((t) => a`<th scope=\"col\">${t}</th>`)}\n              </tr>\n            </thead>\n          ` : c}\n          <tbody>\n            ${this.rows.map((t) => a`\n              <tr>\n                ${t.map((s, r) => a`\n                  <td class=${e && r === 0 ? \"kv-key\" : \"\"}>${s}</td>\n                `)}\n              </tr>\n            `)}\n          </tbody>\n        </table>\n        </div>\n      </div>\n    `;\n  }\n};\nA.styles = f`\n    :host { display: block; }\n\n    .table-container {\n      background: #ffffff;\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      overflow: hidden;\n      max-width: 480px;\n      font-family: inherit;\n    }\n\n    .scroll-wrapper {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n\n    .table-title {\n      padding: 14px 16px 0;\n      margin: 0 0 10px;\n      font-size: 0.9375rem;\n      font-weight: 600;\n      color: #0f172a;\n    }\n\n    table {\n      width: max-content;\n      min-width: 100%;\n      border-collapse: collapse;\n      font-size: 0.8125rem;\n    }\n\n    thead th {\n      background: #f1f5f9;\n      padding: 9px 14px;\n      text-align: left;\n      font-weight: 600;\n      color: #475569;\n      border-bottom: 1px solid #e2e8f0;\n    }\n\n    tbody tr:nth-child(even) td {\n      background: #f8fafc;\n    }\n\n    tbody td {\n      padding: 9px 14px;\n      color: #0f172a;\n      border-bottom: 1px solid #f1f5f9;\n      vertical-align: top;\n    }\n\n    tbody tr:last-child td { border-bottom: none; }\n\n    /* Key-value mode (2 columns, no header) */\n    .kv-key {\n      font-weight: 500;\n      color: #64748b;\n      width: 40%;\n    }\n  `;\nJ([\n  l({ type: String })\n], A.prototype, \"title\", 2);\nJ([\n  l({ type: Array })\n], A.prototype, \"columns\", 2);\nJ([\n  l({ type: Array })\n], A.prototype, \"rows\", 2);\nA = J([\n  b(\"genui-table\")\n], A);\nvar Oe = Object.defineProperty, Ce = Object.getOwnPropertyDescriptor, D = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? Ce(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && Oe(t, s, i), i;\n};\nlet y = class extends g {\n  constructor() {\n    super(...arguments), this.title = \"\", this.maxStars = 5, this.readonly = !1, this.value = 0, this._selected = 0, this._hovered = 0, this._submitted = !1;\n  }\n  connectedCallback() {\n    super.connectedCallback(), this.value && (this._selected = this.value);\n  }\n  _onStarClick(e) {\n    this.readonly || this._submitted || (this._selected = e);\n  }\n  _onSubmit() {\n    !this._selected || this._submitted || (this._submitted = !0, this.sendEvent?.(\"rating_submit\", { rating: this._selected }));\n  }\n  render() {\n    const e = Array.from({ length: this.maxStars }, (r, i) => i + 1), t = this._hovered || this._selected, s = this.readonly || this._submitted;\n    return a`\n      <div class=\"rating-card\">\n        ${this.title ? a`<h3 class=\"rating-title\">${this.title}</h3>` : c}\n        <div class=\"stars\" role=\"group\" aria-label=${this.t(\"genui.rating.ariaLabel\", { defaultValue: \"Star rating\" })}>\n          ${e.map((r) => a`\n            <button\n              class=\"star ${r <= t ? \"star--active\" : \"\"} ${r === this._hovered && !s ? \"star--hovered\" : \"\"}\"\n              type=\"button\"\n              aria-label=${this.t(\"genui.rating.starLabel\", { count: r, defaultValue: \"{{count}} star\" })}\n              ?disabled=${s}\n              @click=${() => this._onStarClick(r)}\n              @mouseenter=${() => {\n      s || (this._hovered = r);\n    }}\n              @mouseleave=${() => {\n      this._hovered = 0;\n    }}\n            >⭐</button>\n          `)}\n        </div>\n        ${this._submitted ? a`<p class=\"thank-you\">${this.t(\"genui.rating.thankYou\", { defaultValue: \"Thank you for your feedback!\" })}</p>` : s ? c : a`\n                <button\n                  class=\"submit-btn\"\n                  type=\"button\"\n                  ?disabled=${!this._selected}\n                  @click=${this._onSubmit}\n                >${this.t(\"genui.rating.submit\", { defaultValue: \"Submit\" })}</button>\n              `}\n      </div>\n    `;\n  }\n};\ny.styles = f`\n    :host { display: block; }\n\n    .rating-card {\n      background: #ffffff;\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      padding: 18px 20px;\n      max-width: 320px;\n      text-align: center;\n      font-family: inherit;\n      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n    }\n\n    .rating-title {\n      margin: 0 0 14px;\n      font-size: 0.9375rem;\n      font-weight: 600;\n      color: #0f172a;\n    }\n\n    .stars {\n      display: flex;\n      justify-content: center;\n      flex-wrap: wrap;\n      gap: 4px;\n      /* Breathing room so the hover scale-up never clips or spills\n         past the card edge. */\n      padding: 4px 6px;\n      margin-bottom: 10px;\n    }\n\n    .star {\n      font-size: 1.75rem;\n      cursor: pointer;\n      transition: transform 0.1s ease, opacity 0.1s;\n      line-height: 1.2;\n      border: none;\n      background: none;\n      padding: 2px 3px;\n      opacity: 0.3;\n      user-select: none;\n    }\n\n    .star:focus-visible {\n      outline: 2px solid var(--chativa-primary-color, #4f46e5);\n      border-radius: 4px;\n    }\n\n    .star--active { opacity: 1; }\n    .star--hovered { transform: scale(1.2); opacity: 1; }\n\n    .star[disabled] { cursor: default; }\n\n    .submit-btn {\n      padding: 8px 24px;\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n      border: none;\n      border-radius: 8px;\n      font-size: 0.875rem;\n      font-weight: 500;\n      cursor: pointer;\n      font-family: inherit;\n      transition: opacity 0.15s;\n    }\n\n    .submit-btn:hover { opacity: 0.88; }\n    .submit-btn:disabled { opacity: 0.4; cursor: not-allowed; }\n\n    .thank-you {\n      font-size: 0.875rem;\n      color: #16a34a;\n      font-weight: 500;\n    }\n  `;\nD([\n  l({ type: String })\n], y.prototype, \"title\", 2);\nD([\n  l({ type: Number })\n], y.prototype, \"maxStars\", 2);\nD([\n  l({ type: Boolean })\n], y.prototype, \"readonly\", 2);\nD([\n  l({ type: Number })\n], y.prototype, \"value\", 2);\nD([\n  $()\n], y.prototype, \"_selected\", 2);\nD([\n  $()\n], y.prototype, \"_hovered\", 2);\nD([\n  $()\n], y.prototype, \"_submitted\", 2);\ny = D([\n  b(\"genui-rating\")\n], y);\nvar Ie = Object.defineProperty, De = Object.getOwnPropertyDescriptor, K = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? De(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && Ie(t, s, i), i;\n};\nlet z = class extends g {\n  constructor() {\n    super(...arguments), this.label = \"\", this.value = 0, this.caption = \"\", this.variant = \"default\";\n  }\n  render() {\n    const e = Math.min(100, Math.max(0, this.value));\n    return a`\n      <div class=\"progress-container\">\n        ${this.label || e !== void 0 ? a`\n          <div class=\"progress-header\">\n            ${this.label ? a`<span class=\"progress-label\">${this.label}</span>` : c}\n            <span class=\"progress-value\">${e}%</span>\n          </div>\n        ` : c}\n        <div class=\"track\" role=\"progressbar\" aria-valuenow=${e} aria-valuemin=\"0\" aria-valuemax=\"100\">\n          <div class=\"bar bar--${this.variant}\" style=\"width: ${e}%\"></div>\n        </div>\n        ${this.caption ? a`<p class=\"progress-caption\">${this.caption}</p>` : c}\n      </div>\n    `;\n  }\n};\nz.styles = f`\n    :host { display: block; }\n\n    .progress-container {\n      background: #ffffff;\n      border: 1px solid #e2e8f0;\n      border-radius: 10px;\n      padding: 14px 16px;\n      max-width: 400px;\n      font-family: inherit;\n    }\n\n    .progress-header {\n      display: flex;\n      justify-content: space-between;\n      align-items: baseline;\n      margin-bottom: 8px;\n    }\n\n    .progress-label {\n      font-size: 0.875rem;\n      font-weight: 500;\n      color: #0f172a;\n    }\n\n    .progress-value {\n      font-size: 0.8125rem;\n      font-weight: 600;\n      color: #64748b;\n    }\n\n    .track {\n      width: 100%;\n      height: 8px;\n      background: #e2e8f0;\n      border-radius: 999px;\n      overflow: hidden;\n    }\n\n    .bar {\n      height: 100%;\n      border-radius: 999px;\n      transition: width 0.4s ease;\n    }\n\n    .bar--default { background: var(--chativa-primary-color, #4f46e5); }\n    .bar--success  { background: #22c55e; }\n    .bar--warning  { background: #f59e0b; }\n    .bar--error    { background: #ef4444; }\n\n    .progress-caption {\n      margin-top: 6px;\n      font-size: 0.75rem;\n      color: #94a3b8;\n    }\n  `;\nK([\n  l({ type: String })\n], z.prototype, \"label\", 2);\nK([\n  l({ type: Number })\n], z.prototype, \"value\", 2);\nK([\n  l({ type: String })\n], z.prototype, \"caption\", 2);\nK([\n  l({ type: String })\n], z.prototype, \"variant\", 2);\nz = K([\n  b(\"genui-progress\")\n], z);\nvar je = Object.defineProperty, Ee = Object.getOwnPropertyDescriptor, T = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? Ee(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && je(t, s, i), i;\n};\nlet w = class extends g {\n  constructor() {\n    super(...arguments), this.disabled = !1;\n  }\n  _onChange(e) {\n    const t = e.target.value;\n    this.value = t, this.sendEvent?.(\"date_select\", { date: t });\n  }\n  render() {\n    const e = this.label ?? this.t(\"genui.datePicker.label\");\n    return a`\n      <div class=\"date-card\">\n        <label for=\"genui-date-input\">${e}</label>\n        <input\n          id=\"genui-date-input\"\n          type=\"date\"\n          .value=${this.value ?? \"\"}\n          ?disabled=${this.disabled}\n          min=${this.min ?? c}\n          max=${this.max ?? c}\n          @change=${this._onChange}\n        />\n      </div>\n    `;\n  }\n};\nw.styles = f`\n    :host {\n      display: block;\n    }\n\n    .date-card {\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      padding: 16px 20px;\n      max-width: 320px;\n      background: #ffffff;\n      font-family: inherit;\n    }\n\n    label {\n      display: block;\n      font-size: 0.8125rem;\n      font-weight: 500;\n      color: #475569;\n      margin-bottom: 6px;\n    }\n\n    input[type=\"date\"] {\n      width: 100%;\n      padding: 8px 12px;\n      border: 1.5px solid #e2e8f0;\n      border-radius: 8px;\n      font-size: 0.875rem;\n      box-sizing: border-box;\n      background: #f8fafc;\n      color: #0f172a;\n      font-family: inherit;\n      transition: border-color 0.15s;\n      outline: none;\n    }\n\n    input[type=\"date\"]:focus {\n      border-color: var(--chativa-primary-color, #4f46e5);\n      background: #ffffff;\n    }\n\n    input[type=\"date\"]:disabled {\n      opacity: 0.6;\n      cursor: not-allowed;\n    }\n  `;\nT([\n  l({ type: String })\n], w.prototype, \"label\", 2);\nT([\n  l({ type: String })\n], w.prototype, \"min\", 2);\nT([\n  l({ type: String })\n], w.prototype, \"max\", 2);\nT([\n  l({ type: String })\n], w.prototype, \"value\", 2);\nT([\n  l({ type: Boolean })\n], w.prototype, \"disabled\", 2);\nw = T([\n  b(\"genui-date-picker\")\n], w);\nvar Ae = Object.defineProperty, Me = Object.getOwnPropertyDescriptor, N = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? Me(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && Ae(t, s, i), i;\n};\nconst ie = [\"#4f46e5\", \"#7c3aed\", \"#06b6d4\", \"#10b981\", \"#f59e0b\", \"#ef4444\"];\nlet O = class extends g {\n  constructor() {\n    super(...arguments), this.type = \"bar\", this.title = \"\";\n  }\n  _color(e, t) {\n    return t ?? ie[e % ie.length];\n  }\n  // ── Bar chart ──────────────────────────────────────────────────────────────\n  _renderBar() {\n    const e = this.datasets ?? [], t = this.labels ?? [], s = e.flatMap((o) => o.data), r = Math.max(...s, 1), i = Math.max(...e.map((o) => o.data.length), t.length, 1);\n    return a`\n      <div class=\"bar-chart\" role=\"img\" aria-label=${this.title ?? \"Bar chart\"}>\n        ${Array.from({ length: i }, (o, n) => a`\n          <div class=\"bar-group\">\n            <div class=\"bars\">\n              ${e.map((d, h) => {\n      const p = d.data[n] ?? 0, _ = Math.max(Math.round(p / r * 100), p > 0 ? 2 : 0);\n      return a`\n                  <div\n                    class=\"bar\"\n                    style=\"height:${_}%;background:${this._color(h, d.color)};\"\n                    title=\"${d.label ? d.label + \": \" : \"\"}${p}\"\n                  ></div>\n                `;\n    })}\n            </div>\n            ${t[n] ? a`<span class=\"bar-label\">${t[n]}</span>` : c}\n          </div>\n        `)}\n      </div>\n      ${this._renderLegend()}\n    `;\n  }\n  // ── Line chart ─────────────────────────────────────────────────────────────\n  _renderLine() {\n    const e = this.datasets ?? [];\n    if (e.length === 0) return c;\n    const t = 380, s = 150, r = 28, i = 16, o = e.flatMap((u) => u.data), n = Math.min(...o), d = Math.max(...o, n + 1), h = Math.max(...e.map((u) => u.data.length), 2), p = t - r * 2, _ = s - i * 2, k = (u) => r + u / (h - 1) * p, F = (u) => i + (d - u) / (d - n) * _;\n    return a`\n      <svg viewBox=\"0 0 ${t} ${s}\" role=\"img\" aria-label=${this.title ?? \"Line chart\"}>\n        ${e.map((u, X) => {\n      const ee = this._color(X, u.color), ae = u.data.map((Q, Z) => `${k(Z)},${F(Q)}`).join(\" \");\n      return B`\n            <polyline\n              points=\"${ae}\"\n              fill=\"none\"\n              stroke=\"${ee}\"\n              stroke-width=\"2\"\n              stroke-linejoin=\"round\"\n              stroke-linecap=\"round\"\n            />\n            ${u.data.map((Q, Z) => B`\n              <circle cx=\"${k(Z)}\" cy=\"${F(Q)}\" r=\"3.5\" fill=\"${ee}\" />\n            `)}\n          `;\n    })}\n        ${(this.labels ?? []).map((u, X) => B`\n          <text\n            x=\"${k(X)}\"\n            y=\"${s - 2}\"\n            text-anchor=\"middle\"\n            font-size=\"9\"\n            fill=\"#94a3b8\"\n          >${u}</text>\n        `)}\n      </svg>\n      ${this._renderLegend()}\n    `;\n  }\n  // ── Pie chart ──────────────────────────────────────────────────────────────\n  _renderPie() {\n    const e = this.datasets ?? [];\n    if (e.length === 0) return c;\n    const t = e.map((h) => h.data[0] ?? 0), s = t.reduce((h, p) => h + p, 0) || 1, r = 50, i = 65, o = 65, n = 2 * Math.PI * r;\n    let d = 0;\n    return a`\n      <svg viewBox=\"0 0 200 130\" role=\"img\" aria-label=${this.title ?? \"Pie chart\"}>\n        ${e.map((h, p) => {\n      const _ = t[p] / s, k = `${_ * n} ${n}`, F = d * 360 - 90;\n      d += _;\n      const u = this._color(p, h.color);\n      return B`\n            <circle\n              cx=\"${i}\"\n              cy=\"${o}\"\n              r=\"${r}\"\n              fill=\"none\"\n              stroke=\"${u}\"\n              stroke-width=\"22\"\n              stroke-dasharray=\"${k}\"\n              transform=\"rotate(${F} ${i} ${o})\"\n            />\n          `;\n    })}\n        ${e.map((h, p) => {\n      const _ = this._color(p, h.color), k = 16 + p * 18;\n      return B`\n            <circle cx=\"142\" cy=\"${k}\" r=\"5\" fill=\"${_}\" />\n            <text x=\"152\" y=\"${k + 4}\" font-size=\"10\" fill=\"#475569\">${h.label ?? \"\"}</text>\n          `;\n    })}\n      </svg>\n    `;\n  }\n  // ── Legend ─────────────────────────────────────────────────────────────────\n  _renderLegend() {\n    const e = this.datasets ?? [];\n    return e.every((t) => !t.label) ? c : a`\n      <div class=\"legend\">\n        ${e.map((t, s) => a`\n          <span class=\"legend-item\">\n            <span class=\"legend-dot\" style=\"background:${this._color(s, t.color)};\"></span>\n            ${t.label}\n          </span>\n        `)}\n      </div>\n    `;\n  }\n  // ── Render ─────────────────────────────────────────────────────────────────\n  render() {\n    return a`\n      <div class=\"chart-container\">\n        ${this.title ? a`<h3 class=\"chart-title\">${this.title}</h3>` : c}\n        ${this.type === \"line\" ? this._renderLine() : this.type === \"pie\" ? this._renderPie() : this._renderBar()}\n      </div>\n    `;\n  }\n};\nO.styles = f`\n    :host {\n      display: block;\n    }\n\n    .chart-container {\n      background: #ffffff;\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      padding: 16px;\n      max-width: 420px;\n      font-family: inherit;\n    }\n\n    .chart-title {\n      margin: 0 0 14px;\n      font-size: 0.9375rem;\n      font-weight: 600;\n      color: #0f172a;\n    }\n\n    /* Bar chart */\n    .bar-chart {\n      display: flex;\n      align-items: flex-end;\n      gap: 6px;\n      height: 160px;\n    }\n\n    .bar-group {\n      flex: 1;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      gap: 4px;\n      height: 100%;\n      justify-content: flex-end;\n      min-width: 0;\n    }\n\n    .bars {\n      display: flex;\n      align-items: flex-end;\n      gap: 2px;\n      width: 100%;\n      height: calc(100% - 18px);\n    }\n\n    .bar {\n      flex: 1;\n      border-radius: 3px 3px 0 0;\n      min-height: 2px;\n      transition: opacity 0.15s;\n    }\n\n    .bar:hover {\n      opacity: 0.8;\n    }\n\n    .bar-label {\n      font-size: 0.625rem;\n      color: #64748b;\n      text-align: center;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      width: 100%;\n      flex-shrink: 0;\n    }\n\n    /* Legend */\n    .legend {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 6px 14px;\n      margin-top: 12px;\n    }\n\n    .legend-item {\n      display: flex;\n      align-items: center;\n      gap: 5px;\n      font-size: 0.75rem;\n      color: #475569;\n    }\n\n    .legend-dot {\n      width: 8px;\n      height: 8px;\n      border-radius: 50%;\n      flex-shrink: 0;\n    }\n\n    /* SVG charts */\n    svg {\n      width: 100%;\n      display: block;\n      overflow: visible;\n    }\n  `;\nN([\n  l({ type: String })\n], O.prototype, \"type\", 2);\nN([\n  l({ type: String })\n], O.prototype, \"title\", 2);\nN([\n  l({ type: Array })\n], O.prototype, \"labels\", 2);\nN([\n  l({ type: Array })\n], O.prototype, \"datasets\", 2);\nO = N([\n  b(\"genui-chart\")\n], O);\nvar Ge = Object.defineProperty, Le = Object.getOwnPropertyDescriptor, oe = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? Le(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && Ge(t, s, i), i;\n};\nlet U = class extends g {\n  _renderIcon(e) {\n    return e === \"done\" ? a`\n        <div class=\"step-icon step-icon--done\">\n          <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\n            <path d=\"M2 6l3 3 5-5\" stroke=\"white\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n          </svg>\n        </div>\n      ` : e === \"active\" ? a`\n        <div class=\"step-icon step-icon--active\">\n          <div style=\"width:8px;height:8px;background:white;border-radius:50%;\"></div>\n        </div>\n      ` : a`<div class=\"step-icon step-icon--pending\"></div>`;\n  }\n  render() {\n    const e = this.steps ?? [];\n    return e.length === 0 ? c : a`\n      <div class=\"steps-container\">\n        ${e.map((t) => a`\n          <div class=\"step\">\n            <div class=\"step-left ${t.status}\">\n              ${this._renderIcon(t.status)}\n            </div>\n            <div class=\"step-content\">\n              <div class=\"step-label ${t.status === \"pending\" ? \"step-label--pending\" : \"\"}\">\n                ${t.label}\n              </div>\n              ${t.description ? a`<div class=\"step-description\">${t.description}</div>` : c}\n            </div>\n          </div>\n        `)}\n      </div>\n    `;\n  }\n};\nU.styles = f`\n    :host {\n      display: block;\n    }\n\n    .steps-container {\n      background: #ffffff;\n      border: 1px solid #e2e8f0;\n      border-radius: 12px;\n      padding: 16px 20px;\n      max-width: 380px;\n      font-family: inherit;\n    }\n\n    .step {\n      display: flex;\n      gap: 12px;\n      position: relative;\n    }\n\n    /* Vertical connector line between steps */\n    .step:not(:last-child) .step-left::after {\n      content: \"\";\n      position: absolute;\n      left: 11px;\n      top: 28px;\n      bottom: -6px;\n      width: 2px;\n      background: #e2e8f0;\n    }\n\n    .step:not(:last-child) .step-left.done::after {\n      background: var(--chativa-primary-color, #4f46e5);\n    }\n\n    .step-left {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      position: relative;\n      flex-shrink: 0;\n    }\n\n    .step-icon {\n      width: 24px;\n      height: 24px;\n      border-radius: 50%;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n      z-index: 1;\n    }\n\n    .step-icon--done {\n      background: var(--chativa-primary-color, #4f46e5);\n      color: #ffffff;\n    }\n\n    .step-icon--active {\n      background: var(--chativa-primary-color, #4f46e5);\n      animation: step-pulse 1.4s ease-in-out infinite;\n    }\n\n    .step-icon--pending {\n      background: #ffffff;\n      border: 2px solid #e2e8f0;\n    }\n\n    @keyframes step-pulse {\n      0%, 100% { box-shadow: 0 0 0 0 rgba(79, 70, 229, 0.4); }\n      50%       { box-shadow: 0 0 0 6px rgba(79, 70, 229, 0); }\n    }\n\n    .step-content {\n      padding-bottom: 16px;\n      flex: 1;\n      min-width: 0;\n    }\n\n    .step:last-child .step-content {\n      padding-bottom: 0;\n    }\n\n    .step-label {\n      font-size: 0.875rem;\n      font-weight: 600;\n      color: #0f172a;\n      line-height: 1.5;\n    }\n\n    .step-label--pending {\n      color: #94a3b8;\n      font-weight: 400;\n    }\n\n    .step-description {\n      font-size: 0.8125rem;\n      color: #64748b;\n      margin-top: 2px;\n      line-height: 1.4;\n    }\n  `;\noe([\n  l({ type: Array })\n], U.prototype, \"steps\", 2);\nU = oe([\n  b(\"genui-steps\")\n], U);\nvar Te = Object.defineProperty, Be = Object.getOwnPropertyDescriptor, W = (e, t, s, r) => {\n  for (var i = r > 1 ? void 0 : r ? Be(t, s) : t, o = e.length - 1, n; o >= 0; o--)\n    (n = e[o]) && (i = (r ? n(t, s, i) : n(i)) || i);\n  return r && i && Te(t, s, i), i;\n};\nlet M = class extends g {\n  constructor() {\n    super(...arguments), this._lightboxIndex = null;\n  }\n  _open(e) {\n    this._lightboxIndex = e;\n  }\n  _close() {\n    this._lightboxIndex = null;\n  }\n  _prev() {\n    if (this._lightboxIndex === null) return;\n    const e = this.images?.length ?? 0;\n    this._lightboxIndex = (this._lightboxIndex - 1 + e) % e;\n  }\n  _next() {\n    if (this._lightboxIndex === null) return;\n    const e = this.images?.length ?? 0;\n    this._lightboxIndex = (this._lightboxIndex + 1) % e;\n  }\n  _onKeydown(e) {\n    this._lightboxIndex !== null && (e.key === \"Escape\" ? this._close() : e.key === \"ArrowLeft\" ? this._prev() : e.key === \"ArrowRight\" && this._next());\n  }\n  connectedCallback() {\n    super.connectedCallback(), this._boundKeydown = this._onKeydown.bind(this), window.addEventListener(\"keydown\", this._boundKeydown);\n  }\n  disconnectedCallback() {\n    super.disconnectedCallback(), this._boundKeydown && window.removeEventListener(\"keydown\", this._boundKeydown);\n  }\n  render() {\n    const e = this.images ?? [], t = this.columns ?? 2;\n    return a`\n      <div class=\"gallery\" style=\"grid-template-columns: repeat(${t}, 1fr);\">\n        ${e.map((s, r) => a`\n          <div class=\"thumb-wrap\">\n            <div\n              class=\"thumb\"\n              @click=${() => this._open(r)}\n              role=\"button\"\n              tabindex=\"0\"\n              aria-label=\"${s.alt ?? s.caption ?? `Image ${r + 1}`}\"\n              @keydown=${(i) => {\n      (i.key === \"Enter\" || i.key === \" \") && this._open(r);\n    }}\n            >\n              <img src=\"${s.src}\" alt=\"${s.alt ?? \"\"}\" loading=\"lazy\" />\n            </div>\n            ${s.caption ? a`<span class=\"caption\">${s.caption}</span>` : c}\n          </div>\n        `)}\n      </div>\n\n      ${this._lightboxIndex !== null ? this._renderLightbox(e) : c}\n    `;\n  }\n  _renderLightbox(e) {\n    const t = this._lightboxIndex, s = e[t];\n    return s ? a`\n      <div\n        class=\"lightbox\"\n        role=\"dialog\"\n        aria-modal=\"true\"\n        aria-label=\"Image lightbox\"\n        @click=${(r) => {\n      r.target === r.currentTarget && this._close();\n    }}\n      >\n        <button class=\"lightbox-close\" aria-label=\"Close lightbox\" @click=${this._close}>×</button>\n        ${e.length > 1 ? a`\n          <button class=\"lightbox-nav prev\" aria-label=\"Previous image\" @click=${this._prev}>‹</button>\n          <button class=\"lightbox-nav next\" aria-label=\"Next image\" @click=${this._next}>›</button>\n        ` : c}\n        <img class=\"lightbox-img\" src=\"${s.src}\" alt=\"${s.alt ?? \"\"}\" />\n        ${s.caption ? a`<div class=\"lightbox-caption\">${s.caption}</div>` : c}\n      </div>\n    ` : c;\n  }\n};\nM.styles = f`\n    :host {\n      display: block;\n    }\n\n    .gallery {\n      display: grid;\n      gap: 6px;\n    }\n\n    .thumb-wrap {\n      display: flex;\n      flex-direction: column;\n      gap: 3px;\n    }\n\n    .thumb {\n      position: relative;\n      aspect-ratio: 1;\n      overflow: hidden;\n      border-radius: 8px;\n      cursor: pointer;\n      background: #e2e8f0;\n    }\n\n    .thumb img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      display: block;\n      transition: transform 0.2s;\n    }\n\n    .thumb:hover img {\n      transform: scale(1.05);\n    }\n\n    .caption {\n      font-size: 0.68rem;\n      color: #64748b;\n      text-align: center;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    /* Lightbox */\n    .lightbox {\n      position: fixed;\n      inset: 0;\n      background: rgba(0, 0, 0, 0.88);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      z-index: 9999;\n    }\n\n    .lightbox-img {\n      max-width: 90vw;\n      max-height: 85vh;\n      border-radius: 8px;\n      object-fit: contain;\n      user-select: none;\n    }\n\n    .lightbox-close {\n      position: absolute;\n      top: 16px;\n      right: 16px;\n      background: none;\n      border: none;\n      color: white;\n      font-size: 2rem;\n      line-height: 1;\n      cursor: pointer;\n      padding: 4px 8px;\n      border-radius: 6px;\n      transition: background 0.15s;\n    }\n\n    .lightbox-close:hover {\n      background: rgba(255, 255, 255, 0.15);\n    }\n\n    .lightbox-nav {\n      position: absolute;\n      top: 50%;\n      transform: translateY(-50%);\n      background: rgba(255, 255, 255, 0.15);\n      border: none;\n      color: white;\n      font-size: 1.25rem;\n      padding: 10px 14px;\n      cursor: pointer;\n      border-radius: 50%;\n      transition: background 0.15s;\n      line-height: 1;\n    }\n\n    .lightbox-nav:hover {\n      background: rgba(255, 255, 255, 0.3);\n    }\n\n    .lightbox-nav.prev {\n      left: 16px;\n    }\n\n    .lightbox-nav.next {\n      right: 16px;\n    }\n\n    .lightbox-caption {\n      position: absolute;\n      bottom: 16px;\n      left: 0;\n      right: 0;\n      text-align: center;\n      color: rgba(255, 255, 255, 0.8);\n      font-size: 0.875rem;\n      pointer-events: none;\n    }\n  `;\nW([\n  l({ type: Array })\n], M.prototype, \"images\", 2);\nW([\n  l({ type: Number })\n], M.prototype, \"columns\", 2);\nW([\n  $()\n], M.prototype, \"_lightboxIndex\", 2);\nM = W([\n  b(\"genui-image-gallery\")\n], M);\nasync function* Ye(e) {\n  if (!e.body) throw new Error(\"[GenUI] Response body is empty\");\n  const t = e.body.getReader(), s = new TextDecoder();\n  let r = \"\";\n  try {\n    for (; ; ) {\n      const { done: o, value: n } = await t.read();\n      if (o) break;\n      r += s.decode(n, { stream: !0 });\n      const d = r.split(`\n`);\n      r = d.pop() ?? \"\";\n      for (const h of d) {\n        const p = h.trim();\n        if (p)\n          try {\n            yield JSON.parse(p);\n          } catch (_) {\n            console.error(\"[GenUI] Failed to parse chunk:\", p, _);\n          }\n      }\n    }\n    const i = r.trim();\n    if (i)\n      try {\n        yield JSON.parse(i);\n      } catch (o) {\n        console.error(\"[GenUI] Failed to parse final chunk:\", i, o);\n      }\n  } finally {\n    t.releaseLock();\n  }\n}\nm.register(\"genui-text\", V);\nm.register(\"genui-card\", P);\nm.register(\"genui-form\", v);\nm.register(\"genui-alert\", S);\nm.register(\"genui-quick-replies\", j);\nm.register(\"genui-list\", E);\nm.register(\"genui-table\", A);\nm.register(\"genui-rating\", y);\nm.register(\"genui-progress\", z);\nm.register(\"genui-date-picker\", w);\nm.register(\"genui-chart\", O);\nm.register(\"genui-steps\", U);\nm.register(\"genui-image-gallery\", M);\nexport {\n  S as GenUIAlert,\n  P as GenUICard,\n  O as GenUIChart,\n  w as GenUIDatePicker,\n  v as GenUIForm,\n  M as GenUIImageGallery,\n  E as GenUIList,\n  x as GenUIMessage,\n  z as GenUIProgress,\n  j as GenUIQuickReplies,\n  y as GenUIRating,\n  m as GenUIRegistry,\n  U as GenUISteps,\n  A as GenUITable,\n  V as GenUITextBlock,\n  re as bubbleStyles,\n  Ye as streamFromFetch\n};\n//# sourceMappingURL=index.js.map\n","// @chativa/ui — LitElement web components\n// Named exports\nexport { ChatbotMixin } from \"./mixins/ChatbotMixin\";\nexport { ChatWidget } from \"./chat-ui/ChatWidget\";\nexport { AgentPanel } from \"./chat-ui/AgentPanel\";\nexport { ConversationList } from \"./chat-ui/ConversationList\";\nexport { default as ChatBotButton } from \"./chat-ui/ChatBotButton\";\nexport { default as i18n } from \"./i18n/i18n\";\nexport { registerCommand } from \"./commands/index\";\nexport type { LocalizedCommandConfig, CommandTranslations } from \"./commands/index\";\nexport { render } from \"./render\";\nexport type { RenderOptions } from \"./render\";\nexport { GenUIRegistry } from \"@chativa/genui\";\n\n// Side-effect registrations (registers custom elements)\n// @chativa/genui: registers genui-message custom element + MessageTypeRegistry.register(\"genui\", ...)\nimport \"@chativa/genui\";\nimport \"./chat-ui/ChatWidget\";\nimport \"./chat-ui/ChatBotButton\";\nimport \"./chat-ui/ChatHeader\";\nimport \"./chat-ui/ChatInput\";\nimport \"./chat-ui/ChatMessageList\";\nimport \"./chat-ui/DefaultTextMessage\";\nimport \"./chat-ui/ImageMessage\";\nimport \"./chat-ui/CardMessage\";\nimport \"./chat-ui/ButtonsMessage\";\nimport \"./chat-ui/FileMessage\";\nimport \"./chat-ui/VideoMessage\";\nimport \"./chat-ui/CarouselMessage\";\nimport \"./chat-ui/QuickReplyMessage\";\nimport \"./chat-ui/EmojiPicker\";\nimport \"./chat-ui/ConversationList\";\nimport \"./chat-ui/AgentPanel\";\nimport \"./chat-ui/EndOfConversationSurvey\";\nimport \"./chat-ui/LinkPreviewCard\";\nimport \"./chat-ui/ToolCallCard\";\nimport \"./chat-ui/ToolCallActivity\";\n\nimport { MessageTypeRegistry } from \"@chativa/core\";\nimport { EndOfConversationSurvey } from \"./chat-ui/EndOfConversationSurvey\";\nexport { EndOfConversationSurvey } from \"./chat-ui/EndOfConversationSurvey\";\nexport { LinkPreviewCard } from \"./chat-ui/LinkPreviewCard\";\nexport type { LinkMetadata, LinkMetadataFetcher } from \"./chat-ui/LinkPreviewCard\";\nexport { ToolCallCard } from \"./chat-ui/ToolCallCard\";\nexport { ToolCallActivity } from \"./chat-ui/ToolCallActivity\";\nMessageTypeRegistry.register(\n  \"end-of-conversation-survey\",\n  EndOfConversationSurvey as unknown as typeof HTMLElement,\n);\n"],"names":["commonStyles","css","styles","unsafeCSS","styless","ChatbotMixin","superClass","_ChatbotMixinClass","I18nMixin","i18next","chatStore","colors","ChatbotMixinClass","__decorateClass","state","isString","obj","defer","res","rej","promise","resolve","reject","makeString","object","copy","s","m","lastOfPathSeparatorRegExp","cleanKey","key","canNotTraverseDeeper","getLastOfPath","path","Empty","stack","stackIndex","setPath","newValue","k","e","p","last","pushPath","concat","getPath","getPathWithDefaults","data","defaultData","value","deepExtend","target","source","overwrite","prop","regexEscape","str","_entityMap","escape","RegExpCache","capacity","pattern","regExpFromCache","regExpNew","chars","looksLikeObjectPathRegExpCache","looksLikeObjectPath","nsSeparator","keySeparator","possibleChars","c","r","matched","ki","deepFind","tokens","current","next","nextPath","j","getCleanedCode","code","consoleLogger","args","type","Logger","concreteLogger","options","lvl","prefix","debugOnly","moduleName","baseLogger","EventEmitter","events","listener","event","numListeners","observer","numTimesAdded","i","ResourceStore","ns","index","lng","ignoreJSONStructure","result","resources","deep","pack","v","postProcessor","module","processors","translator","processor","PATH_KEY","createProxy","handler","proxy","keysFromSelector","selector","opts","checkedLoadedFor","shouldHandleAsObject","Translator","services","o","opt","resolved","isObject","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","parts","keys","lastKey","returnDetails","namespace","appendNamespaceToCIMode","resUsedKey","resExactUsedKey","noObject","joinArrays","handleAsObjectInI18nFormat","needsPluralHandling","hasDefaultValue","defaultValueSuffix","defaultValueSuffixOrdinalFallback","needsZeroSuffixLookup","defaultValue","resForObjHndl","handleAsObject","resType","resTypeIsArray","newKeyToUse","deepKey","usedDefault","usedKey","resForMissing","updateMissing","fk","lngs","fallbackLngs","send","l","specificDefaultValue","defaultForMissing","language","suffixes","suffix","skipOnVariables","nestBef","nb","na","nestAft","postProcess","postProcessorNames","found","exactUsedKey","usedLng","usedNS","extracted","needsContextHandling","codes","finalKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","possibleKey","optionsKeys","useOptionsReplaceForData","option","LanguageUtil","formattedCode","cleanedLng","lngScOnly","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","fc","suffixesOrder","dummyRule","count","PluralResolver","languageUtils","cleanedCode","cacheKey","rule","lngPart","pluralCategory1","pluralCategory2","pluralCategory","deepFindWithDefaults","regexSafe","val","Interpolator","escape$1","escapeValue","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","getOrResetRegExp","existingRegExp","match","replaces","handleFormat","f","missingInterpolationHandler","todo","matchedVar","temp","safeValue","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","keyEndIndex","elem","parseFormatStr","formatStr","formatName","formatOptions","optStr","rest","trimmedKey","createCachedFormatter","fn","cache","optForCache","frm","createNonCachedFormatter","Formatter","cf","formatter","name","format","formats","lastIndex","mem","formatted","valOptions","error","removePending","q","Connector","backend","store","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","err","loaded","loadedKeys","n","fcName","tried","wait","resolver","fallbackValue","isUpdate","clb","get","ret","transformOptions","noop","bindMemberFunctions","inst","SUPPORT_NOTICE_KEY","getSupportNoticeShown","setSupportNoticeShown","usesLocize","b","I18n","defOpts","createClassOnDemand","ClassOrObject","lu","deferred","load","finish","t","usedCallback","append","li","lngInLngs","setLngProps","done","setLng","fl","keyPrefix","fixedT","resultKey","fallbackLng","lastLng","loadNotPending","loadState","preResult","preloaded","newLngs","ti","rtlLngs","instance","forkResourceStore","mergedOptions","clone","clonedData","prev","acc","mergedInterpolation","mergedForInterpolator","registerCommand","config","translations","execute","strings","SlashCommandRegistry","_getDefaults","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","html","encode","unescapeTest","unescape","_","caret","edit","regex","valSource","cleanUrl","href","noopTest","splitCells","tableRow","row","offset","escaped","curr","cells","rtrim","invert","suffLen","findClosingBracket","level","outputLink","cap","link","raw","lexer","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","_Tokenizer","src","trimmed","lines","inBlockquote","currentLines","currentRaw","currentText","top","lastToken","oldToken","newText","newToken","bull","isordered","list","itemRegex","endsWithBlankLine","endEarly","itemContents","line","nextLine","blankLine","indent","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","istask","ischecked","spacers","hasMultipleLineBreaks","tag","headers","aligns","rows","item","align","cell","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","linkString","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","newline","blockCode","fences","hr","heading","bullet","lheading","_paragraph","blockText","_blockLabel","def","_tag","_comment","paragraph","blockquote","blockNormal","gfmTable","blockGfm","blockPedantic","inlineCode","br","inlineText","_punctuation","punctuation","blockSkip","emStrongLDelim","emStrongRDelimAst","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","_inlineLabel","reflink","nolink","reflinkSearch","inlineNormal","inlinePedantic","inlineGfm","inlineBreaks","block","inline","_Lexer","rules","lastParagraphClipped","leading","tabs","cutSrc","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","lang","langString","depth","ordered","start","body","startAttr","itemBody","checkbox","checked","header","content","cleanHref","out","_TextRenderer","_Parser","anyToken","genericToken","textToken","renderer","_Hooks","markdown","Marked","#parseMarkdown","values","tableToken","listToken","childTokens","extensions","ext","prevRenderer","extLevel","rendererProp","rendererFunc","#convertRendererFunction","tokenizer","tokenizerProp","tokenizerFunc","prevTokenizer","hooks","hooksProp","hooksFunc","prevHook","arg","walkTokens","packWalktokens","func","loose","task","parser","origOpt","throwError","#onError","silent","async","msg","markedInstance","marked","slice","forEach","defaults","hasXSS","input","fieldContentRegExp","serializeCookie","maxAge","cookie","minutes","domain","cookieOptions","nameEQ","ca","cookie$1","_ref","lookupCookie","_ref2","cookieMinutes","cookieDomain","querystring","lookupQuerystring","search","params","pos","hash","lookupHash","lookupFromHashIndex","query","hasLocalStorageSupport","localStorageAvailable","testKey","localStorage","lookupLocalStorage","hasSessionStorageSupport","sessionStorageAvailable","sessionStorage","lookupSessionStorage","navigator$1","userLanguage","htmlTag","internalHtmlTag","lookupFromPathIndex","subdomain","lookupFromSubdomainIndex","internalLookupFromSubdomainIndex","canCookies","order","getDefaults","Browser","i18nOptions","detector","detectionOrder","detected","detectorName","lookup","d","caches","cacheName","LanguageDetector","en","tr","extractDomain","url","getFaviconUrl","LinkPreviewCard","LitElement","changed","fetcher","meta","favicon","nothing","property","customElement","DefaultTextMessage","ft","avatarUrl","color","urls","previewVariant","isUser","bubbleContent","unsafeHTML","theme","avatarCfg","showBotAvatar","showUserAvatar","showStatus","articleLabel","MessageTypeRegistry","QuickReplyMessage","action","keepActions","actions","showChips","isSelected","isDimmed","ImageMessage","alt","caption","CardMessage","image","subtitle","buttons","btn","renderInlineMarkdown","ButtonsMessage","persistent","isOther","formatBytes","bytes","fileIconAndColor","mimeType","mime","renderFileIcon","icon","icons","FileMessage","size","bg","VideoMessage","poster","CarouselMessage","carousel","card","cards","total","atStart","atEnd","CATEGORIES","EmojiPicker","emoji","emojis","cat","ChatInput","el","cmd","ta","hasFiles","end","files","hasText","connected","resolveText","ToolCallCard","tc","hasParams","hasResult","hasError","ToolCallActivity","calls","running","errorCount","resolveTag","component","ChatMessageList","threshold","messageStore","messages","version","currentCount","isTyping","isLoadingHistory","activeToolCalls","typingChanged","toolCallsChanged","historyJustLoaded","delta","countIncreased","storeUpdated","isLastInGroup","rendered","staticHtml","unsafeStatic","toolCalls","connectorStatus","reconnectAttempt","hasMoreHistory","searchQuery","displayMessages","ChatHeader","touch","headerUrl","isFullscreen","allowFullscreen","enableSearch","ConversationList","conversationStore","w","id","EndOfConversationSurvey","stars","active","cx","cy","needsComment","SIZE_PX","ChatWidget","vv","widget","rect","createOutgoingMessage","file","rating","comment","kind","focusable","idx","_v","applyGlobalSettings","connectorName","adapter","ConnectorRegistry","MultiConversationEngine","clientX","clientY","dx","dy","layout","h","left","cfg","Component","rebuild","SELECTOR","collect","root","isOpened","mode","positionMargin","position","ht","hLevel","vLevel","mH","mV","btnPx","vOff","isFromLeft","cls","AgentPanel","_ChatBotButton_instances","positionStyle_fn","ChatBotButton","__privateAdd","slot","isOpen","unreadCount","hideOnOpen","classes","__privateMethod","px","ChatBotButton_default","render","container","buttonOpt","settings","map","pe","de","te","L","G","re","he","ue","C","x","g","a","le","ce","ne","fe","ge","se","V","be","me","R","P","xe","ve","I","$","ye","_e","Y","S","we","$e","ke","Pe","H","E","Se","ze","J","A","Oe","Ce","D","y","Ie","De","K","z","je","Ee","T","Ae","Me","N","ie","O","F","X","ee","ae","Q","Z","B","Ge","Le","oe","U","Te","Be","W","M"],"mappings":"8OAGAA,GAAeC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA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AA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAA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AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;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","x_google_ignoreList":[2,4,5]}