diff --git a/assets/banner.svg b/assets/banner.svg new file mode 100644 index 0000000..37d0619 --- /dev/null +++ b/assets/banner.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/df24-logo-lockup-taipei.svg b/assets/df24-logo-lockup-taipei.svg new file mode 100644 index 0000000..9c9f4c8 --- /dev/null +++ b/assets/df24-logo-lockup-taipei.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/df24-logo-year.svg b/assets/df24-logo-year.svg new file mode 100644 index 0000000..a92ea34 --- /dev/null +++ b/assets/df24-logo-year.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/df24-logo.svg b/assets/df24-logo.svg new file mode 100644 index 0000000..1d8a1a3 --- /dev/null +++ b/assets/df24-logo.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/df24-stack-announce.gif b/assets/df24-stack-announce.gif new file mode 100644 index 0000000..6d8ddaa Binary files /dev/null and b/assets/df24-stack-announce.gif differ diff --git a/assets/gdg-taipei.svg b/assets/gdg-taipei.svg new file mode 100644 index 0000000..2be4f70 --- /dev/null +++ b/assets/gdg-taipei.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/organizer-badge.svg b/assets/organizer-badge.svg new file mode 100644 index 0000000..8cec139 --- /dev/null +++ b/assets/organizer-badge.svg @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/schedules.json b/assets/schedules.json new file mode 100644 index 0000000..26d9c65 --- /dev/null +++ b/assets/schedules.json @@ -0,0 +1,8934 @@ +[ + { + "date": "2023-12-16T00:00:00", + "isDefault": false, + "rooms": [ + { + "id": 40716, + "name": "101 階梯教室", + "sessions": [ + { + "id": "585737", + "title": "Opening", + "description": null, + "startsAt": "2023-12-16T09:00:00", + "endsAt": "2023-12-16T09:15:00", + "isServiceSession": false, + "isPlenumSession": true, + "speakers": [ + { + "id": "7ba74013-09e1-40b7-aa01-9cfa6b044da7", + "name": "Eva Chu" + }, + { + "id": "8ca9b6e8-652c-4e55-87cf-3482ab108ad5", + "name": "Eric ShangKuan" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "582327", + "title": "Keynote - 展望 Generative AI 的現在與未來", + "description": null, + "startsAt": "2023-12-16T09:15:00", + "endsAt": "2023-12-16T10:40:00", + "isServiceSession": false, + "isPlenumSession": true, + "speakers": [ + { + "id": "dcb01237-48ff-4ea4-ad39-2d6fd4c4e5ee", + "name": "良斌 薛" + }, + { + "id": "b842b7cc-9e1a-40fe-9797-e95dd2638a3f", + "name": "貴融 吳" + }, + { + "id": "ceeb5615-ece9-4434-b08e-9b524d5842ce", + "name": "雅芳 林" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "570643", + "title": "如何結合Google Colab及Intel OpenVINO來玩轉AIGC", + "description": "介紹Intel OpenVINO及2023.1最新功能,並說明如何結合Google Colab來運行OpenVINO Notebooks範例,最後展示數個不同應用的AIGC的案例。\r\n", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "17d4f42b-c983-4eac-a755-9629cc1b3679", + "name": "哲豪 許" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "571381", + "title": "What's New in Android Studio", + "description": "An overview of some of the cool new tools in Android Studio (e.g. Studio Bot, Compose Tools, Direct Access). Some quick tips and learn from the audience their direct feedback. ", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "b6d5d32f-c10f-42af-a48c-8419ddce2b03", + "name": "Paris Hsu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "568630", + "title": "多模態模型-Gemini", + "description": "Gemini(雙子星)是Google最新發表的多模態模型(Multimodal models),可支援多種輸入包含文字、語音、影像、影片等,本主題主要分享Gemini的最新資訊,包含模型家族、功能以及技術突破。", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "46e46c77-a1aa-4c41-b392-fa6922826244", + "name": "Jerry Wu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + { + "id": "565878", + "title": "Advanced Knowledge Management with Generative AI", + "description": "使用生成式AI, Vector Store, BigQuery做Issue / Ticket管理, 搜尋及分析 ", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "48ecd2e5-51c3-4aec-99d4-0fa0718f92e8", + "name": "Michael Chi" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "563667", + "title": "前端模組解放運動", + "description": "對前端工程師來說,雖然現代的瀏覽器都已經原生支援 ESM,或是現代的 bundler 都能幫我們把專案用到的套件打包成更精簡的檔案,但開發過程中那個傳說中深不見底的 node_modules 目錄似乎還是避免不了...\r\n\r\n如果不打包的話可以嗎?來來來,讓我跟你介紹一下 importmap :)", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "6a2bb931-6f51-4e37-b907-b12a17eb4745", + "name": "見龍 高" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "559240", + "title": "使用 MakerSuite 與 PaLM API 快速打造 Generative AI 原型設計", + "description": "在開發 LLM 應用程式前都需要不斷的對 Prompting Text 進行試驗,而這個過程可能相當曠日廢時,透過 Google 推出的 MakerSuite 可以在 No-code 的架構下輕鬆的管理與實驗各種不同的提示詞,並且可以輕易的搭配 PaLM API 快速打造各類型的 LLM 應用程式!", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "245ec8d9-dd6e-499b-a9ce-b40755e2ad2b", + "name": "Will 保哥" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 40717, + "name": "201 階梯教室", + "sessions": [ + { + "id": "566961", + "title": "Google Mediapipe 結合邊緣運算裝置", + "description": null, + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "7bdd5c44-cbba-494a-a01c-aa02bff5e81a", + "name": "吉弘 David 曾" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "560149", + "title": "Introduction to Flutter Casual Games Toolkit", + "description": "An brief introduction to Flutter Games Toolkit", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "52c2733a-f66e-4843-b016-a8ce0033f621", + "name": "Cheng Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213251, + "name": "Firebase" + }, + { + "id": 213365, + "name": "Others" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "568610", + "title": "為什麼一卡通決定採用 KMP 作為跨平台方案 - Let's talking about KMP", + "description": "Mobile APP 的跨平台開發一直都是一個 big issue,近期以來聲量水漲船高的 Flutter、meta (formerly Facebook) 推出的 React Native,Kotlin Multiplatform for mobile 作為跨平台解決方案與上述提到的兩種不同,擁有對 Native UI 整合上的優勢\r\n\r\n在這個 session 裡,我們會介紹 Kotlin Multiplarform for mobile 在一卡通的實作、我們如何利用 Kotlin Multiplatform for mobile 對 Native UI 的整合優勢 reform legacy code,減少在開發中會重複遇到的問題,最終達到或提高 Native user 所期望的 UX 體驗", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "b14a455a-bb90-4391-b92b-3940d28416c1", + "name": "Calvin Huang" + }, + { + "id": "ea2db839-45db-4185-a621-22046e9b8810", + "name": "宇軒 林" + }, + { + "id": "afc5a134-d929-4571-81bd-8de4ceebf990", + "name": "Harry Hsu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "551850", + "title": "跟 Flutter 作伴的這五年", + "description": "我從 2018 年開始接觸 Flutter 開發,從一開始的小玩具,到實際使用 Flutter 開發商業產品,一路做過簡單的手機 app,到音樂/語音助理/車用等不同的應用,也一路拓展到桌面應用。我想分享這五年的探索與冒險。", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "55c4d43e-e1dc-4924-b4eb-15c59a5affdc", + "name": "Weizhong Yang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "555355", + "title": "Angular 17 - Control Flow 全新體驗", + "description": "Control Flow 是 Angular 17 推出的全新功能,除了提供更簡潔的樣板語法以外,還額外添加了許多不可思議的超能力!本次分享將介紹最新的 Angular Control Flow 語法,搭配一些 Angular 17 的新 feature,寫出對開發者與使用者體驗都一級棒的程式!", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "ededcdda-e0a5-47c9-8adc-34f759ea2271", + "name": "Mike Huang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "554618", + "title": "Empowering Community-Driven Learning through Serverless Practice", + "description": "社群的力量非常強大,身為開發者的你我除了上班 Coding,下班也會研究許多 Open Source 的內容,其中也會做許多的 side project 來實驗,但如何佈署到 public cloud 上以及選擇相關的服務也有學問在,希望這次議程能夠讓大家在閒暇之餘開發的 side project,也能找到個好歸屬!", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "ff6e6408-66f6-4e81-813f-40af6f3c7492", + "name": "NiJia Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213361, + "name": "Web" + }, + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 40718, + "name": "301 階梯教室", + "sessions": [ + { + "id": "565687", + "title": "Firebase Auth 與無密碼驗證的 WebAuthn API", + "description": "Firebase Auth 是 Firebase 的核心產品之一,提供了開發者方便的平台整合各種多樣化的登入方式,包含 Email、簡訊登入,以及社群登入如 Google、Facebook 和 GitHub 等。在這次的分享當中,我將與各位分享 Firebase Auth 的使用方式、最佳實踐,以及如何串聯最新的 WebAuthn Passkeys 作為安全的登入方式。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "6746e447-798f-4c2d-8107-1fd5ecb7d4c2", + "name": "Richard Lee" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213251, + "name": "Firebase" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "563701", + "title": "使用 Leptos 建立和部署 WASM 到 Google Cloud Platform (GCP)", + "description": "在這個緊湊的 10 分鐘分享中,我會介紹如何利用 Leptos 框架建立 WebAssembly (WASM) 產品,並將其快速部署到 Google Cloud Platform (GCP)。我將簡要介紹 Leptos 框架,展示如何利用它開發 WASM,以及如何利用 GCP 的資源來部署和優化 WASM 產品的運行。", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "c7837e68-5a45-4d61-b6b4-7905ac022618", + "name": "Bucky Chu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "553295", + "title": "10 Years into Android Gradle Plugin: Unraveling the Mysteries of Gradle.", + "description": "Understanding Gradle and the Android Gradle Plugin (AGP) is crucial in Modern Android development. Marking the 10th anniversary of AGP, this presentation delves into the intricacies of the AGP and Gradle learning journey, highlighting their primary challenges. Attendees will gain insights into AGP's foundational and emerging features, key Android development methodologies linked to Gradle, and practices for balanced reliance on Android Studio.\r\n\r\n在現代 Android 開發技術中,懂得如何運用 Gradle 及 Android Gradle Plugin (AGP) 是至關重要的。值此 AGP 十周年,本次分享會深度剖析 AGP 和 Gradle 學習之旅中的複雜性,並突出它們面臨的核心難題。參與者將深入了解 AGP 的基石特性和最新發展、與 Gradle 緊密結合的 Android 技術手法,以及在 Android Studio 中建議的使用策略。", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "2ab7a51f-5d46-4e5e-b9f1-53df68697012", + "name": "El Zhang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 213365, + "name": "Others" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "562930", + "title": "Advance Bundle", + "description": "Bundle is very basic element in Android development, but have you ever have a second thought on how/when to use it?\r\nIn this talk, we'll revisit the Bundle design, timing of using it and even the alternative in MVVM.", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "07edbf1e-9509-4800-84f7-279093e87016", + "name": "Tim Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "568319", + "title": "整合 Vertex AI 與開源工具快速打造 AI 產品原型", + "description": "AI 技術進展迅速,雲端的 AI API 如 Vertex AI 能用較低成本就能使用先進的 AI 技術與功能。 \r\n\r\nVertex AI 提供多種語言模型、圖像生成模型及其他的 AI 能力,\r\n\r\nVertex AI 提供多種語言模型,可用於各種任務,包括:文本分類、問答、摘要、翻譯等。機器翻譯支持 100 多種語言。而對話式 AI (AI 聊天機器人) 可用於客戶服務、銷售、營銷等。 圖像生成方面, Vertex AI 提供 Imagen,這是一種圖像生成模型,可用於創建逼真的圖像協助設計與創作。\r\n\r\n如能搭配開源 dashboard 工具如 gradio, dash, 開源 AI 模型如 whisper, stable diffusion, llama, 以及資料庫等等工具,就能快速將概念打造成原型,可幫助企業在各個領域進行創新,並且快速評估可行性與風險。\r\n\r\n我們將會先簡單介紹 Vertex AI 的功能,相關開源生態系的特點,以及整合的流程及可能性。", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "e20a6f42-21eb-426f-a87c-ff0f1bb59bbe", + "name": "TJ Wei" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + { + "id": "564788", + "title": "App Modernization - GKE 容器平台 101", + "description": "在本議程中,除了簡介 GKE (Google Kubernetes Engine) 容器平台之外,將會展示在 GCP 中如何建立 GKE 叢集,以及部署容器和應用程式,讓與會人員能夠快速理解,雲端原生及現代化應用程式的生命週期和部署流程。", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "150292c8-f15c-47a9-950d-886aa9d138bc", + "name": "Weithenn Wang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 42716, + "name": "105 平面教室", + "sessions": [ + { + "id": "564860", + "title": "Service Weaver Introduction", + "description": "Service Weaver is a programming framework for writing, deploying, and managing distributed applications. You can run, test, and debug a Service Weaver application locally on your machine, and then deploy it to the cloud with a single command.", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "8e6c99bd-885d-488f-b969-07e0806e6be2", + "name": "Kai-Chu Chung" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "564821", + "title": "Future-Proofing Enterprise Conversations: Integrating NeMo-GuardRails & PaLM2", + "description": "探討如何運用 NeMo-GuardRails 確保溝通的合規性與安全性,同時借助 PaLM 2 模型的強大自然語言處理能力,開發出更具人性化的對話系統,提升企業級對話平台的成效。", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "29e9ee2f-e316-4829-bdb9-2fafdf7f3e8c", + "name": "Jimmy Liao" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + }, + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "570679", + "title": "用 LLM 來整理您的知識庫", + "description": "大型語言模型(Large language model, LLM)橫空出世,像個萬事通一樣,改變你我的生活,隨時想到的時候諮詢一下,立馬解決你的心中的疑問,甚至有些鮮少人討論的部份,他都有機會可以解決您的問題。\r\n這樣的專家能夠請他來幫助我們知識庫整理嗎?可以的,他擅長幫你整理半結構化的資料,就讓我們看看能夠有什麼有趣的應用吧!", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "95bbabe7-8115-4476-92a7-248236450835", + "name": "Johnny Sung" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "566333", + "title": "GCP 監控、自動化與合規", + "description": "從一個 SRE 的角度分享及探討自身純雲端、純 SaaS 的公司為何要做監控?有哪些自動化的最佳實踐可以導入?以及那些為了要過資安認證的經驗分享。", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "fc15701d-e89e-413d-b669-73f4011a35ea", + "name": "Johnny Yeng" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "560632", + "title": "ML不再是專家的遊戲:Google試算表的No-code ML神器", + "description": "ML不再是專家的遊戲:Google試算表的No-code ML神器\r\n\r\n在數據驅動的時代,機器學習(ML)已成為解決複雜問題的利器。但對許多人來說,ML似乎仍是一個遙不可及的技術領域。Google試算表的最新功能打破了這一局限,使得每一位用戶都可以輕鬆地利用ML技術,而不需要撰寫任何程式碼。本次演講,我們將帶您深入了解這一神奇的功能,探討它如何為各行各業帶來價值,並示範如何輕鬆運用它來解決實際問題。無論您是初學者還是專家,都可以在這裡發現ML新的可能性。", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "07f9c3c5-c8e6-4187-8bc6-c6f17129faa8", + "name": "Jian An Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "565174", + "title": "雲與地的彼端 - 全面啟動PAIA 3D之K8S混合雲部署", + "description": "描述PAIA機器學習AI 線上遊戲平臺,如何將原先雲端AI運算環境,與地端的3D運算機器結合,承擔部份雲端運算的昂貴費用,與解決雲端和地端之間整合性的問題,達到無縫式的雲端與地端的持續部署。", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "4a4960d5-7d5a-4460-bcd0-71c23c7537ff", + "name": "Ivan Chiou" + }, + { + "id": "8aed0afc-2f07-4674-8fa7-a5a25463b4a4", + "name": "李 緒成" + }, + { + "id": "7053e662-2146-4435-9b35-c6545c98cb6c", + "name": "頌宇 張" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213361, + "name": "Web" + }, + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 42071, + "name": "202 平面教室", + "sessions": [ + { + "id": "560680", + "title": "GeoAI解密: 基於谷歌雲平臺和谷歌地球引擎的的全球衛星數據分析", + "description": "在全球氣候變暖和城市化背景下,如何利用AI和空間大數據更好地幫助我們了解人與環境之間的關系?在这里你可以了解到:(1) 谷歌地球引擎是什麽:介紹谷歌地球引擎的基本架構,衛星數據集以及其內置的機器學習模型。(2) 谷歌雲平臺為海量衛星數據分析帶來了哪些機會:通過\"Dynamic World\"這一全球實時土地分類數據模型介紹如何利用谷歌雲平臺搭建自己的Vertex AI模型並且與地球引擎的衛星大數據數據結合在一起。(3) 新產品介紹:谷歌雲平臺新推出的2種環境API--太陽能API和空氣質量API,了解谷歌雲平臺如何基於衛星數據和AI 模型幫助評估空氣質量條件和優化太陽能電池板空間布局。適合聽眾:對衛星觀測數據和環境監測感興趣,並且有一定機器學習基礎知識的人群。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "fe200d79-0e36-4a49-928e-276b3940e135", + "name": "子裕 林" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "566327", + "title": "Architecting Reliable Event-Driven Applications on Google Cloud", + "description": "本演講將探討在 Google Cloud 上建立高度可靠的 event-driven 架構,其包括Microservices中Orchestration與Choreography溝通模式、exactly-once等機制。", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "e93c0e45-5d02-4938-ad16-37c2166a8a79", + "name": "Rich Lee" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "571369", + "title": "防量子攻擊的開發套件", + "description": null, + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "5c935d23-5fda-4b16-b4bc-3bd09b6f0057", + "name": "Yang Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 222876, + "name": "Cyber Security" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "564714", + "title": "如何進一步強化App資安", + "description": "App安全面臨的挑戰日趨嚴峻,如何從方方面進行強化,成了現今刻不容緩的首要之務.", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "7c425327-0d8d-4b33-9f39-72d7c7a44909", + "name": "Rick Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222876, + "name": "Cyber Security" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "550398", + "title": "Next-Gen Infrastructure as Code:CDK for Terraform, with Real-world Argo CD Examples", + "description": "- Terraform Introduction\r\n- Before and after CDKTF\r\n- What CDKTF can do in GCP\r\n- Video demo - One Click to bring up Argo CD website in GKE within 20 mins ", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "9a95f75e-fdd9-42b2-9fda-aab3c617f134", + "name": "Chuang Jason" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "562916", + "title": "活用 GCP Observability Tools - 以 Golang 為例", + "description": "本演講將介紹如何善用 GCP 上的 Logging, Metrics, Trace, Alert 等工具來實現即時偵測異常,並且能讓開發者方便地追蹤錯誤,以加快解決問題的速度。內容會使用 Golang 並搭配自建 Open Telemetry collector 作為範例來介紹如何實作整個流程。", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "33c40881-ef42-4200-899b-794bc18082e5", + "name": "Harry Chen" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 42072, + "name": "203 平面教室", + "sessions": [ + { + "id": "559954", + "title": "因為怕改壞,所以把 TDD 技能點滿了", + "description": "眾所皆知自動化測試能帶來許多好處,但往往在實際 Mobile Project 開發中會遇到種種困難。尤其是「UI」層的邏輯,光是寫測試就是一件不容易的事情,更何況使用 TDD!? 根據多年在業界的踩雷、實踐經驗,幫助大家一起踏著講者的屍體前進,把 TDD 從「不可能」變成「可能」!", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "e3a01790-92f0-4cd4-a20a-9fa31855948b", + "name": "Hsuanhao Wang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "566335", + "title": "不可能的任務!在網頁/ PWA 實現如 App 一樣原生體驗的 Bottom sheets (使用 Google IDX)", + "description": "【在 PWA 上實現原生 App 的 Sheet 體驗!】\r\n為了在自家的 PWA 追求與原生 App 類似的體驗,我們拆解 Framer Motion 的運作原理,實現連 Framer Motion 都做不到的高度響應式、多向拖曳的 Bottom Sheet,讓 PWA 的 Sheet 也能有類原生 App 體驗。\r\n\r\n本次分享中將學到:\r\n- Framer Motion 的運作原理\r\n- 開發小技巧!DevMode 展示\r\n- 逐步拆解:到底怎麼做到?\r\n- Google Project IDX 實例展示\r\n- 上手體驗!\r\n\r\n透過工程師的邏輯 + UI 設計師的經驗,終於攻克這個不可能的任務!", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "3fb70cac-e431-462b-9498-8a6150d92cad", + "name": "范愷祐 Kyo Fan" + }, + { + "id": "f97f4de8-cdb8-4dcd-8b30-7912e8a01335", + "name": "Huai-Chun Chang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "566309", + "title": "Kimoji:使用 Jetpack Compose 的手勢 API 實作心情日記的相片圖庫系統", + "description": "Jetpack Compose 提供多種處理手勢的抽象層級,而選擇適當的抽象層級是 Compose 的常見課題。 因為 Compose 是由多個模組組合而成,使用適當的抽象層進行實作,可以盡可能減少元件依賴。 本次演講的目的是幫助開發者了解如何透過 Compose 提供的各層級手勢 API,來偵測使用者互動而產生的手勢。 為此,我們將實作一款心情日記 App:Kimoji 中的相片圖庫系統。本次演講對於了解自定義手勢的實作非常有幫助,開發者可以很簡單地使用 Compose 的指標輸入 API 來建構豐富的互動。", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "5351eb49-101a-4c74-a488-c0b9f70923dc", + "name": "John Lu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "553860", + "title": "Android 端爬蟲實戰! 利用 AccessibilityService 完成爬螢幕自動化工作", + "description": "在 Mobile First 的浪潮下, 有許多新興服務已不再提供網頁版資訊 如果只有 APP 用戶端, 還能夠像在 html 上一樣爬取資料嗎? 本議程將分享對此問題的思考過程 介紹 Android 上的 Accessibility Service 是什麼 為什麼選用這個方法 我碰到 Accessibility Service 使用上的限制 以及最終使用 Accessibility Service 來實現自動化的心得", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "4b130f74-4876-4b51-a96c-870a149cfdbc", + "name": "Yuijuhn Ting" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "570353", + "title": "Android performance 最佳化", + "description": "提供性能優化的技巧和建議,以確保應用程式在各種設備上運行流暢。", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "5232160b-f9d1-471d-8002-f30c404941dc", + "name": "Takuma Lee" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222878, + "name": "Android" + }, + { + "id": 222874, + "name": "Kotlin" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "565548", + "title": "在android上如何玩MediaPipe機器學習", + "description": "介紹如何在裝置上使用MediaPipe機器學習", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "a548e82d-2330-41f2-ba0c-c9177c98768c", + "name": "Kevin Chiu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 213250, + "name": "AI/ML" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 42073, + "name": "204 平面教室", + "sessions": [ + { + "id": "553812", + "title": "跟著我熟悉 Dart 3,這些高效語法你需要知道!", + "description": "Dart 3 隨著 Flutter 3.10 發布,進行了一次大改版,達成了 100% sound-null safety,代表所有的屬性、變數都要聲明是否為 nullable,它的作用能讓專案的編譯更有效率、速度更快,也能讓專案的穩定性提升,減少不必要的錯誤和崩潰發生。另外也新增了幾種語言特性 Record、Pattern、Class-Modifier 等等,在開發上給予很大的幫助,在許多情境的使用上更簡單而且可讀性高。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "5b1c1a89-599a-4999-be01-367382e63d27", + "name": "Yii Chen N/A" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "563977", + "title": "Flutter 適合商用嗎?", + "description": "Flutter 隨著1.x 的推出,快速迭代到 3.x\r\n它到底適不適合拿來開發?\r\n一般的專用適合嗎?", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "8dc146ad-848a-445a-81ec-c58cfb38b8de", + "name": "楓 梁" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "551746", + "title": "分享用 Google 生態系開發產品的心得與經驗", + "description": "FooTinder 是一個根據使用者的輸入資訊來給出美食建議的產品。背後用到了許多 Google 生態系的產品與技術,像是 Android、Flutter、Firebase、Kotlin、Google Cloud Platform 等等。這場演講來跟大家聊聊這個產品開發中的選擇與如今的樣貌。", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "82535cba-1678-4f08-9a8f-3df72603f5ce", + "name": "Jian-Min Huang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + }, + { + "id": 222874, + "name": "Kotlin" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "562931", + "title": "從 Flutter 開始你的獨立遊戲開發", + "description": "Flutter 在跨平台與繪圖引擎的採用,讓他在遊戲領域有著巨大的潛力。讓我們乘著這股風開始遊戲開發吧!", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "066461da-06f3-4110-ac65-9e41a4700af2", + "name": "Dorara Hsieh" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 213361, + "name": "Web" + }, + { + "id": 213365, + "name": "Others" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "564753", + "title": "用 Flutter 開發產品真的可行嗎?真實跨平台 App 開發之道", + "description": "Flutter 為 Google 力推的新跨平台框架,使用 Dart 語言只要寫一份程式碼就可以同時運行在 iOS 與 Android 雙平台上。然而,市場上已經存在許多跨平台解決方案,那麼,Flutter 到底有什麼獨特之處?使用 Flutter 來開發產品究竟有何優勢和限制?\r\n\r\n在這個議程當中,將分享富果團隊如何使用 Flutter 重新打造了原本基於 Web 的 App,以及目前團隊使用 Flutter 開發的實戰經驗與工作流程。我們將誠實地討論使用 Flutter 的優劣勢,同時也深入探討所遇到的挑戰。最後再來談談綜合這些經驗,哪些團隊適合使用 Flutter 開發。", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "69e97ccc-1b07-4f1c-aeca-7433e6b2de82", + "name": "劉 浩瑋" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "564886", + "title": "Google全家餐! 快速打造旅宿業最小化MVP", + "description": "我們是敦謙國際智能,Hexa敏捷戰隊,六月中我們團隊成立,為了最快將產品MVP推向變遷快速的旅宿市場並快速取得回饋,我們採用Google全家餐解決方案,前端Angular,後端Golang,主機GCP,只要Google有提供的解決方案通通優先採用,來看看我們如何三個月打造全新MVP,一起踩在巨人的肩膀上", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "39b3252f-fe14-47ff-9161-c96018adc337", + "name": "品毅 吳" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 42074, + "name": "205 平面教室", + "sessions": [ + { + "id": "565588", + "title": "Writing Testable Code with Layered Architecture and Mocking in Go", + "description": "沒有受測試保護的程式碼,就像處於裸奔狀態。正如《Clean Code》第九章所強調的,測試讓你能夠放心地進行程式碼修改。相反,即使你的程式碼設計得再出色,每次修改都可能引入潛在錯誤,讓你不敢輕易改動。測試覆蓋率越高,您就越能信心滿滿地進行修改,正因為測試提供了可靠的安全網,使修改變得能大膽進行!\r\n\r\n要讓程式碼容易進行單元測試,我們需要確保它具有隔離性且執行結果一致,避免測試受到外部因素(例如其他物件、函式、網路、資料庫)的干擾。這需要我們對單元內的依賴元件進行替代。為了實現這種易於替換的程式碼,我們需要落實一系列良好的實踐。\r\n\r\n本次分享將探討使用 Go 開發分層架構軟體時,我們應該考慮哪些關鍵因素,以提高程式碼的可測試性,並在此設計之上寫出良好的測試。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "76d2c4d8-544a-471c-a081-364fa6feddb4", + "name": "Jack Hung" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "566149", + "title": "Next json for Go", + "description": "隨著 Go 在各領域的發展,json lib 廣泛使用在各個地方。但隨著需求不斷的增加,已經開始無法滿足大家的需求,開始有了規劃 v2 的構思,讓我們一起來看看於是大家對於下一代的 json lib 有什麼想法", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "10c950f3-669e-4dec-9618-0455f43a5b37", + "name": "GTB Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "564492", + "title": "implementing chatapp with go websocket", + "description": "introduce websocket protocol, implement ws with tcp and implement chatapp with my own ws library, and try to scale it !", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "c17b612e-4b71-4005-b254-c5bf0ad0dfc1", + "name": "Yale Hsu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "564489", + "title": "如何打造一個高效的 web framework routing", + "description": "在實作一個 web application 時,通常會使用開源的 web framework,這些 framework 通常會封裝許多功能,其中最重要功能之一就是 routing,且 routing 功能實作會大大影響你的 web application 處理每個 request 的效能,因此就讓我們探討一下在 golang 中常見的 web framework 是如何實作高效能的 routing 機制。", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "c8509f89-9c12-4941-ab86-a8ef5f8d6ce9", + "name": "銘佑 徐" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "564518", + "title": "如何在 Golang 簡單使用有限狀態機 (FSM)", + "description": "我喜歡領域驅動設計 (DDD) 的想法,一般處理 domain object 特定欄位的狀態變化通常需要撰寫大量if條件,這樣的做法容易出錯。因此,開發了一個簡單的 FSM 工具,以提供更簡潔的方式管理狀態,幫助開發人員更輕鬆地維護程式碼。\r\nhttps://github.com/KScaesar/easyFSM", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "96c3a2a2-93ae-4cce-b7e5-2995c29bdaaa", + "name": "旻峯 蔡" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "564520", + "title": "Golang Framework 是怎麼做出這些酷功能?", + "description": "在開發中,我們會用到一些 framework 來加速我們的開發,因為標准函式庫提供的功能還不足以滿足需求。常常使用框架也讓我開始思考:這些東西是怎麼做到的?\r\n\r\n1. log 如何分級:我們會希望 log 有不同等級的錯誤,像是 info, error, debug... 等等,從許多框架看看做法\r\n2. uber/zap 中的 encoder:把想要的資訊轉換成 json 格式,zap 做了什麼來提高效能?\r\n3. gin 是如何利用「重複使用」這個大方向來提升效能。\r\n4. builder pattern:這是許多框架都會提供給使用者的設計模式,我們會來看看如何實現它。\r\n\r\n世界各地的人都不約而同的發明了弓箭,不同的開發者也選擇了相同的作法。學習高手們是如何寫出高效的程式碼,並學習設計模式。", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "66f72597-47ba-40a0-afb6-7ef96d954ffa", + "name": "Shinobi Yeh" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 42076, + "name": "303 平面教室", + "sessions": [ + { + "id": "565844", + "title": "台灣酷兒聲音地圖:從設計發想到社會與技術實踐", + "description": "台灣酷兒聲音地圖是一個讓LGBTQ+和Ally社群能夠透過文字與錄音的形式,自在安全地分享與自身故事、心情的線上友善空間。在這個議程中,我們將分享這個空間的開發過程與甘苦談,包括藝術啟發、用戶體驗的考量、使用的技術、團隊合作與分工、以及測試過程。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "8eb63962-4fbf-45b1-bffd-96ce48b74eca", + "name": "Yu Lee" + }, + { + "id": "57647724-4c09-4a75-9da2-491b1a42ce84", + "name": "Munus Shih" + }, + { + "id": "7e52956a-8953-4372-a148-d17f8530430b", + "name": "HaoChe Hung" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213251, + "name": "Firebase" + }, + { + "id": 213361, + "name": "Web" + }, + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 42076, + "room": "303 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "568446", + "title": "想談一場天長地久的戀愛 你要先懂 UX", + "description": "- 先讓我知道你工程師在想什麼,工作日常長什麼樣子\r\n- UX 在做什麼:我工程師跟UX有什麼關聯\r\n- UX Designer 的腦袋裝了什麼\r\n- 以UX principle 檢視產品開發", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "1f07e053-4cb0-4fc3-adbe-4664513383a5", + "name": "意晴 洪" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 223079, + "name": "Design" + } + ], + "sort": 4 + } + ], + "roomId": 42076, + "room": "303 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "580022", + "title": "Ask Me Anything (AMA) Afternoon Tea (Discussion)", + "description": "歡迎帶中餐或下午茶、點心來討論。討論會屬於一個互相協助、腦力激盪與共同成長的一個環境。本次我們沒有設定特別的主題,邀請從事 UXer, Dev 和 PM/PJM/PO 的朋友們來參加。在工作上遇到的困難、問題、或是在閱讀任何相關書籍有不懂的地方,亦或是職涯的探討、怎麼處理專案管理、跨部門溝通等等大小事等,就讓我們一起在這短短的 40 分鐘一起討論、互相支持與協助。[#AMA]", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "7ba74013-09e1-40b7-aa01-9cfa6b044da7", + "name": "Eva Chu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 42076, + "room": "303 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + { + "id": "555688", + "title": "Flutter for mobile: full production app in 2hrs", + "description": "A full length workshop to build a Chat app for Android and iOS, with Flutter frontend, Firebase Backend, GitHub Action as CI pipeline and Codemagic as CD pipeline. This workshop aims to give a complete guide to build an app with Flutter and Firebase, then verify the build continuously using GitHub Action, and finally deploy the mobile version (Android and iOS) using Codemagic", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "e2c238da-ccae-4220-8ba0-92937ba4256b", + "name": "Suesi Tran" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 213251, + "name": "Firebase" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42076, + "room": "303 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 42077, + "name": "304 平面教室", + "sessions": [ + { + "id": "568093", + "title": "給 Android 工程師從零開始的 Jenkins", + "description": "身為 Android 工程師工程師一路走在 Jenkins 的路上不斷遇到痛點,想藉由這個分享減少大家在這條路上艱辛的過程。\r\n\r\n從在一開始接手處理問題,曾經看著佈署失敗的訊息讓人煩躁。\r\n\r\n或是看到設置好的腳本,可執行上的結果不如預期履履讓人挫敗。\r\n\r\n可當問題解決的時候,又有滿滿的成就感。\r\n\r\n如果你有以下痛點,歡迎來互相交流!\r\n\r\n身為 Android 工程師,想了解自動化佈署,但不知該如何下手!\r\n\r\n對於自動化有一點經驗,可是學習過程中困難重重,該如何更快上手知識呢?\r\n\r\n已經了解自動化佈署,可是如何發現痛點,要如何重構或調整流程呢?", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "171ccebb-f49f-4342-939f-8b3987e4c715", + "name": "Jean Yen" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 222878, + "name": "Android" + }, + { + "id": 223083, + "name": "DevOps" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "564530", + "title": "淺談 Golang v1.21 new function min, max, clear", + "description": "無論你是初學者還是經驗豐富的開發者,min、max和clear都是日常寫程式工作中的寶貴工具。本次就 trace min、max 和 clear 讓你可以更好地理解它們的功能和用法。", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "146c1ecd-25bb-48a4-baa4-ed51ccd6ef3d", + "name": "員亨 郭" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "568099", + "title": "Artificial Intelligence Tools", + "description": "Leveraging AI tools at work", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "ea4b26a5-41ae-4c8e-8c63-20198edf7999", + "name": "Praveen Chittem" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "568100", + "title": "Evolution of Transformers", + "description": "In 2018, GPT model changed the course of AI and deep learning. Now, we have several applications based on transformer model which benefits millions of people around the globe. In this talk, I would like to present the intution behind transformer models, discuss few architecture and application of the transformer model in Natural Language Processing and Computer Vision tasks. ", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "71c0a391-3444-4865-8984-1eb9558e1a70", + "name": "Anjana Kumar" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "568095", + "title": "How to evaluate large language models", + "description": "I will discuss my own experiences and what I have learned about an important question when working with large language models: \"How do I know if it is any good?\"", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "46a9eed6-160b-4613-b5aa-f69873d71b6f", + "name": "Daniel Eberts" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "568096", + "title": "Large Language Model:Prompt Engineering, Fine-Tuning.", + "description": "Large Language Models (LLMs) stand at the forefront of AI advancements. The art of prompt engineering can significantly refine their outputs, making them more contextually apt. Fine-tuning tailors LLMs to specific tasks but poses challenges, from technicalities to ethical concerns. Robust frameworks for assessing LLM outputs are crucial, emphasizing the need for human oversight. The future of LLMs beckons a collaborative approach to harness their vast potential responsibly.", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "9423e0c4-9faa-4120-9054-3f9a997febc8", + "name": "Subhajit Nanda" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 42078, + "name": "305 平面教室", + "sessions": [ + { + "id": "581913", + "title": "使用 BQML + PaLM 分析半結構化應用程式 access log", + "description": null, + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:50:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "0f37170b-c7d1-4926-8e92-e8525d051b59", + "name": "Edward Chuang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42078, + "room": "305 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + { + "id": "581914", + "title": "使用 PaLM 生成 SQL 語句", + "description": null, + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T14:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "0f37170b-c7d1-4926-8e92-e8525d051b59", + "name": "Edward Chuang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42078, + "room": "305 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + { + "id": "566224", + "title": "Let's build a URL shortener in Go", + "description": "帶大家用 golang 做一個縮網址功能", + "startsAt": "2023-12-16T14:10:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "e1ee4c87-62c0-40c8-990d-6995347e4841", + "name": "Cheng-Yu Chung" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42078, + "room": "305 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 42079, + "name": "306 平面教室", + "sessions": [ + { + "id": "563883", + "title": "OpenTelemetry on GCP實戰", + "description": "給大家體會一下如何在60分鐘內,部署一個Python服務,並且加上包含Metrics, Log, 與Trace的三種監控。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:50:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "cb61675c-7b74-4034-85db-9cfb0c2e2543", + "name": "Shawn Ho" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42079, + "room": "306 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "557702", + "title": "像個資深工程師一樣寫程式 - Act like a Flutter Senior", + "description": "能寫出教科書上的程式,看起來就像是初學者,那麼要怎麼樣寫程式,還要看起來很厲害的樣子呢?歡迎和新手村村長一起做一個道場練習。\r\nCoding style matters. If you code like a freshman, you are just a copycat from the textbook. How to code like a senior? Welcome to DOJO of Flutter Village for Rookies.", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T14:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "dc534b2a-a812-4b90-9dd3-57c0ca380df9", + "name": "AKI Yu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42079, + "room": "306 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "553639", + "title": "跨平台應用程式開發-Flutter工作坊", + "description": "Flutter 是新興的 Mobile App 開發工具,只需要寫一套程式碼,就能在 Android 與 iOS 等多平台執行,甚至可以用相同語言寫後端。\r\n在這個 Workshop 中,我們會使用 Dart 語言實作後端,並在一個已經具備基礎畫面的 Flutter app 中進行網路請求取得後端資料並顯示。\r\n\r\n本場活動需要參與者具備以下經驗:\r\n1. 具備 Dart 基礎程式語言能力\r\n2. 具備 Flutter 基礎知識\r\n\r\n本場活動需要參與者具備以下設備環境:\r\n1. 開發電腦,並需要具備足夠的剩餘空間\r\n2. 在家預先安裝好 Flutter 環境,並可以運行 App 或 Web\r\n3. Dart \">=3.0.0 <4.0.0\"\r\n4. Flutter 3.16.0", + "startsAt": "2023-12-16T14:10:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "2b34047f-4543-4677-895d-5fd201a88800", + "name": "斌權 張" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42079, + "room": "306 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + } + ], + "hasOnlyPlenumSessions": false + }, + { + "id": 42080, + "name": "307 平面教室", + "sessions": [ + { + "id": "558885", + "title": "Thread-blocking I/O is blocking your future (JVM)", + "description": "Gary 相信開發者可以通過負責任地將最新和穩定的技術應用於他們的產品中來構建一個更美好的世界。\r\n\r\n在這次演講中,他將介紹在微服務架構後端使用阻塞 I/O (Blocking I/O) 的常見陷阱,尤其是在 JVM 中,並分享他使用非阻塞 I/O (Non-blocking I/O) 的故事、最新的 Java 21 虛擬線程的突破、Kotlin Coroutine 和 Java 21 虛擬線程的主要區別。\r\n\r\n內容:\r\n\r\n- 在這個微服務架構時代,阻塞 I/O 如何變得更糟?\r\n- 為什麼開發人員仍在構建阻塞 I/O 應用程序?\r\n- 阻塞 I/O 和非阻塞 I/O 之間的性能差異是什麼? feat. Rust、C#、Nodejs、Spring MVC、Spring WebFlux\r\n- JVM 在 Java 21 之前的異步編程演進\r\n- JVM 突破 - Java 21 虛擬線程\r\n- 深入比較 Kotlin 1.9 Coroutine 和 Java 21 虛擬線程的根本區別", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "d71705f8-cb2d-497e-9201-1a61b5e09690", + "name": "Gary LO" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "567019", + "title": "Taiwan Kotlin User Group 分享", + "description": "Taiwan Kotlin User Group 如何利用 Google Meet 、Google 雲端硬碟等技術管理社群大小事", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "bcbfae97-c963-4955-bbde-95198f9480ec", + "name": "Recca Chao" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 222874, + "name": "Kotlin" + } + ], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + { + "id": "589716", + "title": "回顧2023 及Kotlin Multiplatform 最新消息 [Kotlin 中文開發者大會聯播]", + "description": "開場將由JetBrains 技術傳教士范聖佑與Kotlin 團隊專門負責KMP 方向的傳教士Pamela Hill 搭配,由聖佑先為大家回顧2023 年Kotlin 生態的重點更新,再由Pamela 帶來Kotlin Multiplatform 的第一手消息,想知道最新的Kotlin 尖端技術就聽這場!", + "startsAt": "2023-12-16T14:00:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "25bb137e-b9bb-48d2-aa01-53b53067be48", + "name": "聖佑 范" + }, + { + "id": "ec5100a9-f716-49ba-868a-d21a2fd6314b", + "name": "Pamela Hill" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + { + "id": "589717", + "title": "Kotlin Multiplatform:跨平台開發的後起之秀 [Kotlin 中文開發者大會聯播]", + "description": "由美團多平台開發專家劉銀龍,為大家介紹他們在選擇多平台技術時的經驗,並說明美團內部是如何透過Kotlin Multiplatform 實作多平台開發,過程中遇到的問題和解決方案。", + "startsAt": "2023-12-16T14:30:00", + "endsAt": "2023-12-16T15:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "3eee1f76-2be1-4b31-93fe-dbdfe269a335", + "name": "銀龍 劉" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + { + "id": "589718", + "title": " 做個另類Kotlin 開發者:從零入門Kotlin 編譯器外掛 [Kotlin 中文開發者大會聯播]", + "description": "Kotlin 編譯器也支援外掛開發,換句話說,透過外掛,開發者可以改變Kotlin 開發者的行為,大大釋放了開發的可能性。本場將由在Meta 倫敦分部,負責撰寫內部建置工具的黃惠勤,為大家進行一場Kotlin 編譯器外掛開發入門課。透過她的分享,將會對編譯器底層及相關必備技能有更進一步的認識。", + "startsAt": "2023-12-16T15:00:00", + "endsAt": "2023-12-16T15:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "33e721b4-9e42-401b-b4a7-b2eecf2c3d1d", + "name": "惠勤 黃" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + { + "id": "589719", + "title": "使用Reactive Quarkus 搭配Coroutine 及MongoDB 做後端開發 [Kotlin 中文開發者大會聯播]", + "description": "本場由電獺副執行長蘇芃翰介紹他們團隊打造數位廣告聯播網服務時,是如何結合Kotlin、Coroutine、Quarkus 框架及MongoDB 等技術來實現後端服務,並分享使用Full Reactive Programming 開發是一種什麼樣的體驗。", + "startsAt": "2023-12-16T15:40:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "7b9c6f43-d794-4125-ab19-dc42ccf33e66", + "name": "芃翰 蘇" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + } + ], + "hasOnlyPlenumSessions": false + } + ], + "timeSlots": [ + { + "slotStart": "09:00:00", + "rooms": [ + { + "id": 40716, + "name": "101 階梯教室", + "session": { + "id": "585737", + "title": "Opening", + "description": null, + "startsAt": "2023-12-16T09:00:00", + "endsAt": "2023-12-16T09:15:00", + "isServiceSession": false, + "isPlenumSession": true, + "speakers": [ + { + "id": "7ba74013-09e1-40b7-aa01-9cfa6b044da7", + "name": "Eva Chu" + }, + { + "id": "8ca9b6e8-652c-4e55-87cf-3482ab108ad5", + "name": "Eric ShangKuan" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 0 + } + ] + }, + { + "slotStart": "09:15:00", + "rooms": [ + { + "id": 40716, + "name": "101 階梯教室", + "session": { + "id": "582327", + "title": "Keynote - 展望 Generative AI 的現在與未來", + "description": null, + "startsAt": "2023-12-16T09:15:00", + "endsAt": "2023-12-16T10:40:00", + "isServiceSession": false, + "isPlenumSession": true, + "speakers": [ + { + "id": "dcb01237-48ff-4ea4-ad39-2d6fd4c4e5ee", + "name": "良斌 薛" + }, + { + "id": "b842b7cc-9e1a-40fe-9797-e95dd2638a3f", + "name": "貴融 吳" + }, + { + "id": "ceeb5615-ece9-4434-b08e-9b524d5842ce", + "name": "雅芳 林" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 0 + } + ] + }, + { + "slotStart": "10:50:00", + "rooms": [ + { + "id": 40716, + "name": "101 階梯教室", + "session": { + "id": "570643", + "title": "如何結合Google Colab及Intel OpenVINO來玩轉AIGC", + "description": "介紹Intel OpenVINO及2023.1最新功能,並說明如何結合Google Colab來運行OpenVINO Notebooks範例,最後展示數個不同應用的AIGC的案例。\r\n", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "17d4f42b-c983-4eac-a755-9629cc1b3679", + "name": "哲豪 許" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 0 + }, + { + "id": 40717, + "name": "201 階梯教室", + "session": { + "id": "566961", + "title": "Google Mediapipe 結合邊緣運算裝置", + "description": null, + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "7bdd5c44-cbba-494a-a01c-aa02bff5e81a", + "name": "吉弘 David 曾" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 1 + }, + { + "id": 40718, + "name": "301 階梯教室", + "session": { + "id": "565687", + "title": "Firebase Auth 與無密碼驗證的 WebAuthn API", + "description": "Firebase Auth 是 Firebase 的核心產品之一,提供了開發者方便的平台整合各種多樣化的登入方式,包含 Email、簡訊登入,以及社群登入如 Google、Facebook 和 GitHub 等。在這次的分享當中,我將與各位分享 Firebase Auth 的使用方式、最佳實踐,以及如何串聯最新的 WebAuthn Passkeys 作為安全的登入方式。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "6746e447-798f-4c2d-8107-1fd5ecb7d4c2", + "name": "Richard Lee" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213251, + "name": "Firebase" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 2 + }, + { + "id": 42716, + "name": "105 平面教室", + "session": { + "id": "564860", + "title": "Service Weaver Introduction", + "description": "Service Weaver is a programming framework for writing, deploying, and managing distributed applications. You can run, test, and debug a Service Weaver application locally on your machine, and then deploy it to the cloud with a single command.", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "8e6c99bd-885d-488f-b969-07e0806e6be2", + "name": "Kai-Chu Chung" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 3 + }, + { + "id": 42071, + "name": "202 平面教室", + "session": { + "id": "560680", + "title": "GeoAI解密: 基於谷歌雲平臺和谷歌地球引擎的的全球衛星數據分析", + "description": "在全球氣候變暖和城市化背景下,如何利用AI和空間大數據更好地幫助我們了解人與環境之間的關系?在这里你可以了解到:(1) 谷歌地球引擎是什麽:介紹谷歌地球引擎的基本架構,衛星數據集以及其內置的機器學習模型。(2) 谷歌雲平臺為海量衛星數據分析帶來了哪些機會:通過\"Dynamic World\"這一全球實時土地分類數據模型介紹如何利用谷歌雲平臺搭建自己的Vertex AI模型並且與地球引擎的衛星大數據數據結合在一起。(3) 新產品介紹:谷歌雲平臺新推出的2種環境API--太陽能API和空氣質量API,了解谷歌雲平臺如何基於衛星數據和AI 模型幫助評估空氣質量條件和優化太陽能電池板空間布局。適合聽眾:對衛星觀測數據和環境監測感興趣,並且有一定機器學習基礎知識的人群。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "fe200d79-0e36-4a49-928e-276b3940e135", + "name": "子裕 林" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 4 + }, + { + "id": 42072, + "name": "203 平面教室", + "session": { + "id": "559954", + "title": "因為怕改壞,所以把 TDD 技能點滿了", + "description": "眾所皆知自動化測試能帶來許多好處,但往往在實際 Mobile Project 開發中會遇到種種困難。尤其是「UI」層的邏輯,光是寫測試就是一件不容易的事情,更何況使用 TDD!? 根據多年在業界的踩雷、實踐經驗,幫助大家一起踏著講者的屍體前進,把 TDD 從「不可能」變成「可能」!", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "e3a01790-92f0-4cd4-a20a-9fa31855948b", + "name": "Hsuanhao Wang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 5 + }, + { + "id": 42073, + "name": "204 平面教室", + "session": { + "id": "553812", + "title": "跟著我熟悉 Dart 3,這些高效語法你需要知道!", + "description": "Dart 3 隨著 Flutter 3.10 發布,進行了一次大改版,達成了 100% sound-null safety,代表所有的屬性、變數都要聲明是否為 nullable,它的作用能讓專案的編譯更有效率、速度更快,也能讓專案的穩定性提升,減少不必要的錯誤和崩潰發生。另外也新增了幾種語言特性 Record、Pattern、Class-Modifier 等等,在開發上給予很大的幫助,在許多情境的使用上更簡單而且可讀性高。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "5b1c1a89-599a-4999-be01-367382e63d27", + "name": "Yii Chen N/A" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 6 + }, + { + "id": 42074, + "name": "205 平面教室", + "session": { + "id": "565588", + "title": "Writing Testable Code with Layered Architecture and Mocking in Go", + "description": "沒有受測試保護的程式碼,就像處於裸奔狀態。正如《Clean Code》第九章所強調的,測試讓你能夠放心地進行程式碼修改。相反,即使你的程式碼設計得再出色,每次修改都可能引入潛在錯誤,讓你不敢輕易改動。測試覆蓋率越高,您就越能信心滿滿地進行修改,正因為測試提供了可靠的安全網,使修改變得能大膽進行!\r\n\r\n要讓程式碼容易進行單元測試,我們需要確保它具有隔離性且執行結果一致,避免測試受到外部因素(例如其他物件、函式、網路、資料庫)的干擾。這需要我們對單元內的依賴元件進行替代。為了實現這種易於替換的程式碼,我們需要落實一系列良好的實踐。\r\n\r\n本次分享將探討使用 Go 開發分層架構軟體時,我們應該考慮哪些關鍵因素,以提高程式碼的可測試性,並在此設計之上寫出良好的測試。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "76d2c4d8-544a-471c-a081-364fa6feddb4", + "name": "Jack Hung" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 7 + }, + { + "id": 42076, + "name": "303 平面教室", + "session": { + "id": "565844", + "title": "台灣酷兒聲音地圖:從設計發想到社會與技術實踐", + "description": "台灣酷兒聲音地圖是一個讓LGBTQ+和Ally社群能夠透過文字與錄音的形式,自在安全地分享與自身故事、心情的線上友善空間。在這個議程中,我們將分享這個空間的開發過程與甘苦談,包括藝術啟發、用戶體驗的考量、使用的技術、團隊合作與分工、以及測試過程。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "8eb63962-4fbf-45b1-bffd-96ce48b74eca", + "name": "Yu Lee" + }, + { + "id": "57647724-4c09-4a75-9da2-491b1a42ce84", + "name": "Munus Shih" + }, + { + "id": "7e52956a-8953-4372-a148-d17f8530430b", + "name": "HaoChe Hung" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213251, + "name": "Firebase" + }, + { + "id": 213361, + "name": "Web" + }, + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 42076, + "room": "303 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 8 + }, + { + "id": 42077, + "name": "304 平面教室", + "session": { + "id": "568093", + "title": "給 Android 工程師從零開始的 Jenkins", + "description": "身為 Android 工程師工程師一路走在 Jenkins 的路上不斷遇到痛點,想藉由這個分享減少大家在這條路上艱辛的過程。\r\n\r\n從在一開始接手處理問題,曾經看著佈署失敗的訊息讓人煩躁。\r\n\r\n或是看到設置好的腳本,可執行上的結果不如預期履履讓人挫敗。\r\n\r\n可當問題解決的時候,又有滿滿的成就感。\r\n\r\n如果你有以下痛點,歡迎來互相交流!\r\n\r\n身為 Android 工程師,想了解自動化佈署,但不知該如何下手!\r\n\r\n對於自動化有一點經驗,可是學習過程中困難重重,該如何更快上手知識呢?\r\n\r\n已經了解自動化佈署,可是如何發現痛點,要如何重構或調整流程呢?", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "171ccebb-f49f-4342-939f-8b3987e4c715", + "name": "Jean Yen" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 222878, + "name": "Android" + }, + { + "id": 223083, + "name": "DevOps" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 9 + }, + { + "id": 42078, + "name": "305 平面教室", + "session": { + "id": "581913", + "title": "使用 BQML + PaLM 分析半結構化應用程式 access log", + "description": null, + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:50:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "0f37170b-c7d1-4926-8e92-e8525d051b59", + "name": "Edward Chuang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42078, + "room": "305 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + "index": 10 + }, + { + "id": 42079, + "name": "306 平面教室", + "session": { + "id": "563883", + "title": "OpenTelemetry on GCP實戰", + "description": "給大家體會一下如何在60分鐘內,部署一個Python服務,並且加上包含Metrics, Log, 與Trace的三種監控。", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:50:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "cb61675c-7b74-4034-85db-9cfb0c2e2543", + "name": "Shawn Ho" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42079, + "room": "306 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 11 + }, + { + "id": 42080, + "name": "307 平面教室", + "session": { + "id": "558885", + "title": "Thread-blocking I/O is blocking your future (JVM)", + "description": "Gary 相信開發者可以通過負責任地將最新和穩定的技術應用於他們的產品中來構建一個更美好的世界。\r\n\r\n在這次演講中,他將介紹在微服務架構後端使用阻塞 I/O (Blocking I/O) 的常見陷阱,尤其是在 JVM 中,並分享他使用非阻塞 I/O (Non-blocking I/O) 的故事、最新的 Java 21 虛擬線程的突破、Kotlin Coroutine 和 Java 21 虛擬線程的主要區別。\r\n\r\n內容:\r\n\r\n- 在這個微服務架構時代,阻塞 I/O 如何變得更糟?\r\n- 為什麼開發人員仍在構建阻塞 I/O 應用程序?\r\n- 阻塞 I/O 和非阻塞 I/O 之間的性能差異是什麼? feat. Rust、C#、Nodejs、Spring MVC、Spring WebFlux\r\n- JVM 在 Java 21 之前的異步編程演進\r\n- JVM 突破 - Java 21 虛擬線程\r\n- 深入比較 Kotlin 1.9 Coroutine 和 Java 21 虛擬線程的根本區別", + "startsAt": "2023-12-16T10:50:00", + "endsAt": "2023-12-16T11:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "d71705f8-cb2d-497e-9201-1a61b5e09690", + "name": "Gary LO" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 12 + } + ] + }, + { + "slotStart": "11:40:00", + "rooms": [ + { + "id": 40716, + "name": "101 階梯教室", + "session": { + "id": "571381", + "title": "What's New in Android Studio", + "description": "An overview of some of the cool new tools in Android Studio (e.g. Studio Bot, Compose Tools, Direct Access). Some quick tips and learn from the audience their direct feedback. ", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "b6d5d32f-c10f-42af-a48c-8419ddce2b03", + "name": "Paris Hsu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 0 + }, + { + "id": 40717, + "name": "201 階梯教室", + "session": { + "id": "560149", + "title": "Introduction to Flutter Casual Games Toolkit", + "description": "An brief introduction to Flutter Games Toolkit", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "52c2733a-f66e-4843-b016-a8ce0033f621", + "name": "Cheng Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213251, + "name": "Firebase" + }, + { + "id": 213365, + "name": "Others" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 1 + }, + { + "id": 40718, + "name": "301 階梯教室", + "session": { + "id": "563701", + "title": "使用 Leptos 建立和部署 WASM 到 Google Cloud Platform (GCP)", + "description": "在這個緊湊的 10 分鐘分享中,我會介紹如何利用 Leptos 框架建立 WebAssembly (WASM) 產品,並將其快速部署到 Google Cloud Platform (GCP)。我將簡要介紹 Leptos 框架,展示如何利用它開發 WASM,以及如何利用 GCP 的資源來部署和優化 WASM 產品的運行。", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "c7837e68-5a45-4d61-b6b4-7905ac022618", + "name": "Bucky Chu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 2 + }, + { + "id": 42716, + "name": "105 平面教室", + "session": { + "id": "564821", + "title": "Future-Proofing Enterprise Conversations: Integrating NeMo-GuardRails & PaLM2", + "description": "探討如何運用 NeMo-GuardRails 確保溝通的合規性與安全性,同時借助 PaLM 2 模型的強大自然語言處理能力,開發出更具人性化的對話系統,提升企業級對話平台的成效。", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "29e9ee2f-e316-4829-bdb9-2fafdf7f3e8c", + "name": "Jimmy Liao" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + }, + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 3 + }, + { + "id": 42071, + "name": "202 平面教室", + "session": { + "id": "566327", + "title": "Architecting Reliable Event-Driven Applications on Google Cloud", + "description": "本演講將探討在 Google Cloud 上建立高度可靠的 event-driven 架構,其包括Microservices中Orchestration與Choreography溝通模式、exactly-once等機制。", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "e93c0e45-5d02-4938-ad16-37c2166a8a79", + "name": "Rich Lee" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 4 + }, + { + "id": 42072, + "name": "203 平面教室", + "session": { + "id": "566335", + "title": "不可能的任務!在網頁/ PWA 實現如 App 一樣原生體驗的 Bottom sheets (使用 Google IDX)", + "description": "【在 PWA 上實現原生 App 的 Sheet 體驗!】\r\n為了在自家的 PWA 追求與原生 App 類似的體驗,我們拆解 Framer Motion 的運作原理,實現連 Framer Motion 都做不到的高度響應式、多向拖曳的 Bottom Sheet,讓 PWA 的 Sheet 也能有類原生 App 體驗。\r\n\r\n本次分享中將學到:\r\n- Framer Motion 的運作原理\r\n- 開發小技巧!DevMode 展示\r\n- 逐步拆解:到底怎麼做到?\r\n- Google Project IDX 實例展示\r\n- 上手體驗!\r\n\r\n透過工程師的邏輯 + UI 設計師的經驗,終於攻克這個不可能的任務!", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "3fb70cac-e431-462b-9498-8a6150d92cad", + "name": "范愷祐 Kyo Fan" + }, + { + "id": "f97f4de8-cdb8-4dcd-8b30-7912e8a01335", + "name": "Huai-Chun Chang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 5 + }, + { + "id": 42073, + "name": "204 平面教室", + "session": { + "id": "563977", + "title": "Flutter 適合商用嗎?", + "description": "Flutter 隨著1.x 的推出,快速迭代到 3.x\r\n它到底適不適合拿來開發?\r\n一般的專用適合嗎?", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "8dc146ad-848a-445a-81ec-c58cfb38b8de", + "name": "楓 梁" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 6 + }, + { + "id": 42074, + "name": "205 平面教室", + "session": { + "id": "566149", + "title": "Next json for Go", + "description": "隨著 Go 在各領域的發展,json lib 廣泛使用在各個地方。但隨著需求不斷的增加,已經開始無法滿足大家的需求,開始有了規劃 v2 的構思,讓我們一起來看看於是大家對於下一代的 json lib 有什麼想法", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "10c950f3-669e-4dec-9618-0455f43a5b37", + "name": "GTB Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 7 + }, + { + "id": 42076, + "name": "303 平面教室", + "session": { + "id": "568446", + "title": "想談一場天長地久的戀愛 你要先懂 UX", + "description": "- 先讓我知道你工程師在想什麼,工作日常長什麼樣子\r\n- UX 在做什麼:我工程師跟UX有什麼關聯\r\n- UX Designer 的腦袋裝了什麼\r\n- 以UX principle 檢視產品開發", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "1f07e053-4cb0-4fc3-adbe-4664513383a5", + "name": "意晴 洪" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 223079, + "name": "Design" + } + ], + "sort": 4 + } + ], + "roomId": 42076, + "room": "303 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 8 + }, + { + "id": 42077, + "name": "304 平面教室", + "session": { + "id": "564530", + "title": "淺談 Golang v1.21 new function min, max, clear", + "description": "無論你是初學者還是經驗豐富的開發者,min、max和clear都是日常寫程式工作中的寶貴工具。本次就 trace min、max 和 clear 讓你可以更好地理解它們的功能和用法。", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "146c1ecd-25bb-48a4-baa4-ed51ccd6ef3d", + "name": "員亨 郭" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 9 + }, + { + "id": 42080, + "name": "307 平面教室", + "session": { + "id": "567019", + "title": "Taiwan Kotlin User Group 分享", + "description": "Taiwan Kotlin User Group 如何利用 Google Meet 、Google 雲端硬碟等技術管理社群大小事", + "startsAt": "2023-12-16T11:40:00", + "endsAt": "2023-12-16T12:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "bcbfae97-c963-4955-bbde-95198f9480ec", + "name": "Recca Chao" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 222874, + "name": "Kotlin" + } + ], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 12 + } + ] + }, + { + "slotStart": "13:00:00", + "rooms": [ + { + "id": 40716, + "name": "101 階梯教室", + "session": { + "id": "568630", + "title": "多模態模型-Gemini", + "description": "Gemini(雙子星)是Google最新發表的多模態模型(Multimodal models),可支援多種輸入包含文字、語音、影像、影片等,本主題主要分享Gemini的最新資訊,包含模型家族、功能以及技術突破。", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "46e46c77-a1aa-4c41-b392-fa6922826244", + "name": "Jerry Wu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + "index": 0 + }, + { + "id": 40717, + "name": "201 階梯教室", + "session": { + "id": "568610", + "title": "為什麼一卡通決定採用 KMP 作為跨平台方案 - Let's talking about KMP", + "description": "Mobile APP 的跨平台開發一直都是一個 big issue,近期以來聲量水漲船高的 Flutter、meta (formerly Facebook) 推出的 React Native,Kotlin Multiplatform for mobile 作為跨平台解決方案與上述提到的兩種不同,擁有對 Native UI 整合上的優勢\r\n\r\n在這個 session 裡,我們會介紹 Kotlin Multiplarform for mobile 在一卡通的實作、我們如何利用 Kotlin Multiplatform for mobile 對 Native UI 的整合優勢 reform legacy code,減少在開發中會重複遇到的問題,最終達到或提高 Native user 所期望的 UX 體驗", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "b14a455a-bb90-4391-b92b-3940d28416c1", + "name": "Calvin Huang" + }, + { + "id": "ea2db839-45db-4185-a621-22046e9b8810", + "name": "宇軒 林" + }, + { + "id": "afc5a134-d929-4571-81bd-8de4ceebf990", + "name": "Harry Hsu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 1 + }, + { + "id": 40718, + "name": "301 階梯教室", + "session": { + "id": "553295", + "title": "10 Years into Android Gradle Plugin: Unraveling the Mysteries of Gradle.", + "description": "Understanding Gradle and the Android Gradle Plugin (AGP) is crucial in Modern Android development. Marking the 10th anniversary of AGP, this presentation delves into the intricacies of the AGP and Gradle learning journey, highlighting their primary challenges. Attendees will gain insights into AGP's foundational and emerging features, key Android development methodologies linked to Gradle, and practices for balanced reliance on Android Studio.\r\n\r\n在現代 Android 開發技術中,懂得如何運用 Gradle 及 Android Gradle Plugin (AGP) 是至關重要的。值此 AGP 十周年,本次分享會深度剖析 AGP 和 Gradle 學習之旅中的複雜性,並突出它們面臨的核心難題。參與者將深入了解 AGP 的基石特性和最新發展、與 Gradle 緊密結合的 Android 技術手法,以及在 Android Studio 中建議的使用策略。", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "2ab7a51f-5d46-4e5e-b9f1-53df68697012", + "name": "El Zhang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 213365, + "name": "Others" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 2 + }, + { + "id": 42716, + "name": "105 平面教室", + "session": { + "id": "570679", + "title": "用 LLM 來整理您的知識庫", + "description": "大型語言模型(Large language model, LLM)橫空出世,像個萬事通一樣,改變你我的生活,隨時想到的時候諮詢一下,立馬解決你的心中的疑問,甚至有些鮮少人討論的部份,他都有機會可以解決您的問題。\r\n這樣的專家能夠請他來幫助我們知識庫整理嗎?可以的,他擅長幫你整理半結構化的資料,就讓我們看看能夠有什麼有趣的應用吧!", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "95bbabe7-8115-4476-92a7-248236450835", + "name": "Johnny Sung" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 3 + }, + { + "id": 42071, + "name": "202 平面教室", + "session": { + "id": "571369", + "title": "防量子攻擊的開發套件", + "description": null, + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "5c935d23-5fda-4b16-b4bc-3bd09b6f0057", + "name": "Yang Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 222876, + "name": "Cyber Security" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 4 + }, + { + "id": 42072, + "name": "203 平面教室", + "session": { + "id": "566309", + "title": "Kimoji:使用 Jetpack Compose 的手勢 API 實作心情日記的相片圖庫系統", + "description": "Jetpack Compose 提供多種處理手勢的抽象層級,而選擇適當的抽象層級是 Compose 的常見課題。 因為 Compose 是由多個模組組合而成,使用適當的抽象層進行實作,可以盡可能減少元件依賴。 本次演講的目的是幫助開發者了解如何透過 Compose 提供的各層級手勢 API,來偵測使用者互動而產生的手勢。 為此,我們將實作一款心情日記 App:Kimoji 中的相片圖庫系統。本次演講對於了解自定義手勢的實作非常有幫助,開發者可以很簡單地使用 Compose 的指標輸入 API 來建構豐富的互動。", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "5351eb49-101a-4c74-a488-c0b9f70923dc", + "name": "John Lu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 5 + }, + { + "id": 42073, + "name": "204 平面教室", + "session": { + "id": "551746", + "title": "分享用 Google 生態系開發產品的心得與經驗", + "description": "FooTinder 是一個根據使用者的輸入資訊來給出美食建議的產品。背後用到了許多 Google 生態系的產品與技術,像是 Android、Flutter、Firebase、Kotlin、Google Cloud Platform 等等。這場演講來跟大家聊聊這個產品開發中的選擇與如今的樣貌。", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "82535cba-1678-4f08-9a8f-3df72603f5ce", + "name": "Jian-Min Huang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + }, + { + "id": 222874, + "name": "Kotlin" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 6 + }, + { + "id": 42074, + "name": "205 平面教室", + "session": { + "id": "564492", + "title": "implementing chatapp with go websocket", + "description": "introduce websocket protocol, implement ws with tcp and implement chatapp with my own ws library, and try to scale it !", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "c17b612e-4b71-4005-b254-c5bf0ad0dfc1", + "name": "Yale Hsu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 7 + }, + { + "id": 42076, + "name": "303 平面教室", + "session": { + "id": "580022", + "title": "Ask Me Anything (AMA) Afternoon Tea (Discussion)", + "description": "歡迎帶中餐或下午茶、點心來討論。討論會屬於一個互相協助、腦力激盪與共同成長的一個環境。本次我們沒有設定特別的主題,邀請從事 UXer, Dev 和 PM/PJM/PO 的朋友們來參加。在工作上遇到的困難、問題、或是在閱讀任何相關書籍有不懂的地方,亦或是職涯的探討、怎麼處理專案管理、跨部門溝通等等大小事等,就讓我們一起在這短短的 40 分鐘一起討論、互相支持與協助。[#AMA]", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "7ba74013-09e1-40b7-aa01-9cfa6b044da7", + "name": "Eva Chu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 42076, + "room": "303 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + "index": 8 + }, + { + "id": 42077, + "name": "304 平面教室", + "session": { + "id": "568099", + "title": "Artificial Intelligence Tools", + "description": "Leveraging AI tools at work", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T13:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "ea4b26a5-41ae-4c8e-8c63-20198edf7999", + "name": "Praveen Chittem" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 9 + }, + { + "id": 42078, + "name": "305 平面教室", + "session": { + "id": "581914", + "title": "使用 PaLM 生成 SQL 語句", + "description": null, + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T14:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "0f37170b-c7d1-4926-8e92-e8525d051b59", + "name": "Edward Chuang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42078, + "room": "305 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + "index": 10 + }, + { + "id": 42079, + "name": "306 平面教室", + "session": { + "id": "557702", + "title": "像個資深工程師一樣寫程式 - Act like a Flutter Senior", + "description": "能寫出教科書上的程式,看起來就像是初學者,那麼要怎麼樣寫程式,還要看起來很厲害的樣子呢?歡迎和新手村村長一起做一個道場練習。\r\nCoding style matters. If you code like a freshman, you are just a copycat from the textbook. How to code like a senior? Welcome to DOJO of Flutter Village for Rookies.", + "startsAt": "2023-12-16T13:00:00", + "endsAt": "2023-12-16T14:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "dc534b2a-a812-4b90-9dd3-57c0ca380df9", + "name": "AKI Yu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42079, + "room": "306 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 11 + } + ] + }, + { + "slotStart": "13:50:00", + "rooms": [ + { + "id": 40716, + "name": "101 階梯教室", + "session": { + "id": "565878", + "title": "Advanced Knowledge Management with Generative AI", + "description": "使用生成式AI, Vector Store, BigQuery做Issue / Ticket管理, 搜尋及分析 ", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "48ecd2e5-51c3-4aec-99d4-0fa0718f92e8", + "name": "Michael Chi" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 0 + }, + { + "id": 40717, + "name": "201 階梯教室", + "session": { + "id": "551850", + "title": "跟 Flutter 作伴的這五年", + "description": "我從 2018 年開始接觸 Flutter 開發,從一開始的小玩具,到實際使用 Flutter 開發商業產品,一路做過簡單的手機 app,到音樂/語音助理/車用等不同的應用,也一路拓展到桌面應用。我想分享這五年的探索與冒險。", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "55c4d43e-e1dc-4924-b4eb-15c59a5affdc", + "name": "Weizhong Yang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 1 + }, + { + "id": 40718, + "name": "301 階梯教室", + "session": { + "id": "562930", + "title": "Advance Bundle", + "description": "Bundle is very basic element in Android development, but have you ever have a second thought on how/when to use it?\r\nIn this talk, we'll revisit the Bundle design, timing of using it and even the alternative in MVVM.", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "07edbf1e-9509-4800-84f7-279093e87016", + "name": "Tim Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 2 + }, + { + "id": 42716, + "name": "105 平面教室", + "session": { + "id": "566333", + "title": "GCP 監控、自動化與合規", + "description": "從一個 SRE 的角度分享及探討自身純雲端、純 SaaS 的公司為何要做監控?有哪些自動化的最佳實踐可以導入?以及那些為了要過資安認證的經驗分享。", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "fc15701d-e89e-413d-b669-73f4011a35ea", + "name": "Johnny Yeng" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 3 + }, + { + "id": 42071, + "name": "202 平面教室", + "session": { + "id": "564714", + "title": "如何進一步強化App資安", + "description": "App安全面臨的挑戰日趨嚴峻,如何從方方面進行強化,成了現今刻不容緩的首要之務.", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "7c425327-0d8d-4b33-9f39-72d7c7a44909", + "name": "Rick Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222876, + "name": "Cyber Security" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 4 + }, + { + "id": 42072, + "name": "203 平面教室", + "session": { + "id": "553860", + "title": "Android 端爬蟲實戰! 利用 AccessibilityService 完成爬螢幕自動化工作", + "description": "在 Mobile First 的浪潮下, 有許多新興服務已不再提供網頁版資訊 如果只有 APP 用戶端, 還能夠像在 html 上一樣爬取資料嗎? 本議程將分享對此問題的思考過程 介紹 Android 上的 Accessibility Service 是什麼 為什麼選用這個方法 我碰到 Accessibility Service 使用上的限制 以及最終使用 Accessibility Service 來實現自動化的心得", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "4b130f74-4876-4b51-a96c-870a149cfdbc", + "name": "Yuijuhn Ting" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 5 + }, + { + "id": 42073, + "name": "204 平面教室", + "session": { + "id": "562931", + "title": "從 Flutter 開始你的獨立遊戲開發", + "description": "Flutter 在跨平台與繪圖引擎的採用,讓他在遊戲領域有著巨大的潛力。讓我們乘著這股風開始遊戲開發吧!", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "066461da-06f3-4110-ac65-9e41a4700af2", + "name": "Dorara Hsieh" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 213361, + "name": "Web" + }, + { + "id": 213365, + "name": "Others" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 6 + }, + { + "id": 42074, + "name": "205 平面教室", + "session": { + "id": "564489", + "title": "如何打造一個高效的 web framework routing", + "description": "在實作一個 web application 時,通常會使用開源的 web framework,這些 framework 通常會封裝許多功能,其中最重要功能之一就是 routing,且 routing 功能實作會大大影響你的 web application 處理每個 request 的效能,因此就讓我們探討一下在 golang 中常見的 web framework 是如何實作高效能的 routing 機制。", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "c8509f89-9c12-4941-ab86-a8ef5f8d6ce9", + "name": "銘佑 徐" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 7 + }, + { + "id": 42076, + "name": "303 平面教室", + "session": { + "id": "555688", + "title": "Flutter for mobile: full production app in 2hrs", + "description": "A full length workshop to build a Chat app for Android and iOS, with Flutter frontend, Firebase Backend, GitHub Action as CI pipeline and Codemagic as CD pipeline. This workshop aims to give a complete guide to build an app with Flutter and Firebase, then verify the build continuously using GitHub Action, and finally deploy the mobile version (Android and iOS) using Codemagic", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "e2c238da-ccae-4220-8ba0-92937ba4256b", + "name": "Suesi Tran" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 213251, + "name": "Firebase" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42076, + "room": "303 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 8 + }, + { + "id": 42077, + "name": "304 平面教室", + "session": { + "id": "568100", + "title": "Evolution of Transformers", + "description": "In 2018, GPT model changed the course of AI and deep learning. Now, we have several applications based on transformer model which benefits millions of people around the globe. In this talk, I would like to present the intution behind transformer models, discuss few architecture and application of the transformer model in Natural Language Processing and Computer Vision tasks. ", + "startsAt": "2023-12-16T13:50:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "71c0a391-3444-4865-8984-1eb9558e1a70", + "name": "Anjana Kumar" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 9 + } + ] + }, + { + "slotStart": "14:00:00", + "rooms": [ + { + "id": 42080, + "name": "307 平面教室", + "session": { + "id": "589716", + "title": "回顧2023 及Kotlin Multiplatform 最新消息 [Kotlin 中文開發者大會聯播]", + "description": "開場將由JetBrains 技術傳教士范聖佑與Kotlin 團隊專門負責KMP 方向的傳教士Pamela Hill 搭配,由聖佑先為大家回顧2023 年Kotlin 生態的重點更新,再由Pamela 帶來Kotlin Multiplatform 的第一手消息,想知道最新的Kotlin 尖端技術就聽這場!", + "startsAt": "2023-12-16T14:00:00", + "endsAt": "2023-12-16T14:30:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "25bb137e-b9bb-48d2-aa01-53b53067be48", + "name": "聖佑 范" + }, + { + "id": "ec5100a9-f716-49ba-868a-d21a2fd6314b", + "name": "Pamela Hill" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + "index": 12 + } + ] + }, + { + "slotStart": "14:10:00", + "rooms": [ + { + "id": 42078, + "name": "305 平面教室", + "session": { + "id": "566224", + "title": "Let's build a URL shortener in Go", + "description": "帶大家用 golang 做一個縮網址功能", + "startsAt": "2023-12-16T14:10:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "e1ee4c87-62c0-40c8-990d-6995347e4841", + "name": "Cheng-Yu Chung" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42078, + "room": "305 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 10 + }, + { + "id": 42079, + "name": "306 平面教室", + "session": { + "id": "553639", + "title": "跨平台應用程式開發-Flutter工作坊", + "description": "Flutter 是新興的 Mobile App 開發工具,只需要寫一套程式碼,就能在 Android 與 iOS 等多平台執行,甚至可以用相同語言寫後端。\r\n在這個 Workshop 中,我們會使用 Dart 語言實作後端,並在一個已經具備基礎畫面的 Flutter app 中進行網路請求取得後端資料並顯示。\r\n\r\n本場活動需要參與者具備以下經驗:\r\n1. 具備 Dart 基礎程式語言能力\r\n2. 具備 Flutter 基礎知識\r\n\r\n本場活動需要參與者具備以下設備環境:\r\n1. 開發電腦,並需要具備足夠的剩餘空間\r\n2. 在家預先安裝好 Flutter 環境,並可以運行 App 或 Web\r\n3. Dart \">=3.0.0 <4.0.0\"\r\n4. Flutter 3.16.0", + "startsAt": "2023-12-16T14:10:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "2b34047f-4543-4677-895d-5fd201a88800", + "name": "斌權 張" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42079, + "room": "306 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 11 + } + ] + }, + { + "slotStart": "14:30:00", + "rooms": [ + { + "id": 42080, + "name": "307 平面教室", + "session": { + "id": "589717", + "title": "Kotlin Multiplatform:跨平台開發的後起之秀 [Kotlin 中文開發者大會聯播]", + "description": "由美團多平台開發專家劉銀龍,為大家介紹他們在選擇多平台技術時的經驗,並說明美團內部是如何透過Kotlin Multiplatform 實作多平台開發,過程中遇到的問題和解決方案。", + "startsAt": "2023-12-16T14:30:00", + "endsAt": "2023-12-16T15:00:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "3eee1f76-2be1-4b31-93fe-dbdfe269a335", + "name": "銀龍 劉" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + "index": 12 + } + ] + }, + { + "slotStart": "14:40:00", + "rooms": [ + { + "id": 40716, + "name": "101 階梯教室", + "session": { + "id": "563667", + "title": "前端模組解放運動", + "description": "對前端工程師來說,雖然現代的瀏覽器都已經原生支援 ESM,或是現代的 bundler 都能幫我們把專案用到的套件打包成更精簡的檔案,但開發過程中那個傳說中深不見底的 node_modules 目錄似乎還是避免不了...\r\n\r\n如果不打包的話可以嗎?來來來,讓我跟你介紹一下 importmap :)", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "6a2bb931-6f51-4e37-b907-b12a17eb4745", + "name": "見龍 高" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 0 + }, + { + "id": 40717, + "name": "201 階梯教室", + "session": { + "id": "555355", + "title": "Angular 17 - Control Flow 全新體驗", + "description": "Control Flow 是 Angular 17 推出的全新功能,除了提供更簡潔的樣板語法以外,還額外添加了許多不可思議的超能力!本次分享將介紹最新的 Angular Control Flow 語法,搭配一些 Angular 17 的新 feature,寫出對開發者與使用者體驗都一級棒的程式!", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "ededcdda-e0a5-47c9-8adc-34f759ea2271", + "name": "Mike Huang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 1 + }, + { + "id": 40718, + "name": "301 階梯教室", + "session": { + "id": "568319", + "title": "整合 Vertex AI 與開源工具快速打造 AI 產品原型", + "description": "AI 技術進展迅速,雲端的 AI API 如 Vertex AI 能用較低成本就能使用先進的 AI 技術與功能。 \r\n\r\nVertex AI 提供多種語言模型、圖像生成模型及其他的 AI 能力,\r\n\r\nVertex AI 提供多種語言模型,可用於各種任務,包括:文本分類、問答、摘要、翻譯等。機器翻譯支持 100 多種語言。而對話式 AI (AI 聊天機器人) 可用於客戶服務、銷售、營銷等。 圖像生成方面, Vertex AI 提供 Imagen,這是一種圖像生成模型,可用於創建逼真的圖像協助設計與創作。\r\n\r\n如能搭配開源 dashboard 工具如 gradio, dash, 開源 AI 模型如 whisper, stable diffusion, llama, 以及資料庫等等工具,就能快速將概念打造成原型,可幫助企業在各個領域進行創新,並且快速評估可行性與風險。\r\n\r\n我們將會先簡單介紹 Vertex AI 的功能,相關開源生態系的特點,以及整合的流程及可能性。", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "e20a6f42-21eb-426f-a87c-ff0f1bb59bbe", + "name": "TJ Wei" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + "index": 2 + }, + { + "id": 42716, + "name": "105 平面教室", + "session": { + "id": "560632", + "title": "ML不再是專家的遊戲:Google試算表的No-code ML神器", + "description": "ML不再是專家的遊戲:Google試算表的No-code ML神器\r\n\r\n在數據驅動的時代,機器學習(ML)已成為解決複雜問題的利器。但對許多人來說,ML似乎仍是一個遙不可及的技術領域。Google試算表的最新功能打破了這一局限,使得每一位用戶都可以輕鬆地利用ML技術,而不需要撰寫任何程式碼。本次演講,我們將帶您深入了解這一神奇的功能,探討它如何為各行各業帶來價值,並示範如何輕鬆運用它來解決實際問題。無論您是初學者還是專家,都可以在這裡發現ML新的可能性。", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "07f9c3c5-c8e6-4187-8bc6-c6f17129faa8", + "name": "Jian An Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 3 + }, + { + "id": 42071, + "name": "202 平面教室", + "session": { + "id": "550398", + "title": "Next-Gen Infrastructure as Code:CDK for Terraform, with Real-world Argo CD Examples", + "description": "- Terraform Introduction\r\n- Before and after CDKTF\r\n- What CDKTF can do in GCP\r\n- Video demo - One Click to bring up Argo CD website in GKE within 20 mins ", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "9a95f75e-fdd9-42b2-9fda-aab3c617f134", + "name": "Chuang Jason" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 4 + }, + { + "id": 42072, + "name": "203 平面教室", + "session": { + "id": "570353", + "title": "Android performance 最佳化", + "description": "提供性能優化的技巧和建議,以確保應用程式在各種設備上運行流暢。", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "5232160b-f9d1-471d-8002-f30c404941dc", + "name": "Takuma Lee" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222878, + "name": "Android" + }, + { + "id": 222874, + "name": "Kotlin" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 5 + }, + { + "id": 42073, + "name": "204 平面教室", + "session": { + "id": "564753", + "title": "用 Flutter 開發產品真的可行嗎?真實跨平台 App 開發之道", + "description": "Flutter 為 Google 力推的新跨平台框架,使用 Dart 語言只要寫一份程式碼就可以同時運行在 iOS 與 Android 雙平台上。然而,市場上已經存在許多跨平台解決方案,那麼,Flutter 到底有什麼獨特之處?使用 Flutter 來開發產品究竟有何優勢和限制?\r\n\r\n在這個議程當中,將分享富果團隊如何使用 Flutter 重新打造了原本基於 Web 的 App,以及目前團隊使用 Flutter 開發的實戰經驗與工作流程。我們將誠實地討論使用 Flutter 的優劣勢,同時也深入探討所遇到的挑戰。最後再來談談綜合這些經驗,哪些團隊適合使用 Flutter 開發。", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "69e97ccc-1b07-4f1c-aeca-7433e6b2de82", + "name": "劉 浩瑋" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 222877, + "name": "Flutter" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 6 + }, + { + "id": 42074, + "name": "205 平面教室", + "session": { + "id": "564518", + "title": "如何在 Golang 簡單使用有限狀態機 (FSM)", + "description": "我喜歡領域驅動設計 (DDD) 的想法,一般處理 domain object 特定欄位的狀態變化通常需要撰寫大量if條件,這樣的做法容易出錯。因此,開發了一個簡單的 FSM 工具,以提供更簡潔的方式管理狀態,幫助開發人員更輕鬆地維護程式碼。\r\nhttps://github.com/KScaesar/easyFSM", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "96c3a2a2-93ae-4cce-b7e5-2995c29bdaaa", + "name": "旻峯 蔡" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + }, + { + "id": 222873, + "name": "Golang" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 7 + }, + { + "id": 42077, + "name": "304 平面教室", + "session": { + "id": "568095", + "title": "How to evaluate large language models", + "description": "I will discuss my own experiences and what I have learned about an important question when working with large language models: \"How do I know if it is any good?\"", + "startsAt": "2023-12-16T14:40:00", + "endsAt": "2023-12-16T15:20:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "46a9eed6-160b-4613-b5aa-f69873d71b6f", + "name": "Daniel Eberts" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 9 + } + ] + }, + { + "slotStart": "15:00:00", + "rooms": [ + { + "id": 42080, + "name": "307 平面教室", + "session": { + "id": "589718", + "title": " 做個另類Kotlin 開發者:從零入門Kotlin 編譯器外掛 [Kotlin 中文開發者大會聯播]", + "description": "Kotlin 編譯器也支援外掛開發,換句話說,透過外掛,開發者可以改變Kotlin 開發者的行為,大大釋放了開發的可能性。本場將由在Meta 倫敦分部,負責撰寫內部建置工具的黃惠勤,為大家進行一場Kotlin 編譯器外掛開發入門課。透過她的分享,將會對編譯器底層及相關必備技能有更進一步的認識。", + "startsAt": "2023-12-16T15:00:00", + "endsAt": "2023-12-16T15:40:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "33e721b4-9e42-401b-b4a7-b2eecf2c3d1d", + "name": "惠勤 黃" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + "index": 12 + } + ] + }, + { + "slotStart": "15:30:00", + "rooms": [ + { + "id": 40716, + "name": "101 階梯教室", + "session": { + "id": "559240", + "title": "使用 MakerSuite 與 PaLM API 快速打造 Generative AI 原型設計", + "description": "在開發 LLM 應用程式前都需要不斷的對 Prompting Text 進行試驗,而這個過程可能相當曠日廢時,透過 Google 推出的 MakerSuite 可以在 No-code 的架構下輕鬆的管理與實驗各種不同的提示詞,並且可以輕易的搭配 PaLM API 快速打造各類型的 LLM 應用程式!", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "245ec8d9-dd6e-499b-a9ce-b40755e2ad2b", + "name": "Will 保哥" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 40716, + "room": "101 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 0 + }, + { + "id": 40717, + "name": "201 階梯教室", + "session": { + "id": "554618", + "title": "Empowering Community-Driven Learning through Serverless Practice", + "description": "社群的力量非常強大,身為開發者的你我除了上班 Coding,下班也會研究許多 Open Source 的內容,其中也會做許多的 side project 來實驗,但如何佈署到 public cloud 上以及選擇相關的服務也有學問在,希望這次議程能夠讓大家在閒暇之餘開發的 side project,也能找到個好歸屬!", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "ff6e6408-66f6-4e81-813f-40af6f3c7492", + "name": "NiJia Lin" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213361, + "name": "Web" + }, + { + "id": 213365, + "name": "Others" + } + ], + "sort": 4 + } + ], + "roomId": 40717, + "room": "201 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 1 + }, + { + "id": 40718, + "name": "301 階梯教室", + "session": { + "id": "564788", + "title": "App Modernization - GKE 容器平台 101", + "description": "在本議程中,除了簡介 GKE (Google Kubernetes Engine) 容器平台之外,將會展示在 GCP 中如何建立 GKE 叢集,以及部署容器和應用程式,讓與會人員能夠快速理解,雲端原生及現代化應用程式的生命週期和部署流程。", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "150292c8-f15c-47a9-950d-886aa9d138bc", + "name": "Weithenn Wang" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 40718, + "room": "301 階梯教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 2 + }, + { + "id": 42716, + "name": "105 平面教室", + "session": { + "id": "565174", + "title": "雲與地的彼端 - 全面啟動PAIA 3D之K8S混合雲部署", + "description": "描述PAIA機器學習AI 線上遊戲平臺,如何將原先雲端AI運算環境,與地端的3D運算機器結合,承擔部份雲端運算的昂貴費用,與解決雲端和地端之間整合性的問題,達到無縫式的雲端與地端的持續部署。", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "4a4960d5-7d5a-4460-bcd0-71c23c7537ff", + "name": "Ivan Chiou" + }, + { + "id": "8aed0afc-2f07-4674-8fa7-a5a25463b4a4", + "name": "李 緒成" + }, + { + "id": "7053e662-2146-4435-9b35-c6545c98cb6c", + "name": "頌宇 張" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213361, + "name": "Web" + }, + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42716, + "room": "105 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 3 + }, + { + "id": 42071, + "name": "202 平面教室", + "session": { + "id": "562916", + "title": "活用 GCP Observability Tools - 以 Golang 為例", + "description": "本演講將介紹如何善用 GCP 上的 Logging, Metrics, Trace, Alert 等工具來實現即時偵測異常,並且能讓開發者方便地追蹤錯誤,以加快解決問題的速度。內容會使用 Golang 並搭配自建 Open Telemetry collector 作為範例來介紹如何實作整個流程。", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "33c40881-ef42-4200-899b-794bc18082e5", + "name": "Harry Chen" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + } + ], + "sort": 4 + } + ], + "roomId": 42071, + "room": "202 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 4 + }, + { + "id": 42072, + "name": "203 平面教室", + "session": { + "id": "565548", + "title": "在android上如何玩MediaPipe機器學習", + "description": "介紹如何在裝置上使用MediaPipe機器學習", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "a548e82d-2330-41f2-ba0c-c9177c98768c", + "name": "Kevin Chiu" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213247, + "name": "Mobile" + }, + { + "id": 213250, + "name": "AI/ML" + }, + { + "id": 222878, + "name": "Android" + } + ], + "sort": 4 + } + ], + "roomId": 42072, + "room": "203 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 5 + }, + { + "id": 42073, + "name": "204 平面教室", + "session": { + "id": "564886", + "title": "Google全家餐! 快速打造旅宿業最小化MVP", + "description": "我們是敦謙國際智能,Hexa敏捷戰隊,六月中我們團隊成立,為了最快將產品MVP推向變遷快速的旅宿市場並快速取得回饋,我們採用Google全家餐解決方案,前端Angular,後端Golang,主機GCP,只要Google有提供的解決方案通通優先採用,來看看我們如何三個月打造全新MVP,一起踩在巨人的肩膀上", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "39b3252f-fe14-47ff-9161-c96018adc337", + "name": "品毅 吳" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213243, + "name": "Introductory and overview" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213248, + "name": "Cloud" + }, + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 42073, + "room": "204 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 6 + }, + { + "id": 42074, + "name": "205 平面教室", + "session": { + "id": "564520", + "title": "Golang Framework 是怎麼做出這些酷功能?", + "description": "在開發中,我們會用到一些 framework 來加速我們的開發,因為標准函式庫提供的功能還不足以滿足需求。常常使用框架也讓我開始思考:這些東西是怎麼做到的?\r\n\r\n1. log 如何分級:我們會希望 log 有不同等級的錯誤,像是 info, error, debug... 等等,從許多框架看看做法\r\n2. uber/zap 中的 encoder:把想要的資訊轉換成 json 格式,zap 做了什麼來提高效能?\r\n3. gin 是如何利用「重複使用」這個大方向來提升效能。\r\n4. builder pattern:這是許多框架都會提供給使用者的設計模式,我們會來看看如何實現它。\r\n\r\n世界各地的人都不約而同的發明了弓箭,不同的開發者也選擇了相同的作法。學習高手們是如何寫出高效的程式碼,並學習設計模式。", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "66f72597-47ba-40a0-afb6-7ef96d954ffa", + "name": "Shinobi Yeh" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213233, + "name": "中文" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213244, + "name": "Intermediate" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213361, + "name": "Web" + } + ], + "sort": 4 + } + ], + "roomId": 42074, + "room": "205 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 7 + }, + { + "id": 42077, + "name": "304 平面教室", + "session": { + "id": "568096", + "title": "Large Language Model:Prompt Engineering, Fine-Tuning.", + "description": "Large Language Models (LLMs) stand at the forefront of AI advancements. The art of prompt engineering can significantly refine their outputs, making them more contextually apt. Fine-tuning tailors LLMs to specific tasks but poses challenges, from technicalities to ethical concerns. Robust frameworks for assessing LLM outputs are crucial, emphasizing the need for human oversight. The future of LLMs beckons a collaborative approach to harness their vast potential responsibly.", + "startsAt": "2023-12-16T15:30:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "9423e0c4-9faa-4120-9054-3f9a997febc8", + "name": "Subhajit Nanda" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [ + { + "id": 213230, + "name": "English" + } + ], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [ + { + "id": 213245, + "name": "Advanced" + } + ], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [ + { + "id": 213250, + "name": "AI/ML" + } + ], + "sort": 4 + } + ], + "roomId": 42077, + "room": "304 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": true + }, + "index": 9 + } + ] + }, + { + "slotStart": "15:40:00", + "rooms": [ + { + "id": 42080, + "name": "307 平面教室", + "session": { + "id": "589719", + "title": "使用Reactive Quarkus 搭配Coroutine 及MongoDB 做後端開發 [Kotlin 中文開發者大會聯播]", + "description": "本場由電獺副執行長蘇芃翰介紹他們團隊打造數位廣告聯播網服務時,是如何結合Kotlin、Coroutine、Quarkus 框架及MongoDB 等技術來實現後端服務,並分享使用Full Reactive Programming 開發是一種什麼樣的體驗。", + "startsAt": "2023-12-16T15:40:00", + "endsAt": "2023-12-16T16:10:00", + "isServiceSession": false, + "isPlenumSession": false, + "speakers": [ + { + "id": "7b9c6f43-d794-4125-ab19-dc42ccf33e66", + "name": "芃翰 蘇" + } + ], + "categories": [ + { + "id": 60908, + "name": "Language", + "categoryItems": [], + "sort": 3 + }, + { + "id": 60911, + "name": "Level", + "categoryItems": [], + "sort": 2 + }, + { + "id": 60914, + "name": "Tags", + "categoryItems": [], + "sort": 4 + } + ], + "roomId": 42080, + "room": "307 平面教室", + "liveUrl": null, + "recordingUrl": null, + "status": "Accepted", + "isInformed": true, + "isConfirmed": false + }, + "index": 12 + } + ] + } + ] + } +] \ No newline at end of file diff --git a/assets/speaker-badge.svg b/assets/speaker-badge.svg new file mode 100644 index 0000000..4f7ddb5 --- /dev/null +++ b/assets/speaker-badge.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/speakers.json b/assets/speakers.json new file mode 100644 index 0000000..194ef60 --- /dev/null +++ b/assets/speakers.json @@ -0,0 +1,2085 @@ +[ + { + "id": "dc534b2a-a812-4b90-9dd3-57c0ca380df9", + "firstName": "AKI", + "lastName": "Yu", + "fullName": "AKI Yu", + "bio": "Head of Flutter Village for Rookies, who APP and TEACH HOW TO APP, 新手村村長,一個寫APP的和教人寫APP的人", + "tagLine": "Head of Flutter Village for Rookies", + "profilePicture": "https://sessionize.com/image/7139-400o400o1-N3Co2WCt4f7S9yoVExdBPA.JPG", + "sessions": [ + { + "id": 557702, + "name": "像個資深工程師一樣寫程式 - Act like a Flutter Senior" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "71c0a391-3444-4865-8984-1eb9558e1a70", + "firstName": "Anjana", + "lastName": "Kumar", + "fullName": "Anjana Kumar", + "bio": "I am an AI Engineer working in Reseach and Developement team at ViewSonic Corporation.", + "tagLine": "AI Engineer", + "profilePicture": null, + "sessions": [ + { + "id": 568100, + "name": "Evolution of Transformers" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "c7837e68-5a45-4d61-b6b4-7905ac022618", + "firstName": "Bucky", + "lastName": "Chu", + "fullName": "Bucky Chu", + "bio": "滑板愛好者,軟體工程師,貓奴一枚", + "tagLine": "五倍學院, 軟體工程師", + "profilePicture": "https://sessionize.com/image/44d9-400o400o1-VtBBDGrNkzUVKaHpPqdath.jpg", + "sessions": [ + { + "id": 563701, + "name": "使用 Leptos 建立和部署 WASM 到 Google Cloud Platform (GCP)" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Twitter", + "url": "https://twitter.com/bucky0112", + "linkType": "Twitter" + }, + { + "title": "Blog", + "url": "https://buckychu.im/", + "linkType": "Blog" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "b14a455a-bb90-4391-b92b-3940d28416c1", + "firstName": "Calvin", + "lastName": "Huang", + "fullName": "Calvin Huang", + "bio": "Errand boy, always working on helping to fix tuns of problems.", + "tagLine": "一卡通票證有限公司研發群 RD Lead", + "profilePicture": "https://sessionize.com/image/2ccd-400o400o1-4b1k1L7HXzAw3ZdcwehhMc.png", + "sessions": [ + { + "id": 568610, + "name": "為什麼一卡通決定採用 KMP 作為跨平台方案 - Let's talking about KMP" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "52c2733a-f66e-4843-b016-a8ce0033f621", + "firstName": "Cheng", + "lastName": "Lin", + "fullName": "Cheng Lin", + "bio": "- Dual Product Manager at Flutter\r\n- Video Solutions Consultant at Google Ads", + "tagLine": "Flutter & Google Ads", + "profilePicture": "https://sessionize.com/image/77a2-400o400o1-scuapCXr1EyqdbS9oXi6MD.png", + "sessions": [ + { + "id": 560149, + "name": "Introduction to Flutter Casual Games Toolkit" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "e1ee4c87-62c0-40c8-990d-6995347e4841", + "firstName": "Cheng-Yu", + "lastName": "Chung", + "fullName": "Cheng-Yu Chung", + "bio": "Naughty engineer loves to smack talk.\r\nFreelancer, but open to work.\r\nLearning golang and looking for golang career opportunities now.", + "tagLine": "Golang Taiwan Volunteer", + "profilePicture": "https://sessionize.com/image/b4a6-400o400o1-s49fgGVMmyiWa1tKP16vdd.jpg", + "sessions": [ + { + "id": 566224, + "name": "Let's build a URL shortener in Go" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "9a95f75e-fdd9-42b2-9fda-aab3c617f134", + "firstName": "Chuang", + "lastName": "Jason", + "fullName": "Chuang Jason", + "bio": "Ruckus Networks DevOps", + "tagLine": "Ruckus Networks, DevOps, Certified AWS/GCP Professional Architect, Cloud Native", + "profilePicture": "https://sessionize.com/image/f6c2-400o400o1-QCQ1zDCNaeqGmpzf5MMR8Z.jpg", + "sessions": [ + { + "id": 550398, + "name": "Next-Gen Infrastructure as Code:CDK for Terraform, with Real-world Argo CD Examples" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Sessionize", + "url": "https://sessionize.com/chuang-jason", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "46a9eed6-160b-4613-b5aa-f69873d71b6f", + "firstName": "Daniel", + "lastName": "Eberts", + "fullName": "Daniel Eberts", + "bio": "Machine Learning Engineer, living in Taiwan for 6 years now and counting. I once co-founded a startup that developed software for the visually impaired in Germany before moving to Taiwan after meeting my wife here. Most of my experience is in C++ software development and embedded computer vision applications. Since June this year, my team and me focus on NLP and LLM applications.", + "tagLine": "Lead AI Scientist", + "profilePicture": null, + "sessions": [ + { + "id": 568095, + "name": "How to evaluate large language models" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "066461da-06f3-4110-ac65-9e41a4700af2", + "firstName": "Dorara", + "lastName": "Hsieh", + "fullName": "Dorara Hsieh", + "bio": "喜歡新科技,喜歡任何形式的藝術,喜歡創造驚喜", + "tagLine": "KryptoGO mobile tech lead", + "profilePicture": "https://sessionize.com/image/df18-400o400o1-9AKeLhixeHZrgk81C1iTns.png", + "sessions": [ + { + "id": 562931, + "name": "從 Flutter 開始你的獨立遊戲開發" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "X (Twitter)", + "url": "https://x.com/DoraraHsieh", + "linkType": "Twitter" + }, + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/dorara-hsieh-020538105/", + "linkType": "LinkedIn" + }, + { + "title": "Instagram", + "url": "https://www.instagram.com/doraraisme/", + "linkType": "Instagram" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/zhong-ying-xie", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "0f37170b-c7d1-4926-8e92-e8525d051b59", + "firstName": "Edward", + "lastName": "Chuang", + "fullName": "Edward Chuang", + "bio": "Edward 是 Google Cloud 的 Customer Engineer,他的專長在協助遊戲與零售電商行業的客戶如何使用 Google Cloud 的產品與技術來現代化既有的資訊基礎建設與應用服務,同時也能解決客戶的商業問題並且獲得技術的提升。同時也是倡導並推動企業客戶數位轉型的傳教士。\r\n\r\n在加入 Google 之前,Edward 有著超過 13 年的後端工程師、以及網站可靠度工程 (Site-Reliability Engineering, SRE) 的經驗。他的夢想是成為 Google Maps 街景車的駕駛。\r\n\r\nEdward is a Customer Engineer at Google Cloud specialists in Infrastructure Modernization in the Gaming, Retail/E-Commerce industries and advocates digital transformation for enterprise customers. Prior to Google, Edward had 13+ years of experience in backend engineering, site-reliability engineering (SRE), and dreaming of becoming the driver of the Street View Car of Google Maps.", + "tagLine": "Google Cloud", + "profilePicture": "https://sessionize.com/image/07cc-400o400o1-GLr3vyiGebtHV7okjPuMK3.jpg", + "sessions": [ + { + "id": 581913, + "name": "使用 BQML + PaLM 分析半結構化應用程式 access log" + }, + { + "id": 581914, + "name": "使用 PaLM 生成 SQL 語句" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "2ab7a51f-5d46-4e5e-b9f1-53df68697012", + "firstName": "El", + "lastName": "Zhang", + "fullName": "El Zhang", + "bio": "El, an Android GDE who currently resides in Singapore.\r\n\r\nI have worked on Android application infrastructure for years and enjoy exploring new technologies such as Gradle, AGP, KSP, bytecode transformation, modularity, etc. I delight in sharing Android development with the public via blog posts, podcasts, books, and conference presentations in English and Mandarin. In my spare time, I develop a number of interesting open-source plugins/utilities.\r\n\r\n2BAB is my ID used on all platforms.", + "tagLine": "Sr. Software Engineer", + "profilePicture": "https://sessionize.com/image/327d-400o400o1-D6wgyvQjKwDUR5S1ah2JEd.jpg", + "sessions": [ + { + "id": 553295, + "name": "10 Years into Android Gradle Plugin: Unraveling the Mysteries of Gradle." + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "X (Twitter)", + "url": "https://twitter.com/xx2bab", + "linkType": "Twitter" + }, + { + "title": "Blog", + "url": "https://2bab.com", + "linkType": "Blog" + }, + { + "title": "Books", + "url": "https://2bab.me/en/book/", + "linkType": "Other" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/2BAB", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "8ca9b6e8-652c-4e55-87cf-3482ab108ad5", + "firstName": "Eric", + "lastName": "ShangKuan", + "fullName": "Eric ShangKuan", + "bio": null, + "tagLine": "Developer Relations Program Maanger Google", + "profilePicture": "https://sessionize.com/image/fdd2-400o400o1-TYLQ6whAnJVJ5bwCYoNLzW.jpg", + "sessions": [ + { + "id": 585737, + "name": "Opening" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "7ba74013-09e1-40b7-aa01-9cfa6b044da7", + "firstName": "Eva", + "lastName": "Chu", + "fullName": "Eva Chu", + "bio": "TBD", + "tagLine": "UX, Dev", + "profilePicture": "https://sessionize.com/image/0a6c-400o400o1-fa91fd48-bc55-44c8-a332-612839fc1e2c.jpg", + "sessions": [ + { + "id": 585737, + "name": "Opening" + }, + { + "id": 580022, + "name": "Ask Me Anything (AMA) Afternoon Tea (Discussion)" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/xalienchu/", + "linkType": "LinkedIn" + }, + { + "title": "Facebook", + "url": "https://www.facebook.com/xalien.chu", + "linkType": "Facebook" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "d71705f8-cb2d-497e-9201-1a61b5e09690", + "firstName": "Gary", + "lastName": "LO", + "fullName": "Gary LO", + "bio": "Gary 是一位香港軟體架構師、Kotlin 愛好者、Kotlin GDE 和 Tech Influencer。他於 2016 年開始了 Kotlin 之旅,從構建 100% Kotlin Android FX 交易客戶端應用程序開始,比 Google 2017 年官方宣布對 Android 支持 Kotlin 早一年。\r\n\r\nGary 相信開發者可以通過負責任地將最新和穩定的技術應用於他們的產品中來構建一個更美好的世界。他致力於推動公司採用 Kotlin 進行 JVM 後端應用程序開發和 Kotlin 多平台移動研發。他為眾多開發人員教授 Kotlin 的獨特功能,使他們能夠精確地利用 Kotlin 的威力,更快地發佈業務功能並降低執行延遲。\r\n\r\n除了工作之外,Gary 還在他的 Facebook 頁面 Gap撈Tech(8,000 多名香港開發人員關注者)、部落格、GitHub、Stackoverflow 和社區活動上分享他的見解和專業的業界知識。他是 Kotlin 大中華區開發者大會、GDG DevFest 的演講嘉賓,分享最新的軟體開發技術。\r\n", + "tagLine": "Kotlin GDE, Kotlin 愛好者, 軟件架構師@Zuhlke", + "profilePicture": "https://sessionize.com/image/ef67-400o400o1-TerL98AravCKyKkT3Qxpkq.jpeg", + "sessions": [ + { + "id": 558885, + "name": "Thread-blocking I/O is blocking your future (JVM)" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "X (Twitter)", + "url": "https://twitter.com/gaplo917", + "linkType": "Twitter" + }, + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/logary917", + "linkType": "LinkedIn" + }, + { + "title": "Facebook", + "url": "https://facebook.com/gaplotech", + "linkType": "Facebook" + }, + { + "title": "Blog", + "url": "https://intl.gaplo.tech", + "linkType": "Blog" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "10c950f3-669e-4dec-9618-0455f43a5b37", + "firstName": "GTB", + "lastName": "Lin", + "fullName": "GTB Lin", + "bio": "A gopher who eat, code, sleep", + "tagLine": "Engineer ", + "profilePicture": "https://sessionize.com/image/bc71-400o400o1-N4wBrw1tg4L2GRFtq9HxSY.jpeg", + "sessions": [ + { + "id": 566149, + "name": "Next json for Go" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "7e52956a-8953-4372-a148-d17f8530430b", + "firstName": "HaoChe", + "lastName": "Hung", + "fullName": "HaoChe Hung", + "bio": "HaoChe Hung 是一位都市分析師與創意編碼師,致力於探索都市、人文與科技的交會。曾於紐約 BetaNYC 擔任 Urban Data Associate,參與公民科技的構想、設計與開發。目前擔任工作室 SpOnAct!(偶發集合)的創意編碼師一職。", + "tagLine": "SpOnAcT 偶發集合, 創意編碼師", + "profilePicture": "https://sessionize.com/image/cd71-400o400o1-J22b9fPgtMkeeDs7NfoWhs.jpeg", + "sessions": [ + { + "id": 565844, + "name": "台灣酷兒聲音地圖:從設計發想到社會與技術實踐" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/haoche-hung/", + "linkType": "LinkedIn" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "33c40881-ef42-4200-899b-794bc18082e5", + "firstName": "Harry", + "lastName": "Chen", + "fullName": "Harry Chen", + "bio": "Harry 是一位將程式設計視為休閒娛樂的開發者,喜歡學習各式各樣廣泛的技術。自從 2020 年開始接觸區塊鏈技術以後,他便對於這個領域變得非常熱衷。此外,Harry 也對使用自動化方式提高生產力具有濃厚興趣。", + "tagLine": "KryptoGO CTO", + "profilePicture": "https://sessionize.com/image/c145-400o400o1-E3obiQNdienB8CHvvePfzA.png", + "sessions": [ + { + "id": 562916, + "name": "活用 GCP Observability Tools - 以 Golang 為例" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Twitter", + "url": "https://twitter.com/PoJuiChen5", + "linkType": "Twitter" + }, + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/harry-chen-5a6856139/", + "linkType": "LinkedIn" + }, + { + "title": "Blog", + "url": "https://medium.com/@a00012025", + "linkType": "Blog" + }, + { + "title": "Company Website", + "url": "https://kryptogo.com", + "linkType": "Company_Website" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/harry-chen", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "afc5a134-d929-4571-81bd-8de4ceebf990", + "firstName": "Harry", + "lastName": "Hsu", + "fullName": "Harry Hsu", + "bio": null, + "tagLine": "一卡通票證有限公司 Sr. Software Engineer", + "profilePicture": null, + "sessions": [ + { + "id": 568610, + "name": "為什麼一卡通決定採用 KMP 作為跨平台方案 - Let's talking about KMP" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "e3a01790-92f0-4cd4-a20a-9fa31855948b", + "firstName": "Hsuanhao", + "lastName": "Wang", + "fullName": "Hsuanhao Wang", + "bio": "ISTP 哲學愛好者,滋事型軟體工程師", + "tagLine": "Shopback Mobile Engineer", + "profilePicture": "https://sessionize.com/image/b4d1-400o400o1-3KGF32opFctbFV2oJDgrPC.jpg", + "sessions": [ + { + "id": 559954, + "name": "因為怕改壞,所以把 TDD 技能點滿了" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Sessionize", + "url": "https://sessionize.com/hsuanhao-wang", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "f97f4de8-cdb8-4dcd-8b30-7912e8a01335", + "firstName": "Huai-Chun", + "lastName": "Chang", + "fullName": "Huai-Chun Chang", + "bio": "Team Memeber '20/'21/'22 @Google DSC NCCU | Frontend '21/'22 @GDSC SCSR", + "tagLine": "Core Team Memeber '23 @Google DSC NCCU、Frontend Lead '23 @Open NCCU", + "profilePicture": "https://sessionize.com/image/50d1-400o400o1-YSyBQfgvzdEm8GkCFLvbmj.jpg", + "sessions": [ + { + "id": 566335, + "name": "不可能的任務!在網頁/ PWA 實現如 App 一樣原生體驗的 Bottom sheets (使用 Google IDX)" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Sessionize", + "url": "https://sessionize.com/chang-huai-chun-harui", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "4a4960d5-7d5a-4460-bcd0-71c23c7537ff", + "firstName": "Ivan", + "lastName": "Chiou", + "fullName": "Ivan Chiou", + "bio": "Throughout my career, I have held roles as a Software Engineer, System Engineer, System Analyst, Project Manager, Product Manager, Scrum Master, and Front-end Manager. Currently, I am leveraging my expertise to lead software development, drive innovation, and introduce new front-end technology at PAIA Corp. My experience in multimedia integration and cross-functional collaboration has equipped me with valuable skills to effectively mentor and inspire the team, providing young engineers with guidance and hope for their future careers.", + "tagLine": "Mentor & Tutor at Program the world & PAIA", + "profilePicture": "https://sessionize.com/image/da39-400o400o1-SstDRTtbvcm8RPGj9W7t1y.jpg", + "sessions": [ + { + "id": 565174, + "name": "雲與地的彼端 - 全面啟動PAIA 3D之K8S混合雲部署" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/ivan-chiou-727b0721/", + "linkType": "LinkedIn" + }, + { + "title": "Blog", + "url": "https://agilist.ghost.io", + "linkType": "Blog" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/ivan-chiou", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "76d2c4d8-544a-471c-a081-364fa6feddb4", + "firstName": "Jack", + "lastName": "Hung", + "fullName": "Jack Hung", + "bio": "平常寫 Go、Python 以及研究 Kubernetes、Cloud Native 相關技術,喜歡探討最佳實踐和程式碼維護性。", + "tagLine": "Golang Taiwan Community, Backend developer", + "profilePicture": "https://sessionize.com/image/0867-400o400o1-XqGY5YcGYHXENtxVeqPXM3.png", + "sessions": [ + { + "id": 565588, + "name": "Writing Testable Code with Layered Architecture and Mocking in Go" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "171ccebb-f49f-4342-939f-8b3987e4c715", + "firstName": "Jean", + "lastName": "Yen", + "fullName": "Jean Yen", + "bio": "從事軟體開發近 10 年開發經驗,一開始踏入 JavaScript 的 App 跨平台方案,想念原生的美好回來 Java Android App 開發。從 2018 年開始全面投入 Kotlin 的懷抱,繼續寫著 Android App。", + "tagLine": "Android Developer ", + "profilePicture": "https://sessionize.com/image/3a54-400o400o1-3ByWqL911yrNggzGpnfVZL.jpg", + "sessions": [ + { + "id": 568093, + "name": "給 Android 工程師從零開始的 Jenkins" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "46e46c77-a1aa-4c41-b392-fa6922826244", + "firstName": "Jerry", + "lastName": "Wu", + "fullName": "Jerry Wu", + "bio": "Jerry老師是現任Google機器學習開發專家(GDE),專注在自然語言理解(NLU)。同時也是亞太智能機器(APMIC)的創辦人兼執行長。在亞太智能機器,Jerry帶領了產品和工程團隊,開發了基於GPT解決方案,榮獲了2023年第一個NVIDIA在全球的GPT產品「Caigun」。他的技術讓企業能夠構建自己的GPT對話式AI,並已經服務超過330萬人。他曾經是國立大學老師、汽車產業數據科學家,也是資料科學連續創業家,參與超過100個以上的資料科學專案,也培育超過上千名學生在機器學習應用領域發展。", + "tagLine": "執行長", + "profilePicture": "https://sessionize.com/image/1504-400o400o1-4NAG6kcExzL5Bfj5cCZ48p.jpeg", + "sessions": [ + { + "id": 568630, + "name": "多模態模型-Gemini" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Facebook", + "url": "https://www.facebook.com/jerrywu2016/", + "linkType": "Facebook" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "07f9c3c5-c8e6-4187-8bc6-c6f17129faa8", + "firstName": "Jian An", + "lastName": "Lin", + "fullName": "Jian An Lin", + "bio": "熱愛程式開發,對開源生態懷有濃厚的興趣與熱情。現今於 Moxa 網路設備商從事自動化測試工作,致力於推動技術進步與創新。", + "tagLine": "Moxa Inc. SQA Automation Testing Engineer", + "profilePicture": "https://sessionize.com/image/3b1c-400o400o1-RhqGoSAAFnrGUGVQ4C3JsW.jpg", + "sessions": [ + { + "id": 560632, + "name": "ML不再是專家的遊戲:Google試算表的No-code ML神器" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/jiananlin1104", + "linkType": "LinkedIn" + }, + { + "title": "Facebook", + "url": "https://www.facebook.com/Linjianan1104/", + "linkType": "Facebook" + }, + { + "title": "Company Website", + "url": "https://www.ui.com", + "linkType": "Company_Website" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/jian-an-lin", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "82535cba-1678-4f08-9a8f-3df72603f5ce", + "firstName": "Jian-Min", + "lastName": "Huang", + "fullName": "Jian-Min Huang", + "bio": "Vincent 是一個興趣廣泛的開發者,過去經驗主要專注在 JVM Backend 與 DevOps。他目前是 純函式公司的共同創辦人,同時也是 Kotlin 項目的 Google Developer Expert。", + "tagLine": "Co-founder", + "profilePicture": "https://sessionize.com/image/ab6c-400o400o1-EPoPHNhYasKq5aq9fmxUVK.jpg", + "sessions": [ + { + "id": 551746, + "name": "分享用 Google 生態系開發產品的心得與經驗" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "29e9ee2f-e316-4829-bdb9-2fafdf7f3e8c", + "firstName": "Jimmy", + "lastName": "Liao", + "fullName": "Jimmy Liao", + "bio": "Jimmy Liao 先後就職於 Microsoft/InfuseAI/Appier/IBM 。專業技能橫跨應用程式、手機應用、廣告投放、機器學習專案開發,近期致力於 Generative AI、LLM 相關應用開發推廣,協助客戶技術概念落實,以及技術諮詢。\r\n\r\n日常生活就是跑步,雖然完成 15 場全程馬拉松,但是還是朝著 Sub-4 的目標努力中。\r\n", + "tagLine": "FullStack, Software Engineer", + "profilePicture": "https://sessionize.com/image/b82e-400o400o1-KMGJgWtQpue2htsA4x23Wj.jpeg", + "sessions": [ + { + "id": 564821, + "name": "Future-Proofing Enterprise Conversations: Integrating NeMo-GuardRails & PaLM2" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "X (Twitter)", + "url": "https://x.com/jimmyliao", + "linkType": "Twitter" + }, + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/jimmyliao/", + "linkType": "LinkedIn" + }, + { + "title": "Facebook", + "url": "https://www.facebook.com/messages/t/jimmyliaotw", + "linkType": "Facebook" + }, + { + "title": "Blog", + "url": "https://memo.jimmyliao.net", + "linkType": "Blog" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/jimmy-liao", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "5351eb49-101a-4c74-a488-c0b9f70923dc", + "firstName": "John", + "lastName": "Lu", + "fullName": "John Lu", + "bio": "John 是「全曜財經」的 Android Group Lead,目前負責開發工程團隊的核心組件。他深受挑戰的驅使,並對於打破傳統的思維和行為方式成就滿懷。 他致力於結合簡潔架構和流程設計,以構建高效且穩定的應用程式。", + "tagLine": "全曜財經資訊股份有限公司/資深軟體設計工程師", + "profilePicture": "https://sessionize.com/image/c81f-400o400o1-Vx2cfanCYto3Ldu5S3qyXQ.png", + "sessions": [ + { + "id": 566309, + "name": "Kimoji:使用 Jetpack Compose 的手勢 API 實作心情日記的相片圖庫系統" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Blog", + "url": "https://medium.com/@lush93md", + "linkType": "Blog" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/john-lu", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "95bbabe7-8115-4476-92a7-248236450835", + "firstName": "Johnny", + "lastName": "Sung", + "fullName": "Johnny Sung", + "bio": "一位技能樹不小心點歪的工程師,喜歡玩一些有趣的技術。\r\n從 App 原生開發、Flutter 開發、到 DevOps 與容器化皆有一些涉略", + "tagLine": "Full stack developer", + "profilePicture": "https://sessionize.com/image/ec84-400o400o1-HYc3vKjSQkXUwth8CfmoJ6.jpg", + "sessions": [ + { + "id": 570679, + "name": "用 LLM 來整理您的知識庫" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Facebook", + "url": "https://facebook.com/j796160836", + "linkType": "Facebook" + }, + { + "title": "Blog", + "url": "https://blog.jks.coffee/", + "linkType": "Blog" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "fc15701d-e89e-413d-b669-73f4011a35ea", + "firstName": "Johnny", + "lastName": "Yeng", + "fullName": "Johnny Yeng", + "bio": "SRE @COMMEET\r\nCo-organizer @GDG Cloud Taipei\r\n2022-23 Lead @GDSC TKU", + "tagLine": "SRE @COMMEET", + "profilePicture": "https://sessionize.com/image/b1e1-400o400o1-a66RRoZ2qi28eB21igx5mN.PNG", + "sessions": [ + { + "id": 566333, + "name": "GCP 監控、自動化與合規" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "8e6c99bd-885d-488f-b969-07e0806e6be2", + "firstName": "Kai-Chu", + "lastName": "Chung", + "fullName": "Kai-Chu Chung", + "bio": "Google Developer Cloud Expert, GDG Cloud Taipei organizer", + "tagLine": "GDG Cloud Taipei Co-organizer", + "profilePicture": "https://sessionize.com/image/17a4-400o400o1-9d3a8351-b822-457d-b0c5-1f34e5f35c6a.jpg", + "sessions": [ + { + "id": 564860, + "name": "Service Weaver Introduction" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "a548e82d-2330-41f2-ba0c-c9177c98768c", + "firstName": "Kevin", + "lastName": "Chiu", + "fullName": "Kevin Chiu", + "bio": "https://www.facebook.com/groups/480913682648708/?ref=group_header", + "tagLine": "TWM", + "profilePicture": "https://sessionize.com/image/612d-400o400o1-2d-2330-41f2-ba0c-c9177c98768c.2179abc7-9116-40ff-a2c6-a21f78d76649.jpg", + "sessions": [ + { + "id": 565548, + "name": "在android上如何玩MediaPipe機器學習" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Sessionize", + "url": "https://sessionize.com/kevin-chiu", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "48ecd2e5-51c3-4aec-99d4-0fa0718f92e8", + "firstName": "Michael", + "lastName": "Chi", + "fullName": "Michael Chi", + "bio": "在 Google Cloud 擔任 Solutions Architect ,專注領域為IoT, AIoT, Conversational AI和Generative AI。", + "tagLine": "Google Solutions Architect, AIoT, Conversational AI, Generative AI", + "profilePicture": "https://sessionize.com/image/ed79-400o400o1-ahZhhdAyqo1z9eiEqQp3NF.jpg", + "sessions": [ + { + "id": 565878, + "name": "Advanced Knowledge Management with Generative AI" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/michael-chi-54a5a94/", + "linkType": "LinkedIn" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "ededcdda-e0a5-47c9-8adc-34f759ea2271", + "firstName": "Mike", + "lastName": "Huang", + "fullName": "Mike Huang", + "bio": "Microsoft MVP、Angular GDE,主要熟悉 .NET WebAPI 與 Angular 開發技術,並經常於個人部落格分享學習知識。\r\n\r\n參加過四次 iT 邦幫忙鐵人賽,榮獲兩次冠軍與一次優選。並著有「打通 RxJS 任督二脈:從菜雞前進老鳥必學的關鍵知識」一書,該書曾榮獲 2021/8 繁體中文書 銷售排行 第 1 名!。", + "tagLine": "Angular Taiwan", + "profilePicture": "https://sessionize.com/image/623a-400o400o1-KBHiHn7NfnWyU7gTWoJfhQ.png", + "sessions": [ + { + "id": 555355, + "name": "Angular 17 - Control Flow 全新體驗" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "X (Twitter)", + "url": "https://twitter.com/wellwind", + "linkType": "Twitter" + }, + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/wellwind/", + "linkType": "LinkedIn" + }, + { + "title": "Facebook", + "url": "https://www.facebook.com/fullstackledder", + "linkType": "Facebook" + }, + { + "title": "Blog", + "url": "https://fullstackladder.dev/", + "linkType": "Blog" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "57647724-4c09-4a75-9da2-491b1a42ce84", + "firstName": "Munus", + "lastName": "Shih", + "fullName": "Munus Shih", + "bio": "Munus 木那斯 (t/he/y) 是一位來自臺灣的設計師、創意編碼師和組織者。現居紐約市布魯克林區的他,致力於教學程式編碼和社群建立中引入更具批判性和多元性的觀點。疫情期間,Munus 與廖一豪、魏茲芸共同創立了 SpOnAcT!偶發集合,以深入關注台灣的同志酷兒、勞動和批判性編碼教學等議題。\r\n\r\n目前,他是 Parsons School of Design 和 Cooper Union 的兼職講師,同時也與 Processing Foundation 合作擔任研究員。他積極參與開源編碼專案,並協助開發具有去殖民教育意義的資源。Munus 的作品和計劃曾受邀至 NEW INC、Creative Coding Taiwan、2023 Open Source Art Contributor's Conference 和 IBM Quantum Design 展出。", + "tagLine": "SpOnAcT 偶發集合, 創意編碼師", + "profilePicture": "https://sessionize.com/image/7749-400o400o1-nguqbC8YHuJQDPgTkCNKdy.jpg", + "sessions": [ + { + "id": 565844, + "name": "台灣酷兒聲音地圖:從設計發想到社會與技術實踐" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Sessionize", + "url": "https://sessionize.com/munusshih", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "ff6e6408-66f6-4e81-813f-40af6f3c7492", + "firstName": "NiJia", + "lastName": "Lin", + "fullName": "NiJia Lin", + "bio": "LINE 台灣技術傳教士/軟體工程生態系觀察家/ LINE Bot Python SDK 維護者之一,熱愛把各種小點子拼裝起來在社群上分享,把各種知識透過文章散播出去,培養更多初進軟體生態的開發者!", + "tagLine": "Technology Evangelist", + "profilePicture": "https://sessionize.com/image/2ac3-400o400o1-4Dv4RdcCGD7fK8B4MsA9eM.jpg", + "sessions": [ + { + "id": 554618, + "name": "Empowering Community-Driven Learning through Serverless Practice" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Sessionize", + "url": "https://sessionize.com/nijia-lin", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "ec5100a9-f716-49ba-868a-d21a2fd6314b", + "firstName": "Pamela", + "lastName": "Hill", + "fullName": "Pamela Hill", + "bio": null, + "tagLine": null, + "profilePicture": null, + "sessions": [ + { + "id": 589716, + "name": "回顧2023 及Kotlin Multiplatform 最新消息 [Kotlin 中文開發者大會聯播]" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "b6d5d32f-c10f-42af-a48c-8419ddce2b03", + "firstName": "Paris", + "lastName": "Hsu", + "fullName": "Paris Hsu", + "bio": "Product Manager @ Google working on Android Developer Experiences", + "tagLine": "Product Manager @ Google", + "profilePicture": "https://sessionize.com/image/a472-400o400o1-206c92e2-9c1b-4b96-a1b2-f6550355741d.jpg", + "sessions": [ + { + "id": 571381, + "name": "What's New in Android Studio" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Twitter", + "url": "https://twitter.com/parishsuhsu", + "linkType": "Twitter" + }, + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/paris-hsu/", + "linkType": "LinkedIn" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "ea4b26a5-41ae-4c8e-8c63-20198edf7999", + "firstName": "Praveen", + "lastName": "Chittem", + "fullName": "Praveen Chittem", + "bio": "I have been working as an AI Software developer in ViewSonic for 18 months now. Moved to Taipei in January 2018, and graduated with Masters degrere in Electrical Engineering and Computer Science from National Taipei University of Technology.", + "tagLine": "AI Software Developer", + "profilePicture": null, + "sessions": [ + { + "id": 568099, + "name": "Artificial Intelligence Tools" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "bcbfae97-c963-4955-bbde-95198f9480ec", + "firstName": "Recca", + "lastName": "Chao", + "fullName": "Recca Chao", + "bio": "推廣 Kotlin 在各種領域的開發", + "tagLine": "後端工程師,Taiwan Kotlin User Group Organizer", + "profilePicture": "https://sessionize.com/image/f0a6-400o400o1-c8922670-94b0-46b7-8234-e7fdf35efbb9.jpg", + "sessions": [ + { + "id": 567019, + "name": "Taiwan Kotlin User Group 分享" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "e93c0e45-5d02-4938-ad16-37c2166a8a79", + "firstName": "Rich", + "lastName": "Lee", + "fullName": "Rich Lee", + "bio": "GCP開發者,熱愛學習與分享新技術", + "tagLine": "Architect", + "profilePicture": "https://sessionize.com/image/7241-400o400o1-YMGhQKwTY1yY8s5vsGnxp7.png", + "sessions": [ + { + "id": 566327, + "name": "Architecting Reliable Event-Driven Applications on Google Cloud" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/richlee0423/", + "linkType": "LinkedIn" + }, + { + "title": "Blog", + "url": "https://medium.com/@rich04230", + "linkType": "Blog" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/richlee", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "6746e447-798f-4c2d-8107-1fd5ecb7d4c2", + "firstName": "Richard", + "lastName": "Lee", + "fullName": "Richard Lee", + "bio": "關鍵評論網媒體集團整合長,前愛料理與 INSIDE 共同創辦人與技術長。業餘時喜歡開源與 Google 技術,自 2020 年開始被選為 Google Developer Expert for Firebase。", + "tagLine": "Google Developer Expert for Firebase", + "profilePicture": "https://sessionize.com/image/0e8d-400o400o1-NwnsedT6o7ycRtyzozvRb8.jpg", + "sessions": [ + { + "id": 565687, + "name": "Firebase Auth 與無密碼驗證的 WebAuthn API" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "X (Twitter)", + "url": "https://x.com/dlackty", + "linkType": "Twitter" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "7c425327-0d8d-4b33-9f39-72d7c7a44909", + "firstName": "Rick", + "lastName": "Lin", + "fullName": "Rick Lin", + "bio": "從事數位鑑識及資安工作多年,在事件調查,分析惡意程式,App資安分析相關方面有些許經驗,樂於和同好進行交流及分享.", + "tagLine": "Forensic Consultant", + "profilePicture": "https://sessionize.com/image/3fa1-400o400o1-MMaji3V5esjnhroZHgoeX6.jpg", + "sessions": [ + { + "id": 564714, + "name": "如何進一步強化App資安" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Sessionize", + "url": "https://sessionize.com/rick-lin", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "cb61675c-7b74-4034-85db-9cfb0c2e2543", + "firstName": "Shawn", + "lastName": "Ho", + "fullName": "Shawn Ho", + "bio": "apiVersion: shawn.user-guide.io/v1\r\nkind: practitioner\r\nmetadata:\r\n name: shawnho\r\n labels:\r\n nickname: dr.ho\r\n motto: show.but.dont.tell\r\n enjoy: sharing\r\n love: [community, container, iac, newthings]\r\nspec:\r\n fans: |\r\n mlops,sre,servicemesh,agile,automation,SRE\r\n tendencies: \r\n - opentelemetry\r\n - crossplane\r\n - kubernetes\r\n - servicemesh", + "tagLine": "GCP, AppMod Specialist", + "profilePicture": "https://sessionize.com/image/479e-400o400o1-fx5J9BgmeSYVaMrfBMG3fr.png", + "sessions": [ + { + "id": 563883, + "name": "OpenTelemetry on GCP實戰" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "66f72597-47ba-40a0-afb6-7ef96d954ffa", + "firstName": "Shinobi", + "lastName": "Yeh", + "fullName": "Shinobi Yeh", + "bio": "「一台電腦、一杯鮮奶茶,這就是行家的做事方式。」\r\n不可思議的探求者,誓用一生追求魔法的極致。", + "tagLine": "Backend Developer", + "profilePicture": "https://sessionize.com/image/de1b-400o400o1-DueL4YDg2TvfN4uHwo7xXg.jpg", + "sessions": [ + { + "id": 564520, + "name": "Golang Framework 是怎麼做出這些酷功能?" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Sessionize", + "url": "https://sessionize.com/shinobi-yeh", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "9423e0c4-9faa-4120-9054-3f9a997febc8", + "firstName": "Subhajit", + "lastName": "Nanda", + "fullName": "Subhajit Nanda", + "bio": "I grew up in a small town in India, and I've been curious about electronics since I was a kid. This curiosity led me to study Electrical and Electronics in college, where I got really interested in robotics and machine learning. Wanting to learn even more, I moved to Taiwan to pursue my Master's in Robotics and Machine Learning, and I'm still on this exciting journey.", + "tagLine": "AI Developer II", + "profilePicture": "https://sessionize.com/image/67df-400o400o1-PT7RgcWQBushE4w6wsBreU.jpg", + "sessions": [ + { + "id": 568096, + "name": "Large Language Model:Prompt Engineering, Fine-Tuning." + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "e2c238da-ccae-4220-8ba0-92937ba4256b", + "firstName": "Suesi", + "lastName": "Tran", + "fullName": "Suesi Tran", + "bio": "GDE in Dart & Flutter, WTM Melbourne Ambassador, Senior Flutter Developer", + "tagLine": "GDE in Dart & Flutter, WTM Melbourne Ambassador, Senior Flutter Developer", + "profilePicture": "https://sessionize.com/image/8d54-400o400o1-w8miCqm9R4b1U967Y7R3uB.JPG", + "sessions": [ + { + "id": 555688, + "name": "Flutter for mobile: full production app in 2hrs" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/suesitran/", + "linkType": "LinkedIn" + }, + { + "title": "Blog", + "url": "https://medium.com/@suesitran", + "linkType": "Blog" + }, + { + "title": "Company Website", + "url": "https://www.thenartus.com/", + "linkType": "Company_Website" + }, + { + "title": "Personal website", + "url": "https://www.suesitran.nexus/", + "linkType": "Other" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/suesitran", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "5232160b-f9d1-471d-8002-f30c404941dc", + "firstName": "Takuma", + "lastName": "Lee", + "fullName": "Takuma Lee", + "bio": "Android Developer", + "tagLine": "Authme, Client Team Leader", + "profilePicture": "https://sessionize.com/image/e49a-400o400o1-Wg4PMUcsBE1rz27rdwSXyx.jpeg", + "sessions": [ + { + "id": 570353, + "name": "Android performance 最佳化" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/takuma-lee/", + "linkType": "LinkedIn" + }, + { + "title": "Facebook", + "url": "https://www.facebook.com/vmgsahm1", + "linkType": "Facebook" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "07edbf1e-9509-4800-84f7-279093e87016", + "firstName": "Tim", + "lastName": "Lin", + "fullName": "Tim Lin", + "bio": "Android developer from Taiwan, more than 10 years experience in mobile area.", + "tagLine": "Android GDE", + "profilePicture": "https://sessionize.com/image/e3c2-400o400o1-MDwnmS5SuCLxVbXAoAUqRq.jpg", + "sessions": [ + { + "id": 562930, + "name": "Advance Bundle" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/jintin/", + "linkType": "LinkedIn" + }, + { + "title": "Blog", + "url": "https://medium.com/@jintin", + "linkType": "Blog" + }, + { + "title": "Github", + "url": "https://github.com/Jintin", + "linkType": "Other" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/tim-lin", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "e20a6f42-21eb-426f-a87c-ff0f1bb59bbe", + "firstName": "TJ", + "lastName": "Wei", + "fullName": "TJ Wei", + "bio": "魏澤人是陽明交大 AI 學院副教授、木刻思首席數學家、Google Developer Expert(Machine Learning),是花蓮.py 及 Google Developer Groups Hualien 的發起者。曾在東華大學應數系服務,也參與培訓數學奧林匹亞國手。喜歡各種有挑戰的性問題,理想的休閒是邊喝茶邊看書。", + "tagLine": "GDE", + "profilePicture": "https://sessionize.com/image/3a20-400o400o1-680dcfc3-cf4e-4e6c-bb21-31615a144f8d.jpg", + "sessions": [ + { + "id": 568319, + "name": "整合 Vertex AI 與開源工具快速打造 AI 產品原型" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "150292c8-f15c-47a9-950d-886aa9d138bc", + "firstName": "Weithenn", + "lastName": "Wang", + "fullName": "Weithenn Wang", + "bio": "Hi, I'm Weithenn, the Microsoft MVP 2012 ~ 2023 / VMware vExpert 2012 ~ 2023 and NetAdmin magazine technical columnist. Weithenn is an infrastructure architect with over 20 years of experience in server systems, management, and maintenance on Windows, Linux, and FreeBSD platforms. He is an expert in Google Cloud, Microsoft Hyper-V, VMware vSphere, Virtualization, Kubernetes, Container, Hyper-Converged Infrastructure, Software-define storage, Software-define datacenter, and other cutting-edge technologies. On my blog weithenn.org, I'll share practical knowledge and insights with his readers. I believe that technology can make the world a better place.", + "tagLine": "Micorsoft MVP, VMware vExpert", + "profilePicture": "https://sessionize.com/image/0169-400o400o1-SEZLcVU861287aAGoJSuvW.png", + "sessions": [ + { + "id": 564788, + "name": "App Modernization - GKE 容器平台 101" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Blog", + "url": "http://www.weithenn.org", + "linkType": "Blog" + }, + { + "title": "Company Website", + "url": "http://www.micron.com", + "linkType": "Company_Website" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/weithenn-wang", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "55c4d43e-e1dc-4924-b4eb-15c59a5affdc", + "firstName": "Weizhong", + "lastName": "Yang", + "fullName": "Weizhong Yang", + "bio": "目前在 Cerence 開發車用語音助理相關產品,包含手機/桌面等各種應用,在產品上大量使用 Flutter。前一份工作在 KKBOX (2011-2020),負責 KKBOX 在蘋果平台上的各種應用開發。更早之前曾參與雅虎輸入法與嘸蝦米輸入法 macOS 版開發。\r\n\r\n在 GitHub 上比較活躍的開源專案包括一些 Flutter 套件,小麥注音輸入法的 macOS、Linux 以及 ChrmeOS 版本。\r\n", + "tagLine": "Flutter GDE/Developer Manager at Cerence ", + "profilePicture": "https://sessionize.com/image/00a1-400o400o1-SmdchrDJFzAvEUBM2e413M.jpeg", + "sessions": [ + { + "id": 551850, + "name": "跟 Flutter 作伴的這五年" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "X (Twitter)", + "url": "https://x.com/zonble", + "linkType": "Twitter" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "245ec8d9-dd6e-499b-a9ce-b40755e2ad2b", + "firstName": "Will", + "lastName": "保哥", + "fullName": "Will 保哥", + "bio": "現任「多奇數位創意有限公司」技術總監。2018 年榮獲 Angular 方向的 Google Developer Expert (GDE) 開發專家。連續 16 度當選微軟最有價值專家(MVP)。2019 獲選微軟技術社群區域總監 (Microsoft Regional Director)。熟悉 Angular、JavaScript、.NET、C#、Java、Go、Docker、Kubernetes 相關技術。擅長 DevOps 與組織文化建立、軟體團隊建構與管理。熱愛分享知識。", + "tagLine": "多奇數位創意有限公司, 技術總監", + "profilePicture": "https://sessionize.com/image/efc9-400o400o1-QHJZcz5r6gUpCYrDh1Qe5z.jpg", + "sessions": [ + { + "id": 559240, + "name": "使用 MakerSuite 與 PaLM API 快速打造 Generative AI 原型設計" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Sessionize", + "url": "https://sessionize.com/willh", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "c17b612e-4b71-4005-b254-c5bf0ad0dfc1", + "firstName": "Yale", + "lastName": "Hsu", + "fullName": "Yale Hsu", + "bio": "I like coding and sharing", + "tagLine": "Freelance", + "profilePicture": "https://sessionize.com/image/041f-400o400o1-jpGfGTs2i6kSL6Jjr9NkJ.jpg", + "sessions": [ + { + "id": 564492, + "name": "implementing chatapp with go websocket" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "5c935d23-5fda-4b16-b4bc-3bd09b6f0057", + "firstName": "Yang", + "lastName": "Lin", + "fullName": "Yang Lin", + "bio": "Yang has served as CEO and CTO of many start-up companies. Over the years, he no only has focused on network communications, big data, Internet of Things, and blockchain-related technologies. but successfully applied blockchain wallets, MPC, W3C DID/VC, and zero-knowledge Technologies such as proof (ZKP) and cross-chain bridges to security enhancement of software systems. In addition, Yang is also familiar with software and firmware development of embedded systems, network switches, and communication terminal equipment, and has rich experience in successfully opening and establishing R&D centers in Nanjing, Xi'an, Wuhan, Jinan, Hanoi, and Ho Chi Minh City.", + "tagLine": "Chief Product Officer, Chelpis", + "profilePicture": "https://sessionize.com/image/f3df-400o400o1-Mxrf4ocmVwBHi31feopDtA.jpg", + "sessions": [ + { + "id": 571369, + "name": "防量子攻擊的開發套件" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "5b1c1a89-599a-4999-be01-367382e63d27", + "firstName": "Yii Chen", + "lastName": "N/A", + "fullName": "Yii Chen N/A", + "bio": "Yii Chen,一位 Flutter 愛好者以及推廣者,專注跨平台開發,除了投入技術寫作外,也是活躍講者。擁有 7 年 Mobile 經驗,開發過大大小小的 APP,從 Android、iOS 到近期深耕 Flutter,包含結合IOT、藍芽BLE、購物、交友、健身等等應用,致力於開發出高品質且體驗豐富的產品。除了本業外,也擔任 Flutter Taipei Organizer,經營四千人的開發社團,鼓勵大家參與社群,並擁抱開源,擁有正向積極的影響力。", + "tagLine": "HerFIT, Mobile Lead", + "profilePicture": "https://sessionize.com/image/e421-400o400o1-42u8zJimpCedqfJPmM1TtN.jpg", + "sessions": [ + { + "id": 553812, + "name": "跟著我熟悉 Dart 3,這些高效語法你需要知道!" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "X (Twitter)", + "url": "https://twitter.com/yiichenhi", + "linkType": "Twitter" + }, + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/yiichenhi/", + "linkType": "LinkedIn" + }, + { + "title": "Instagram", + "url": "https://www.instagram.com/flutterluvr.yii/", + "linkType": "Instagram" + }, + { + "title": "Blog", + "url": "https://yiichenhi.medium.com/", + "linkType": "Blog" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/yiichenhi", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "8eb63962-4fbf-45b1-bffd-96ce48b74eca", + "firstName": "Yu", + "lastName": "Lee", + "fullName": "Yu Lee", + "bio": "Yu Lee (she/her) 是一位編碼創作者,致力透過編碼藝術與互動網頁,創作具有遊戲性和恢復力的線上空間。他將程式性方法視為一種自由的形式,並持續發掘程式與藝術、文化交錯的機會。目前在工作室SpOnAct!(偶發集合)作為創意工程師,曾開發柏林臺灣影展2023官方網站,以及共同組織Processing台灣國際社群日。", + "tagLine": "SpOnAcT 偶發集合, 創意工程師", + "profilePicture": "https://sessionize.com/image/9568-400o400o1-UD8kgy8KH4jWLpnCBmfp5q.jpg", + "sessions": [ + { + "id": 565844, + "name": "台灣酷兒聲音地圖:從設計發想到社會與技術實踐" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "4b130f74-4876-4b51-a96c-870a149cfdbc", + "firstName": "Yuijuhn", + "lastName": "Ting", + "fullName": "Yuijuhn Ting", + "bio": "嗨,我是丁丁,土生土長高雄人,目前任職於新加坡商鈦坦科技擔任 Product Developer,辦公室座標同在港都⚓ 工程師桌上有隻黃色小鴨是一定要的吧🐥", + "tagLine": "Quack", + "profilePicture": "https://sessionize.com/image/3116-400o400o1-Dz68QrsSBdLn8WmWuv2kf4.jpg", + "sessions": [ + { + "id": 553860, + "name": "Android 端爬蟲實戰! 利用 AccessibilityService 完成爬螢幕自動化工作" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "69e97ccc-1b07-4f1c-aeca-7433e6b2de82", + "firstName": "劉", + "lastName": "浩瑋", + "fullName": "劉 浩瑋", + "bio": "我是劉浩瑋(Hardy),目前在群馥科技擔任 App team leader 兼任產品經理。我熱愛 App 開發也喜歡打造產品,專注在 App 產品開發超過十年,曾在 KKSTREAM、iCHEF 等軟體公司擔任資深 iOS 工程師,直到進到群馥科技開始接觸 Flutter 開發,開始了另一段嶄新的 App 開發旅程。", + "tagLine": "群馥科技 App team leader", + "profilePicture": "https://sessionize.com/image/878c-400o400o1-R9PQbdfLni5HNbGDAPsGet.png", + "sessions": [ + { + "id": 564753, + "name": "用 Flutter 開發產品真的可行嗎?真實跨平台 App 開發之道" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "7bdd5c44-cbba-494a-a01c-aa02bff5e81a", + "firstName": "吉弘 David", + "lastName": "曾", + "fullName": "吉弘 David 曾", + "bio": "曾吉弘 \r\no CAVEDU教育團隊創辦人\r\no 美國麻省理工學院電腦科學與人工智慧實驗室訪問學者 2017~2018\r\no 新北市政府青年事務委員 2018~2019 \r\n \r\nCAVEDU 教育團隊以出版書籍、技術研發、教學研習與設備販售為團隊主軸,積極推動國內之科技基礎教育,希望能讓所有人都能取得優質的服務與課程。本團隊已出版/翻譯多本AI人工智能、物聯網雲端服務、機器人與數位互動等專業書籍,並定期參與國內外相關教學活動、辦理工作坊與分享會,期望帶給國內的自造者與科學DIY愛好者更豐富多元的學習內容。\r\n \r\n官方網站:http://www.cavedu.com\r\n技術部落格:http://blog.cavedu.com\r\nApp Inventor中文學習網:http://www.appinventor.tw", + "tagLine": "CAVEDU Education", + "profilePicture": "https://sessionize.com/image/196c-400o400o1-34b0f26a-0c89-4df4-aa6f-9a44be778fc7.jpg", + "sessions": [ + { + "id": 566961, + "name": "Google Mediapipe 結合邊緣運算裝置" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Facebook", + "url": "https://www.facebook.com/allelujahnissin", + "linkType": "Facebook" + }, + { + "title": "Blog", + "url": "https://blog.cavedu.com", + "linkType": "Blog" + }, + { + "title": "Company Website", + "url": "https://www.cavedu.com", + "linkType": "Company_Website" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/ji-hong-david-ceng", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "39b3252f-fe14-47ff-9161-c96018adc337", + "firstName": "品毅", + "lastName": "吳", + "fullName": "品毅 吳", + "bio": "- 敦謙國際智能 - Hexa System Scrum Master\r\n- 敦謙國際智能 - DQAT 敏捷戰隊 資深前端工程師\r\n- Front-End Developers Taiwan - 前端小聚發起人\r\n- Agile Taichung 2023 DDD + Event Storming 三個月從無到有打造全新訂房系統 主講人\r\n- Agile Taichung 2020 敏捷早餐 - 吃出團隊凝聚力 主講人", + "tagLine": "致力於打造幫助人而非取代人的系統", + "profilePicture": "https://sessionize.com/image/f23b-400o400o1-4EyykVJbAmY2SE5vQFjHhz.png", + "sessions": [ + { + "id": 564886, + "name": "Google全家餐! 快速打造旅宿業最小化MVP" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/%E5%93%81%E6%AF%85-%E5%90%B3-46459a128/", + "linkType": "LinkedIn" + }, + { + "title": "Company Website", + "url": "https://hexa.tw/", + "linkType": "Company_Website" + }, + { + "title": "YouTube", + "url": "https://youtube.com/@DQAT703?feature=shared", + "linkType": "Other" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/pin-yi-wu", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "146c1ecd-25bb-48a4-baa4-ed51ccd6ef3d", + "firstName": "員亨", + "lastName": "郭", + "fullName": "員亨 郭", + "bio": "Site Reliabilty Engineer,喜歡DevOps與SRE文化,因為想更接近Cloud Native,踏上Gopher之路", + "tagLine": "Site Reliabilty Engineer", + "profilePicture": "https://sessionize.com/image/9044-400o400o1-w8h9uyodj4ebkvzfk3Ast1.jpg", + "sessions": [ + { + "id": 564530, + "name": "淺談 Golang v1.21 new function min, max, clear" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "17d4f42b-c983-4eac-a755-9629cc1b3679", + "firstName": "哲豪", + "lastName": "許", + "fullName": "哲豪 許", + "bio": "一位喜歡分享邊緣智能技術的玩家,主要專長為機電整合、立體視覺、實境互動及人工智慧,目前同時為台灣地區首位Intel創新大使,FB Edge AI Taiwan邊緣智能交流區創辦人。", + "tagLine": "歐尼克斯實境互動工作室 / 創辦人", + "profilePicture": "https://sessionize.com/image/4b3a-400o400o1-N4AGYpU9xHsViQENsAgovg.jpg", + "sessions": [ + { + "id": 570643, + "name": "如何結合Google Colab及Intel OpenVINO來玩轉AIGC" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Facebook", + "url": "https://www.facebook.com/jack.omnixri.5/", + "linkType": "Facebook" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "fe200d79-0e36-4a49-928e-276b3940e135", + "firstName": "子裕", + "lastName": "林", + "fullName": "子裕 林", + "bio": "香港大學博士生,主修植被遙感,生態與環境科學。Earth Engine GDE.\r\n", + "tagLine": "Earth Engine GDE", + "profilePicture": "https://sessionize.com/image/4345-400o400o1-9wCUT1SJgz9Kfoi3cszpzc.png", + "sessions": [ + { + "id": 560680, + "name": "GeoAI解密: 基於谷歌雲平臺和谷歌地球引擎的的全球衛星數據分析" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "ea2db839-45db-4185-a621-22046e9b8810", + "firstName": "宇軒", + "lastName": "林", + "fullName": "宇軒 林", + "bio": null, + "tagLine": "一卡通票證有限公司 Sr. Software Engineer", + "profilePicture": "https://sessionize.com/image/2f59-400o400o1-JbAm3iENu4DvCTv4zazhXX.png", + "sessions": [ + { + "id": 568610, + "name": "為什麼一卡通決定採用 KMP 作為跨平台方案 - Let's talking about KMP" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "33e721b4-9e42-401b-b4a7-b2eecf2c3d1d", + "firstName": "惠勤", + "lastName": "黃", + "fullName": "惠勤 黃", + "bio": null, + "tagLine": null, + "profilePicture": null, + "sessions": [ + { + "id": 589718, + "name": " 做個另類Kotlin 開發者:從零入門Kotlin 編譯器外掛 [Kotlin 中文開發者大會聯播]" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "1f07e053-4cb0-4fc3-adbe-4664513383a5", + "firstName": "意晴", + "lastName": "洪", + "fullName": "意晴 洪", + "bio": "Sarah 洪意晴是個懂服務設計的策略設計師,熟悉使用者研究方法與行爲設計,致力於以人為中心了解利害關係人的動機、需求、行為、習慣乃至生活型態。她透過服務設計,協助企業統合各種專業以共同創造與傳遞價值,發展出不同以往的獲利模式。善於研析國內外產業趨勢與經營環境,引導企業於創新流程中提出前\r\n瞻方案與策略。\r\n\r\nSarah is a strategic designer well-versed in service design. She is experienced in user research methods and behavioral design, dedicated to understanding the motivations, needs, behaviors, habits, and lifestyles of stakeholders in a human-centric manner. Through service design, she assists businesses in integrating various disciplines to collaboratively create and deliver value, developing unique profit models. She excels at analyzing domestic and international industry trends and business environments, guiding companies in proposing forward-thinking solutions and strategies within the innovation process.", + "tagLine": "Business Models Inc. 方略, 策略設計師", + "profilePicture": "https://sessionize.com/image/4f2d-400o400o1-7987d314-f368-4e59-a363-9a834e0c4990.jpg", + "sessions": [ + { + "id": 568446, + "name": "想談一場天長地久的戀愛 你要先懂 UX" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/yichinghung/", + "linkType": "LinkedIn" + }, + { + "title": "Facebook", + "url": "https://www.facebook.com/yiching.hung.31/about", + "linkType": "Facebook" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "2b34047f-4543-4677-895d-5fd201a88800", + "firstName": "斌權", + "lastName": "張", + "fullName": "斌權 張", + "bio": "2019年開始接觸學習Flutter,目前擔任Flutter工程師。\r\n今年成為Flutter Taipei的組織者,致力於發展Flutter相關技術在台灣的影響力,舉辦Live Coding活動,分享Flutter相關知識。", + "tagLine": "Flutter Taipei Organizer", + "profilePicture": "https://sessionize.com/image/4ed6-400o400o1-RUZVVXg4TGfb7aBcD1wNWC.jpeg", + "sessions": [ + { + "id": 553639, + "name": "跨平台應用程式開發-Flutter工作坊" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "Sessionize", + "url": "https://sessionize.com/bin-quan-zhang", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "96c3a2a2-93ae-4cce-b7e5-2995c29bdaaa", + "firstName": "旻峯", + "lastName": "蔡", + "fullName": "旻峯 蔡", + "bio": "專攻後端工程,但對其他領域如 Cloud Native 和大數據處理也有輕度涉略。同時,我也討厭看到維護性差的程式碼,因此積極嘗試多種 Golang 設計模式,提高系統的可測試性和維護性。\r\nhttps://www.linkedin.com/in/caesar1017tsai/", + "tagLine": "後端工程師", + "profilePicture": "https://sessionize.com/image/d42d-400o400o1-T5D4YicSYk5omwFHwGVV8S.png", + "sessions": [ + { + "id": 564518, + "name": "如何在 Golang 簡單使用有限狀態機 (FSM)" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/caesar1017tsai/", + "linkType": "LinkedIn" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/min-feng-cai", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "8aed0afc-2f07-4674-8fa7-a5a25463b4a4", + "firstName": "李", + "lastName": "緒成", + "fullName": "李 緒成", + "bio": "目前就讀成大資工系大二, 喜歡研究怎麼把事情做到 high availability 及 fault-tolerance, 興趣是聽音樂, 因為不會用樂器, 還有出去玩! 上大學才接觸一點網頁開發的東西, 發現自己前端太爛所以只能往後端走qq, 會的東西還很少, 希望大家能多多指教~ 最近有點想當機師, 如果有知道怎麼當的話麻煩聯絡我\r\nhttps://www.linkedin.com/in/peterxcli\r\nhttps://www.facebook.com/peterxcli\r\nhttps://www.instagram.com/peter_lee0814/\r\nhttps://peterxcli.dev/\r\nmailto:peterxcli@gmail.com", + "tagLine": "ncku-csie, backend", + "profilePicture": "https://sessionize.com/image/f4ae-400o400o1-KmNvWcYrF3x3RPvVQfBdd4.JPG", + "sessions": [ + { + "id": 565174, + "name": "雲與地的彼端 - 全面啟動PAIA 3D之K8S混合雲部署" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/peterxcli", + "linkType": "LinkedIn" + }, + { + "title": "Facebook", + "url": "https://www.facebook.com/peterxcli", + "linkType": "Facebook" + }, + { + "title": "Instagram", + "url": "https://www.instagram.com/peter_lee0814/", + "linkType": "Instagram" + }, + { + "title": "Blog", + "url": "https://peterxcli.dev/", + "linkType": "Blog" + }, + { + "title": "Sessionize", + "url": "https://sessionize.com/peterxcli", + "linkType": "Sessionize" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "8dc146ad-848a-445a-81ec-c58cfb38b8de", + "firstName": "楓", + "lastName": "梁", + "fullName": "楓 梁", + "bio": "http://book.wydiet.com\r\n暫無技術性固定存放\r\n早期文章在 http://www.study-area.org/freebsd/freebsdfr2.htm", + "tagLine": "動覺科技技術長", + "profilePicture": "https://sessionize.com/image/fd9c-400o400o1-X65TU8edQYo9VdGdrbZSTV.jpg", + "sessions": [ + { + "id": 563977, + "name": "Flutter 適合商用嗎?" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "25bb137e-b9bb-48d2-aa01-53b53067be48", + "firstName": "聖佑", + "lastName": "范", + "fullName": "聖佑 范", + "bio": null, + "tagLine": null, + "profilePicture": null, + "sessions": [ + { + "id": 589716, + "name": "回顧2023 及Kotlin Multiplatform 最新消息 [Kotlin 中文開發者大會聯播]" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "dcb01237-48ff-4ea4-ad39-2d6fd4c4e5ee", + "firstName": "良斌", + "lastName": "薛", + "fullName": "良斌 薛", + "bio": "薛良斌 (hlb) 畢業於交大資工系,2006 年創辦 Handlino 並建立 Registrano 活動報名服務,於 2013 年併入 KKBOX 成為 KKTIX 活動售票平台。2016 年起擔任聖洋科技 cacaFly 產品總監,並於 2018 年共同創立 InfuseAI,協助企業加速 AI 開發效率,提升研發產出。薛良斌於 2023 年轉任 InfuseAI 顧問,致力於 Generative AI 推廣。", + "tagLine": "EIR of Hive Ventures; Generative AI Evangelist; Advisor of InfuseAI", + "profilePicture": "https://sessionize.com/image/5100-400o400o1-fDNFVaiSNcP8V9v5KhBMmK.png", + "sessions": [ + { + "id": 582327, + "name": "Keynote - 展望 Generative AI 的現在與未來" + } + ], + "isTopSpeaker": false, + "links": [ + { + "title": "LinkedIn", + "url": "https://www.linkedin.com/in/iamhlb/", + "linkType": "LinkedIn" + } + ], + "questionAnswers": [], + "categories": [] + }, + { + "id": "7b9c6f43-d794-4125-ab19-dc42ccf33e66", + "firstName": "芃翰", + "lastName": "蘇", + "fullName": "芃翰 蘇", + "bio": null, + "tagLine": null, + "profilePicture": null, + "sessions": [ + { + "id": 589719, + "name": "使用Reactive Quarkus 搭配Coroutine 及MongoDB 做後端開發 [Kotlin 中文開發者大會聯播]" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "3fb70cac-e431-462b-9498-8a6150d92cad", + "firstName": "范愷祐", + "lastName": "Kyo Fan", + "fullName": "范愷祐 Kyo Fan", + "bio": "Lead '22 @Google DSC NCCU | Founder & Product Manager @Open NCCU", + "tagLine": "Open NCCU 非營利組織創辦人、GDSC NCCU '22-'23 Lead (社群領袖)", + "profilePicture": "https://sessionize.com/image/32e2-400o400o1-9AF2dZgK9SLcrpr99q7V6N.jpg", + "sessions": [ + { + "id": 566335, + "name": "不可能的任務!在網頁/ PWA 實現如 App 一樣原生體驗的 Bottom sheets (使用 Google IDX)" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "6a2bb931-6f51-4e37-b907-b12a17eb4745", + "firstName": "見龍", + "lastName": "高", + "fullName": "見龍 高", + "bio": "網站程式開發者 / 講師 / 遊戲宅 / 漫畫宅,喜愛非主流的新玩具。個性愛現,學會新把戲就迫不急待想跟大家分享。著有《為你自己學 Git》以及《為你自己學 Ruby on Rails》等暢銷書籍。", + "tagLine": "五倍學院", + "profilePicture": "https://sessionize.com/image/c370-400o400o1-R8waBDNtF6PtJSaDNRS3fJ.jpg", + "sessions": [ + { + "id": 563667, + "name": "前端模組解放運動" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "b842b7cc-9e1a-40fe-9797-e95dd2638a3f", + "firstName": "貴融", + "lastName": "吳", + "fullName": "貴融 吳", + "bio": "KJ 負責 Google Cloud Taiwan 團隊的技術解決方案主管,所帶領的Google Cloud技術團隊主要協助不同規模的企業擬定雲端策略與採行雲端解決方案。加入 Google 以前,KJ曾帶領海外FineTech新創團隊,並歷任大型顧問與雲端跨國企業,擔任各種技術與管理職位,包括研發、軟體工程、雲端架構、企業策略規劃等管理職務。", + "tagLine": "Google Cloud 雲端技術副總", + "profilePicture": "https://sessionize.com/image/c302-400o400o1-2HiF1i2Krh2mswox1AD7w.jpg", + "sessions": [ + { + "id": 582327, + "name": "Keynote - 展望 Generative AI 的現在與未來" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "3eee1f76-2be1-4b31-93fe-dbdfe269a335", + "firstName": "銀龍", + "lastName": "劉", + "fullName": "銀龍 劉", + "bio": null, + "tagLine": null, + "profilePicture": null, + "sessions": [ + { + "id": 589717, + "name": "Kotlin Multiplatform:跨平台開發的後起之秀 [Kotlin 中文開發者大會聯播]" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "c8509f89-9c12-4941-ab86-a8ef5f8d6ce9", + "firstName": "銘佑", + "lastName": "徐", + "fullName": "銘佑 徐", + "bio": "目前在虛擬幣產業擔任後端工程師,主要語言為 golang,除了 web server 開發外,也會研究分散式系統跟資料庫等技術,平常會分享一些文章在 medium 上 https://medium.com/@vicxu。", + "tagLine": "bitoex, gopher", + "profilePicture": "https://sessionize.com/image/1f69-400o400o1-BtELvev4ZMNUFjqfW54PeT.png", + "sessions": [ + { + "id": 564489, + "name": "如何打造一個高效的 web framework routing" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "ceeb5615-ece9-4434-b08e-9b524d5842ce", + "firstName": "雅芳", + "lastName": "林", + "fullName": "雅芳 林", + "bio": "林雅芳負責管理 Google 台灣的銷售與業務開發經營,並積極推廣多元、平等、包容的職場環境與社會⽂化。她帶領團隊為合作夥伴與客⼾提供顧問服務與數位解決⽅案,協助他們更深⼊了解產業與消費趨勢,提出策略建議,並達成合作夥伴在台灣與全球各地的業務⽬標。此外,林雅芳亦⻑期關注台灣數位經濟成⻑、國際競爭⼒與新創產業動態,並致⼒於協助台灣企業轉型以及促進在地⼈才成⻑動能。\r\n\r\n林雅芳於 2019 年 9 ⽉就任 Google 台灣總經理⼀職,在硬體、軟體、網路等科技產業擁有多年的豐富經驗。她於 2014 年加⼊ Google ,幫助科技、電信、旅遊和出⼝等業務⼤幅成⻑;在加⼊ Google 之前,她曾任職於 Intel 、微軟和華碩,擔任過各種國際市場業務、⾏銷及營運管理職務。\r\n\r\n林雅芳擁有國⽴臺灣⼤學⼯商管理學系學⼠學位。\r\n軟體 / 硬體 / 網路,三重混⾎的科技⼈, 關⼼、影響⽽貢獻:\r\n\r\n#「從台灣放眼世界、讓世界看⾒台灣」\r\n# 創新、新創和永續\r\n# 成⻑⽐成功重要的⼈才培育與終身學習\r\n# 弱勢教育均等\r\n# 多元平等包容的友善職場環境\r\n\r\n相信「正念、學習、感恩和活在當下」,期許⾃⼰敬業專業更樂業,對世界需要的事能盡⼀分⼼⼒的⼈", + "tagLine": "Google 台灣總經理,Managing Director Sales & Operation, Google Taiwan", + "profilePicture": "https://sessionize.com/image/4033-400o400o1-3uhxLtfphKRyBScVzP4wnW.jpg", + "sessions": [ + { + "id": 582327, + "name": "Keynote - 展望 Generative AI 的現在與未來" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + }, + { + "id": "7053e662-2146-4435-9b35-c6545c98cb6c", + "firstName": "頌宇", + "lastName": "張", + "fullName": "頌宇 張", + "bio": "自成功大學資訊工程系畢業,輔修數學和教程,就讀成大AI機器人研究所,現在在PAIA公司負責3D遊戲教學平台的建置。我喜歡思考事物的本質,探究到底就會發現一個新的世界。像是越研究人工智慧就會開始思考究竟位格是什麼?這樣的位格如何在增強式學習的Agent表現出來?我們所認知的世界會不會其實都是意識的產物?", + "tagLine": "Engineer at PAIA", + "profilePicture": "https://sessionize.com/image/ebf3-400o400o1-dc2418c5-6701-4b4b-9687-d50ce08e70bb.jpg", + "sessions": [ + { + "id": 565174, + "name": "雲與地的彼端 - 全面啟動PAIA 3D之K8S混合雲部署" + } + ], + "isTopSpeaker": false, + "links": [], + "questionAnswers": [], + "categories": [] + } +] \ No newline at end of file diff --git a/chunk-BJXUBQDU.js b/chunk-BJXUBQDU.js new file mode 100644 index 0000000..263a355 --- /dev/null +++ b/chunk-BJXUBQDU.js @@ -0,0 +1 @@ +import{Bc as E,Cc as B,Fc as pt,Gc as Ne,Jc as x,Kc as Me,Lc as he,W as S,Y as mt,a as le,c as dt}from"./chunk-R2FFOFIG.js";function gt(n){return new S(3e3,!1)}function Wt(){return new S(3100,!1)}function Gt(){return new S(3101,!1)}function Ht(n){return new S(3001,!1)}function Yt(n){return new S(3003,!1)}function Xt(n){return new S(3004,!1)}function Zt(n,e){return new S(3005,!1)}function Jt(){return new S(3006,!1)}function xt(){return new S(3007,!1)}function es(n,e){return new S(3008,!1)}function ts(n){return new S(3002,!1)}function ss(n,e,t,s,i){return new S(3010,!1)}function is(){return new S(3011,!1)}function ns(){return new S(3012,!1)}function rs(){return new S(3200,!1)}function as(){return new S(3202,!1)}function os(){return new S(3013,!1)}function ls(n){return new S(3014,!1)}function hs(n){return new S(3015,!1)}function us(n){return new S(3016,!1)}function cs(n){return new S(3500,!1)}function fs(n){return new S(3501,!1)}function ds(n,e){return new S(3404,!1)}function ms(n){return new S(3502,!1)}function ps(n){return new S(3503,!1)}function gs(){return new S(3300,!1)}function ys(n){return new S(3504,!1)}function _s(n){return new S(3301,!1)}function Ss(n,e){return new S(3302,!1)}function Es(n){return new S(3303,!1)}function Ts(n,e){return new S(3400,!1)}function vs(n){return new S(3401,!1)}function ws(n){return new S(3402,!1)}function bs(n,e){return new S(3505,!1)}var As=new Set(["-moz-outline-radius","-moz-outline-radius-bottomleft","-moz-outline-radius-bottomright","-moz-outline-radius-topleft","-moz-outline-radius-topright","-ms-grid-columns","-ms-grid-rows","-webkit-line-clamp","-webkit-text-fill-color","-webkit-text-stroke","-webkit-text-stroke-color","accent-color","all","backdrop-filter","background","background-color","background-position","background-size","block-size","border","border-block-end","border-block-end-color","border-block-end-width","border-block-start","border-block-start-color","border-block-start-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-width","border-color","border-end-end-radius","border-end-start-radius","border-image-outset","border-image-slice","border-image-width","border-inline-end","border-inline-end-color","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-width","border-left","border-left-color","border-left-width","border-radius","border-right","border-right-color","border-right-width","border-start-end-radius","border-start-start-radius","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-width","border-width","bottom","box-shadow","caret-color","clip","clip-path","color","column-count","column-gap","column-rule","column-rule-color","column-rule-width","column-width","columns","filter","flex","flex-basis","flex-grow","flex-shrink","font","font-size","font-size-adjust","font-stretch","font-variation-settings","font-weight","gap","grid-column-gap","grid-gap","grid-row-gap","grid-template-columns","grid-template-rows","height","inline-size","input-security","inset","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","left","letter-spacing","line-clamp","line-height","margin","margin-block-end","margin-block-start","margin-bottom","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","mask","mask-border","mask-position","mask-size","max-block-size","max-height","max-inline-size","max-lines","max-width","min-block-size","min-height","min-inline-size","min-width","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","outline","outline-color","outline-offset","outline-width","padding","padding-block-end","padding-block-start","padding-bottom","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","perspective","perspective-origin","right","rotate","row-gap","scale","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-coordinate","scroll-snap-destination","scrollbar-color","shape-image-threshold","shape-margin","shape-outside","tab-size","text-decoration","text-decoration-color","text-decoration-thickness","text-emphasis","text-emphasis-color","text-indent","text-shadow","text-underline-offset","top","transform","transform-origin","translate","vertical-align","visibility","width","word-spacing","z-index","zoom"]);function U(n){switch(n.length){case 0:return new x;case 1:return n[0];default:return new Me(n)}}function Lt(n,e,t=new Map,s=new Map){let i=[],r=[],a=-1,o=null;if(e.forEach(l=>{let h=l.get("offset"),c=h==a,u=c&&o||new Map;l.forEach((_,y)=>{let d=y,g=_;if(y!=="offset")switch(d=n.normalizePropertyName(d,i),g){case he:g=t.get(y);break;case B:g=s.get(y);break;default:g=n.normalizeStyleValue(y,d,g,i);break}u.set(d,g)}),c||r.push(u),o=u,a=h}),i.length)throw ms(i);return r}function et(n,e,t,s){switch(e){case"start":n.onStart(()=>s(t&&Ce(t,"start",n)));break;case"done":n.onDone(()=>s(t&&Ce(t,"done",n)));break;case"destroy":n.onDestroy(()=>s(t&&Ce(t,"destroy",n)));break}}function Ce(n,e,t){let s=t.totalTime,i=!!t.disabled,r=tt(n.element,n.triggerName,n.fromState,n.toState,e||n.phaseName,s??n.totalTime,i),a=n._data;return a!=null&&(r._data=a),r}function tt(n,e,t,s,i="",r=0,a){return{element:n,triggerName:e,fromState:t,toState:s,phaseName:i,totalTime:r,disabled:!!a}}function L(n,e,t){let s=n.get(e);return s||n.set(e,s=t),s}function yt(n){let e=n.indexOf(":"),t=n.substring(1,e),s=n.slice(e+1);return[t,s]}var Ps=typeof document>"u"?null:document.documentElement;function st(n){let e=n.parentNode||n.host||null;return e===Ps?null:e}function Ns(n){return n.substring(1,6)=="ebkit"}var H=null,_t=!1;function Ms(n){H||(H=Cs()||{},_t=H.style?"WebkitAppearance"in H.style:!1);let e=!0;return H.style&&!Ns(n)&&(e=n in H.style,!e&&_t&&(e="Webkit"+n.charAt(0).toUpperCase()+n.slice(1)in H.style)),e}function wi(n){return As.has(n)}function Cs(){return typeof document<"u"?document.body:null}function Ft(n,e){for(;e;){if(e===n)return!0;e=st(e)}return!1}function It(n,e,t){if(t)return Array.from(n.querySelectorAll(e));let s=n.querySelector(e);return s?[s]:[]}var zt=(()=>{class n{validateStyleProperty(t){return Ms(t)}matchesElement(t,s){return!1}containsElement(t,s){return Ft(t,s)}getParentElement(t){return st(t)}query(t,s,i){return It(t,s,i)}computeStyle(t,s,i){return i||""}animate(t,s,i,r,a,o=[],l){return new x(i,r)}static{this.\u0275fac=function(s){return new(s||n)}}static{this.\u0275prov=mt({token:n,factory:n.\u0275fac})}}return n})(),St=class{static{this.NOOP=new zt}},Fe=class{},Ie=class{normalizePropertyName(e,t){return e}normalizeStyleValue(e,t,s,i){return s}},ks=1e3,Kt="{{",Ds="}}",it="ng-enter",pe="ng-leave",ue="ng-trigger",ge=".ng-trigger",Et="ng-animating",ze=".ng-animating";function $(n){if(typeof n=="number")return n;let e=n.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:Ke(parseFloat(e[1]),e[2])}function Ke(n,e){switch(e){case"s":return n*ks;default:return n}}function ye(n,e,t){return n.hasOwnProperty("duration")?n:Rs(n,e,t)}function Rs(n,e,t){let s=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i,i,r=0,a="";if(typeof n=="string"){let o=n.match(s);if(o===null)return e.push(gt(n)),{duration:0,delay:0,easing:""};i=Ke(parseFloat(o[1]),o[2]);let l=o[3];l!=null&&(r=Ke(parseFloat(l),o[4]));let h=o[5];h&&(a=h)}else i=n;if(!t){let o=!1,l=e.length;i<0&&(e.push(Wt()),o=!0),r<0&&(e.push(Gt()),o=!0),o&&e.splice(l,0,gt(n))}return{duration:i,delay:r,easing:a}}function Os(n){return n.length?n[0]instanceof Map?n:n.map(e=>new Map(Object.entries(e))):[]}function Tt(n){return Array.isArray(n)?new Map(...n):new Map(n)}function Q(n,e,t){e.forEach((s,i)=>{let r=nt(i);t&&!t.has(i)&&t.set(i,n.style[r]),n.style[r]=s})}function X(n,e){e.forEach((t,s)=>{let i=nt(s);n.style[i]=""})}function se(n){return Array.isArray(n)?n.length==1?n[0]:pt(n):n}function Ls(n,e,t){let s=e.params||{},i=qt(n);i.length&&i.forEach(r=>{s.hasOwnProperty(r)||t.push(Ht(r))})}var qe=new RegExp(`${Kt}\\s*(.+?)\\s*${Ds}`,"g");function qt(n){let e=[];if(typeof n=="string"){let t;for(;t=qe.exec(n);)e.push(t[1]);qe.lastIndex=0}return e}function ne(n,e,t){let s=`${n}`,i=s.replace(qe,(r,a)=>{let o=e[a];return o==null&&(t.push(Yt(a)),o=""),o.toString()});return i==s?n:i}var Fs=/-+([a-z0-9])/g;function nt(n){return n.replace(Fs,(...e)=>e[1].toUpperCase())}function bi(n){return n.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function Is(n,e){return n===0||e===0}function zs(n,e,t){if(t.size&&e.length){let s=e[0],i=[];if(t.forEach((r,a)=>{s.has(a)||i.push(a),s.set(a,r)}),i.length)for(let r=1;ra.set(o,rt(n,o)))}}return e}function O(n,e,t){switch(e.type){case E.Trigger:return n.visitTrigger(e,t);case E.State:return n.visitState(e,t);case E.Transition:return n.visitTransition(e,t);case E.Sequence:return n.visitSequence(e,t);case E.Group:return n.visitGroup(e,t);case E.Animate:return n.visitAnimate(e,t);case E.Keyframes:return n.visitKeyframes(e,t);case E.Style:return n.visitStyle(e,t);case E.Reference:return n.visitReference(e,t);case E.AnimateChild:return n.visitAnimateChild(e,t);case E.AnimateRef:return n.visitAnimateRef(e,t);case E.Query:return n.visitQuery(e,t);case E.Stagger:return n.visitStagger(e,t);default:throw Xt(e.type)}}function rt(n,e){return window.getComputedStyle(n)[e]}var Ks=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]),Be=class extends Fe{normalizePropertyName(e,t){return nt(e)}normalizeStyleValue(e,t,s,i){let r="",a=s.toString().trim();if(Ks.has(t)&&s!==0&&s!=="0")if(typeof s=="number")r="px";else{let o=s.match(/^[+-]?[\d\.]+([a-z]*)$/);o&&o[1].length==0&&i.push(Zt(e,s))}return a+r}};var _e="*";function qs(n,e){let t=[];return typeof n=="string"?n.split(/\s*,\s*/).forEach(s=>Bs(s,t,e)):t.push(n),t}function Bs(n,e,t){if(n[0]==":"){let l=Qs(n,t);if(typeof l=="function"){e.push(l);return}n=l}let s=n.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(s==null||s.length<4)return t.push(hs(n)),e;let i=s[1],r=s[2],a=s[3];e.push(vt(i,a));let o=i==_e&&a==_e;r[0]=="<"&&!o&&e.push(vt(a,i))}function Qs(n,e){switch(n){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(t,s)=>parseFloat(s)>parseFloat(t);case":decrement":return(t,s)=>parseFloat(s) *"}}var ce=new Set(["true","1"]),fe=new Set(["false","0"]);function vt(n,e){let t=ce.has(n)||fe.has(n),s=ce.has(e)||fe.has(e);return(i,r)=>{let a=n==_e||n==i,o=e==_e||e==r;return!a&&t&&typeof i=="boolean"&&(a=i?ce.has(n):fe.has(n)),!o&&s&&typeof r=="boolean"&&(o=r?ce.has(e):fe.has(e)),a&&o}}var Bt=":self",$s=new RegExp(`s*${Bt}s*,?`,"g");function at(n,e,t,s){return new Qe(n).build(e,t,s)}var wt="",Qe=class{constructor(e){this._driver=e}build(e,t,s){let i=new $e(t);return this._resetContextStyleTimingState(i),O(this,se(e),i)}_resetContextStyleTimingState(e){e.currentQuerySelector=wt,e.collectedStyles=new Map,e.collectedStyles.set(wt,new Map),e.currentTime=0}visitTrigger(e,t){let s=t.queryCount=0,i=t.depCount=0,r=[],a=[];return e.name.charAt(0)=="@"&&t.errors.push(Jt()),e.definitions.forEach(o=>{if(this._resetContextStyleTimingState(t),o.type==E.State){let l=o,h=l.name;h.toString().split(/\s*,\s*/).forEach(c=>{l.name=c,r.push(this.visitState(l,t))}),l.name=h}else if(o.type==E.Transition){let l=this.visitTransition(o,t);s+=l.queryCount,i+=l.depCount,a.push(l)}else t.errors.push(xt())}),{type:E.Trigger,name:e.name,states:r,transitions:a,queryCount:s,depCount:i,options:null}}visitState(e,t){let s=this.visitStyle(e.styles,t),i=e.options&&e.options.params||null;if(s.containsDynamicStyles){let r=new Set,a=i||{};s.styles.forEach(o=>{o instanceof Map&&o.forEach(l=>{qt(l).forEach(h=>{a.hasOwnProperty(h)||r.add(h)})})}),r.size&&t.errors.push(es(e.name,[...r.values()]))}return{type:E.State,name:e.name,style:s,options:i?{params:i}:null}}visitTransition(e,t){t.queryCount=0,t.depCount=0;let s=O(this,se(e.animation),t),i=qs(e.expr,t.errors);return{type:E.Transition,matchers:i,animation:s,queryCount:t.queryCount,depCount:t.depCount,options:Y(e.options)}}visitSequence(e,t){return{type:E.Sequence,steps:e.steps.map(s=>O(this,s,t)),options:Y(e.options)}}visitGroup(e,t){let s=t.currentTime,i=0,r=e.steps.map(a=>{t.currentTime=s;let o=O(this,a,t);return i=Math.max(i,t.currentTime),o});return t.currentTime=i,{type:E.Group,steps:r,options:Y(e.options)}}visitAnimate(e,t){let s=Ws(e.timings,t.errors);t.currentAnimateTimings=s;let i,r=e.styles?e.styles:Ne({});if(r.type==E.Keyframes)i=this.visitKeyframes(r,t);else{let a=e.styles,o=!1;if(!a){o=!0;let h={};s.easing&&(h.easing=s.easing),a=Ne(h)}t.currentTime+=s.duration+s.delay;let l=this.visitStyle(a,t);l.isEmptyStep=o,i=l}return t.currentAnimateTimings=null,{type:E.Animate,timings:s,style:i,options:null}}visitStyle(e,t){let s=this._makeStyleAst(e,t);return this._validateStyleAst(s,t),s}_makeStyleAst(e,t){let s=[],i=Array.isArray(e.styles)?e.styles:[e.styles];for(let o of i)typeof o=="string"?o===B?s.push(o):t.errors.push(ts(o)):s.push(new Map(Object.entries(o)));let r=!1,a=null;return s.forEach(o=>{if(o instanceof Map&&(o.has("easing")&&(a=o.get("easing"),o.delete("easing")),!r)){for(let l of o.values())if(l.toString().indexOf(Kt)>=0){r=!0;break}}}),{type:E.Style,styles:s,easing:a,offset:e.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(e,t){let s=t.currentAnimateTimings,i=t.currentTime,r=t.currentTime;s&&r>0&&(r-=s.duration+s.delay),e.styles.forEach(a=>{typeof a!="string"&&a.forEach((o,l)=>{let h=t.collectedStyles.get(t.currentQuerySelector),c=h.get(l),u=!0;c&&(r!=i&&r>=c.startTime&&i<=c.endTime&&(t.errors.push(ss(l,c.startTime,c.endTime,r,i)),u=!1),r=c.startTime),u&&h.set(l,{startTime:r,endTime:i}),t.options&&Ls(o,t.options,t.errors)})})}visitKeyframes(e,t){let s={type:E.Keyframes,styles:[],options:null};if(!t.currentAnimateTimings)return t.errors.push(is()),s;let i=1,r=0,a=[],o=!1,l=!1,h=0,c=e.steps.map(b=>{let A=this._makeStyleAst(b,t),C=A.offset!=null?A.offset:js(A.styles),N=0;return C!=null&&(r++,N=A.offset=C),l=l||N<0||N>1,o=o||N0&&r{let C=_>0?A==y?1:_*A:a[A],N=C*v;t.currentTime=d+g.delay+N,g.duration=N,this._validateStyleAst(b,t),b.offset=C,s.styles.push(b)}),s}visitReference(e,t){return{type:E.Reference,animation:O(this,se(e.animation),t),options:Y(e.options)}}visitAnimateChild(e,t){return t.depCount++,{type:E.AnimateChild,options:Y(e.options)}}visitAnimateRef(e,t){return{type:E.AnimateRef,animation:this.visitReference(e.animation,t),options:Y(e.options)}}visitQuery(e,t){let s=t.currentQuerySelector,i=e.options||{};t.queryCount++,t.currentQuery=e;let[r,a]=Vs(e.selector);t.currentQuerySelector=s.length?s+" "+r:r,L(t.collectedStyles,t.currentQuerySelector,new Map);let o=O(this,se(e.animation),t);return t.currentQuery=null,t.currentQuerySelector=s,{type:E.Query,selector:r,limit:i.limit||0,optional:!!i.optional,includeSelf:a,animation:o,originalSelector:e.selector,options:Y(e.options)}}visitStagger(e,t){t.currentQuery||t.errors.push(os());let s=e.timings==="full"?{duration:0,delay:0,easing:"full"}:ye(e.timings,t.errors,!0);return{type:E.Stagger,animation:O(this,se(e.animation),t),timings:s,options:null}}};function Vs(n){let e=!!n.split(/\s*,\s*/).find(t=>t==Bt);return e&&(n=n.replace($s,"")),n=n.replace(/@\*/g,ge).replace(/@\w+/g,t=>ge+"-"+t.slice(1)).replace(/:animating/g,ze),[n,e]}function Us(n){return n?le({},n):null}var $e=class{constructor(e){this.errors=e,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}};function js(n){if(typeof n=="string")return null;let e=null;if(Array.isArray(n))n.forEach(t=>{if(t instanceof Map&&t.has("offset")){let s=t;e=parseFloat(s.get("offset")),s.delete("offset")}});else if(n instanceof Map&&n.has("offset")){let t=n;e=parseFloat(t.get("offset")),t.delete("offset")}return e}function Ws(n,e){if(n.hasOwnProperty("duration"))return n;if(typeof n=="number"){let r=ye(n,e).duration;return ke(r,0,"")}let t=n;if(t.split(/\s+/).some(r=>r.charAt(0)=="{"&&r.charAt(1)=="{")){let r=ke(0,0,"");return r.dynamic=!0,r.strValue=t,r}let i=ye(t,e);return ke(i.duration,i.delay,i.easing)}function Y(n){return n?(n=le({},n),n.params&&(n.params=Us(n.params))):n={},n}function ke(n,e,t){return{duration:n,delay:e,easing:t}}function ot(n,e,t,s,i,r,a=null,o=!1){return{type:1,element:n,keyframes:e,preStyleProps:t,postStyleProps:s,duration:i,delay:r,totalTime:i+r,easing:a,subTimeline:o}}var te=class{constructor(){this._map=new Map}get(e){return this._map.get(e)||[]}append(e,t){let s=this._map.get(e);s||this._map.set(e,s=[]),s.push(...t)}has(e){return this._map.has(e)}clear(){this._map.clear()}},Gs=1,Hs=":enter",Ys=new RegExp(Hs,"g"),Xs=":leave",Zs=new RegExp(Xs,"g");function lt(n,e,t,s,i,r=new Map,a=new Map,o,l,h=[]){return new Ve().buildKeyframes(n,e,t,s,i,r,a,o,l,h)}var Ve=class{buildKeyframes(e,t,s,i,r,a,o,l,h,c=[]){h=h||new te;let u=new Ue(e,t,h,i,r,c,[]);u.options=l;let _=l.delay?$(l.delay):0;u.currentTimeline.delayNextStep(_),u.currentTimeline.setStyles([a],null,u.errors,l),O(this,s,u);let y=u.timelines.filter(d=>d.containsAnimation());if(y.length&&o.size){let d;for(let g=y.length-1;g>=0;g--){let v=y[g];if(v.element===t){d=v;break}}d&&!d.allowOnlyTimelineStyles()&&d.setStyles([o],null,u.errors,l)}return y.length?y.map(d=>d.buildKeyframes()):[ot(t,[],[],[],0,_,"",!1)]}visitTrigger(e,t){}visitState(e,t){}visitTransition(e,t){}visitAnimateChild(e,t){let s=t.subInstructions.get(t.element);if(s){let i=t.createSubContext(e.options),r=t.currentTimeline.currentTime,a=this._visitSubInstructions(s,i,i.options);r!=a&&t.transformIntoNewTimeline(a)}t.previousNode=e}visitAnimateRef(e,t){let s=t.createSubContext(e.options);s.transformIntoNewTimeline(),this._applyAnimationRefDelays([e.options,e.animation.options],t,s),this.visitReference(e.animation,s),t.transformIntoNewTimeline(s.currentTimeline.currentTime),t.previousNode=e}_applyAnimationRefDelays(e,t,s){for(let i of e){let r=i?.delay;if(r){let a=typeof r=="number"?r:$(ne(r,i?.params??{},t.errors));s.delayNextStep(a)}}}_visitSubInstructions(e,t,s){let r=t.currentTimeline.currentTime,a=s.duration!=null?$(s.duration):null,o=s.delay!=null?$(s.delay):null;return a!==0&&e.forEach(l=>{let h=t.appendInstructionToTimeline(l,a,o);r=Math.max(r,h.duration+h.delay)}),r}visitReference(e,t){t.updateOptions(e.options,!0),O(this,e.animation,t),t.previousNode=e}visitSequence(e,t){let s=t.subContextCount,i=t,r=e.options;if(r&&(r.params||r.delay)&&(i=t.createSubContext(r),i.transformIntoNewTimeline(),r.delay!=null)){i.previousNode.type==E.Style&&(i.currentTimeline.snapshotCurrentStyles(),i.previousNode=Se);let a=$(r.delay);i.delayNextStep(a)}e.steps.length&&(e.steps.forEach(a=>O(this,a,i)),i.currentTimeline.applyStylesToKeyframe(),i.subContextCount>s&&i.transformIntoNewTimeline()),t.previousNode=e}visitGroup(e,t){let s=[],i=t.currentTimeline.currentTime,r=e.options&&e.options.delay?$(e.options.delay):0;e.steps.forEach(a=>{let o=t.createSubContext(e.options);r&&o.delayNextStep(r),O(this,a,o),i=Math.max(i,o.currentTimeline.currentTime),s.push(o.currentTimeline)}),s.forEach(a=>t.currentTimeline.mergeTimelineCollectedStyles(a)),t.transformIntoNewTimeline(i),t.previousNode=e}_visitTiming(e,t){if(e.dynamic){let s=e.strValue,i=t.params?ne(s,t.params,t.errors):s;return ye(i,t.errors)}else return{duration:e.duration,delay:e.delay,easing:e.easing}}visitAnimate(e,t){let s=t.currentAnimateTimings=this._visitTiming(e.timings,t),i=t.currentTimeline;s.delay&&(t.incrementTime(s.delay),i.snapshotCurrentStyles());let r=e.style;r.type==E.Keyframes?this.visitKeyframes(r,t):(t.incrementTime(s.duration),this.visitStyle(r,t),i.applyStylesToKeyframe()),t.currentAnimateTimings=null,t.previousNode=e}visitStyle(e,t){let s=t.currentTimeline,i=t.currentAnimateTimings;!i&&s.hasCurrentStyleProperties()&&s.forwardFrame();let r=i&&i.easing||e.easing;e.isEmptyStep?s.applyEmptyStep(r):s.setStyles(e.styles,r,t.errors,t.options),t.previousNode=e}visitKeyframes(e,t){let s=t.currentAnimateTimings,i=t.currentTimeline.duration,r=s.duration,o=t.createSubContext().currentTimeline;o.easing=s.easing,e.styles.forEach(l=>{let h=l.offset||0;o.forwardTime(h*r),o.setStyles(l.styles,l.easing,t.errors,t.options),o.applyStylesToKeyframe()}),t.currentTimeline.mergeTimelineCollectedStyles(o),t.transformIntoNewTimeline(i+r),t.previousNode=e}visitQuery(e,t){let s=t.currentTimeline.currentTime,i=e.options||{},r=i.delay?$(i.delay):0;r&&(t.previousNode.type===E.Style||s==0&&t.currentTimeline.hasCurrentStyleProperties())&&(t.currentTimeline.snapshotCurrentStyles(),t.previousNode=Se);let a=s,o=t.invokeQuery(e.selector,e.originalSelector,e.limit,e.includeSelf,!!i.optional,t.errors);t.currentQueryTotal=o.length;let l=null;o.forEach((h,c)=>{t.currentQueryIndex=c;let u=t.createSubContext(e.options,h);r&&u.delayNextStep(r),h===t.element&&(l=u.currentTimeline),O(this,e.animation,u),u.currentTimeline.applyStylesToKeyframe();let _=u.currentTimeline.currentTime;a=Math.max(a,_)}),t.currentQueryIndex=0,t.currentQueryTotal=0,t.transformIntoNewTimeline(a),l&&(t.currentTimeline.mergeTimelineCollectedStyles(l),t.currentTimeline.snapshotCurrentStyles()),t.previousNode=e}visitStagger(e,t){let s=t.parentContext,i=t.currentTimeline,r=e.timings,a=Math.abs(r.duration),o=a*(t.currentQueryTotal-1),l=a*t.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":l=o-l;break;case"full":l=s.currentStaggerTime;break}let c=t.currentTimeline;l&&c.delayNextStep(l);let u=c.currentTime;O(this,e.animation,t),t.previousNode=e,s.currentStaggerTime=i.currentTime-u+(i.startTime-s.currentTimeline.startTime)}},Se={},Ue=class n{constructor(e,t,s,i,r,a,o,l){this._driver=e,this.element=t,this.subInstructions=s,this._enterClassName=i,this._leaveClassName=r,this.errors=a,this.timelines=o,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Se,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=l||new Ee(this._driver,t,0),o.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(e,t){if(!e)return;let s=e,i=this.options;s.duration!=null&&(i.duration=$(s.duration)),s.delay!=null&&(i.delay=$(s.delay));let r=s.params;if(r){let a=i.params;a||(a=this.options.params={}),Object.keys(r).forEach(o=>{(!t||!a.hasOwnProperty(o))&&(a[o]=ne(r[o],a,this.errors))})}}_copyOptions(){let e={};if(this.options){let t=this.options.params;if(t){let s=e.params={};Object.keys(t).forEach(i=>{s[i]=t[i]})}}return e}createSubContext(e=null,t,s){let i=t||this.element,r=new n(this._driver,i,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(i,s||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(e),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(e){return this.previousNode=Se,this.currentTimeline=this.currentTimeline.fork(this.element,e),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(e,t,s){let i={duration:t??e.duration,delay:this.currentTimeline.currentTime+(s??0)+e.delay,easing:""},r=new je(this._driver,e.element,e.keyframes,e.preStyleProps,e.postStyleProps,i,e.stretchStartingKeyframe);return this.timelines.push(r),i}incrementTime(e){this.currentTimeline.forwardTime(this.currentTimeline.duration+e)}delayNextStep(e){e>0&&this.currentTimeline.delayNextStep(e)}invokeQuery(e,t,s,i,r,a){let o=[];if(i&&o.push(this.element),e.length>0){e=e.replace(Ys,"."+this._enterClassName),e=e.replace(Zs,"."+this._leaveClassName);let l=s!=1,h=this._driver.query(this.element,e,l);s!==0&&(h=s<0?h.slice(h.length+s,h.length):h.slice(0,s)),o.push(...h)}return!r&&o.length==0&&a.push(ls(t)),o}},Ee=class n{constructor(e,t,s,i){this._driver=e,this.element=t,this.startTime=s,this._elementTimelineStylesLookup=i,this.duration=0,this.easing=null,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(t),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(t,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(e){let t=this._keyframes.size===1&&this._pendingStyles.size;this.duration||t?(this.forwardTime(this.currentTime+e),t&&this.snapshotCurrentStyles()):this.startTime+=e}fork(e,t){return this.applyStylesToKeyframe(),new n(this._driver,e,t||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=Gs,this._loadKeyframe()}forwardTime(e){this.applyStylesToKeyframe(),this.duration=e,this._loadKeyframe()}_updateStyle(e,t){this._localTimelineStyles.set(e,t),this._globalTimelineStyles.set(e,t),this._styleSummary.set(e,{time:this.currentTime,value:t})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(e){e&&this._previousKeyframe.set("easing",e);for(let[t,s]of this._globalTimelineStyles)this._backFill.set(t,s||B),this._currentKeyframe.set(t,B);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(e,t,s,i){t&&this._previousKeyframe.set("easing",t);let r=i&&i.params||{},a=Js(e,this._globalTimelineStyles);for(let[o,l]of a){let h=ne(l,r,s);this._pendingStyles.set(o,h),this._localTimelineStyles.has(o)||this._backFill.set(o,this._globalTimelineStyles.get(o)??B),this._updateStyle(o,h)}}applyStylesToKeyframe(){this._pendingStyles.size!=0&&(this._pendingStyles.forEach((e,t)=>{this._currentKeyframe.set(t,e)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((e,t)=>{this._currentKeyframe.has(t)||this._currentKeyframe.set(t,e)}))}snapshotCurrentStyles(){for(let[e,t]of this._localTimelineStyles)this._pendingStyles.set(e,t),this._updateStyle(e,t)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){let e=[];for(let t in this._currentKeyframe)e.push(t);return e}mergeTimelineCollectedStyles(e){e._styleSummary.forEach((t,s)=>{let i=this._styleSummary.get(s);(!i||t.time>i.time)&&this._updateStyle(s,t.value)})}buildKeyframes(){this.applyStylesToKeyframe();let e=new Set,t=new Set,s=this._keyframes.size===1&&this.duration===0,i=[];this._keyframes.forEach((o,l)=>{let h=new Map([...this._backFill,...o]);h.forEach((c,u)=>{c===he?e.add(u):c===B&&t.add(u)}),s||h.set("offset",l/this.duration),i.push(h)});let r=[...e.values()],a=[...t.values()];if(s){let o=i[0],l=new Map(o);o.set("offset",0),l.set("offset",1),i=[o,l]}return ot(this.element,i,r,a,this.duration,this.startTime,this.easing,!1)}},je=class extends Ee{constructor(e,t,s,i,r,a,o=!1){super(e,t,a.delay),this.keyframes=s,this.preStyleProps=i,this.postStyleProps=r,this._stretchStartingKeyframe=o,this.timings={duration:a.duration,delay:a.delay,easing:a.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let e=this.keyframes,{delay:t,duration:s,easing:i}=this.timings;if(this._stretchStartingKeyframe&&t){let r=[],a=s+t,o=t/a,l=new Map(e[0]);l.set("offset",0),r.push(l);let h=new Map(e[0]);h.set("offset",bt(o)),r.push(h);let c=e.length-1;for(let u=1;u<=c;u++){let _=new Map(e[u]),y=_.get("offset"),d=t+y*s;_.set("offset",bt(d/a)),r.push(_)}s=a,t=0,i="",e=r}return ot(this.element,e,this.preStyleProps,this.postStyleProps,s,t,i,!0)}};function bt(n,e=3){let t=Math.pow(10,e-1);return Math.round(n*t)/t}function Js(n,e){let t=new Map,s;return n.forEach(i=>{if(i==="*"){s??=e.keys();for(let r of s)t.set(r,B)}else for(let[r,a]of i)t.set(r,a)}),t}function At(n,e,t,s,i,r,a,o,l,h,c,u,_){return{type:0,element:n,triggerName:e,isRemovalTransition:i,fromState:t,fromStyles:r,toState:s,toStyles:a,timelines:o,queriedElements:l,preStyleProps:h,postStyleProps:c,totalTime:u,errors:_}}var De={},Te=class{constructor(e,t,s){this._triggerName=e,this.ast=t,this._stateStyles=s}match(e,t,s,i){return xs(this.ast.matchers,e,t,s,i)}buildStyles(e,t,s){let i=this._stateStyles.get("*");return e!==void 0&&(i=this._stateStyles.get(e?.toString())||i),i?i.buildStyles(t,s):new Map}build(e,t,s,i,r,a,o,l,h,c){let u=[],_=this.ast.options&&this.ast.options.params||De,y=o&&o.params||De,d=this.buildStyles(s,y,u),g=l&&l.params||De,v=this.buildStyles(i,g,u),b=new Set,A=new Map,C=new Map,N=i==="void",Z={params:Qt(g,_),delay:this.ast.options?.delay},K=c?[]:lt(e,t,this.ast.animation,r,a,d,v,Z,h,u),k=0;return K.forEach(D=>{k=Math.max(D.duration+D.delay,k)}),u.length?At(t,this._triggerName,s,i,N,d,v,[],[],A,C,k,u):(K.forEach(D=>{let j=D.element,J=L(A,j,new Set);D.preStyleProps.forEach(W=>J.add(W));let ht=L(C,j,new Set);D.postStyleProps.forEach(W=>ht.add(W)),j!==t&&b.add(j)}),At(t,this._triggerName,s,i,N,d,v,K,[...b.values()],A,C,k))}};function xs(n,e,t,s,i){return n.some(r=>r(e,t,s,i))}function Qt(n,e){let t=le({},e);return Object.entries(n).forEach(([s,i])=>{i!=null&&(t[s]=i)}),t}var We=class{constructor(e,t,s){this.styles=e,this.defaultParams=t,this.normalizer=s}buildStyles(e,t){let s=new Map,i=Qt(e,this.defaultParams);return this.styles.styles.forEach(r=>{typeof r!="string"&&r.forEach((a,o)=>{a&&(a=ne(a,i,t));let l=this.normalizer.normalizePropertyName(o,t);a=this.normalizer.normalizeStyleValue(o,l,a,t),s.set(o,a)})}),s}};function ei(n,e,t){return new Ge(n,e,t)}var Ge=class{constructor(e,t,s){this.name=e,this.ast=t,this._normalizer=s,this.transitionFactories=[],this.states=new Map,t.states.forEach(i=>{let r=i.options&&i.options.params||{};this.states.set(i.name,new We(i.style,r,s))}),Pt(this.states,"true","1"),Pt(this.states,"false","0"),t.transitions.forEach(i=>{this.transitionFactories.push(new Te(e,i,this.states))}),this.fallbackTransition=ti(e,this.states,this._normalizer)}get containsQueries(){return this.ast.queryCount>0}matchTransition(e,t,s,i){return this.transitionFactories.find(a=>a.match(e,t,s,i))||null}matchStyles(e,t,s){return this.fallbackTransition.buildStyles(e,t,s)}};function ti(n,e,t){let s=[(a,o)=>!0],i={type:E.Sequence,steps:[],options:null},r={type:E.Transition,animation:i,matchers:s,options:null,queryCount:0,depCount:0};return new Te(n,r,e)}function Pt(n,e,t){n.has(e)?n.has(t)||n.set(t,n.get(e)):n.has(t)&&n.set(e,n.get(t))}var si=new te,He=class{constructor(e,t,s){this.bodyNode=e,this._driver=t,this._normalizer=s,this._animations=new Map,this._playersById=new Map,this.players=[]}register(e,t){let s=[],i=[],r=at(this._driver,t,s,i);if(s.length)throw ps(s);i.length&&void 0,this._animations.set(e,r)}_buildPlayer(e,t,s){let i=e.element,r=Lt(this._normalizer,e.keyframes,t,s);return this._driver.animate(i,r,e.duration,e.delay,e.easing,[],!0)}create(e,t,s={}){let i=[],r=this._animations.get(e),a,o=new Map;if(r?(a=lt(this._driver,t,r,it,pe,new Map,new Map,s,si,i),a.forEach(c=>{let u=L(o,c.element,new Map);c.postStyleProps.forEach(_=>u.set(_,null))})):(i.push(gs()),a=[]),i.length)throw ys(i);o.forEach((c,u)=>{c.forEach((_,y)=>{c.set(y,this._driver.computeStyle(u,y,B))})});let l=a.map(c=>{let u=o.get(c.element);return this._buildPlayer(c,new Map,u)}),h=U(l);return this._playersById.set(e,h),h.onDestroy(()=>this.destroy(e)),this.players.push(h),h}destroy(e){let t=this._getPlayer(e);t.destroy(),this._playersById.delete(e);let s=this.players.indexOf(t);s>=0&&this.players.splice(s,1)}_getPlayer(e){let t=this._playersById.get(e);if(!t)throw _s(e);return t}listen(e,t,s,i){let r=tt(t,"","","");return et(this._getPlayer(e),s,r,i),()=>{}}command(e,t,s,i){if(s=="register"){this.register(e,i[0]);return}if(s=="create"){let a=i[0]||{};this.create(e,t,a);return}let r=this._getPlayer(e);switch(s){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(i[0]));break;case"destroy":this.destroy(e);break}}},Nt="ng-animate-queued",ii=".ng-animate-queued",Re="ng-animate-disabled",ni=".ng-animate-disabled",ri="ng-star-inserted",ai=".ng-star-inserted",oi=[],$t={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},li={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},z="__ng_removed",re=class{get params(){return this.options.params}constructor(e,t=""){this.namespaceId=t;let s=e&&e.hasOwnProperty("value"),i=s?e.value:e;if(this.value=ui(i),s){let r=e,{value:a}=r,o=dt(r,["value"]);this.options=o}else this.options={};this.options.params||(this.options.params={})}absorbOptions(e){let t=e.params;if(t){let s=this.options.params;Object.keys(t).forEach(i=>{s[i]==null&&(s[i]=t[i])})}}},ie="void",Oe=new re(ie),Ye=class{constructor(e,t,s){this.id=e,this.hostElement=t,this._engine=s,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+e,I(t,this._hostClassName)}listen(e,t,s,i){if(!this._triggers.has(t))throw Ss(s,t);if(s==null||s.length==0)throw Es(t);if(!ci(s))throw Ts(s,t);let r=L(this._elementListeners,e,[]),a={name:t,phase:s,callback:i};r.push(a);let o=L(this._engine.statesByElement,e,new Map);return o.has(t)||(I(e,ue),I(e,ue+"-"+t),o.set(t,Oe)),()=>{this._engine.afterFlush(()=>{let l=r.indexOf(a);l>=0&&r.splice(l,1),this._triggers.has(t)||o.delete(t)})}}register(e,t){return this._triggers.has(e)?!1:(this._triggers.set(e,t),!0)}_getTrigger(e){let t=this._triggers.get(e);if(!t)throw vs(e);return t}trigger(e,t,s,i=!0){let r=this._getTrigger(t),a=new ae(this.id,t,e),o=this._engine.statesByElement.get(e);o||(I(e,ue),I(e,ue+"-"+t),this._engine.statesByElement.set(e,o=new Map));let l=o.get(t),h=new re(s,this.id);if(!(s&&s.hasOwnProperty("value"))&&l&&h.absorbOptions(l.options),o.set(t,h),l||(l=Oe),!(h.value===ie)&&l.value===h.value){if(!mi(l.params,h.params)){let g=[],v=r.matchStyles(l.value,l.params,g),b=r.matchStyles(h.value,h.params,g);g.length?this._engine.reportError(g):this._engine.afterFlush(()=>{X(e,v),Q(e,b)})}return}let _=L(this._engine.playersByElement,e,[]);_.forEach(g=>{g.namespaceId==this.id&&g.triggerName==t&&g.queued&&g.destroy()});let y=r.matchTransition(l.value,h.value,e,h.params),d=!1;if(!y){if(!i)return;y=r.fallbackTransition,d=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:t,transition:y,fromState:l,toState:h,player:a,isFallbackTransition:d}),d||(I(e,Nt),a.onStart(()=>{ee(e,Nt)})),a.onDone(()=>{let g=this.players.indexOf(a);g>=0&&this.players.splice(g,1);let v=this._engine.playersByElement.get(e);if(v){let b=v.indexOf(a);b>=0&&v.splice(b,1)}}),this.players.push(a),_.push(a),a}deregister(e){this._triggers.delete(e),this._engine.statesByElement.forEach(t=>t.delete(e)),this._elementListeners.forEach((t,s)=>{this._elementListeners.set(s,t.filter(i=>i.name!=e))})}clearElementCache(e){this._engine.statesByElement.delete(e),this._elementListeners.delete(e);let t=this._engine.playersByElement.get(e);t&&(t.forEach(s=>s.destroy()),this._engine.playersByElement.delete(e))}_signalRemovalForInnerTriggers(e,t){let s=this._engine.driver.query(e,ge,!0);s.forEach(i=>{if(i[z])return;let r=this._engine.fetchNamespacesByElement(i);r.size?r.forEach(a=>a.triggerLeaveAnimation(i,t,!1,!0)):this.clearElementCache(i)}),this._engine.afterFlushAnimationsDone(()=>s.forEach(i=>this.clearElementCache(i)))}triggerLeaveAnimation(e,t,s,i){let r=this._engine.statesByElement.get(e),a=new Map;if(r){let o=[];if(r.forEach((l,h)=>{if(a.set(h,l.value),this._triggers.has(h)){let c=this.trigger(e,h,ie,i);c&&o.push(c)}}),o.length)return this._engine.markElementAsRemoved(this.id,e,!0,t,a),s&&U(o).onDone(()=>this._engine.processLeaveNode(e)),!0}return!1}prepareLeaveAnimationListeners(e){let t=this._elementListeners.get(e),s=this._engine.statesByElement.get(e);if(t&&s){let i=new Set;t.forEach(r=>{let a=r.name;if(i.has(a))return;i.add(a);let l=this._triggers.get(a).fallbackTransition,h=s.get(a)||Oe,c=new re(ie),u=new ae(this.id,a,e);this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:a,transition:l,fromState:h,toState:c,player:u,isFallbackTransition:!0})})}}removeNode(e,t){let s=this._engine;if(e.childElementCount&&this._signalRemovalForInnerTriggers(e,t),this.triggerLeaveAnimation(e,t,!0))return;let i=!1;if(s.totalAnimations){let r=s.players.length?s.playersByQueriedElement.get(e):[];if(r&&r.length)i=!0;else{let a=e;for(;a=a.parentNode;)if(s.statesByElement.get(a)){i=!0;break}}}if(this.prepareLeaveAnimationListeners(e),i)s.markElementAsRemoved(this.id,e,!1,t);else{let r=e[z];(!r||r===$t)&&(s.afterFlush(()=>this.clearElementCache(e)),s.destroyInnerAnimations(e),s._onRemovalComplete(e,t))}}insertNode(e,t){I(e,this._hostClassName)}drainQueuedTransitions(e){let t=[];return this._queue.forEach(s=>{let i=s.player;if(i.destroyed)return;let r=s.element,a=this._elementListeners.get(r);a&&a.forEach(o=>{if(o.name==s.triggerName){let l=tt(r,s.triggerName,s.fromState.value,s.toState.value);l._data=e,et(s.player,o.phase,l,o.callback)}}),i.markedForDestroy?this._engine.afterFlush(()=>{i.destroy()}):t.push(s)}),this._queue=[],t.sort((s,i)=>{let r=s.transition.ast.depCount,a=i.transition.ast.depCount;return r==0||a==0?r-a:this._engine.driver.containsElement(s.element,i.element)?1:-1})}destroy(e){this.players.forEach(t=>t.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,e)}},Xe=class{_onRemovalComplete(e,t){this.onRemovalComplete(e,t)}constructor(e,t,s,i){this.bodyNode=e,this.driver=t,this._normalizer=s,this.scheduler=i,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(r,a)=>{}}get queuedPlayers(){let e=[];return this._namespaceList.forEach(t=>{t.players.forEach(s=>{s.queued&&e.push(s)})}),e}createNamespace(e,t){let s=new Ye(e,t,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,t)?this._balanceNamespaceList(s,t):(this.newHostElements.set(t,s),this.collectEnterElement(t)),this._namespaceLookup[e]=s}_balanceNamespaceList(e,t){let s=this._namespaceList,i=this.namespacesByHostElement;if(s.length-1>=0){let a=!1,o=this.driver.getParentElement(t);for(;o;){let l=i.get(o);if(l){let h=s.indexOf(l);s.splice(h+1,0,e),a=!0;break}o=this.driver.getParentElement(o)}a||s.unshift(e)}else s.push(e);return i.set(t,e),e}register(e,t){let s=this._namespaceLookup[e];return s||(s=this.createNamespace(e,t)),s}registerTrigger(e,t,s){let i=this._namespaceLookup[e];i&&i.register(t,s)&&this.totalAnimations++}destroy(e,t){e&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{let s=this._fetchNamespace(e);this.namespacesByHostElement.delete(s.hostElement);let i=this._namespaceList.indexOf(s);i>=0&&this._namespaceList.splice(i,1),s.destroy(t),delete this._namespaceLookup[e]}))}_fetchNamespace(e){return this._namespaceLookup[e]}fetchNamespacesByElement(e){let t=new Set,s=this.statesByElement.get(e);if(s){for(let i of s.values())if(i.namespaceId){let r=this._fetchNamespace(i.namespaceId);r&&t.add(r)}}return t}trigger(e,t,s,i){if(de(t)){let r=this._fetchNamespace(e);if(r)return r.trigger(t,s,i),!0}return!1}insertNode(e,t,s,i){if(!de(t))return;let r=t[z];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;let a=this.collectedLeaveElements.indexOf(t);a>=0&&this.collectedLeaveElements.splice(a,1)}if(e){let a=this._fetchNamespace(e);a&&a.insertNode(t,s)}i&&this.collectEnterElement(t)}collectEnterElement(e){this.collectedEnterElements.push(e)}markElementAsDisabled(e,t){t?this.disabledNodes.has(e)||(this.disabledNodes.add(e),I(e,Re)):this.disabledNodes.has(e)&&(this.disabledNodes.delete(e),ee(e,Re))}removeNode(e,t,s){if(de(t)){this.scheduler?.notify();let i=e?this._fetchNamespace(e):null;i?i.removeNode(t,s):this.markElementAsRemoved(e,t,!1,s);let r=this.namespacesByHostElement.get(t);r&&r.id!==e&&r.removeNode(t,s)}else this._onRemovalComplete(t,s)}markElementAsRemoved(e,t,s,i,r){this.collectedLeaveElements.push(t),t[z]={namespaceId:e,setForRemoval:i,hasAnimation:s,removedBeforeQueried:!1,previousTriggersValues:r}}listen(e,t,s,i,r){return de(t)?this._fetchNamespace(e).listen(t,s,i,r):()=>{}}_buildInstruction(e,t,s,i,r){return e.transition.build(this.driver,e.element,e.fromState.value,e.toState.value,s,i,e.fromState.options,e.toState.options,t,r)}destroyInnerAnimations(e){let t=this.driver.query(e,ge,!0);t.forEach(s=>this.destroyActiveAnimationsForElement(s)),this.playersByQueriedElement.size!=0&&(t=this.driver.query(e,ze,!0),t.forEach(s=>this.finishActiveQueriedAnimationOnElement(s)))}destroyActiveAnimationsForElement(e){let t=this.playersByElement.get(e);t&&t.forEach(s=>{s.queued?s.markedForDestroy=!0:s.destroy()})}finishActiveQueriedAnimationOnElement(e){let t=this.playersByQueriedElement.get(e);t&&t.forEach(s=>s.finish())}whenRenderingDone(){return new Promise(e=>{if(this.players.length)return U(this.players).onDone(()=>e());e()})}processLeaveNode(e){let t=e[z];if(t&&t.setForRemoval){if(e[z]=$t,t.namespaceId){this.destroyInnerAnimations(e);let s=this._fetchNamespace(t.namespaceId);s&&s.clearElementCache(e)}this._onRemovalComplete(e,t.setForRemoval)}e.classList?.contains(Re)&&this.markElementAsDisabled(e,!1),this.driver.query(e,ni,!0).forEach(s=>{this.markElementAsDisabled(s,!1)})}flush(e=-1){let t=[];if(this.newHostElements.size&&(this.newHostElements.forEach((s,i)=>this._balanceNamespaceList(s,i)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let s=0;ss()),this._flushFns=[],this._whenQuietFns.length){let s=this._whenQuietFns;this._whenQuietFns=[],t.length?U(t).onDone(()=>{s.forEach(i=>i())}):s.forEach(i=>i())}}reportError(e){throw ws(e)}_flushAnimations(e,t){let s=new te,i=[],r=new Map,a=[],o=new Map,l=new Map,h=new Map,c=new Set;this.disabledNodes.forEach(f=>{c.add(f);let m=this.driver.query(f,ii,!0);for(let p=0;p{let p=it+g++;d.set(m,p),f.forEach(T=>I(T,p))});let v=[],b=new Set,A=new Set;for(let f=0;fb.add(T)):A.add(m))}let C=new Map,N=kt(_,Array.from(b));N.forEach((f,m)=>{let p=pe+g++;C.set(m,p),f.forEach(T=>I(T,p))}),e.push(()=>{y.forEach((f,m)=>{let p=d.get(m);f.forEach(T=>ee(T,p))}),N.forEach((f,m)=>{let p=C.get(m);f.forEach(T=>ee(T,p))}),v.forEach(f=>{this.processLeaveNode(f)})});let Z=[],K=[];for(let f=this._namespaceList.length-1;f>=0;f--)this._namespaceList[f].drainQueuedTransitions(t).forEach(p=>{let T=p.player,P=p.element;if(Z.push(T),this.collectedEnterElements.length){let M=P[z];if(M&&M.setForMove){if(M.previousTriggersValues&&M.previousTriggersValues.has(p.triggerName)){let G=M.previousTriggersValues.get(p.triggerName),F=this.statesByElement.get(p.element);if(F&&F.has(p.triggerName)){let oe=F.get(p.triggerName);oe.value=G,F.set(p.triggerName,oe)}}T.destroy();return}}let q=!u||!this.driver.containsElement(u,P),R=C.get(P),V=d.get(P),w=this._buildInstruction(p,s,V,R,q);if(w.errors&&w.errors.length){K.push(w);return}if(q){T.onStart(()=>X(P,w.fromStyles)),T.onDestroy(()=>Q(P,w.toStyles)),i.push(T);return}if(p.isFallbackTransition){T.onStart(()=>X(P,w.fromStyles)),T.onDestroy(()=>Q(P,w.toStyles)),i.push(T);return}let ft=[];w.timelines.forEach(M=>{M.stretchStartingKeyframe=!0,this.disabledNodes.has(M.element)||ft.push(M)}),w.timelines=ft,s.append(P,w.timelines);let jt={instruction:w,player:T,element:P};a.push(jt),w.queriedElements.forEach(M=>L(o,M,[]).push(T)),w.preStyleProps.forEach((M,G)=>{if(M.size){let F=l.get(G);F||l.set(G,F=new Set),M.forEach((oe,Pe)=>F.add(Pe))}}),w.postStyleProps.forEach((M,G)=>{let F=h.get(G);F||h.set(G,F=new Set),M.forEach((oe,Pe)=>F.add(Pe))})});if(K.length){let f=[];K.forEach(m=>{f.push(bs(m.triggerName,m.errors))}),Z.forEach(m=>m.destroy()),this.reportError(f)}let k=new Map,D=new Map;a.forEach(f=>{let m=f.element;s.has(m)&&(D.set(m,m),this._beforeAnimationBuild(f.player.namespaceId,f.instruction,k))}),i.forEach(f=>{let m=f.element;this._getPreviousPlayers(m,!1,f.namespaceId,f.triggerName,null).forEach(T=>{L(k,m,[]).push(T),T.destroy()})});let j=v.filter(f=>Dt(f,l,h)),J=new Map;Ct(J,this.driver,A,h,B).forEach(f=>{Dt(f,l,h)&&j.push(f)});let W=new Map;y.forEach((f,m)=>{Ct(W,this.driver,new Set(f),l,he)}),j.forEach(f=>{let m=J.get(f),p=W.get(f);J.set(f,new Map([...m?.entries()??[],...p?.entries()??[]]))});let Ae=[],ut=[],ct={};a.forEach(f=>{let{element:m,player:p,instruction:T}=f;if(s.has(m)){if(c.has(m)){p.onDestroy(()=>Q(m,T.toStyles)),p.disabled=!0,p.overrideTotalTime(T.totalTime),i.push(p);return}let P=ct;if(D.size>1){let R=m,V=[];for(;R=R.parentNode;){let w=D.get(R);if(w){P=w;break}V.push(R)}V.forEach(w=>D.set(w,P))}let q=this._buildAnimation(p.namespaceId,T,k,r,W,J);if(p.setRealPlayer(q),P===ct)Ae.push(p);else{let R=this.playersByElement.get(P);R&&R.length&&(p.parentPlayer=U(R)),i.push(p)}}else X(m,T.fromStyles),p.onDestroy(()=>Q(m,T.toStyles)),ut.push(p),c.has(m)&&i.push(p)}),ut.forEach(f=>{let m=r.get(f.element);if(m&&m.length){let p=U(m);f.setRealPlayer(p)}}),i.forEach(f=>{f.parentPlayer?f.syncPlayerEvents(f.parentPlayer):f.destroy()});for(let f=0;f!q.destroyed);P.length?fi(this,m,P):this.processLeaveNode(m)}return v.length=0,Ae.forEach(f=>{this.players.push(f),f.onDone(()=>{f.destroy();let m=this.players.indexOf(f);this.players.splice(m,1)}),f.play()}),Ae}afterFlush(e){this._flushFns.push(e)}afterFlushAnimationsDone(e){this._whenQuietFns.push(e)}_getPreviousPlayers(e,t,s,i,r){let a=[];if(t){let o=this.playersByQueriedElement.get(e);o&&(a=o)}else{let o=this.playersByElement.get(e);if(o){let l=!r||r==ie;o.forEach(h=>{h.queued||!l&&h.triggerName!=i||a.push(h)})}}return(s||i)&&(a=a.filter(o=>!(s&&s!=o.namespaceId||i&&i!=o.triggerName))),a}_beforeAnimationBuild(e,t,s){let i=t.triggerName,r=t.element,a=t.isRemovalTransition?void 0:e,o=t.isRemovalTransition?void 0:i;for(let l of t.timelines){let h=l.element,c=h!==r,u=L(s,h,[]);this._getPreviousPlayers(h,c,a,o,t.toState).forEach(y=>{let d=y.getRealPlayer();d.beforeDestroy&&d.beforeDestroy(),y.destroy(),u.push(y)})}X(r,t.fromStyles)}_buildAnimation(e,t,s,i,r,a){let o=t.triggerName,l=t.element,h=[],c=new Set,u=new Set,_=t.timelines.map(d=>{let g=d.element;c.add(g);let v=g[z];if(v&&v.removedBeforeQueried)return new x(d.duration,d.delay);let b=g!==l,A=di((s.get(g)||oi).map(k=>k.getRealPlayer())).filter(k=>{let D=k;return D.element?D.element===g:!1}),C=r.get(g),N=a.get(g),Z=Lt(this._normalizer,d.keyframes,C,N),K=this._buildPlayer(d,Z,A);if(d.subTimeline&&i&&u.add(g),b){let k=new ae(e,o,g);k.setRealPlayer(K),h.push(k)}return K});h.forEach(d=>{L(this.playersByQueriedElement,d.element,[]).push(d),d.onDone(()=>hi(this.playersByQueriedElement,d.element,d))}),c.forEach(d=>I(d,Et));let y=U(_);return y.onDestroy(()=>{c.forEach(d=>ee(d,Et)),Q(l,t.toStyles)}),u.forEach(d=>{L(i,d,[]).push(y)}),y}_buildPlayer(e,t,s){return t.length>0?this.driver.animate(e.element,t,e.duration,e.delay,e.easing,s):new x(e.duration,e.delay)}},ae=class{constructor(e,t,s){this.namespaceId=e,this.triggerName=t,this.element=s,this._player=new x,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.parentPlayer=null,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(e){this._containsRealPlayer||(this._player=e,this._queuedCallbacks.forEach((t,s)=>{t.forEach(i=>et(e,s,void 0,i))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(e.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(e){this.totalTime=e}syncPlayerEvents(e){let t=this._player;t.triggerCallback&&e.onStart(()=>t.triggerCallback("start")),e.onDone(()=>this.finish()),e.onDestroy(()=>this.destroy())}_queueEvent(e,t){L(this._queuedCallbacks,e,[]).push(t)}onDone(e){this.queued&&this._queueEvent("done",e),this._player.onDone(e)}onStart(e){this.queued&&this._queueEvent("start",e),this._player.onStart(e)}onDestroy(e){this.queued&&this._queueEvent("destroy",e),this._player.onDestroy(e)}init(){this._player.init()}hasStarted(){return this.queued?!1:this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(e){this.queued||this._player.setPosition(e)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(e){let t=this._player;t.triggerCallback&&t.triggerCallback(e)}};function hi(n,e,t){let s=n.get(e);if(s){if(s.length){let i=s.indexOf(t);s.splice(i,1)}s.length==0&&n.delete(e)}return s}function ui(n){return n??null}function de(n){return n&&n.nodeType===1}function ci(n){return n=="start"||n=="done"}function Mt(n,e){let t=n.style.display;return n.style.display=e??"none",t}function Ct(n,e,t,s,i){let r=[];t.forEach(l=>r.push(Mt(l)));let a=[];s.forEach((l,h)=>{let c=new Map;l.forEach(u=>{let _=e.computeStyle(h,u,i);c.set(u,_),(!_||_.length==0)&&(h[z]=li,a.push(h))}),n.set(h,c)});let o=0;return t.forEach(l=>Mt(l,r[o++])),a}function kt(n,e){let t=new Map;if(n.forEach(o=>t.set(o,[])),e.length==0)return t;let s=1,i=new Set(e),r=new Map;function a(o){if(!o)return s;let l=r.get(o);if(l)return l;let h=o.parentNode;return t.has(h)?l=h:i.has(h)?l=s:l=a(h),r.set(o,l),l}return e.forEach(o=>{let l=a(o);l!==s&&t.get(l).push(o)}),t}function I(n,e){n.classList?.add(e)}function ee(n,e){n.classList?.remove(e)}function fi(n,e,t){U(t).onDone(()=>n.processLeaveNode(e))}function di(n){let e=[];return Vt(n,e),e}function Vt(n,e){for(let t=0;ti.add(r)):e.set(n,s),t.delete(n),!0}var ve=class{constructor(e,t,s,i){this._driver=t,this._normalizer=s,this._triggerCache={},this.onRemovalComplete=(r,a)=>{},this._transitionEngine=new Xe(e.body,t,s,i),this._timelineEngine=new He(e.body,t,s),this._transitionEngine.onRemovalComplete=(r,a)=>this.onRemovalComplete(r,a)}registerTrigger(e,t,s,i,r){let a=e+"-"+i,o=this._triggerCache[a];if(!o){let l=[],h=[],c=at(this._driver,r,l,h);if(l.length)throw ds(i,l);h.length&&void 0,o=ei(i,c,this._normalizer),this._triggerCache[a]=o}this._transitionEngine.registerTrigger(t,i,o)}register(e,t){this._transitionEngine.register(e,t)}destroy(e,t){this._transitionEngine.destroy(e,t)}onInsert(e,t,s,i){this._transitionEngine.insertNode(e,t,s,i)}onRemove(e,t,s){this._transitionEngine.removeNode(e,t,s)}disableAnimations(e,t){this._transitionEngine.markElementAsDisabled(e,t)}process(e,t,s,i){if(s.charAt(0)=="@"){let[r,a]=yt(s),o=i;this._timelineEngine.command(r,t,a,o)}else this._transitionEngine.trigger(e,t,s,i)}listen(e,t,s,i,r){if(s.charAt(0)=="@"){let[a,o]=yt(s);return this._timelineEngine.listen(a,t,o,r)}return this._transitionEngine.listen(e,t,s,i,r)}flush(e=-1){this._transitionEngine.flush(e)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(e){this._transitionEngine.afterFlushAnimationsDone(e)}};function pi(n,e){let t=null,s=null;return Array.isArray(e)&&e.length?(t=Le(e[0]),e.length>1&&(s=Le(e[e.length-1]))):e instanceof Map&&(t=Le(e)),t||s?new Ze(n,t,s):null}var Ze=class n{static{this.initialStylesByElement=new WeakMap}constructor(e,t,s){this._element=e,this._startStyles=t,this._endStyles=s,this._state=0;let i=n.initialStylesByElement.get(e);i||n.initialStylesByElement.set(e,i=new Map),this._initialStyles=i}start(){this._state<1&&(this._startStyles&&Q(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Q(this._element,this._initialStyles),this._endStyles&&(Q(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(n.initialStylesByElement.delete(this._element),this._startStyles&&(X(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(X(this._element,this._endStyles),this._endStyles=null),Q(this._element,this._initialStyles),this._state=3)}};function Le(n){let e=null;return n.forEach((t,s)=>{gi(s)&&(e=e||new Map,e.set(s,t))}),e}function gi(n){return n==="display"||n==="position"}var we=class{constructor(e,t,s,i){this.element=e,this.keyframes=t,this.options=s,this._specialStyles=i,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=s.duration,this._delay=s.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(e=>e()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;let e=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,e,this.options),this._finalKeyframe=e.length?e[e.length-1]:new Map;let t=()=>this._onFinish();this.domPlayer.addEventListener("finish",t),this.onDestroy(()=>{this.domPlayer.removeEventListener("finish",t)})}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(e){let t=[];return e.forEach(s=>{t.push(Object.fromEntries(s))}),t}_triggerWebAnimation(e,t,s){return e.animate(this._convertKeyframesToObject(t),s)}onStart(e){this._originalOnStartFns.push(e),this._onStartFns.push(e)}onDone(e){this._originalOnDoneFns.push(e),this._onDoneFns.push(e)}onDestroy(e){this._onDestroyFns.push(e)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(e=>e()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(e=>e()),this._onDestroyFns=[])}setPosition(e){this.domPlayer===void 0&&this.init(),this.domPlayer.currentTime=e*this.time}getPosition(){return+(this.domPlayer.currentTime??0)/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){let e=new Map;this.hasStarted()&&this._finalKeyframe.forEach((s,i)=>{i!=="offset"&&e.set(i,this._finished?s:rt(this.element,i))}),this.currentSnapshot=e}triggerCallback(e){let t=e==="start"?this._onStartFns:this._onDoneFns;t.forEach(s=>s()),t.length=0}},Je=class{validateStyleProperty(e){return!0}validateAnimatableStyleProperty(e){return!0}matchesElement(e,t){return!1}containsElement(e,t){return Ft(e,t)}getParentElement(e){return st(e)}query(e,t,s){return It(e,t,s)}computeStyle(e,t,s){return rt(e,t)}animate(e,t,s,i,r,a=[]){let o=i==0?"both":"forwards",l={duration:s,delay:i,fill:o};r&&(l.easing=r);let h=new Map,c=a.filter(y=>y instanceof we);Is(s,i)&&c.forEach(y=>{y.currentSnapshot.forEach((d,g)=>h.set(g,d))});let u=Os(t).map(y=>new Map(y));u=zs(e,u,h);let _=pi(e,u);return new we(e,u,l,_)}};function Ai(n,e,t){return n==="noop"?new ve(e,new zt,new Ie,t):new ve(e,new Je,new Be,t)}var Rt=class{constructor(e,t){this._driver=e;let s=[],i=[],r=at(e,t,s,i);if(s.length)throw cs(s);i.length&&void 0,this._animationAst=r}buildTimelines(e,t,s,i,r){let a=Array.isArray(t)?Tt(t):t,o=Array.isArray(s)?Tt(s):s,l=[];r=r||new te;let h=lt(this._driver,e,this._animationAst,it,pe,a,o,i,r,l);if(l.length)throw fs(l);return h}},me="@",Ut="@.disabled",be=class{constructor(e,t,s,i){this.namespaceId=e,this.delegate=t,this.engine=s,this._onDestroy=i,this.\u0275type=0}get data(){return this.delegate.data}destroyNode(e){this.delegate.destroyNode?.(e)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(e,t){return this.delegate.createElement(e,t)}createComment(e){return this.delegate.createComment(e)}createText(e){return this.delegate.createText(e)}appendChild(e,t){this.delegate.appendChild(e,t),this.engine.onInsert(this.namespaceId,t,e,!1)}insertBefore(e,t,s,i=!0){this.delegate.insertBefore(e,t,s),this.engine.onInsert(this.namespaceId,t,e,i)}removeChild(e,t,s){this.engine.onRemove(this.namespaceId,t,this.delegate)}selectRootElement(e,t){return this.delegate.selectRootElement(e,t)}parentNode(e){return this.delegate.parentNode(e)}nextSibling(e){return this.delegate.nextSibling(e)}setAttribute(e,t,s,i){this.delegate.setAttribute(e,t,s,i)}removeAttribute(e,t,s){this.delegate.removeAttribute(e,t,s)}addClass(e,t){this.delegate.addClass(e,t)}removeClass(e,t){this.delegate.removeClass(e,t)}setStyle(e,t,s,i){this.delegate.setStyle(e,t,s,i)}removeStyle(e,t,s){this.delegate.removeStyle(e,t,s)}setProperty(e,t,s){t.charAt(0)==me&&t==Ut?this.disableAnimations(e,!!s):this.delegate.setProperty(e,t,s)}setValue(e,t){this.delegate.setValue(e,t)}listen(e,t,s){return this.delegate.listen(e,t,s)}disableAnimations(e,t){this.engine.disableAnimations(e,t)}},xe=class extends be{constructor(e,t,s,i,r){super(t,s,i,r),this.factory=e,this.namespaceId=t}setProperty(e,t,s){t.charAt(0)==me?t.charAt(1)=="."&&t==Ut?(s=s===void 0?!0:!!s,this.disableAnimations(e,s)):this.engine.process(this.namespaceId,e,t.slice(1),s):this.delegate.setProperty(e,t,s)}listen(e,t,s){if(t.charAt(0)==me){let i=yi(e),r=t.slice(1),a="";return r.charAt(0)!=me&&([r,a]=_i(r)),this.engine.listen(this.namespaceId,i,r,a,o=>{let l=o._data||-1;this.factory.scheduleListenerCallback(l,s,o)})}return this.delegate.listen(e,t,s)}};function yi(n){switch(n){case"body":return document.body;case"document":return document;case"window":return window;default:return n}}function _i(n){let e=n.indexOf("."),t=n.substring(0,e),s=n.slice(e+1);return[t,s]}var Ot=class{constructor(e,t,s){this.delegate=e,this.engine=t,this._zone=s,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,t.onRemovalComplete=(i,r)=>{let a=r?.parentNode(i);a&&r.removeChild(a,i)}}createRenderer(e,t){let s="",i=this.delegate.createRenderer(e,t);if(!e||!t?.data?.animation){let h=this._rendererCache,c=h.get(i);if(!c){let u=()=>h.delete(i);c=new be(s,i,this.engine,u),h.set(i,c)}return c}let r=t.id,a=t.id+"-"+this._currentId;this._currentId++,this.engine.register(a,e);let o=h=>{Array.isArray(h)?h.forEach(o):this.engine.registerTrigger(r,a,e,h.name,h)};return t.data.animation.forEach(o),new xe(this,a,i,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(e,t,s){if(e>=0&&et(s));return}let i=this._animationCallbacksBuffer;i.length==0&&queueMicrotask(()=>{this._zone.run(()=>{i.forEach(r=>{let[a,o]=r;a(o)}),this._animationCallbacksBuffer=[]})}),i.push([t,s])}end(){this._cdRecurDepth--,this._cdRecurDepth==0&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}};export{St as AnimationDriver,zt as NoopAnimationDriver,Rt as \u0275Animation,ve as \u0275AnimationEngine,xe as \u0275AnimationRenderer,Ot as \u0275AnimationRendererFactory,Fe as \u0275AnimationStyleNormalizer,be as \u0275BaseAnimationRenderer,Ie as \u0275NoopAnimationStyleNormalizer,Je as \u0275WebAnimationsDriver,we as \u0275WebAnimationsPlayer,Be as \u0275WebAnimationsStyleNormalizer,Is as \u0275allowPreviousPlayerStylesMerge,bi as \u0275camelCaseToDashCase,Ft as \u0275containsElement,Ai as \u0275createEngine,st as \u0275getParentElement,It as \u0275invokeQuery,Os as \u0275normalizeKeyframes,Ms as \u0275validateStyleProperty,wi as \u0275validateWebAnimatableStyleProperty}; diff --git a/chunk-R2FFOFIG.js b/chunk-R2FFOFIG.js new file mode 100644 index 0000000..0a73627 --- /dev/null +++ b/chunk-R2FFOFIG.js @@ -0,0 +1,7 @@ +var Ef=Object.defineProperty,Cf=Object.defineProperties;var bf=Object.getOwnPropertyDescriptors;var Tn=Object.getOwnPropertySymbols;var ka=Object.prototype.hasOwnProperty,La=Object.prototype.propertyIsEnumerable;var Pa=(e,t,n)=>t in e?Ef(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_t=(e,t)=>{for(var n in t||={})ka.call(t,n)&&Pa(e,n,t[n]);if(Tn)for(var n of Tn(t))La.call(t,n)&&Pa(e,n,t[n]);return e},Mt=(e,t)=>Cf(e,bf(t));var aI=(e,t)=>{var n={};for(var r in e)ka.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&Tn)for(var r of Tn(e))t.indexOf(r)<0&&La.call(e,r)&&(n[r]=e[r]);return n};var _f=(e,t,n)=>new Promise((r,o)=>{var i=u=>{try{a(n.next(u))}catch(c){o(c)}},s=u=>{try{a(n.throw(u))}catch(c){o(c)}},a=u=>u.done?r(u.value):Promise.resolve(u.value).then(i,s);a((n=n.apply(e,t)).next())});var ja=null,Nn=!1,bo=1,On=Symbol("SIGNAL");function x(e){let t=ja;return ja=e,t}function Mf(){return Nn}var Mo={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function xf(e){if(!(Ao(e)&&!e.dirty)&&!(!e.dirty&&e.lastCleanEpoch===bo)){if(!e.producerMustRecompute(e)&&!Fn(e)){e.dirty=!1,e.lastCleanEpoch=bo;return}e.producerRecomputeValue(e),e.dirty=!1,e.lastCleanEpoch=bo}}function Sf(e){if(e.liveConsumerNode===void 0)return;let t=Nn;Nn=!0;try{for(let n of e.liveConsumerNode)n.dirty||Va(n)}finally{Nn=t}}function Va(e){e.dirty=!0,Sf(e),e.consumerMarkedDirty?.(e)}function xo(e){return e&&(e.nextProducerIndex=0),x(e)}function So(e,t){if(x(t),!(!e||e.producerNode===void 0||e.producerIndexOfThis===void 0||e.producerLastReadVersion===void 0)){if(Ao(e))for(let n=e.nextProducerIndex;ne.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}function Fn(e){An(e);for(let t=0;t0}function An(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}function Tf(e){e.liveConsumerNode??=[],e.liveConsumerIndexOfThis??=[]}function Nf(){throw new Error}var Af=Nf;function Ba(e){Af=e}function $a(e,t,n){let r=Object.create(Of);n&&(r.consumerAllowSignalWrites=!0),r.fn=e,r.schedule=t;let o=u=>{r.cleanupFn=u};function i(u){return u.fn===null&&u.schedule===null}function s(u){i(u)||(To(u),u.cleanupFn(),u.fn=null,u.schedule=null,u.cleanupFn=_o)}let a=()=>{if(r.fn===null)return;if(Mf())throw new Error("Schedulers cannot synchronously execute watches while scheduling.");if(r.dirty=!1,r.hasRun&&!Fn(r))return;r.hasRun=!0;let u=xo(r);try{r.cleanupFn(),r.cleanupFn=_o,r.fn(o)}finally{So(r,u)}};return r.ref={notify:()=>Va(r),run:a,cleanup:()=>r.cleanupFn(),destroy:()=>s(r),[On]:r},r.ref}var _o=()=>{},Of=Mt(_t({},Mo),{consumerIsAlwaysLive:!0,consumerAllowSignalWrites:!1,consumerMarkedDirty:e=>{e.schedule!==null&&e.schedule(e.ref)},hasRun:!1,cleanupFn:_o});function g(e){return typeof e=="function"}function xt(e){let n=e(r=>{Error.call(r),r.stack=new Error().stack});return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}var Rn=xt(e=>function(n){e(this),this.message=n?`${n.length} errors occurred during unsubscription: +${n.map((r,o)=>`${o+1}) ${r.toString()}`).join(` + `)}`:"",this.name="UnsubscriptionError",this.errors=n});function tt(e,t){if(e){let n=e.indexOf(t);0<=n&&e.splice(n,1)}}var U=class e{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;let{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(let i of n)i.remove(this);else n.remove(this);let{initialTeardown:r}=this;if(g(r))try{r()}catch(i){t=i instanceof Rn?i.errors:[i]}let{_finalizers:o}=this;if(o){this._finalizers=null;for(let i of o)try{Ha(i)}catch(s){t=t??[],s instanceof Rn?t=[...t,...s.errors]:t.push(s)}}if(t)throw new Rn(t)}}add(t){var n;if(t&&t!==this)if(this.closed)Ha(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(n=this._finalizers)!==null&&n!==void 0?n:[]).push(t)}}_hasParent(t){let{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){let{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){let{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&tt(n,t)}remove(t){let{_finalizers:n}=this;n&&tt(n,t),t instanceof e&&t._removeParent(this)}};U.EMPTY=(()=>{let e=new U;return e.closed=!0,e})();var Oo=U.EMPTY;function Pn(e){return e instanceof U||e&&"closed"in e&&g(e.remove)&&g(e.add)&&g(e.unsubscribe)}function Ha(e){g(e)?e():e.unsubscribe()}var ye={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var St={setTimeout(e,t,...n){let{delegate:r}=St;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){let{delegate:t}=St;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function kn(e){St.setTimeout(()=>{let{onUnhandledError:t}=ye;if(t)t(e);else throw e})}function en(){}var Ua=Fo("C",void 0,void 0);function Ga(e){return Fo("E",void 0,e)}function za(e){return Fo("N",e,void 0)}function Fo(e,t,n){return{kind:e,value:t,error:n}}var nt=null;function Tt(e){if(ye.useDeprecatedSynchronousErrorHandling){let t=!nt;if(t&&(nt={errorThrown:!1,error:null}),e(),t){let{errorThrown:n,error:r}=nt;if(nt=null,n)throw r}}else e()}function Wa(e){ye.useDeprecatedSynchronousErrorHandling&&nt&&(nt.errorThrown=!0,nt.error=e)}var rt=class extends U{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,Pn(t)&&t.add(this)):this.destination=Pf}static create(t,n,r){return new Fe(t,n,r)}next(t){this.isStopped?Po(za(t),this):this._next(t)}error(t){this.isStopped?Po(Ga(t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?Po(Ua,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},Ff=Function.prototype.bind;function Ro(e,t){return Ff.call(e,t)}var ko=class{constructor(t){this.partialObserver=t}next(t){let{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){Ln(r)}}error(t){let{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){Ln(r)}else Ln(t)}complete(){let{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(n){Ln(n)}}},Fe=class extends rt{constructor(t,n,r){super();let o;if(g(t)||!t)o={next:t??void 0,error:n??void 0,complete:r??void 0};else{let i;this&&ye.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),o={next:t.next&&Ro(t.next,i),error:t.error&&Ro(t.error,i),complete:t.complete&&Ro(t.complete,i)}):o=t}this.destination=new ko(o)}};function Ln(e){ye.useDeprecatedSynchronousErrorHandling?Wa(e):kn(e)}function Rf(e){throw e}function Po(e,t){let{onStoppedNotification:n}=ye;n&&St.setTimeout(()=>n(e,t))}var Pf={closed:!0,next:en,error:Rf,complete:en};var Nt=typeof Symbol=="function"&&Symbol.observable||"@@observable";function W(e){return e}function kf(...e){return Lo(e)}function Lo(e){return e.length===0?W:e.length===1?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}var b=(()=>{class e{constructor(n){n&&(this._subscribe=n)}lift(n){let r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){let i=jf(n)?n:new Fe(n,r,o);return Tt(()=>{let{operator:s,source:a}=this;i.add(s?s.call(i,a):a?this._subscribe(i):this._trySubscribe(i))}),i}_trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}forEach(n,r){return r=qa(r),new r((o,i)=>{let s=new Fe({next:a=>{try{n(a)}catch(u){i(u),s.unsubscribe()}},error:i,complete:o});this.subscribe(s)})}_subscribe(n){var r;return(r=this.source)===null||r===void 0?void 0:r.subscribe(n)}[Nt](){return this}pipe(...n){return Lo(n)(this)}toPromise(n){return n=qa(n),new n((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function qa(e){var t;return(t=e??ye.Promise)!==null&&t!==void 0?t:Promise}function Lf(e){return e&&g(e.next)&&g(e.error)&&g(e.complete)}function jf(e){return e&&e instanceof rt||Lf(e)&&Pn(e)}function jo(e){return g(e?.lift)}function I(e){return t=>{if(jo(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function v(e,t,n,r,o){return new Vo(e,t,n,r,o)}var Vo=class extends rt{constructor(t,n,r,o,i,s){super(t),this.onFinalize=i,this.shouldUnsubscribe=s,this._next=n?function(a){try{n(a)}catch(u){t.error(u)}}:super._next,this._error=o?function(a){try{o(a)}catch(u){t.error(u)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(a){t.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:n}=this;super.unsubscribe(),!n&&((t=this.onFinalize)===null||t===void 0||t.call(this))}}};function Bo(){return I((e,t)=>{let n=null;e._refCount++;let r=v(t,void 0,void 0,void 0,()=>{if(!e||e._refCount<=0||0<--e._refCount){n=null;return}let o=e._connection,i=n;n=null,o&&(!i||o===i)&&o.unsubscribe(),t.unsubscribe()});e.subscribe(r),r.closed||(n=e.connect())})}var $o=class extends b{constructor(t,n){super(),this.source=t,this.subjectFactory=n,this._subject=null,this._refCount=0,this._connection=null,jo(t)&&(this.lift=t.lift)}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){let t=this._subject;return(!t||t.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;let{_connection:t}=this;this._subject=this._connection=null,t?.unsubscribe()}connect(){let t=this._connection;if(!t){t=this._connection=new U;let n=this.getSubject();t.add(this.source.subscribe(v(n,void 0,()=>{this._teardown(),n.complete()},r=>{this._teardown(),n.error(r)},()=>this._teardown()))),t.closed&&(this._connection=null,t=U.EMPTY)}return t}refCount(){return Bo()(this)}};var Ya=xt(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var _e=(()=>{class e extends b{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(n){let r=new jn(this,this);return r.operator=n,r}_throwIfClosed(){if(this.closed)throw new Ya}next(n){Tt(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let r of this.currentObservers)r.next(n)}})}error(n){Tt(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=n;let{observers:r}=this;for(;r.length;)r.shift().error(n)}})}complete(){Tt(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:n}=this;for(;n.length;)n.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var n;return((n=this.observers)===null||n===void 0?void 0:n.length)>0}_trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}_subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuses(n),this._innerSubscribe(n)}_innerSubscribe(n){let{hasError:r,isStopped:o,observers:i}=this;return r||o?Oo:(this.currentObservers=null,i.push(n),new U(()=>{this.currentObservers=null,tt(i,n)}))}_checkFinalizedStatuses(n){let{hasError:r,thrownError:o,isStopped:i}=this;r?n.error(o):i&&n.complete()}asObservable(){let n=new b;return n.source=this,n}}return e.create=(t,n)=>new jn(t,n),e})(),jn=class extends _e{constructor(t,n){super(),this.destination=t,this.source=n}next(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.next)===null||r===void 0||r.call(n,t)}error(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.error)===null||r===void 0||r.call(n,t)}complete(){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||n===void 0||n.call(t)}_subscribe(t){var n,r;return(r=(n=this.source)===null||n===void 0?void 0:n.subscribe(t))!==null&&r!==void 0?r:Oo}};var tn=class extends _e{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){let n=super._subscribe(t);return!n.closed&&t.next(this._value),n}getValue(){let{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;return this._throwIfClosed(),r}next(t){super.next(this._value=t)}};var Ho={now(){return(Ho.delegate||Date).now()},delegate:void 0};var Vn=class extends U{constructor(t,n){super()}schedule(t,n=0){return this}};var nn={setInterval(e,t,...n){let{delegate:r}=nn;return r?.setInterval?r.setInterval(e,t,...n):setInterval(e,t,...n)},clearInterval(e){let{delegate:t}=nn;return(t?.clearInterval||clearInterval)(e)},delegate:void 0};var Bn=class extends Vn{constructor(t,n){super(t,n),this.scheduler=t,this.work=n,this.pending=!1}schedule(t,n=0){var r;if(this.closed)return this;this.state=t;let o=this.id,i=this.scheduler;return o!=null&&(this.id=this.recycleAsyncId(i,o,n)),this.pending=!0,this.delay=n,this.id=(r=this.id)!==null&&r!==void 0?r:this.requestAsyncId(i,this.id,n),this}requestAsyncId(t,n,r=0){return nn.setInterval(t.flush.bind(t,this),r)}recycleAsyncId(t,n,r=0){if(r!=null&&this.delay===r&&this.pending===!1)return n;n!=null&&nn.clearInterval(n)}execute(t,n){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;let r=this._execute(t,n);if(r)return r;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(t,n){let r=!1,o;try{this.work(t)}catch(i){r=!0,o=i||new Error("Scheduled action threw falsy error")}if(r)return this.unsubscribe(),o}unsubscribe(){if(!this.closed){let{id:t,scheduler:n}=this,{actions:r}=n;this.work=this.state=this.scheduler=null,this.pending=!1,tt(r,this),t!=null&&(this.id=this.recycleAsyncId(n,t,null)),this.delay=null,super.unsubscribe()}}};var At=class e{constructor(t,n=e.now){this.schedulerActionCtor=t,this.now=n}schedule(t,n=0,r){return new this.schedulerActionCtor(this,t).schedule(r,n)}};At.now=Ho.now;var $n=class extends At{constructor(t,n=At.now){super(t,n),this.actions=[],this._active=!1}flush(t){let{actions:n}=this;if(this._active){n.push(t);return}let r;this._active=!0;do if(r=t.execute(t.state,t.delay))break;while(t=n.shift());if(this._active=!1,r){for(;t=n.shift();)t.unsubscribe();throw r}}};var rn=new $n(Bn),Qa=rn;var ot=new b(e=>e.complete());function Hn(e){return e&&g(e.schedule)}function Uo(e){return e[e.length-1]}function Un(e){return g(Uo(e))?e.pop():void 0}function Me(e){return Hn(Uo(e))?e.pop():void 0}function Za(e,t){return typeof Uo(e)=="number"?e.pop():t}function Ja(e,t,n,r){function o(i){return i instanceof n?i:new n(function(s){s(i)})}return new(n||(n=Promise))(function(i,s){function a(l){try{c(r.next(l))}catch(d){s(d)}}function u(l){try{c(r.throw(l))}catch(d){s(d)}}function c(l){l.done?i(l.value):o(l.value).then(a,u)}c((r=r.apply(e,t||[])).next())})}function Ka(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function it(e){return this instanceof it?(this.v=e,this):new it(e)}function Xa(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=n.apply(e,t||[]),o,i=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",s),o[Symbol.asyncIterator]=function(){return this},o;function s(f){return function(h){return Promise.resolve(h).then(f,d)}}function a(f,h){r[f]&&(o[f]=function(y){return new Promise(function(k,N){i.push([f,y,k,N])>1||u(f,y)})},h&&(o[f]=h(o[f])))}function u(f,h){try{c(r[f](h))}catch(y){p(i[0][3],y)}}function c(f){f.value instanceof it?Promise.resolve(f.value.v).then(l,d):p(i[0][2],f)}function l(f){u("next",f)}function d(f){u("throw",f)}function p(f,h){f(h),i.shift(),i.length&&u(i[0][0],i[0][1])}}function eu(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Ka=="function"?Ka(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(i){n[i]=e[i]&&function(s){return new Promise(function(a,u){s=e[i](s),o(a,u,s.done,s.value)})}}function o(i,s,a,u){Promise.resolve(u).then(function(c){i({value:c,done:a})},s)}}var Ot=e=>e&&typeof e.length=="number"&&typeof e!="function";function Gn(e){return g(e?.then)}function zn(e){return g(e[Nt])}function Wn(e){return Symbol.asyncIterator&&g(e?.[Symbol.asyncIterator])}function qn(e){return new TypeError(`You provided ${e!==null&&typeof e=="object"?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function Vf(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yn=Vf();function Qn(e){return g(e?.[Yn])}function Zn(e){return Xa(this,arguments,function*(){let n=e.getReader();try{for(;;){let{value:r,done:o}=yield it(n.read());if(o)return yield it(void 0);yield yield it(r)}}finally{n.releaseLock()}})}function Kn(e){return g(e?.getReader)}function A(e){if(e instanceof b)return e;if(e!=null){if(zn(e))return Bf(e);if(Ot(e))return $f(e);if(Gn(e))return Hf(e);if(Wn(e))return tu(e);if(Qn(e))return Uf(e);if(Kn(e))return Gf(e)}throw qn(e)}function Bf(e){return new b(t=>{let n=e[Nt]();if(g(n.subscribe))return n.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function $f(e){return new b(t=>{for(let n=0;n{e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,kn)})}function Uf(e){return new b(t=>{for(let n of e)if(t.next(n),t.closed)return;t.complete()})}function tu(e){return new b(t=>{zf(e,t).catch(n=>t.error(n))})}function Gf(e){return tu(Zn(e))}function zf(e,t){var n,r,o,i;return Ja(this,void 0,void 0,function*(){try{for(n=eu(e);r=yield n.next(),!r.done;){let s=r.value;if(t.next(s),t.closed)return}}catch(s){o={error:s}}finally{try{r&&!r.done&&(i=n.return)&&(yield i.call(n))}finally{if(o)throw o.error}}t.complete()})}function ee(e,t,n,r=0,o=!1){let i=t.schedule(function(){n(),o?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(i),!o)return i}function Jn(e,t=0){return I((n,r)=>{n.subscribe(v(r,o=>ee(r,e,()=>r.next(o),t),()=>ee(r,e,()=>r.complete(),t),o=>ee(r,e,()=>r.error(o),t)))})}function Xn(e,t=0){return I((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),t))})}function nu(e,t){return A(e).pipe(Xn(t),Jn(t))}function ru(e,t){return A(e).pipe(Xn(t),Jn(t))}function ou(e,t){return new b(n=>{let r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}function iu(e,t){return new b(n=>{let r;return ee(n,t,()=>{r=e[Yn](),ee(n,t,()=>{let o,i;try{({value:o,done:i}=r.next())}catch(s){n.error(s);return}i?n.complete():n.next(o)},0,!0)}),()=>g(r?.return)&&r.return()})}function er(e,t){if(!e)throw new Error("Iterable cannot be null");return new b(n=>{ee(n,t,()=>{let r=e[Symbol.asyncIterator]();ee(n,t,()=>{r.next().then(o=>{o.done?n.complete():n.next(o.value)})},0,!0)})})}function su(e,t){return er(Zn(e),t)}function au(e,t){if(e!=null){if(zn(e))return nu(e,t);if(Ot(e))return ou(e,t);if(Gn(e))return ru(e,t);if(Wn(e))return er(e,t);if(Qn(e))return iu(e,t);if(Kn(e))return su(e,t)}throw qn(e)}function xe(e,t){return t?au(e,t):A(e)}function Wf(...e){let t=Me(e);return xe(e,t)}function qf(e,t){let n=g(e)?e:()=>e,r=o=>o.error(n());return new b(t?o=>t.schedule(r,0,o):r)}function Yf(e){return!!e&&(e instanceof b||g(e.lift)&&g(e.subscribe))}var Re=xt(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"});function Qf(e,t){let n=typeof t=="object";return new Promise((r,o)=>{let i=!1,s;e.subscribe({next:a=>{s=a,i=!0},error:o,complete:()=>{i?r(s):n?r(t.defaultValue):o(new Re)}})})}function uu(e){return e instanceof Date&&!isNaN(e)}function Pe(e,t){return I((n,r)=>{let o=0;n.subscribe(v(r,i=>{r.next(e.call(t,i,o++))}))})}var{isArray:Zf}=Array;function Kf(e,t){return Zf(t)?e(...t):e(t)}function Ft(e){return Pe(t=>Kf(e,t))}var{isArray:Jf}=Array,{getPrototypeOf:Xf,prototype:ep,keys:tp}=Object;function tr(e){if(e.length===1){let t=e[0];if(Jf(t))return{args:t,keys:null};if(np(t)){let n=tp(t);return{args:n.map(r=>t[r]),keys:n}}}return{args:e,keys:null}}function np(e){return e&&typeof e=="object"&&Xf(e)===ep}function nr(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}function rp(...e){let t=Me(e),n=Un(e),{args:r,keys:o}=tr(e);if(r.length===0)return xe([],t);let i=new b(op(r,t,o?s=>nr(o,s):W));return n?i.pipe(Ft(n)):i}function op(e,t,n=W){return r=>{cu(t,()=>{let{length:o}=e,i=new Array(o),s=o,a=o;for(let u=0;u{let c=xe(e[u],t),l=!1;c.subscribe(v(r,d=>{i[u]=d,l||(l=!0,a--),a||r.next(n(i.slice()))},()=>{--s||r.complete()}))},r)},r)}}function cu(e,t,n){e?ee(n,e,t):t()}function lu(e,t,n,r,o,i,s,a){let u=[],c=0,l=0,d=!1,p=()=>{d&&!u.length&&!c&&t.complete()},f=y=>c{i&&t.next(y),c++;let k=!1;A(n(y,l++)).subscribe(v(t,N=>{o?.(N),i?f(N):t.next(N)},()=>{k=!0},void 0,()=>{if(k)try{for(c--;u.length&&ch(N)):h(N)}p()}catch(N){t.error(N)}}))};return e.subscribe(v(t,f,()=>{d=!0,p()})),()=>{a?.()}}function ke(e,t,n=1/0){return g(t)?ke((r,o)=>Pe((i,s)=>t(r,i,o,s))(A(e(r,o))),n):(typeof t=="number"&&(n=t),I((r,o)=>lu(r,o,e,n)))}function on(e=1/0){return ke(W,e)}function du(){return on(1)}function rr(...e){return du()(xe(e,Me(e)))}function ip(e){return new b(t=>{A(e()).subscribe(t)})}function sp(...e){let t=Un(e),{args:n,keys:r}=tr(e),o=new b(i=>{let{length:s}=n;if(!s){i.complete();return}let a=new Array(s),u=s,c=s;for(let l=0;l{d||(d=!0,c--),a[l]=p},()=>u--,void 0,()=>{(!u||!d)&&(c||i.next(r?nr(r,a):a),i.complete())}))}});return t?o.pipe(Ft(t)):o}var ap=["addListener","removeListener"],up=["addEventListener","removeEventListener"],cp=["on","off"];function Go(e,t,n,r){if(g(n)&&(r=n,n=void 0),r)return Go(e,t,n).pipe(Ft(r));let[o,i]=fp(e)?up.map(s=>a=>e[s](t,a,n)):lp(e)?ap.map(fu(e,t)):dp(e)?cp.map(fu(e,t)):[];if(!o&&Ot(e))return ke(s=>Go(s,t,n))(A(e));if(!o)throw new TypeError("Invalid event target");return new b(s=>{let a=(...u)=>s.next(1i(a)})}function fu(e,t){return n=>r=>e[n](t,r)}function lp(e){return g(e.addListener)&&g(e.removeListener)}function dp(e){return g(e.on)&&g(e.off)}function fp(e){return g(e.addEventListener)&&g(e.removeEventListener)}function zo(e=0,t,n=Qa){let r=-1;return t!=null&&(Hn(t)?n=t:r=t),new b(o=>{let i=uu(e)?+e-n.now():e;i<0&&(i=0);let s=0;return n.schedule(function(){o.closed||(o.next(s++),0<=r?this.schedule(void 0,r):o.complete())},i)})}function pp(...e){let t=Me(e),n=Za(e,1/0),r=e;return r.length?r.length===1?A(r[0]):on(n)(xe(r,t)):ot}function st(e,t){return I((n,r)=>{let o=0;n.subscribe(v(r,i=>e.call(t,i,o++)&&r.next(i)))})}function pu(e){return I((t,n)=>{let r=!1,o=null,i=null,s=!1,a=()=>{if(i?.unsubscribe(),i=null,r){r=!1;let c=o;o=null,n.next(c)}s&&n.complete()},u=()=>{i=null,s&&n.complete()};t.subscribe(v(n,c=>{r=!0,o=c,i||A(e(c)).subscribe(i=v(n,a,u))},()=>{s=!0,(!r||!i||i.closed)&&n.complete()}))})}function hp(e,t=rn){return pu(()=>zo(e,t))}function hu(e){return I((t,n)=>{let r=null,o=!1,i;r=t.subscribe(v(n,void 0,void 0,s=>{i=A(e(s,hu(e)(t))),r?(r.unsubscribe(),r=null,i.subscribe(n)):o=!0})),o&&(r.unsubscribe(),r=null,i.subscribe(n))})}function gu(e,t,n,r,o){return(i,s)=>{let a=n,u=t,c=0;i.subscribe(v(s,l=>{let d=c++;u=a?e(u,l,d):(a=!0,l),r&&s.next(u)},o&&(()=>{a&&s.next(u),s.complete()})))}}function gp(e,t){return g(t)?ke(e,t,1):ke(e,1)}function mp(e,t=rn){return I((n,r)=>{let o=null,i=null,s=null,a=()=>{if(o){o.unsubscribe(),o=null;let c=i;i=null,r.next(c)}};function u(){let c=s+e,l=t.now();if(l{i=c,s=t.now(),o||(o=t.schedule(u,e),r.add(o))},()=>{a(),r.complete()},void 0,()=>{i=o=null}))})}function sn(e){return I((t,n)=>{let r=!1;t.subscribe(v(n,o=>{r=!0,n.next(o)},()=>{r||n.next(e),n.complete()}))})}function Wo(e){return e<=0?()=>ot:I((t,n)=>{let r=0;t.subscribe(v(n,o=>{++r<=e&&(n.next(o),e<=r&&n.complete())}))})}function yp(e){return Pe(()=>e)}function Dp(e,t=W){return e=e??vp,I((n,r)=>{let o,i=!0;n.subscribe(v(r,s=>{let a=t(s);(i||!e(o,a))&&(i=!1,o=a,r.next(s))}))})}function vp(e,t){return e===t}function or(e=wp){return I((t,n)=>{let r=!1;t.subscribe(v(n,o=>{r=!0,n.next(o)},()=>r?n.complete():n.error(e())))})}function wp(){return new Re}function Ip(e){return I((t,n)=>{try{t.subscribe(n)}finally{n.add(e)}})}function qo(e,t){let n=arguments.length>=2;return r=>r.pipe(e?st((o,i)=>e(o,i,r)):W,Wo(1),n?sn(t):or(()=>new Re))}function Yo(e){return e<=0?()=>ot:I((t,n)=>{let r=[];t.subscribe(v(n,o=>{r.push(o),e{for(let o of r)n.next(o);n.complete()},void 0,()=>{r=null}))})}function Ep(e,t){let n=arguments.length>=2;return r=>r.pipe(e?st((o,i)=>e(o,i,r)):W,Yo(1),n?sn(t):or(()=>new Re))}function Cp(e,t){return I(gu(e,t,arguments.length>=2,!0))}function bp(e={}){let{connector:t=()=>new _e,resetOnError:n=!0,resetOnComplete:r=!0,resetOnRefCountZero:o=!0}=e;return i=>{let s,a,u,c=0,l=!1,d=!1,p=()=>{a?.unsubscribe(),a=void 0},f=()=>{p(),s=u=void 0,l=d=!1},h=()=>{let y=s;f(),y?.unsubscribe()};return I((y,k)=>{c++,!d&&!l&&p();let N=u=u??t();k.add(()=>{c--,c===0&&!d&&!l&&(a=Qo(h,o))}),N.subscribe(k),!s&&c>0&&(s=new Fe({next:ue=>N.next(ue),error:ue=>{d=!0,p(),a=Qo(f,n,ue),N.error(ue)},complete:()=>{l=!0,p(),a=Qo(f,r),N.complete()}}),A(y).subscribe(s))})(i)}}function Qo(e,t,...n){if(t===!0){e();return}if(t===!1)return;let r=new Fe({next:()=>{r.unsubscribe(),e()}});return A(t(...n)).subscribe(r)}function _p(e){return st((t,n)=>e<=n)}function Mp(...e){let t=Me(e);return I((n,r)=>{(t?rr(e,n,t):rr(e,n)).subscribe(r)})}function xp(e,t){return I((n,r)=>{let o=null,i=0,s=!1,a=()=>s&&!o&&r.complete();n.subscribe(v(r,u=>{o?.unsubscribe();let c=0,l=i++;A(e(u,l)).subscribe(o=v(r,d=>r.next(t?t(u,d,l,c++):d),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function Sp(e){return I((t,n)=>{A(e).subscribe(v(n,()=>n.complete(),en)),!n.closed&&t.subscribe(n)})}function Tp(e,t,n){let r=g(e)||t||n?{next:e,error:t,complete:n}:e;return r?I((o,i)=>{var s;(s=r.subscribe)===null||s===void 0||s.call(r);let a=!0;o.subscribe(v(i,u=>{var c;(c=r.next)===null||c===void 0||c.call(r,u),i.next(u)},()=>{var u;a=!1,(u=r.complete)===null||u===void 0||u.call(r),i.complete()},u=>{var c;a=!1,(c=r.error)===null||c===void 0||c.call(r,u),i.error(u)},()=>{var u,c;a&&((u=r.unsubscribe)===null||u===void 0||u.call(r)),(c=r.finalize)===null||c===void 0||c.call(r)}))}):W}var nc="https://g.co/ng/security#xss",M=class extends Error{constructor(t,n){super(rc(t,n)),this.code=t}};function rc(e,t){return`${`NG0${Math.abs(e)}`}${t?": "+t:""}`}function wn(e){return{toString:e}.toString()}var ir="__parameters__";function Np(e){return function(...n){if(e){let r=e(...n);for(let o in r)this[o]=r[o]}}}function oc(e,t,n){return wn(()=>{let r=Np(t);function o(...i){if(this instanceof o)return r.apply(this,i),this;let s=new o(...i);return a.annotation=s,a;function a(u,c,l){let d=u.hasOwnProperty(ir)?u[ir]:Object.defineProperty(u,ir,{value:[]})[ir];for(;d.length<=l;)d.push(null);return(d[l]=d[l]||[]).push(s),u}}return n&&(o.prototype=Object.create(n.prototype)),o.prototype.ngMetadataName=e,o.annotationCls=o,o})}var ce=globalThis;function F(e){for(let t in e)if(e[t]===F)return t;throw Error("Could not find renamed property on target object.")}function Ap(e,t){for(let n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])}function Q(e){if(typeof e=="string")return e;if(Array.isArray(e))return"["+e.map(Q).join(", ")+"]";if(e==null)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;let t=e.toString();if(t==null)return""+t;let n=t.indexOf(` +`);return n===-1?t:t.substring(0,n)}function pi(e,t){return e==null||e===""?t===null?"":t:t==null||t===""?e:e+" "+t}var Op=F({__forward_ref__:F});function ic(e){return e.__forward_ref__=ic,e.toString=function(){return Q(this())},e}function q(e){return sc(e)?e():e}function sc(e){return typeof e=="function"&&e.hasOwnProperty(Op)&&e.__forward_ref__===ic}function j(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function ac(e){return{providers:e.providers||[],imports:e.imports||[]}}function zr(e){return mu(e,uc)||mu(e,cc)}function yx(e){return zr(e)!==null}function mu(e,t){return e.hasOwnProperty(t)?e[t]:null}function Fp(e){let t=e&&(e[uc]||e[cc]);return t||null}function yu(e){return e&&(e.hasOwnProperty(Du)||e.hasOwnProperty(Rp))?e[Du]:null}var uc=F({\u0275prov:F}),Du=F({\u0275inj:F}),cc=F({ngInjectableDef:F}),Rp=F({ngInjectorDef:F}),O=class{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,typeof n=="number"?this.__NG_ELEMENT_ID__=n:n!==void 0&&(this.\u0275prov=j({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function lc(e){return e&&!!e.\u0275providers}var Pp=F({\u0275cmp:F}),kp=F({\u0275dir:F}),Lp=F({\u0275pipe:F}),jp=F({\u0275mod:F}),wr=F({\u0275fac:F}),un=F({__NG_ELEMENT_ID__:F}),vu=F({__NG_ENV_ID__:F});function lt(e){return typeof e=="string"?e:e==null?"":String(e)}function Vp(e){return typeof e=="function"?e.name||e.toString():typeof e=="object"&&e!=null&&typeof e.type=="function"?e.type.name||e.type.toString():lt(e)}function Bp(e,t){let n=t?`. Dependency path: ${t.join(" > ")} > ${e}`:"";throw new M(-200,e)}function Cs(e,t){throw new M(-201,!1)}var _=function(e){return e[e.Default=0]="Default",e[e.Host=1]="Host",e[e.Self=2]="Self",e[e.SkipSelf=4]="SkipSelf",e[e.Optional=8]="Optional",e}(_||{}),hi;function dc(){return hi}function te(e){let t=hi;return hi=e,t}function fc(e,t,n){let r=zr(e);if(r&&r.providedIn=="root")return r.value===void 0?r.value=r.factory():r.value;if(n&_.Optional)return null;if(t!==void 0)return t;Cs(e,"Injector")}var $p={},cn=$p,gi="__NG_DI_FLAG__",Ir="ngTempTokenPath",Hp="ngTokenPath",Up=/\n/gm,Gp="\u0275",wu="__source",jt;function zp(){return jt}function We(e){let t=jt;return jt=e,t}function Wp(e,t=_.Default){if(jt===void 0)throw new M(-203,!1);return jt===null?fc(e,void 0,t):jt.get(e,t&_.Optional?null:void 0,t)}function z(e,t=_.Default){return(dc()||Wp)(q(e),t)}function E(e,t=_.Default){return z(e,Wr(t))}function Wr(e){return typeof e>"u"||typeof e=="number"?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function mi(e){let t=[];for(let n=0;n ");else if(typeof t=="object"){let i=[];for(let s in t)if(t.hasOwnProperty(s)){let a=t[s];i.push(s+":"+(typeof a=="string"?JSON.stringify(a):Q(a)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(Up,` + `)}`}var Zp=pc(oc("Optional"),8);var Kp=pc(oc("SkipSelf"),4);function dt(e,t){let n=e.hasOwnProperty(wr);return n?e[wr]:null}function Jp(e,t,n){if(e.length!==t.length)return!1;for(let r=0;rArray.isArray(n)?bs(n,t):t(n))}function hc(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function Er(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function eh(e,t){let n=[];for(let r=0;rt;){let i=o-2;e[o]=e[i],o--}e[t]=n,e[t+1]=r}}function _s(e,t,n){let r=In(e,t);return r>=0?e[r|1]=n:(r=~r,th(e,r,t,n)),r}function Zo(e,t){let n=In(e,t);if(n>=0)return e[n|1]}function In(e,t){return nh(e,t,1)}function nh(e,t,n){let r=0,o=e.length>>n;for(;o!==r;){let i=r+(o-r>>1),s=e[i<t?o=i:r=i+1}return~(o<t){s=i-1;break}}}for(;i-1){let i;for(;++oi?d="":d=o[l+1].toLowerCase(),r&2&&c!==d){if(De(r))return!1;s=!0}}}}return De(r)||s}function De(e){return(e&1)===0}function uh(e,t,n,r){if(t===null)return-1;let o=0;if(r||!n){let i=!1;for(;o-1)for(n++;n0?'="'+a+'"':"")+"]"}else r&8?o+="."+s:r&4&&(o+=" "+s);else o!==""&&!De(s)&&(t+=Eu(i,o),o=""),r=s,i=i||!De(r);n++}return o!==""&&(t+=Eu(i,o)),t}function hh(e){return e.map(ph).join(",")}function gh(e){let t=[],n=[],r=1,o=2;for(;r{let t=_c(e),n=Mt(_t({},t),{decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===yc.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||dn.Emulated,styles:e.styles||Y,_:null,schemas:e.schemas||null,tView:null,id:""});Mc(n);let r=e.dependencies;return n.directiveDefs=bu(r,!1),n.pipeDefs=bu(r,!0),n.id=vh(n),n})}function mh(e){return Ye(e)||Ec(e)}function yh(e){return e!==null}function Ic(e){return wn(()=>({type:e.type,bootstrap:e.bootstrap||Y,declarations:e.declarations||Y,imports:e.imports||Y,exports:e.exports||Y,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function Cu(e,t){if(e==null)return Bt;let n={};for(let r in e)if(e.hasOwnProperty(r)){let o=e[r],i,s,a=ft.None;Array.isArray(o)?(a=o[0],i=o[1],s=o[2]??i):(i=o,s=o),t?(n[i]=a!==ft.None?[r,a]:r,t[i]=s):n[i]=r}return n}function xs(e){return wn(()=>{let t=_c(e);return Mc(t),t})}function Ss(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone===!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function Ye(e){return e[Pp]||null}function Ec(e){return e[kp]||null}function Cc(e){return e[Lp]||null}function Dh(e){let t=Ye(e)||Ec(e)||Cc(e);return t!==null?t.standalone:!1}function bc(e,t){let n=e[jp]||null;if(!n&&t===!0)throw new Error(`Type ${Q(e)} does not have '\u0275mod' property.`);return n}function _c(e){let t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputTransforms:null,inputConfig:e.inputs||Bt,exportAs:e.exportAs||null,standalone:e.standalone===!0,signals:e.signals===!0,selectors:e.selectors||Y,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Cu(e.inputs,t),outputs:Cu(e.outputs),debugInfo:null}}function Mc(e){e.features?.forEach(t=>t(e))}function bu(e,t){if(!e)return null;let n=t?Cc:mh;return()=>(typeof e=="function"?e():e).map(r=>n(r)).filter(yh)}function vh(e){let t=0,n=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,e.consts,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery].join("|");for(let o of n)t=Math.imul(31,t)+o.charCodeAt(0)<<0;return t+=2147483648,"c"+t}function xc(e){return{\u0275providers:e}}function wh(...e){return{\u0275providers:Sc(!0,e),\u0275fromNgModule:!0}}function Sc(e,...t){let n=[],r=new Set,o,i=s=>{n.push(s)};return bs(t,s=>{let a=s;Di(a,i,[],r)&&(o||=[],o.push(a))}),o!==void 0&&Tc(o,i),n}function Tc(e,t){for(let n=0;n{t(i,r)})}}function Di(e,t,n,r){if(e=q(e),!e)return!1;let o=null,i=yu(e),s=!i&&Ye(e);if(!i&&!s){let u=e.ngModule;if(i=yu(u),i)o=u;else return!1}else{if(s&&!s.standalone)return!1;o=e}let a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){let u=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let c of u)Di(c,t,n,r)}}else if(i){if(i.imports!=null&&!a){r.add(o);let c;try{bs(i.imports,l=>{Di(l,t,n,r)&&(c||=[],c.push(l))})}finally{}c!==void 0&&Tc(c,t)}if(!a){let c=dt(o)||(()=>new o);t({provide:o,useFactory:c,deps:Y},o),t({provide:mc,useValue:o,multi:!0},o),t({provide:ln,useValue:()=>z(o),multi:!0},o)}let u=i.providers;if(u!=null&&!a){let c=e;Ts(u,l=>{t(l,c)})}}else return!1;return o!==e&&e.providers!==void 0}function Ts(e,t){for(let n of e)lc(n)&&(n=n.\u0275providers),Array.isArray(n)?Ts(n,t):t(n)}var Ih=F({provide:String,useValue:F});function Nc(e){return e!==null&&typeof e=="object"&&Ih in e}function Eh(e){return!!(e&&e.useExisting)}function Ch(e){return!!(e&&e.useFactory)}function $t(e){return typeof e=="function"}function bh(e){return!!e.useClass}var Ac=new O(""),pr={},_h={},Ko;function Ns(){return Ko===void 0&&(Ko=new Cr),Ko}var Qe=class{},pn=class extends Qe{get destroyed(){return this._destroyed}constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,wi(t,s=>this.processProvider(s)),this.records.set(gc,Rt(void 0,this)),o.has("environment")&&this.records.set(Qe,Rt(void 0,this));let i=this.records.get(Ac);i!=null&&typeof i.value=="string"&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(mc,Y,_.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;let t=x(null);try{for(let r of this._ngOnDestroyHooks)r.ngOnDestroy();let n=this._onDestroyHooks;this._onDestroyHooks=[];for(let r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),x(t)}}onDestroy(t){return this.assertNotDestroyed(),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){this.assertNotDestroyed();let n=We(this),r=te(void 0),o;try{return t()}finally{We(n),te(r)}}get(t,n=cn,r=_.Default){if(this.assertNotDestroyed(),t.hasOwnProperty(vu))return t[vu](this);r=Wr(r);let o,i=We(this),s=te(void 0);try{if(!(r&_.SkipSelf)){let u=this.records.get(t);if(u===void 0){let c=Nh(t)&&zr(t);c&&this.injectableDefInScope(c)?u=Rt(vi(t),pr):u=null,this.records.set(t,u)}if(u!=null)return this.hydrate(t,u)}let a=r&_.Self?Ns():this.parent;return n=r&_.Optional&&n===cn?null:n,a.get(t,n)}catch(a){if(a.name==="NullInjectorError"){if((a[Ir]=a[Ir]||[]).unshift(Q(t)),i)throw a;return Yp(a,t,"R3InjectorError",this.source)}else throw a}finally{te(s),We(i)}}resolveInjectorInitializers(){let t=x(null),n=We(this),r=te(void 0),o;try{let i=this.get(ln,Y,_.Self);for(let s of i)s()}finally{We(n),te(r),x(t)}}toString(){let t=[],n=this.records;for(let r of n.keys())t.push(Q(r));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new M(205,!1)}processProvider(t){t=q(t);let n=$t(t)?t:q(t&&t.provide),r=xh(t);if(!$t(t)&&t.multi===!0){let o=this.records.get(n);o||(o=Rt(void 0,pr,!0),o.factory=()=>mi(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){let r=x(null);try{return n.value===pr&&(n.value=_h,n.value=n.factory()),typeof n.value=="object"&&n.value&&Th(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{x(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;let n=q(t.providedIn);return typeof n=="string"?n==="any"||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){let n=this._onDestroyHooks.indexOf(t);n!==-1&&this._onDestroyHooks.splice(n,1)}};function vi(e){let t=zr(e),n=t!==null?t.factory:dt(e);if(n!==null)return n;if(e instanceof O)throw new M(204,!1);if(e instanceof Function)return Mh(e);throw new M(204,!1)}function Mh(e){if(e.length>0)throw new M(204,!1);let n=Fp(e);return n!==null?()=>n.factory(e):()=>new e}function xh(e){if(Nc(e))return Rt(void 0,e.useValue);{let t=Oc(e);return Rt(t,pr)}}function Oc(e,t,n){let r;if($t(e)){let o=q(e);return dt(o)||vi(o)}else if(Nc(e))r=()=>q(e.useValue);else if(Ch(e))r=()=>e.useFactory(...mi(e.deps||[]));else if(Eh(e))r=()=>z(q(e.useExisting));else{let o=q(e&&(e.useClass||e.provide));if(Sh(e))r=()=>new o(...mi(e.deps));else return dt(o)||vi(o)}return r}function Rt(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Sh(e){return!!e.deps}function Th(e){return e!==null&&typeof e=="object"&&typeof e.ngOnDestroy=="function"}function Nh(e){return typeof e=="function"||typeof e=="object"&&e instanceof O}function wi(e,t){for(let n of e)Array.isArray(n)?wi(n,t):n&&lc(n)?wi(n.\u0275providers,t):t(n)}function Ah(e,t){e instanceof pn&&e.assertNotDestroyed();let n,r=We(e),o=te(void 0);try{return t()}finally{We(r),te(o)}}function Fc(){return dc()!==void 0||zp()!=null}function Rc(e){if(!Fc())throw new M(-203,!1)}function Oh(e){return typeof e=="function"}var ne=0,D=1,m=2,G=3,we=4,oe=5,de=6,hn=7,fe=8,Ht=9,Ie=10,R=11,gn=12,_u=13,Wt=14,re=15,En=16,Pt=17,je=18,qr=19,Pc=20,qe=21,hr=22,pt=23,V=25,As=1,mn=6,Ve=7,br=8,Ut=9,Z=10,Os=function(e){return e[e.None=0]="None",e[e.HasTransplantedViews=2]="HasTransplantedViews",e}(Os||{});function Le(e){return Array.isArray(e)&&typeof e[As]=="object"}function Ne(e){return Array.isArray(e)&&e[As]===!0}function kc(e){return(e.flags&4)!==0}function Cn(e){return e.componentOffset>-1}function Fs(e){return(e.flags&1)===1}function Be(e){return!!e.template}function Lc(e){return(e[m]&512)!==0}var Ii=class{constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}};function jc(e,t,n,r){t!==null?t.applyValueToInputSignal(t,r):e[n]=r}function Vc(){return Bc}function Bc(e){return e.type.prototype.ngOnChanges&&(e.setInput=Rh),Fh}Vc.ngInherit=!0;function Fh(){let e=Hc(this),t=e?.current;if(t){let n=e.previous;if(n===Bt)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function Rh(e,t,n,r,o){let i=this.declaredInputs[r],s=Hc(e)||Ph(e,{previous:Bt,current:null}),a=s.current||(s.current={}),u=s.previous,c=u[i];a[i]=new Ii(c&&c.currentValue,n,u===Bt),jc(e,t,o,n)}var $c="__ngSimpleChanges__";function Hc(e){return e[$c]||null}function Ph(e,t){return e[$c]=t}var Mu=null;var Se=function(e,t,n){Mu?.(e,t,n)},Uc="svg",kh="math",Lh=!1;function jh(){return Lh}function Ee(e){for(;Array.isArray(e);)e=e[ne];return e}function Vh(e){for(;Array.isArray(e);){if(typeof e[As]=="object")return e;e=e[ne]}return null}function Gc(e,t){return Ee(t[e])}function ie(e,t){return Ee(t[e.index])}function Rs(e,t){return e.data[t]}function Yr(e,t){return e[t]}function Je(e,t){let n=t[e];return Le(n)?n:n[ne]}function Bh(e){return(e[m]&4)===4}function Ps(e){return(e[m]&128)===128}function $h(e){return Ne(e[G])}function _r(e,t){return t==null?null:e[t]}function zc(e){e[Pt]=0}function Hh(e){e[m]&1024||(e[m]|=1024,Ps(e)&&yn(e))}function Uh(e,t){for(;e>0;)t=t[Wt],e--;return t}function ks(e){return!!(e[m]&9216||e[pt]?.dirty)}function Ei(e){e[Ie].changeDetectionScheduler?.notify(1),ks(e)?yn(e):e[m]&64&&(jh()?(e[m]|=1024,yn(e)):e[Ie].changeDetectionScheduler?.notify())}function yn(e){e[Ie].changeDetectionScheduler?.notify();let t=Dn(e);for(;t!==null&&!(t[m]&8192||(t[m]|=8192,!Ps(t)));)t=Dn(t)}function Wc(e,t){if((e[m]&256)===256)throw new M(911,!1);e[qe]===null&&(e[qe]=[]),e[qe].push(t)}function Gh(e,t){if(e[qe]===null)return;let n=e[qe].indexOf(t);n!==-1&&e[qe].splice(n,1)}function Dn(e){let t=e[G];return Ne(t)?t[G]:t}var w={lFrame:el(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function zh(){return w.lFrame.elementDepthCount}function Wh(){w.lFrame.elementDepthCount++}function qh(){w.lFrame.elementDepthCount--}function qc(){return w.bindingsEnabled}function qt(){return w.skipHydrationRootTNode!==null}function Yh(e){return w.skipHydrationRootTNode===e}function Qh(e){w.skipHydrationRootTNode=e}function Zh(){w.skipHydrationRootTNode=null}function C(){return w.lFrame.lView}function $(){return w.lFrame.tView}function vx(e){return w.lFrame.contextLView=e,e[fe]}function wx(e){return w.lFrame.contextLView=null,e}function K(){let e=Yc();for(;e!==null&&e.type===64;)e=e.parent;return e}function Yc(){return w.lFrame.currentTNode}function Kh(){let e=w.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function bn(e,t){let n=w.lFrame;n.currentTNode=e,n.isParent=t}function Qc(){return w.lFrame.isParent}function Zc(){w.lFrame.isParent=!1}function Jh(){return w.lFrame.contextLView}function Qr(){let e=w.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Xh(){return w.lFrame.bindingIndex}function eg(e){return w.lFrame.bindingIndex=e}function Yt(){return w.lFrame.bindingIndex++}function Ls(e){let t=w.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function tg(){return w.lFrame.inI18n}function ng(e,t){let n=w.lFrame;n.bindingIndex=n.bindingRootIndex=e,Ci(t)}function rg(){return w.lFrame.currentDirectiveIndex}function Ci(e){w.lFrame.currentDirectiveIndex=e}function js(e){let t=w.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function Kc(){return w.lFrame.currentQueryIndex}function Vs(e){w.lFrame.currentQueryIndex=e}function og(e){let t=e[D];return t.type===2?t.declTNode:t.type===1?e[oe]:null}function Jc(e,t,n){if(n&_.SkipSelf){let o=t,i=e;for(;o=o.parent,o===null&&!(n&_.Host);)if(o=og(i),o===null||(i=i[Wt],o.type&10))break;if(o===null)return!1;t=o,e=i}let r=w.lFrame=Xc();return r.currentTNode=t,r.lView=e,!0}function Bs(e){let t=Xc(),n=e[D];w.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Xc(){let e=w.lFrame,t=e===null?null:e.child;return t===null?el(e):t}function el(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function tl(){let e=w.lFrame;return w.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var nl=tl;function $s(){let e=tl();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function ig(e){return(w.lFrame.contextLView=Uh(e,w.lFrame.contextLView))[fe]}function Xe(){return w.lFrame.selectedIndex}function ht(e){w.lFrame.selectedIndex=e}function Zr(){let e=w.lFrame;return Rs(e.tView,e.selectedIndex)}function Ix(){w.lFrame.currentNamespace=Uc}function Ex(){sg()}function sg(){w.lFrame.currentNamespace=null}function rl(){return w.lFrame.currentNamespace}var ol=!0;function Hs(){return ol}function Ae(e){ol=e}function ag(e,t,n){let{ngOnChanges:r,ngOnInit:o,ngDoCheck:i}=t.type.prototype;if(r){let s=Bc(t);(n.preOrderHooks??=[]).push(e,s),(n.preOrderCheckHooks??=[]).push(e,s)}o&&(n.preOrderHooks??=[]).push(0-e,o),i&&((n.preOrderHooks??=[]).push(e,i),(n.preOrderCheckHooks??=[]).push(e,i))}function Us(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n=r)break}else t[u]<0&&(e[Pt]+=65536),(a>14>16&&(e[m]&3)===t&&(e[m]+=16384,xu(a,i)):xu(a,i)}var Vt=-1,gt=class{constructor(t,n,r){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=r}};function cg(e){return e instanceof gt}function lg(e){return(e.flags&8)!==0}function dg(e){return(e.flags&16)!==0}function sl(e){return e!==Vt}function Mr(e){return e&32767}function fg(e){return e>>16}function xr(e,t){let n=fg(e),r=t;for(;n>0;)r=r[Wt],n--;return r}var bi=!0;function Sr(e){let t=bi;return bi=e,t}var pg=256,al=pg-1,ul=5,hg=0,Te={};function gg(e,t,n){let r;typeof n=="string"?r=n.charCodeAt(0)||0:n.hasOwnProperty(un)&&(r=n[un]),r==null&&(r=n[un]=hg++);let o=r&al,i=1<>ul)]|=i}function Tr(e,t){let n=cl(e,t);if(n!==-1)return n;let r=t[D];r.firstCreatePass&&(e.injectorIndex=t.length,Xo(r.data,e),Xo(t,null),Xo(r.blueprint,null));let o=Gs(e,t),i=e.injectorIndex;if(sl(o)){let s=Mr(o),a=xr(o,t),u=a[D].data;for(let c=0;c<8;c++)t[i+c]=a[s+c]|u[s+c]}return t[i+8]=o,i}function Xo(e,t){e.push(0,0,0,0,0,0,0,0,t)}function cl(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function Gs(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;o!==null;){if(r=hl(o),r===null)return Vt;if(n++,o=o[Wt],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return Vt}function _i(e,t,n){gg(e,t,n)}function mg(e,t){if(t==="class")return e.classes;if(t==="style")return e.styles;let n=e.attrs;if(n){let r=n.length,o=0;for(;o>20,d=r?a:a+l,p=o?a+l:c;for(let f=d;f=u&&h.type===n)return f}if(o){let f=s[u];if(f&&Be(f)&&f.type===n)return u}return null}function mt(e,t,n,r){let o=e[n],i=t.data;if(cg(o)){let s=o;s.resolving&&Bp(Vp(i[n]));let a=Sr(s.canSeeViewProviders);s.resolving=!0;let u,c=s.injectImpl?te(s.injectImpl):null,l=Jc(e,r,_.Default);try{o=e[n]=s.factory(void 0,i,e,r),t.firstCreatePass&&n>=r.directiveStart&&ag(n,i[n],t)}finally{c!==null&&te(c),Sr(a),s.resolving=!1,nl()}}return o}function Dg(e){if(typeof e=="string")return e.charCodeAt(0)||0;let t=e.hasOwnProperty(un)?e[un]:void 0;return typeof t=="number"?t>=0?t&al:vg:t}function Su(e,t,n){let r=1<>ul)]&r)}function Tu(e,t){return!(e&_.Self)&&!(e&_.Host&&t)}var ct=class{constructor(t,n){this._tNode=t,this._lView=n}get(t,n,r){return fl(this._tNode,this._lView,t,Wr(r),n)}};function vg(){return new ct(K(),C())}function Cx(e){return wn(()=>{let t=e.prototype.constructor,n=t[wr]||Mi(t),r=Object.prototype,o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){let i=o[wr]||Mi(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function Mi(e){return sc(e)?()=>{let t=Mi(q(e));return t&&t()}:dt(e)}function wg(e,t,n,r,o){let i=e,s=t;for(;i!==null&&s!==null&&s[m]&2048&&!(s[m]&512);){let a=pl(i,s,n,r|_.Self,Te);if(a!==Te)return a;let u=i.parent;if(!u){let c=s[Pc];if(c){let l=c.get(n,Te,r);if(l!==Te)return l}u=hl(s),s=s[Wt]}i=u}return o}function hl(e){let t=e[D],n=t.type;return n===2?t.declTNode:n===1?e[oe]:null}function Ig(e){return mg(K(),e)}function Nu(e,t=null,n=null,r){let o=gl(e,t,n,r);return o.resolveInjectorInitializers(),o}function gl(e,t=null,n=null,r,o=new Set){let i=[n||Y,wh(e)];return r=r||(typeof e=="object"?void 0:Q(e)),new pn(i,t||Ns(),r||null,o)}var It=(()=>{class e{static{this.THROW_IF_NOT_FOUND=cn}static{this.NULL=new Cr}static create(n,r){if(Array.isArray(n))return Nu({name:""},r,n,"");{let o=n.name??"";return Nu({name:o},n.parent,n.providers,o)}}static{this.\u0275prov=j({token:e,providedIn:"any",factory:()=>z(gc)})}static{this.__NG_ELEMENT_ID__=-1}}return e})();var Eg="ngOriginalError";function ei(e){return e[Eg]}var Ze=class{constructor(){this._console=console}handleError(t){let n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&ei(t);for(;n&&ei(n);)n=ei(n);return n||null}},ml=new O("",{providedIn:"root",factory:()=>E(Ze).handleError.bind(void 0)}),Kr=(()=>{class e{static{this.__NG_ELEMENT_ID__=Cg}static{this.__NG_ENV_ID__=n=>n}}return e})(),xi=class extends Kr{constructor(t){super(),this._lView=t}onDestroy(t){return Wc(this._lView,t),()=>Gh(this._lView,t)}};function Cg(){return new xi(C())}function bg(){return Qt(K(),C())}function Qt(e,t){return new Zt(ie(e,t))}var Zt=(()=>{class e{constructor(n){this.nativeElement=n}static{this.__NG_ELEMENT_ID__=bg}}return e})();function _g(e){return e instanceof Zt?e.nativeElement:e}var Si=class extends _e{constructor(t=!1){super(),this.destroyRef=void 0,this.__isAsync=t,Fc()&&(this.destroyRef=E(Kr,{optional:!0})??void 0)}emit(t){let n=x(null);try{super.next(t)}finally{x(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&typeof t=="object"){let u=t;o=u.next?.bind(u),i=u.error?.bind(u),s=u.complete?.bind(u)}this.__isAsync&&(i=ti(i),o&&(o=ti(o)),s&&(s=ti(s)));let a=super.subscribe({next:o,error:i,complete:s});return t instanceof U&&t.add(a),a}};function ti(e){return t=>{setTimeout(e,void 0,t)}}var ut=Si;function Mg(){return this._results[Symbol.iterator]()}var Ti=class e{get changes(){return this._changes??=new ut}constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;let n=e.prototype;n[Symbol.iterator]||(n[Symbol.iterator]=Mg)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;let r=Xp(t);(this._changesDetected=!Jp(this._results,r,n))&&(this._results=r,this.length=r.length,this.last=r[this.length-1],this.first=r[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.emit(this)}onDirty(t){this._onDirty=t}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}},xg="ngSkipHydration",Sg="ngskiphydration";function yl(e){let t=e.mergedAttrs;if(t===null)return!1;for(let n=0;nPg}),Pg="ng",kg=new O(""),Jr=new O("",{providedIn:"platform",factory:()=>"unknown"});var _x=new O(""),Mx=new O("",{providedIn:"root",factory:()=>_n().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});function Lg(){let e=new zs;return E(Jr)==="browser"&&(e.store=jg(_n(),E(Rg))),e}var zs=(()=>{class e{constructor(){this.store={},this.onSerializeCallbacks={}}static{this.\u0275prov=j({token:e,providedIn:"root",factory:Lg})}get(n,r){return this.store[n]!==void 0?this.store[n]:r}set(n,r){this.store[n]=r}remove(n){delete this.store[n]}hasKey(n){return this.store.hasOwnProperty(n)}get isEmpty(){return Object.keys(this.store).length===0}onSerialize(n,r){this.onSerializeCallbacks[n]=r}toJson(){for(let n in this.onSerializeCallbacks)if(this.onSerializeCallbacks.hasOwnProperty(n))try{this.store[n]=this.onSerializeCallbacks[n]()}catch(r){console.warn("Exception in onSerialize callback: ",r)}return JSON.stringify(this.store).replace(/null;function Wg(e,t,n=!1){let r=e.getAttribute(ni);if(r==null)return null;let[o,i]=r.split("|");if(r=n?i:o,!r)return null;let s=i?`|${i}`:"",a=n?o:s,u={};if(r!==""){let l=t.get(zs,null,{optional:!0});l!==null&&(u=l.get(Ml,[])[Number(r)])}let c={data:u,firstChild:e.firstChild??null};return n&&(c.firstChild=e,Xr(c,0,e.nextSibling)),a?e.setAttribute(ni,a):e.removeAttribute(ni),c}function qg(){xl=Wg}function qs(e,t,n=!1){return xl(e,t,n)}function Yg(e){let t=e._lView;return t[D].type===2?null:(Lc(t)&&(t=t[V]),t)}function Qg(e){return e.textContent?.replace(/\s/gm,"")}function Zg(e){let t=_n(),n=t.createNodeIterator(e,NodeFilter.SHOW_COMMENT,{acceptNode(i){let s=Qg(i);return s==="ngetn"||s==="ngtns"?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),r,o=[];for(;r=n.nextNode();)o.push(r);for(let i of o)i.textContent==="ngetn"?i.replaceWith(t.createTextNode("")):i.remove()}function Xr(e,t,n){e.segmentHeads??={},e.segmentHeads[t]=n}function Oi(e,t){return e.segmentHeads?.[t]??null}function Kg(e,t){let n=e.data,r=n[Vg]?.[t]??null;return r===null&&n[Ws]?.[t]&&(r=Ys(e,t)),r}function Sl(e,t){return e.data[Ws]?.[t]??null}function Ys(e,t){let n=Sl(e,t)??[],r=0;for(let o of n)r+=o[Ar]*(o[_l]??1);return r}function eo(e,t){if(typeof e.disconnectedNodes>"u"){let n=e.data[Ug];e.disconnectedNodes=n?new Set(n):null}return!!e.disconnectedNodes?.has(t)}var sr=new O(""),Tl=!1,Nl=new O("",{providedIn:"root",factory:()=>Tl}),Jg=new O(""),ar;function Al(){if(ar===void 0&&(ar=null,ce.trustedTypes))try{ar=ce.trustedTypes.createPolicy("angular",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return ar}function to(e){return Al()?.createHTML(e)||e}function Xg(e){return Al()?.createScriptURL(e)||e}var ur;function Ol(){if(ur===void 0&&(ur=null,ce.trustedTypes))try{ur=ce.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return ur}function Ou(e){return Ol()?.createHTML(e)||e}function Fu(e){return Ol()?.createScriptURL(e)||e}var $e=class{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${nc})`}},Fi=class extends $e{getTypeName(){return"HTML"}},Ri=class extends $e{getTypeName(){return"Style"}},Pi=class extends $e{getTypeName(){return"Script"}},ki=class extends $e{getTypeName(){return"URL"}},Li=class extends $e{getTypeName(){return"ResourceURL"}};function Kt(e){return e instanceof $e?e.changingThisBreaksApplicationSecurity:e}function Qs(e,t){let n=em(e);if(n!=null&&n!==t){if(n==="ResourceURL"&&t==="URL")return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${nc})`)}return n===t}function em(e){return e instanceof $e&&e.getTypeName()||null}function xx(e){return new Fi(e)}function Sx(e){return new Ri(e)}function Tx(e){return new Pi(e)}function Nx(e){return new ki(e)}function Ax(e){return new Li(e)}function tm(e){let t=new Vi(e);return nm()?new ji(t):t}var ji=class{constructor(t){this.inertDocumentHelper=t}getInertBodyElement(t){t=""+t;try{let n=new window.DOMParser().parseFromString(to(t),"text/html").body;return n===null?this.inertDocumentHelper.getInertBodyElement(t):(n.removeChild(n.firstChild),n)}catch{return null}}},Vi=class{constructor(t){this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(t){let n=this.inertDocument.createElement("template");return n.innerHTML=to(t),n}};function nm(){try{return!!new window.DOMParser().parseFromString(to(""),"text/html")}catch{return!1}}var rm=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Fl(e){return e=String(e),e.match(rm)?e:"unsafe:"+e}function He(e){let t={};for(let n of e.split(","))t[n]=!0;return t}function Mn(...e){let t={};for(let n of e)for(let r in n)n.hasOwnProperty(r)&&(t[r]=!0);return t}var Rl=He("area,br,col,hr,img,wbr"),Pl=He("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),kl=He("rp,rt"),om=Mn(kl,Pl),im=Mn(Pl,He("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),sm=Mn(kl,He("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),Ru=Mn(Rl,im,sm,om),Ll=He("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),am=He("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),um=He("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext"),cm=Mn(Ll,am,um),lm=He("script,style,template"),Bi=class{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(t){let n=t.firstChild,r=!0,o=[];for(;n;){if(n.nodeType===Node.ELEMENT_NODE?r=this.startElement(n):n.nodeType===Node.TEXT_NODE?this.chars(n.nodeValue):this.sanitizedSomething=!0,r&&n.firstChild){o.push(n),n=pm(n);continue}for(;n;){n.nodeType===Node.ELEMENT_NODE&&this.endElement(n);let i=fm(n);if(i){n=i;break}n=o.pop()}}return this.buf.join("")}startElement(t){let n=Pu(t).toLowerCase();if(!Ru.hasOwnProperty(n))return this.sanitizedSomething=!0,!lm.hasOwnProperty(n);this.buf.push("<"),this.buf.push(n);let r=t.attributes;for(let o=0;o"),!0}endElement(t){let n=Pu(t).toLowerCase();Ru.hasOwnProperty(n)&&!Rl.hasOwnProperty(n)&&(this.buf.push(""))}chars(t){this.buf.push(ku(t))}};function dm(e,t){return(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}function fm(e){let t=e.nextSibling;if(t&&e!==t.previousSibling)throw jl(t);return t}function pm(e){let t=e.firstChild;if(t&&dm(e,t))throw jl(t);return t}function Pu(e){let t=e.nodeName;return typeof t=="string"?t:"FORM"}function jl(e){return new Error(`Failed to sanitize html because the element is clobbered: ${e.outerHTML}`)}var hm=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,gm=/([^\#-~ |!])/g;function ku(e){return e.replace(/&/g,"&").replace(hm,function(t){let n=t.charCodeAt(0),r=t.charCodeAt(1);return"&#"+((n-55296)*1024+(r-56320)+65536)+";"}).replace(gm,function(t){return"&#"+t.charCodeAt(0)+";"}).replace(//g,">")}var cr;function mm(e,t){let n=null;try{cr=cr||tm(e);let r=t?String(t):"";n=cr.getInertBodyElement(r);let o=5,i=r;do{if(o===0)throw new Error("Failed to sanitize html because the input is unstable");o--,r=i,i=n.innerHTML,n=cr.getInertBodyElement(r)}while(r!==i);let a=new Bi().sanitizeChildren(Lu(n)||n);return to(a)}finally{if(n){let r=Lu(n)||n;for(;r.firstChild;)r.removeChild(r.firstChild)}}}function Lu(e){return"content"in e&&ym(e)?e.content:null}function ym(e){return e.nodeType===Node.ELEMENT_NODE&&e.nodeName==="TEMPLATE"}var no=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}(no||{});function Ox(e){let t=Zs();return t?Ou(t.sanitize(no.HTML,e)||""):Qs(e,"HTML")?Ou(Kt(e)):mm(_n(),lt(e))}function Dm(e){let t=Zs();return t?t.sanitize(no.URL,e)||"":Qs(e,"URL")?Kt(e):Fl(lt(e))}function vm(e){let t=Zs();if(t)return Fu(t.sanitize(no.RESOURCE_URL,e)||"");if(Qs(e,"ResourceURL"))return Fu(Kt(e));throw new M(904,!1)}function Fx(e){return Xg(e[0])}function wm(e,t){return t==="src"&&(e==="embed"||e==="frame"||e==="iframe"||e==="media"||e==="script")||t==="href"&&(e==="base"||e==="link")?vm:Dm}function Rx(e,t,n){return wm(t,n)(e)}function Zs(){let e=C();return e&&e[Ie].sanitizer}var Im=/^>|^->||--!>|)/g,Cm="\u200B$1\u200B";function bm(e){return e.replace(Im,t=>t.replace(Em,Cm))}function _m(e){return e.ownerDocument.body}function Vl(e){return e instanceof Function?e():e}function an(e){return(e??E(It)).get(Jr)==="browser"}var Or=function(e){return e[e.Important=1]="Important",e[e.DashCase=2]="DashCase",e}(Or||{}),Mm;function Ks(e,t){return Mm(e,t)}function kt(e,t,n,r,o){if(r!=null){let i,s=!1;Ne(r)?i=r:Le(r)&&(s=!0,r=r[ne]);let a=Ee(r);e===0&&n!==null?o==null?Ul(t,n,a):Rr(t,n,a,o||null,!0):e===1&&n!==null?Rr(t,n,a,o||null,!0):e===2?ra(t,a,s):e===3&&t.destroyNode(a),i!=null&&$m(t,e,i,n,o)}}function Js(e,t){return e.createText(t)}function xm(e,t,n){e.setValue(t,n)}function Xs(e,t){return e.createComment(bm(t))}function ro(e,t,n){return e.createElement(t,n)}function Sm(e,t){Bl(e,t),t[ne]=null,t[oe]=null}function Tm(e,t,n,r,o,i){r[ne]=o,r[oe]=t,oo(e,r,n,1,o,i)}function Bl(e,t){t[Ie].changeDetectionScheduler?.notify(1),oo(e,t,t[R],2,null,null)}function Nm(e){let t=e[gn];if(!t)return ri(e[D],e);for(;t;){let n=null;if(Le(t))n=t[gn];else{let r=t[Z];r&&(n=r)}if(!n){for(;t&&!t[we]&&t!==e;)Le(t)&&ri(t[D],t),t=t[G];t===null&&(t=e),Le(t)&&ri(t[D],t),n=t&&t[we]}t=n}}function Am(e,t,n,r){let o=Z+r,i=n.length;r>0&&(n[o-1][we]=t),r0&&(e[n-1][we]=r[we]);let i=Er(e,Z+t);Sm(r[D],r);let s=i[je];s!==null&&s.detachView(i[D]),r[G]=null,r[we]=null,r[m]&=-129}return r}function ea(e,t){if(!(t[m]&256)){let n=t[R];n.destroyNode&&oo(e,t,n,3,null,null),Nm(t)}}function ri(e,t){if(t[m]&256)return;let n=x(null);try{t[m]&=-129,t[m]|=256,t[pt]&&To(t[pt]),Rm(e,t),Fm(e,t),t[D].type===1&&t[R].destroy();let r=t[En];if(r!==null&&Ne(t[G])){r!==t[G]&&$l(r,t);let o=t[je];o!==null&&o.detachView(e)}Fg(t)}finally{x(n)}}function Fm(e,t){let n=e.cleanup,r=t[hn];if(n!==null)for(let i=0;i=0?r[s]():r[-s].unsubscribe(),i+=2}else{let s=r[n[i+1]];n[i].call(s)}r!==null&&(t[hn]=null);let o=t[qe];if(o!==null){t[qe]=null;for(let i=0;i-1){let{encapsulation:i}=e.data[r.directiveStart+o];if(i===dn.None||i===dn.Emulated)return null}return ie(r,n)}}function Rr(e,t,n,r,o){e.insertBefore(t,n,r,o)}function Ul(e,t,n){e.appendChild(t,n)}function ju(e,t,n,r,o){r!==null?Rr(e,t,n,r,o):Ul(e,t,n)}function km(e,t,n,r){e.removeChild(t,n,r)}function ta(e,t){return e.parentNode(t)}function Lm(e,t){return e.nextSibling(t)}function Gl(e,t,n){return Vm(e,t,n)}function jm(e,t,n){return e.type&40?ie(e,n):null}var Vm=jm,Vu;function na(e,t,n,r){let o=Hl(e,r,t),i=t[R],s=r.parent||t[oe],a=Gl(s,r,t);if(o!=null)if(Array.isArray(n))for(let u=0;uV&&Zl(e,t,V,!1),Se(s?2:0,o),n(r,o)}finally{ht(i),Se(s?3:1,o)}}function ed(e,t,n){if(kc(t)){let r=x(null);try{let o=t.directiveStart,i=t.directiveEnd;for(let s=o;snull;function Qm(e){Dl(e)?Wl(e):Zg(e)}function Zm(){od=Qm}function Km(e,t,n,r){let o=ld(t);o.push(n),e.firstCreatePass&&dd(e).push(r,o.length-1)}function Jm(e,t,n,r,o,i){let s=t?t.injectorIndex:-1,a=0;return qt()&&(a|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,attrs:i,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function Bu(e,t,n,r,o){for(let i in t){if(!t.hasOwnProperty(i))continue;let s=t[i];if(s===void 0)continue;r??={};let a,u=ft.None;Array.isArray(s)?(a=s[0],u=s[1]):a=s;let c=i;if(o!==null){if(!o.hasOwnProperty(i))continue;c=o[i]}e===0?$u(r,n,c,a,u):$u(r,n,c,a)}return r}function $u(e,t,n,r,o){let i;e.hasOwnProperty(n)?(i=e[n]).push(t,r):i=e[n]=[t,r],o!==void 0&&i.push(o)}function Xm(e,t,n){let r=t.directiveStart,o=t.directiveEnd,i=e.data,s=t.attrs,a=[],u=null,c=null;for(let l=r;l0;){let n=e[--t];if(typeof n=="number"&&n<0)return n}return 0}function oy(e,t,n,r){let o=n.directiveStart,i=n.directiveEnd;Cn(n)&&dy(t,n,e.data[o+n.componentOffset]),e.firstCreatePass||Tr(n,t),yt(r,t);let s=n.initialInputs;for(let a=o;a{yn(e.lView)},consumerOnSignalRead(){this.lView[pt]=this}}),Dd=100;function vd(e,t=!0,n=0){let r=e[Ie],o=r.rendererFactory,i=!1;i||o.begin?.();try{My(e,n)}catch(s){throw t&&pd(e,s),s}finally{i||(o.end?.(),r.inlineEffectRunner?.flush())}}function My(e,t){zi(e,t);let n=0;for(;ks(e);){if(n===Dd)throw new M(103,!1);n++,zi(e,1)}}function xy(e,t,n,r){let o=t[m];if((o&256)===256)return;let i=!1;!i&&t[Ie].inlineEffectRunner?.flush(),Bs(t);let s=null,a=null;!i&&Sy(e)&&(a=Ey(t),s=xo(a));try{zc(t),eg(e.bindingStartIndex),n!==null&&Xl(e,t,n,2,r);let u=(o&3)===3;if(!i)if(u){let d=e.preOrderCheckHooks;d!==null&&gr(t,d,null)}else{let d=e.preOrderHooks;d!==null&&mr(t,d,0,null),Jo(t,0)}if(Ty(t),wd(t,0),e.contentQueries!==null&&cd(e,t),!i)if(u){let d=e.contentCheckHooks;d!==null&&gr(t,d)}else{let d=e.contentHooks;d!==null&&mr(t,d,1),Jo(t,1)}Gm(e,t);let c=e.components;c!==null&&Ed(t,c,0);let l=e.viewQuery;if(l!==null&&Ui(2,l,r),!i)if(u){let d=e.viewCheckHooks;d!==null&&gr(t,d)}else{let d=e.viewHooks;d!==null&&mr(t,d,2),Jo(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[hr]){for(let d of t[hr])d();t[hr]=null}i||(t[m]&=-73)}catch(u){throw yn(t),u}finally{a!==null&&(So(a,s),by(a)),$s()}}function Sy(e){return e.type!==2}function wd(e,t){for(let n=wl(e);n!==null;n=Il(n))for(let r=Z;r-1&&(Fr(t,r),Er(n,r))}this._attachedToViewContainer=!1}ea(this._lView[D],this._lView)}onDestroy(t){Wc(this._lView,t)}markForCheck(){ca(this._cdRefInjectingView||this._lView)}detach(){this._lView[m]&=-129}reattach(){Ei(this._lView),this._lView[m]|=128}detectChanges(){this._lView[m]|=1024,vd(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new M(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,Bl(this._lView[D],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new M(902,!1);this._appRef=t,Ei(this._lView)}},vt=(()=>{class e{static{this.__NG_ELEMENT_ID__=Fy}}return e})(),Ay=vt,Oy=class extends Ay{constructor(t,n,r){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=r}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(t,n){return this.createEmbeddedViewImpl(t,n)}createEmbeddedViewImpl(t,n,r){let o=gd(this._declarationLView,this._declarationTContainer,t,{embeddedViewInjector:n,dehydratedView:r});return new Dt(o)}};function Fy(){return la(K(),C())}function la(e,t){return e.type&4?new Oy(t,e,Qt(e,t)):null}function Cd(e){let t=e[mn]??[],r=e[G][R];for(let o of t)Ry(o,r);e[mn]=Y}function Ry(e,t){let n=0,r=e.firstChild;if(r){let o=e.data[Ar];for(;n0&&(i.firstChild=e,e=uo(r[Ar],e)),n.push(i)}return[e,n]}var _d=()=>null;function Gy(e,t){let n=e[mn];return!t||n===null||n.length===0?null:n[0].data[$g]===t?n.shift():(Cd(e),null)}function zy(){_d=Gy}function Wi(e,t){return _d(e,t)}var Lr=class{},qi=class{},jr=class{};function Wy(e){let t=Error(`No component factory found for ${Q(e)}.`);return t[qy]=e,t}var qy="ngComponent";var Yi=class{resolveComponentFactory(t){throw Wy(t)}},co=(()=>{class e{static{this.NULL=new Yi}}return e})(),Qi=class{},Md=(()=>{class e{constructor(){this.destroyNode=null}static{this.__NG_ELEMENT_ID__=()=>Yy()}}return e})();function Yy(){let e=C(),t=K(),n=Je(t.index,e);return(Le(n)?n:e)[R]}var Qy=(()=>{class e{static{this.\u0275prov=j({token:e,providedIn:"root",factory:()=>null})}}return e})(),ii={};var Hu=new Set;function Jt(e){Hu.has(e)||(Hu.add(e),performance?.mark?.("mark_feature_usage",{detail:{feature:e}}))}function Uu(...e){}function Zy(){let e=typeof ce.requestAnimationFrame=="function",t=ce[e?"requestAnimationFrame":"setTimeout"],n=ce[e?"cancelAnimationFrame":"clearTimeout"];if(typeof Zone<"u"&&t&&n){let r=t[Zone.__symbol__("OriginalDelegate")];r&&(t=r);let o=n[Zone.__symbol__("OriginalDelegate")];o&&(n=o)}return{nativeRequestAnimationFrame:t,nativeCancelAnimationFrame:n}}var le=class e{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:r=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ut(!1),this.onMicrotaskEmpty=new ut(!1),this.onStable=new ut(!1),this.onError=new ut(!1),typeof Zone>"u")throw new M(908,!1);Zone.assertZonePatched();let o=this;o._nesting=0,o._outer=o._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(o._inner=o._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(o._inner=o._inner.fork(Zone.longStackTraceZoneSpec)),o.shouldCoalesceEventChangeDetection=!r&&n,o.shouldCoalesceRunChangeDetection=r,o.lastRequestAnimationFrameId=-1,o.nativeRequestAnimationFrame=Zy().nativeRequestAnimationFrame,Xy(o)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get("isAngularZone")===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new M(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new M(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){let i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,t,Ky,Uu,Uu);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}},Ky={};function da(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function Jy(e){e.isCheckStableRunning||e.lastRequestAnimationFrameId!==-1||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(ce,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,Zi(e),e.isCheckStableRunning=!0,da(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),Zi(e))}function Xy(e){let t=()=>{Jy(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(n,r,o,i,s,a)=>{if(eD(a))return n.invokeTask(o,i,s,a);try{return Gu(e),n.invokeTask(o,i,s,a)}finally{(e.shouldCoalesceEventChangeDetection&&i.type==="eventTask"||e.shouldCoalesceRunChangeDetection)&&t(),zu(e)}},onInvoke:(n,r,o,i,s,a,u)=>{try{return Gu(e),n.invoke(o,i,s,a,u)}finally{e.shouldCoalesceRunChangeDetection&&t(),zu(e)}},onHasTask:(n,r,o,i)=>{n.hasTask(o,i),r===o&&(i.change=="microTask"?(e._hasPendingMicrotasks=i.microTask,Zi(e),da(e)):i.change=="macroTask"&&(e.hasPendingMacrotasks=i.macroTask))},onHandleError:(n,r,o,i)=>(n.handleError(o,i),e.runOutsideAngular(()=>e.onError.emit(i)),!1)})}function Zi(e){e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.lastRequestAnimationFrameId!==-1?e.hasPendingMicrotasks=!0:e.hasPendingMicrotasks=!1}function Gu(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function zu(e){e._nesting--,da(e)}function eD(e){return!Array.isArray(e)||e.length!==1?!1:e[0].data?.__ignore_ng_zone__===!0}var Lt=function(e){return e[e.EarlyRead=0]="EarlyRead",e[e.Write=1]="Write",e[e.MixedReadWrite=2]="MixedReadWrite",e[e.Read=3]="Read",e}(Lt||{}),tD={destroy(){}};function nD(e,t){!t&&Rc(nD);let n=t?.injector??E(It);if(!an(n))return tD;Jt("NgAfterNextRender");let r=n.get(fa),o=r.handler??=new Ji,i=t?.phase??Lt.MixedReadWrite,s=()=>{o.unregister(u),a()},a=n.get(Kr).onDestroy(s),u=Ah(n,()=>new Ki(i,()=>{s(),e()}));return o.register(u),{destroy:s}}var Ki=class{constructor(t,n){this.phase=t,this.callbackFn=n,this.zone=E(le),this.errorHandler=E(Ze,{optional:!0}),E(Lr,{optional:!0})?.notify(1)}invoke(){try{this.zone.runOutsideAngular(this.callbackFn)}catch(t){this.errorHandler?.handleError(t)}}},Ji=class{constructor(){this.executingCallbacks=!1,this.buckets={[Lt.EarlyRead]:new Set,[Lt.Write]:new Set,[Lt.MixedReadWrite]:new Set,[Lt.Read]:new Set},this.deferredCallbacks=new Set}register(t){(this.executingCallbacks?this.deferredCallbacks:this.buckets[t.phase]).add(t)}unregister(t){this.buckets[t.phase].delete(t),this.deferredCallbacks.delete(t)}execute(){this.executingCallbacks=!0;for(let t of Object.values(this.buckets))for(let n of t)n.invoke();this.executingCallbacks=!1;for(let t of this.deferredCallbacks)this.buckets[t.phase].add(t);this.deferredCallbacks.clear()}destroy(){for(let t of Object.values(this.buckets))t.clear();this.deferredCallbacks.clear()}},fa=(()=>{class e{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){let n=[...this.internalCallbacks];this.internalCallbacks.length=0;for(let r of n)r()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}static{this.\u0275prov=j({token:e,providedIn:"root",factory:()=>new e})}}return e})();function Xi(e,t,n){let r=n?e.styles:null,o=n?e.classes:null,i=0;if(t!==null)for(let s=0;s0&&Yl(e,n,i.join(" "))}}function cD(e,t,n){let r=e.projection=[];for(let o=0;o{class e{static{this.__NG_ELEMENT_ID__=dD}}return e})();function dD(){let e=K();return Sd(e,C())}var fD=Xt,xd=class extends fD{constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return Qt(this._hostTNode,this._hostLView)}get injector(){return new ct(this._hostTNode,this._hostLView)}get parentInjector(){let t=Gs(this._hostTNode,this._hostLView);if(sl(t)){let n=xr(t,this._hostLView),r=Mr(t),o=n[D].data[r+8];return new ct(o,n)}else return new ct(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){let n=qu(this._lContainer);return n!==null&&n[t]||null}get length(){return this._lContainer.length-Z}createEmbeddedView(t,n,r){let o,i;typeof r=="number"?o=r:r!=null&&(o=r.index,i=r.injector);let s=Wi(this._lContainer,t.ssrId),a=t.createEmbeddedViewImpl(n||{},i,s);return this.insertImpl(a,o,Gi(this._hostTNode,s)),a}createComponent(t,n,r,o,i){let s=t&&!Oh(t),a;if(s)a=n;else{let h=n||{};a=h.index,r=h.injector,o=h.projectableNodes,i=h.environmentInjector||h.ngModuleRef}let u=s?t:new Gt(Ye(t)),c=r||this.parentInjector;if(!i&&u.ngModule==null){let y=(s?c:this.parentInjector).get(Qe,null);y&&(i=y)}let l=Ye(u.componentType??{}),d=Wi(this._lContainer,l?.id??null),p=d?.firstChild??null,f=u.create(c,o,p,i);return this.insertImpl(f.hostView,a,Gi(this._hostTNode,d)),f}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){let o=t._lView;if($h(o)){let a=this.indexOf(t);if(a!==-1)this.detach(a);else{let u=o[G],c=new xd(u,u[oe],u[G]);c.detach(c.indexOf(t))}}let i=this._adjustIndex(n),s=this._lContainer;return md(s,o,i,r),t.attachToViewContainerRef(),hc(si(s),i,t),t}move(t,n){return this.insert(t,n)}indexOf(t){let n=qu(this._lContainer);return n!==null?n.indexOf(t):-1}remove(t){let n=this._adjustIndex(t,-1),r=Fr(this._lContainer,n);r&&(Er(si(this._lContainer),n),ea(r[D],r))}detach(t){let n=this._adjustIndex(t,-1),r=Fr(this._lContainer,n);return r&&Er(si(this._lContainer),n)!=null?new Dt(r):null}_adjustIndex(t,n=0){return t??this.length+n}};function qu(e){return e[br]}function si(e){return e[br]||(e[br]=[])}function Sd(e,t){let n,r=t[e.index];return Ne(r)?n=r:(n=ud(r,t,null,e),t[e.index]=n,so(t,n)),Td(n,t,e,r),new xd(n,e,t)}function pD(e,t){let n=e[R],r=n.createComment(""),o=ie(t,e),i=ta(n,o);return Rr(n,i,r,Lm(n,o),!1),r}var Td=Nd,pa=()=>!1;function hD(e,t,n){return pa(e,t,n)}function Nd(e,t,n,r){if(e[Ve])return;let o;n.type&8?o=Ee(r):o=pD(t,n),e[Ve]=o}function gD(e,t,n){if(e[Ve]&&e[mn])return!0;let r=n[de],o=t.index-V;if(!r||Tg(t)||eo(r,o))return!1;let s=Oi(r,o),a=r.data[Ws]?.[o],[u,c]=Uy(s,a);return e[Ve]=u,e[mn]=c,!0}function mD(e,t,n,r){pa(e,n,t)||Nd(e,t,n,r)}function yD(){Td=mD,pa=gD}var ns=class e{constructor(t){this.queryList=t,this.matches=null}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},rs=class e{constructor(t=[]){this.queries=t}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries!==null?t.contentQueries[0]:n.length,o=[];for(let i=0;i0)r.push(s[a/2]);else{let c=i[a+1],l=t[-u];for(let d=Z;dt.trim())}function Fd(e,t,n){e.queries===null&&(e.queries=new os),e.queries.track(new is(t,n))}function MD(e,t){let n=e.contentQueries||(e.contentQueries=[]),r=n.length?n[n.length-1]:-1;t!==r&&n.push(e.queries.length-1,t)}function ha(e,t){return e.queries.getByIndex(t)}function xD(e,t){let n=e[D],r=ha(n,t);return r.crossesNgTemplate?ss(n,e,t,[]):Ad(n,e,r,t)}function Vx(e){return typeof e=="function"&&e[On]!==void 0}function SD(e){return Object.getPrototypeOf(e.prototype).constructor}function TD(e){let t=SD(e.type),n=!0,r=[e];for(;t;){let o;if(Be(e))o=t.\u0275cmp||t.\u0275dir;else{if(t.\u0275cmp)throw new M(903,!1);o=t.\u0275dir}if(o){if(n){r.push(o);let s=e;s.inputs=lr(e.inputs),s.inputTransforms=lr(e.inputTransforms),s.declaredInputs=lr(e.declaredInputs),s.outputs=lr(e.outputs);let a=o.hostBindings;a&&RD(e,a);let u=o.viewQuery,c=o.contentQueries;if(u&&OD(e,u),c&&FD(e,c),ND(e,o),Ap(e.outputs,o.outputs),Be(o)&&o.data.animation){let l=e.data;l.animation=(l.animation||[]).concat(o.data.animation)}}let i=o.features;if(i)for(let s=0;s=0;r--){let o=e[r];o.hostVars=t+=o.hostVars,o.hostAttrs=fn(o.hostAttrs,n=fn(n,o.hostAttrs))}}function lr(e){return e===Bt?{}:e===Y?[]:e}function OD(e,t){let n=e.viewQuery;n?e.viewQuery=(r,o)=>{t(r,o),n(r,o)}:e.viewQuery=t}function FD(e,t){let n=e.contentQueries;n?e.contentQueries=(r,o,i)=>{t(r,o,i),n(r,o,i)}:e.contentQueries=t}function RD(e,t){let n=e.hostBindings;n?e.hostBindings=(r,o)=>{t(r,o),n(r,o)}:e.hostBindings=t}function PD(e){let t=e.inputConfig,n={};for(let r in t)if(t.hasOwnProperty(r)){let o=t[r];Array.isArray(o)&&o[3]&&(n[r]=o[3])}e.inputTransforms=n}var Ke=class{},as=class{};var us=class extends Ke{constructor(t,n,r){super(),this._parent=n,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new Vr(this);let o=bc(t);this._bootstrapComponents=Vl(o.bootstrap),this._r3Injector=gl(t,n,[{provide:Ke,useValue:this},{provide:co,useValue:this.componentFactoryResolver},...r],Q(t),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(t)}get injector(){return this._r3Injector}destroy(){let t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}},cs=class extends as{constructor(t){super(),this.moduleType=t}create(t){return new us(this.moduleType,t,[])}};var $r=class extends Ke{constructor(t){super(),this.componentFactoryResolver=new Vr(this),this.instance=null;let n=new pn([...t.providers,{provide:Ke,useValue:this},{provide:co,useValue:this.componentFactoryResolver}],t.parent||Ns(),t.debugName,new Set(["environment"]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}};function kD(e,t,n=null){return new $r({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var ga=(()=>{class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new tn(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),n}remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=j({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function Rd(e){return jD(e)?Array.isArray(e)||!(e instanceof Map)&&Symbol.iterator in e:!1}function LD(e,t){if(Array.isArray(e))for(let n=0;n>17&32767}function qD(e){return(e&2)==2}function YD(e,t){return e&131071|t<<17}function ls(e){return e|2}function zt(e){return(e&131068)>>2}function ai(e,t){return e&-131069|t<<2}function QD(e){return(e&1)===1}function ds(e){return e|1}function ZD(e,t,n,r,o,i){let s=i?t.classBindings:t.styleBindings,a=wt(s),u=zt(s);e[r]=n;let c=!1,l;if(Array.isArray(n)){let d=n;l=d[1],(l===null||In(d,l)>0)&&(c=!0)}else l=n;if(o)if(u!==0){let p=wt(e[a+1]);e[r+1]=dr(p,a),p!==0&&(e[p+1]=ai(e[p+1],r)),e[a+1]=YD(e[a+1],r)}else e[r+1]=dr(a,0),a!==0&&(e[a+1]=ai(e[a+1],r)),a=r;else e[r+1]=dr(u,0),a===0?a=r:e[u+1]=ai(e[u+1],r),u=r;c&&(e[r+1]=ls(e[r+1])),Yu(e,l,r,!0),Yu(e,l,r,!1),KD(t,l,e,r,i),s=dr(a,u),i?t.classBindings=s:t.styleBindings=s}function KD(e,t,n,r,o){let i=o?e.residualClasses:e.residualStyles;i!=null&&typeof t=="string"&&In(i,t)>=0&&(n[r+1]=ds(n[r+1]))}function Yu(e,t,n,r){let o=e[n+1],i=t===null,s=r?wt(o):zt(o),a=!1;for(;s!==0&&(a===!1||i);){let u=e[s],c=e[s+1];JD(u,t)&&(a=!0,e[s+1]=r?ds(c):ls(c)),s=r?wt(c):zt(c)}a&&(e[n+1]=r?ls(o):ds(o))}function JD(e,t){return e===null||t==null||(Array.isArray(e)?e[1]:e)===t?!0:Array.isArray(e)&&typeof t=="string"?In(e,t)>=0:!1}var ve={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function XD(e){return e.substring(ve.key,ve.keyEnd)}function ev(e){return tv(e),Ld(e,jd(e,0,ve.textEnd))}function Ld(e,t){let n=ve.textEnd;return n===t?-1:(t=ve.keyEnd=nv(e,ve.key=t,n),jd(e,t,n))}function tv(e){ve.key=0,ve.keyEnd=0,ve.value=0,ve.valueEnd=0,ve.textEnd=e.length}function jd(e,t,n){for(;t32;)t++;return t}function rv(e,t,n){let r=C(),o=Yt();if(pe(r,o,t)){let i=$(),s=Zr();sa(i,s,r,e,t,r[R],n,!1)}return rv}function fs(e,t,n,r,o){let i=t.inputs,s=o?"class":"style";aa(e,n,i[s],s,r)}function Vd(e,t,n){return Bd(e,t,n,!1),Vd}function ov(e,t){return Bd(e,t,null,!0),ov}function Bx(e){sv(fv,iv,e,!0)}function iv(e,t){for(let n=ev(t);n>=0;n=Ld(t,n))_s(e,XD(t),!0)}function Bd(e,t,n,r){let o=C(),i=$(),s=Ls(2);if(i.firstUpdatePass&&Hd(i,e,s,r),t!==Ce&&pe(o,s,t)){let a=i.data[Xe()];Ud(i,a,o,o[R],e,o[s+1]=hv(t,n),r,s)}}function sv(e,t,n,r){let o=$(),i=Ls(2);o.firstUpdatePass&&Hd(o,null,i,r);let s=C();if(n!==Ce&&pe(s,i,n)){let a=o.data[Xe()];if(Gd(a,r)&&!$d(o,i)){let u=r?a.classesWithoutHost:a.stylesWithoutHost;u!==null&&(n=pi(u,n||"")),fs(o,a,s,n,r)}else pv(o,a,s,s[R],s[i+1],s[i+1]=dv(e,t,n),r,i)}}function $d(e,t){return t>=e.expandoStartIndex}function Hd(e,t,n,r){let o=e.data;if(o[n+1]===null){let i=o[Xe()],s=$d(e,n);Gd(i,r)&&t===null&&!s&&(t=!1),t=av(o,i,t,r),ZD(o,i,t,n,s,r)}}function av(e,t,n,r){let o=js(e),i=r?t.residualClasses:t.residualStyles;if(o===null)(r?t.classBindings:t.styleBindings)===0&&(n=ui(null,e,t,n,r),n=vn(n,t.attrs,r),i=null);else{let s=t.directiveStylingLast;if(s===-1||e[s]!==o)if(n=ui(o,e,t,n,r),i===null){let u=uv(e,t,r);u!==void 0&&Array.isArray(u)&&(u=ui(null,e,t,u[1],r),u=vn(u,t.attrs,r),cv(e,t,r,u))}else i=lv(e,t,r)}return i!==void 0&&(r?t.residualClasses=i:t.residualStyles=i),n}function uv(e,t,n){let r=n?t.classBindings:t.styleBindings;if(zt(r)!==0)return e[wt(r)]}function cv(e,t,n,r){let o=n?t.classBindings:t.styleBindings;e[wt(o)]=r}function lv(e,t,n){let r,o=t.directiveEnd;for(let i=1+t.directiveStylingLast;i0;){let u=e[o],c=Array.isArray(u),l=c?u[1]:u,d=l===null,p=n[o+1];p===Ce&&(p=d?Y:void 0);let f=d?Zo(p,r):l===r?p:void 0;if(c&&!Hr(f)&&(f=Zo(u,r)),Hr(f)&&(a=f,s))return a;let h=e[o+1];o=s?wt(h):zt(h)}if(t!==null){let u=i?t.residualClasses:t.residualStyles;u!=null&&(a=Zo(u,r))}return a}function Hr(e){return e!==void 0}function hv(e,t){return e==null||e===""||(typeof t=="string"?e=e+t:typeof e=="object"&&(e=Q(Kt(e)))),e}function Gd(e,t){return(e.flags&(t?8:16))!==0}function $x(e,t,n){Jt("NgControlFlow");let r=C(),o=Yt(),i=gv(r,V+e),s=0;if(pe(r,o,t)){let a=x(null);try{if(wy(i,s),t!==-1){let u=mv(r[D],V+t),c=Wi(i,u.tView.ssrId),l=gd(r,u,n,{dehydratedView:c});md(i,l,s,Gi(u,c))}}finally{x(a)}}else{let a=vy(i,s);a!==void 0&&(a[fe]=n)}}function gv(e,t){return e[t]}function mv(e,t){return Rs(e,t)}function yv(e,t,n,r,o,i){let s=t.consts,a=_r(s,o),u=xn(t,e,2,r,a);return id(t,n,u,_r(s,i)),u.attrs!==null&&Xi(u,u.attrs,!1),u.mergedAttrs!==null&&Xi(u,u.mergedAttrs,!0),t.queries!==null&&t.queries.elementStart(t,u),u}function zd(e,t,n,r){let o=C(),i=$(),s=V+e,a=o[R],u=i.firstCreatePass?yv(s,i,o,t,n,r):i.data[s],c=qd(i,o,u,a,t,e);o[s]=c;let l=Fs(u);return bn(u,!0),Ql(a,c,u),!Sn(u)&&Hs()&&na(i,o,c,u),zh()===0&&yt(c,o),Wh(),l&&(td(i,o,u),ed(i,u,o)),r!==null&&nd(o,u),zd}function Wd(){let e=K();Qc()?Zc():(e=e.parent,bn(e,!1));let t=e;Yh(t)&&Zh(),qh();let n=$();return n.firstCreatePass&&(Us(n,e),kc(e)&&n.queries.elementEnd(e)),t.classesWithoutHost!=null&&lg(t)&&fs(n,t,C(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&dg(t)&&fs(n,t,C(),t.stylesWithoutHost,!1),Wd}function Dv(e,t,n,r){return zd(e,t,n,r),Wd(),Dv}var qd=(e,t,n,r,o,i)=>(Ae(!0),ro(r,o,rl()));function vv(e,t,n,r,o,i){let s=t[de],a=!s||qt()||Sn(n)||eo(s,i);if(Ae(a),a)return ro(r,o,rl());let u=ao(s,e,t,n);return Sl(s,i)&&Xr(s,i,u.nextSibling),s&&(yl(n)||Dl(u))&&Cn(n)&&(Qh(n),Wl(u)),u}function wv(){qd=vv}var Iv=(e,t,n,r)=>(Ae(!0),Xs(t[R],""));function Ev(e,t,n,r){let o,i=t[de],s=!i||qt()||Sn(n);if(Ae(s),s)return Xs(t[R],"");let a=ao(i,e,t,n),u=Kg(i,r);return Xr(i,r,a),o=uo(u,a),o}function Cv(){Iv=Ev}function Hx(){return C()}function bv(e,t,n){let r=C(),o=Yt();if(pe(r,o,t)){let i=$(),s=Zr();sa(i,s,r,e,t,r[R],n,!0)}return bv}function _v(e,t,n){let r=C(),o=Yt();if(pe(r,o,t)){let i=$(),s=Zr(),a=js(i.data),u=fd(a,s,r);sa(i,s,r,e,t,u,n,!0)}return _v}var at=void 0;function Mv(e){let t=e,n=Math.floor(Math.abs(e)),r=e.toString().replace(/^[^.]*\.?/,"").length;return n===1&&r===0?1:5}var xv=["en",[["a","p"],["AM","PM"],at],[["AM","PM"],at,at],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],at,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],at,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",at,"{1} 'at' {0}",at],[".",",",";","%","+","-","E","\xD7","\u2030","\u221E","NaN",":"],["#,##0.###","#,##0%","\xA4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",Mv],ci={};function he(e){let t=Sv(e),n=Zu(t);if(n)return n;let r=t.split("-")[0];if(n=Zu(r),n)return n;if(r==="en")return xv;throw new M(701,!1)}function Zu(e){return e in ci||(ci[e]=ce.ng&&ce.ng.common&&ce.ng.common.locales&&ce.ng.common.locales[e]),ci[e]}var B=function(e){return e[e.LocaleId=0]="LocaleId",e[e.DayPeriodsFormat=1]="DayPeriodsFormat",e[e.DayPeriodsStandalone=2]="DayPeriodsStandalone",e[e.DaysFormat=3]="DaysFormat",e[e.DaysStandalone=4]="DaysStandalone",e[e.MonthsFormat=5]="MonthsFormat",e[e.MonthsStandalone=6]="MonthsStandalone",e[e.Eras=7]="Eras",e[e.FirstDayOfWeek=8]="FirstDayOfWeek",e[e.WeekendRange=9]="WeekendRange",e[e.DateFormat=10]="DateFormat",e[e.TimeFormat=11]="TimeFormat",e[e.DateTimeFormat=12]="DateTimeFormat",e[e.NumberSymbols=13]="NumberSymbols",e[e.NumberFormats=14]="NumberFormats",e[e.CurrencyCode=15]="CurrencyCode",e[e.CurrencySymbol=16]="CurrencySymbol",e[e.CurrencyName=17]="CurrencyName",e[e.Currencies=18]="Currencies",e[e.Directionality=19]="Directionality",e[e.PluralCase=20]="PluralCase",e[e.ExtraData=21]="ExtraData",e}(B||{});function Sv(e){return e.toLowerCase().replace(/_/g,"-")}var Ur="en-US";var Tv=Ur;function Nv(e){typeof e=="string"&&(Tv=e.toLowerCase().replace(/_/g,"-"))}function Yd(e,t,n){let r=e[R];switch(n){case Node.COMMENT_NODE:return Xs(r,t);case Node.TEXT_NODE:return Js(r,t);case Node.ELEMENT_NODE:return ro(r,t,null)}}var Av=(e,t,n,r)=>(Ae(!0),Yd(e,n,r));function Ov(e,t,n,r){return Ae(!0),Yd(e,n,r)}function Fv(){Av=Ov}function Rv(e,t,n,r){let o=C(),i=$(),s=K();return Qd(i,o,o[R],s,e,t,r),Rv}function Pv(e,t){let n=K(),r=C(),o=$(),i=js(o.data),s=fd(i,n,r);return Qd(o,r,s,n,e,t),Pv}function kv(e,t,n,r){let o=e.cleanup;if(o!=null)for(let i=0;iu?a[u]:null}typeof s=="string"&&(i+=2)}return null}function Qd(e,t,n,r,o,i,s){let a=Fs(r),c=e.firstCreatePass&&dd(e),l=t[fe],d=ld(t),p=!0;if(r.type&3||s){let y=ie(r,t),k=s?s(y):y,N=d.length,ue=s?Oe=>s(Ee(Oe[r.index])):r.index,X=null;if(!s&&a&&(X=kv(e,t,o,r.index)),X!==null){let Oe=X.__ngLastListenerFn__||X;Oe.__ngNextListenerFn__=i,X.__ngLastListenerFn__=i,p=!1}else{i=Ju(r,t,l,i,!1);let Oe=n.listen(k,o,i);d.push(i,Oe),c&&c.push(o,ue,N,N+1)}}else i=Ju(r,t,l,i,!1);let f=r.outputs,h;if(p&&f!==null&&(h=f[o])){let y=h.length;if(y)for(let k=0;k-1?Je(e.index,t):t;ca(a);let u=Ku(t,n,r,s),c=i.__ngNextListenerFn__;for(;c;)u=Ku(t,n,c,s)&&u,c=c.__ngNextListenerFn__;return o&&u===!1&&s.preventDefault(),u}}function Ux(e=1){return ig(e)}function Lv(e,t){let n=null,r=ch(e);for(let o=0;o=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function Zx(e){let t=Jh();return Yr(t,V+e)}function Kx(e,t=""){let n=C(),r=$(),o=e+V,i=r.firstCreatePass?xn(r,o,1,t,null):r.data[o],s=Zd(r,n,i,t,e);n[o]=s,Hs()&&na(r,n,s,i),bn(i,!1)}var Zd=(e,t,n,r,o)=>(Ae(!0),Js(t[R],r));function Vv(e,t,n,r,o){let i=t[de],s=!i||qt()||Sn(n)||eo(i,o);return Ae(s),s?Js(t[R],r):ao(i,e,t,n)}function Bv(){Zd=Vv}function $v(e){return Kd("",e,""),$v}function Kd(e,t,n){let r=C(),o=zD(r,e,t,n);return o!==Ce&&hd(r,Xe(),o),Kd}function Hv(e,t,n,r,o){let i=C(),s=WD(i,e,t,n,r,o);return s!==Ce&&hd(i,Xe(),s),Hv}function Uv(e,t,n){let r=$();if(r.firstCreatePass){let o=Be(e);ps(n,r.data,r.blueprint,o,!0),ps(t,r.data,r.blueprint,o,!1)}}function ps(e,t,n,r,o){if(e=q(e),Array.isArray(e))for(let i=0;i>20;if($t(e)||!e.multi){let f=new gt(c,o,se),h=di(u,t,o?l:l+p,d);h===-1?(_i(Tr(a,s),i,u),li(i,e,t.length),t.push(u),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(f),s.push(f)):(n[h]=f,s[h]=f)}else{let f=di(u,t,l+p,d),h=di(u,t,l,l+p),y=f>=0&&n[f],k=h>=0&&n[h];if(o&&!k||!o&&!y){_i(Tr(a,s),i,u);let N=Wv(o?zv:Gv,n.length,o,r,c);!o&&k&&(n[h].providerFactory=N),li(i,e,t.length,0),t.push(u),a.directiveStart++,a.directiveEnd++,o&&(a.providerIndexes+=1048576),n.push(N),s.push(N)}else{let N=Jd(n[o?h:f],c,!o&&r);li(i,e,f>-1?f:h,N)}!o&&r&&k&&n[h].componentProviders++}}}function li(e,t,n,r){let o=$t(t),i=bh(t);if(o||i){let u=(i?q(t.useClass):t).prototype.ngOnDestroy;if(u){let c=e.destroyHooks||(e.destroyHooks=[]);if(!o&&t.multi){let l=c.indexOf(n);l===-1?c.push(n,[r,u]):c[l+1].push(r,u)}else c.push(n,u)}}}function Jd(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function di(e,t,n,r){for(let o=n;o{n.providersResolver=(r,o)=>Uv(r,o?o(e):e,t)}}var qv=(()=>{class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let r=Sc(!1,n.type),o=r.length>0?kD([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}static{this.\u0275prov=j({token:e,providedIn:"environment",factory:()=>new e(z(Qe))})}}return e})();function Xx(e){Jt("NgStandalone"),e.getStandaloneInjector=t=>t.get(qv).getOrCreateStandaloneInjector(e)}function eS(e,t,n,r){return Xd(C(),Qr(),e,t,n,r)}function Da(e,t){let n=e[t];return n===Ce?void 0:n}function Xd(e,t,n,r,o,i){let s=t+n;return pe(e,s,o)?ma(e,s+1,i?r.call(i,o):r(o)):Da(e,s+1)}function Yv(e,t,n,r,o,i,s){let a=t+n;return ya(e,a,o,i)?ma(e,a+2,s?r.call(s,o,i):r(o,i)):Da(e,a+2)}function Qv(e,t,n,r,o,i,s,a){let u=t+n;return VD(e,u,o,i,s)?ma(e,u+3,a?r.call(a,o,i,s):r(o,i,s)):Da(e,u+3)}function tS(e,t){let n=$(),r,o=e+V;n.firstCreatePass?(r=Zv(t,n.pipeRegistry),n.data[o]=r,r.onDestroy&&(n.destroyHooks??=[]).push(o,r.onDestroy)):r=n.data[o];let i=r.factory||(r.factory=dt(r.type,!0)),s,a=te(se);try{let u=Sr(!1),c=i();return Sr(u),jv(n,C(),o,c),c}finally{te(a)}}function Zv(e,t){if(t)for(let n=t.length-1;n>=0;n--){let r=t[n];if(e===r.name)return r}}function nS(e,t,n){let r=e+V,o=C(),i=Yr(o,r);return va(o,r)?Xd(o,Qr(),t,i.transform,n,i):i.transform(n)}function rS(e,t,n,r){let o=e+V,i=C(),s=Yr(i,o);return va(i,o)?Yv(i,Qr(),t,s.transform,n,r,s):s.transform(n,r)}function oS(e,t,n,r,o){let i=e+V,s=C(),a=Yr(s,i);return va(s,i)?Qv(s,Qr(),t,a.transform,n,r,o,a):a.transform(n,r,o)}function va(e,t){return e[D].data[t].pure}var iS=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=j({token:e,factory:e.\u0275fac,providedIn:"platform"})}}return e})();var Kv=new O("");function wa(e){return!!e&&typeof e.then=="function"}function ef(e){return!!e&&typeof e.subscribe=="function"}var Jv=new O(""),tf=(()=>{class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r}),this.appInits=E(Jv,{optional:!0})??[]}runInitializers(){if(this.initialized)return;let n=[];for(let o of this.appInits){let i=o();if(wa(i))n.push(i);else if(ef(i)){let s=new Promise((a,u)=>{i.subscribe({complete:a,error:u})});n.push(s)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),n.length===0&&r(),this.initialized=!0}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=j({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),nf=new O("");function Xv(){Ba(()=>{throw new M(600,!1)})}function ew(e){return e.isBoundToModule}function tw(e,t,n){try{let r=n();return wa(r)?r.catch(o=>{throw t.runOutsideAngular(()=>e.handleError(o)),o}):r}catch(r){throw t.runOutsideAngular(()=>e.handleError(r)),r}}var Ia=(()=>{class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=E(ml),this.afterRenderEffectManager=E(fa),this.externalTestViews=new Set,this.beforeRender=new _e,this.afterTick=new _e,this.componentTypes=[],this.components=[],this.isStable=E(ga).hasPendingTasks.pipe(Pe(n=>!n)),this._injector=E(Qe)}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(n,r){let o=n instanceof jr;if(!this._injector.get(tf).done){let p=!o&&Dh(n),f=!1;throw new M(405,f)}let s;o?s=n:s=this._injector.get(co).resolveComponentFactory(n),this.componentTypes.push(s.componentType);let a=ew(s)?void 0:this._injector.get(Ke),u=r||s.selector,c=s.create(It.NULL,[],u,a),l=c.location.nativeElement,d=c.injector.get(Kv,null);return d?.registerApplication(l),c.onDestroy(()=>{this.detachView(c.hostView),fi(this.components,c),d?.unregisterApplication(l)}),this._loadComponent(c),c}tick(){this._tick(!0)}_tick(n){if(this._runningTick)throw new M(101,!1);let r=x(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(n)}catch(o){this.internalErrorHandler(o)}finally{this.afterTick.next(),this._runningTick=!1,x(r)}}detectChangesInAttachedViews(n){let r=0,o=this.afterRenderEffectManager;for(;;){if(r===Dd)throw new M(103,!1);if(n){let i=r===0;this.beforeRender.next(i);for(let{_lView:s,notifyErrorHandler:a}of this._views)rw(s,i,a)}if(r++,o.executeInternalCallbacks(),![...this.externalTestViews.keys(),...this._views].some(({_lView:i})=>gs(i))&&(o.execute(),![...this.externalTestViews.keys(),...this._views].some(({_lView:i})=>gs(i))))break}}attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}detachView(n){let r=n;fi(this._views,r),r.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);let r=this._injector.get(nf,[]);[...this._bootstrapListeners,...r].forEach(o=>o(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>fi(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new M(406,!1);let n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=j({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function fi(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}var fr;function nw(e){fr??=new WeakMap;let t=fr.get(e);if(t)return t;let n=e.isStable.pipe(qo(r=>r)).toPromise().then(()=>{});return fr.set(e,n),e.onDestroy(()=>fr?.delete(e)),n}function rw(e,t,n){!t&&!gs(e)||ow(e,n,t)}function gs(e){return ks(e)}function ow(e,t,n){let r;n?(r=0,e[m]|=1024):e[m]&64?r=0:r=1,vd(e,t,r)}var ms=class{constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}},sS=(()=>{class e{compileModuleSync(n){return new cs(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){let r=this.compileModuleSync(n),o=bc(n),i=Vl(o.declarations).reduce((s,a)=>{let u=Ye(a);return u&&s.push(new Gt(u)),s},[]);return new ms(r,i)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=j({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var iw=(()=>{class e{constructor(){this.zone=E(le),this.applicationRef=E(Ia)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=j({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function sw(e){return[{provide:le,useFactory:e},{provide:ln,multi:!0,useFactory:()=>{let t=E(iw,{optional:!0});return()=>t.initialize()}},{provide:ln,multi:!0,useFactory:()=>{let t=E(lw);return()=>{t.initialize()}}},{provide:ml,useFactory:aw}]}function aw(){let e=E(le),t=E(Ze);return n=>e.runOutsideAngular(()=>t.handleError(n))}function uw(e){let t=sw(()=>new le(cw(e)));return xc([[],t])}function cw(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}var lw=(()=>{class e{constructor(){this.subscription=new U,this.initialized=!1,this.zone=E(le),this.pendingTasks=E(ga)}initialize(){if(this.initialized)return;this.initialized=!0;let n=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(n=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{le.assertNotInAngularZone(),queueMicrotask(()=>{n!==null&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(n),n=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{le.assertInAngularZone(),n??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=j({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function dw(){return typeof $localize<"u"&&$localize.locale||Ur}var lo=new O("",{providedIn:"root",factory:()=>E(lo,_.Optional|_.SkipSelf)||dw()});var rf=new O("");var vr=null;function fw(e=[],t){return It.create({name:t,providers:[{provide:Ac,useValue:"platform"},{provide:rf,useValue:new Set([()=>vr=null])},...e]})}function pw(e=[]){if(vr)return vr;let t=fw(e);return vr=t,Xv(),hw(t),t}function hw(e){e.get(kg,null)?.forEach(n=>n())}var Ea=(()=>{class e{static{this.__NG_ELEMENT_ID__=gw}}return e})();function gw(e){return mw(K(),C(),(e&16)===16)}function mw(e,t,n){if(Cn(e)&&!n){let r=Je(e.index,t);return new Dt(r,r)}else if(e.type&47){let r=t[re];return new Dt(r,t)}return null}var ys=class{constructor(){}supports(t){return Rd(t)}create(t){return new Ds(t)}},yw=(e,t)=>t,Ds=class{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||yw}forEachItem(t){let n;for(n=this._itHead;n!==null;n=n._next)t(n)}forEachOperation(t){let n=this._itHead,r=this._removalsHead,o=0,i=null;for(;n||r;){let s=!r||n&&n.currentIndex{s=this._trackByFn(o,a),n===null||!Object.is(n.trackById,s)?(n=this._mismatch(n,a,s,o),r=!0):(r&&(n=this._verifyReinsertion(n,a,s,o)),Object.is(n.item,a)||this._addIdentityChange(n,a)),n=n._next,o++}),this.length=o;return this._truncate(n),this.collection=t,this.isDirty}get isDirty(){return this._additionsHead!==null||this._movesHead!==null||this._removalsHead!==null||this._identityChangesHead!==null}_reset(){if(this.isDirty){let t;for(t=this._previousItHead=this._itHead;t!==null;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;t!==null;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;t!==null;t=t._nextMoved)t.previousIndex=t.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,n,r,o){let i;return t===null?i=this._itTail:(i=t._prev,this._remove(t)),t=this._unlinkedRecords===null?null:this._unlinkedRecords.get(r,null),t!==null?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._reinsertAfter(t,i,o)):(t=this._linkedRecords===null?null:this._linkedRecords.get(r,o),t!==null?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._moveAfter(t,i,o)):t=this._addAfter(new vs(n,r),i,o)),t}_verifyReinsertion(t,n,r,o){let i=this._unlinkedRecords===null?null:this._unlinkedRecords.get(r,null);return i!==null?t=this._reinsertAfter(i,t._prev,o):t.currentIndex!=o&&(t.currentIndex=o,this._addToMoves(t,o)),t}_truncate(t){for(;t!==null;){let n=t._next;this._addToRemovals(this._unlink(t)),t=n}this._unlinkedRecords!==null&&this._unlinkedRecords.clear(),this._additionsTail!==null&&(this._additionsTail._nextAdded=null),this._movesTail!==null&&(this._movesTail._nextMoved=null),this._itTail!==null&&(this._itTail._next=null),this._removalsTail!==null&&(this._removalsTail._nextRemoved=null),this._identityChangesTail!==null&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,n,r){this._unlinkedRecords!==null&&this._unlinkedRecords.remove(t);let o=t._prevRemoved,i=t._nextRemoved;return o===null?this._removalsHead=i:o._nextRemoved=i,i===null?this._removalsTail=o:i._prevRemoved=o,this._insertAfter(t,n,r),this._addToMoves(t,r),t}_moveAfter(t,n,r){return this._unlink(t),this._insertAfter(t,n,r),this._addToMoves(t,r),t}_addAfter(t,n,r){return this._insertAfter(t,n,r),this._additionsTail===null?this._additionsTail=this._additionsHead=t:this._additionsTail=this._additionsTail._nextAdded=t,t}_insertAfter(t,n,r){let o=n===null?this._itHead:n._next;return t._next=o,t._prev=n,o===null?this._itTail=t:o._prev=t,n===null?this._itHead=t:n._next=t,this._linkedRecords===null&&(this._linkedRecords=new Gr),this._linkedRecords.put(t),t.currentIndex=r,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){this._linkedRecords!==null&&this._linkedRecords.remove(t);let n=t._prev,r=t._next;return n===null?this._itHead=r:n._next=r,r===null?this._itTail=n:r._prev=n,t}_addToMoves(t,n){return t.previousIndex===n||(this._movesTail===null?this._movesTail=this._movesHead=t:this._movesTail=this._movesTail._nextMoved=t),t}_addToRemovals(t){return this._unlinkedRecords===null&&(this._unlinkedRecords=new Gr),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,this._removalsTail===null?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,n){return t.item=n,this._identityChangesTail===null?this._identityChangesTail=this._identityChangesHead=t:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=t,t}},vs=class{constructor(t,n){this.item=t,this.trackById=n,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}},ws=class{constructor(){this._head=null,this._tail=null}add(t){this._head===null?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,n){let r;for(r=this._head;r!==null;r=r._nextDup)if((n===null||n<=r.currentIndex)&&Object.is(r.trackById,t))return r;return null}remove(t){let n=t._prevDup,r=t._nextDup;return n===null?this._head=r:n._nextDup=r,r===null?this._tail=n:r._prevDup=n,this._head===null}},Gr=class{constructor(){this.map=new Map}put(t){let n=t.trackById,r=this.map.get(n);r||(r=new ws,this.map.set(n,r)),r.add(t)}get(t,n){let r=t,o=this.map.get(r);return o?o.get(t,n):null}remove(t){let n=t.trackById;return this.map.get(n).remove(t)&&this.map.delete(n),t}get isEmpty(){return this.map.size===0}clear(){this.map.clear()}};function Xu(e,t,n){let r=e.previousIndex;if(r===null)return r;let o=0;return n&&r{class e{static{this.\u0275prov=j({token:e,providedIn:"root",factory:ec})}constructor(n){this.factories=n}static create(n,r){if(r!=null){let o=r.factories.slice();n=n.concat(o)}return new e(n)}static extend(n){return{provide:e,useFactory:r=>e.create(n,r||ec()),deps:[[e,new Kp,new Zp]]}}find(n){let r=this.factories.find(o=>o.supports(n));if(r!=null)return r;throw new M(901,!1)}}return e})();function aS(e){try{let{rootComponent:t,appProviders:n,platformProviders:r}=e,o=pw(r),i=[uw(),...n||[]],a=new $r({providers:i,parent:o,debugName:"",runEnvironmentInitializers:!1}).injector,u=a.get(le);return u.run(()=>{a.resolveInjectorInitializers();let c=a.get(Ze,null),l;u.runOutsideAngular(()=>{l=u.onError.subscribe({next:f=>{c.handleError(f)}})});let d=()=>a.destroy(),p=o.get(rf);return p.add(d),a.onDestroy(()=>{l.unsubscribe(),p.delete(d)}),tw(c,u,()=>{let f=a.get(tf);return f.runInitializers(),f.donePromise.then(()=>{let h=a.get(lo,Ur);Nv(h||Ur);let y=a.get(Ia);return t!==void 0&&y.bootstrap(t),y})})})}catch(t){return Promise.reject(t)}}var tc=!1,Dw=!1;function vw(){tc||(tc=!0,qg(),wv(),Bv(),Cv(),UD(),yD(),zy(),Zm(),Fv())}function ww(e,t){return nw(e)}function uS(){return xc([{provide:sr,useFactory:()=>{let e=!0;return an()&&(e=!!E(zs,{optional:!0})?.get(Ml,null)),e&&Jt("NgHydration"),e}},{provide:ln,useValue:()=>{Dw=!!E(Jg,{optional:!0}),an()&&E(sr)&&(Iw(),vw())},multi:!0},{provide:Nl,useFactory:()=>an()&&E(sr)},{provide:nf,useFactory:()=>{if(an()&&E(sr)){let e=E(Ia),t=E(It);return()=>{ww(e,t).then(()=>{ky(e)})}}return()=>{}},multi:!0}])}function Iw(){let e=_n(),t;for(let n of e.body.childNodes)if(n.nodeType===Node.COMMENT_NODE&&n.textContent?.trim()===zg){t=n;break}if(!t)throw new M(-507,!1)}function Ew(e){return typeof e=="boolean"?e:e!=null&&e!=="false"}function Cw(e,t=NaN){return!isNaN(parseFloat(e))&&!isNaN(Number(e))?Number(e):t}var bw=new O("",{providedIn:"root",factory:()=>E(_w)}),_w=(()=>{class e{static{this.\u0275prov=j({token:e,providedIn:"root",factory:()=>new Is})}}return e})(),Is=class{constructor(){this.queuedEffectCount=0,this.queues=new Map,this.pendingTasks=E(ga),this.taskId=null}scheduleEffect(t){if(this.enqueue(t),this.taskId===null){let n=this.taskId=this.pendingTasks.add();queueMicrotask(()=>{this.flush(),this.pendingTasks.remove(n),this.taskId=null})}}enqueue(t){let n=t.creationZone;this.queues.has(n)||this.queues.set(n,new Set);let r=this.queues.get(n);r.has(t)||(this.queuedEffectCount++,r.add(t))}flush(){for(;this.queuedEffectCount>0;)for(let[t,n]of this.queues)t===null?this.flushQueue(n):t.run(()=>this.flushQueue(n))}flushQueue(t){for(let n of t)t.delete(n),this.queuedEffectCount--,n.run()}},Es=class{constructor(t,n,r,o,i,s){this.scheduler=t,this.effectFn=n,this.creationZone=r,this.injector=i,this.watcher=$a(a=>this.runEffect(a),()=>this.schedule(),s),this.unregisterOnDestroy=o?.onDestroy(()=>this.destroy())}runEffect(t){try{this.effectFn(t)}catch(n){this.injector.get(Ze,null,{optional:!0})?.handleError(n)}}run(){this.watcher.run()}schedule(){this.scheduler.scheduleEffect(this)}destroy(){this.watcher.destroy(),this.unregisterOnDestroy?.()}};function Mw(e,t){Jt("NgSignals"),!t?.injector&&Rc(Mw);let n=t?.injector??E(It),r=t?.manualCleanup!==!0?n.get(Kr):null,o=new Es(n.get(bw),e,typeof Zone>"u"?null:Zone.current,r,n,t?.allowSignalWrites??!1),i=n.get(Ea,null,{optional:!0});return!i||!(i._lView[m]&8)?o.watcher.notify():(i._lView[hr]??=[]).push(o.watcher.notify),o}function cS(e){let t=Ye(e);if(!t)return null;let n=new Gt(t);return{get selector(){return n.selector},get type(){return n.componentType},get inputs(){return n.inputs},get outputs(){return n.outputs},get ngContentSelectors(){return n.ngContentSelectors},get isStandalone(){return t.standalone},get isSignal(){return t.signals}}}var ff=null;function ba(){return ff}function AS(e){ff??=e}var of=class{};var Oa=new O(""),Fa=(()=>{class e{historyGo(n){throw new Error("")}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=j({token:e,factory:()=>E(Sw),providedIn:"platform"})}}return e})(),OS=new O(""),Sw=(()=>{class e extends Fa{constructor(){super(),this._doc=E(Oa),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return ba().getBaseHref(this._doc)}onPopState(n){let r=ba().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",n,!1),()=>r.removeEventListener("popstate",n)}onHashChange(n){let r=ba().getGlobalEventTarget(this._doc,"window");return r.addEventListener("hashchange",n,!1),()=>r.removeEventListener("hashchange",n)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(n){this._location.pathname=n}pushState(n,r,o){this._history.pushState(n,r,o)}replaceState(n,r,o){this._history.replaceState(n,r,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(n=0){this._history.go(n)}getState(){return this._history.state}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=j({token:e,factory:()=>new e,providedIn:"platform"})}}return e})();function Ra(e,t){if(e.length==0)return t;if(t.length==0)return e;let n=0;return e.endsWith("/")&&n++,t.startsWith("/")&&n++,n==2?e+t.substring(1):n==1?e+t:e+"/"+t}function sf(e){let t=e.match(/#|\?|$/),n=t&&t.index||e.length,r=n-(e[n-1]==="/"?1:0);return e.slice(0,r)+e.slice(n)}function Ge(e){return e&&e[0]!=="?"?"?"+e:e}var Io=(()=>{class e{historyGo(n){throw new Error("")}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275prov=j({token:e,factory:()=>E(Tw),providedIn:"root"})}}return e})(),pf=new O(""),Tw=(()=>{class e extends Io{constructor(n,r){super(),this._platformLocation=n,this._removeListenerFns=[],this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??E(Oa).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}prepareExternalUrl(n){return Ra(this._baseHref,n)}path(n=!1){let r=this._platformLocation.pathname+Ge(this._platformLocation.search),o=this._platformLocation.hash;return o&&n?`${r}${o}`:r}pushState(n,r,o,i){let s=this.prepareExternalUrl(o+Ge(i));this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+Ge(i));this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static{this.\u0275fac=function(r){return new(r||e)(z(Fa),z(pf,8))}}static{this.\u0275prov=j({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),FS=(()=>{class e extends Io{constructor(n,r){super(),this._platformLocation=n,this._baseHref="",this._removeListenerFns=[],r!=null&&(this._baseHref=r)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(n){this._removeListenerFns.push(this._platformLocation.onPopState(n),this._platformLocation.onHashChange(n))}getBaseHref(){return this._baseHref}path(n=!1){let r=this._platformLocation.hash??"#";return r.length>0?r.substring(1):r}prepareExternalUrl(n){let r=Ra(this._baseHref,n);return r.length>0?"#"+r:r}pushState(n,r,o,i){let s=this.prepareExternalUrl(o+Ge(i));s.length==0&&(s=this._platformLocation.pathname),this._platformLocation.pushState(n,r,s)}replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+Ge(i));s.length==0&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(n,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(n=0){this._platformLocation.historyGo?.(n)}static{this.\u0275fac=function(r){return new(r||e)(z(Fa),z(pf,8))}}static{this.\u0275prov=j({token:e,factory:e.\u0275fac})}}return e})(),Nw=(()=>{class e{constructor(n){this._subject=new ut,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=n;let r=this._locationStrategy.getBaseHref();this._basePath=Fw(sf(af(r))),this._locationStrategy.onPopState(o=>{this._subject.emit({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(n=!1){return this.normalize(this._locationStrategy.path(n))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+Ge(r))}normalize(n){return e.stripTrailingSlash(Ow(this._basePath,af(n)))}prepareExternalUrl(n){return n&&n[0]!=="/"&&(n="/"+n),this._locationStrategy.prepareExternalUrl(n)}go(n,r="",o=null){this._locationStrategy.pushState(o,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+Ge(r)),o)}replaceState(n,r="",o=null){this._locationStrategy.replaceState(o,"",n,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(n+Ge(r)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(n=0){this._locationStrategy.historyGo?.(n)}onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChangeSubscription??=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)}),()=>{let r=this._urlChangeListeners.indexOf(n);this._urlChangeListeners.splice(r,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(o=>o(n,r))}subscribe(n,r,o){return this._subject.subscribe({next:n,error:r,complete:o})}static{this.normalizeQueryParams=Ge}static{this.joinWithSlash=Ra}static{this.stripTrailingSlash=sf}static{this.\u0275fac=function(r){return new(r||e)(z(Io))}}static{this.\u0275prov=j({token:e,factory:()=>Aw(),providedIn:"root"})}}return e})();function Aw(){return new Nw(z(Io))}function Ow(e,t){if(!e||!t.startsWith(e))return t;let n=t.substring(e.length);return n===""||["/",";","?","#"].includes(n[0])?n:t}function af(e){return e.replace(/\/index.html$/,"")}function Fw(e){if(new RegExp("^(https?:)?//").test(e)){let[,n]=e.split(/\/\/[^\/]+/);return n}return e}var J=function(e){return e[e.Format=0]="Format",e[e.Standalone=1]="Standalone",e}(J||{}),P=function(e){return e[e.Narrow=0]="Narrow",e[e.Abbreviated=1]="Abbreviated",e[e.Wide=2]="Wide",e[e.Short=3]="Short",e}(P||{}),ae=function(e){return e[e.Short=0]="Short",e[e.Medium=1]="Medium",e[e.Long=2]="Long",e[e.Full=3]="Full",e}(ae||{}),et={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function Rw(e){return he(e)[B.LocaleId]}function Pw(e,t,n){let r=he(e),o=[r[B.DayPeriodsFormat],r[B.DayPeriodsStandalone]],i=ge(o,t);return ge(i,n)}function kw(e,t,n){let r=he(e),o=[r[B.DaysFormat],r[B.DaysStandalone]],i=ge(o,t);return ge(i,n)}function Lw(e,t,n){let r=he(e),o=[r[B.MonthsFormat],r[B.MonthsStandalone]],i=ge(o,t);return ge(i,n)}function jw(e,t){let r=he(e)[B.Eras];return ge(r,t)}function fo(e,t){let n=he(e);return ge(n[B.DateFormat],t)}function po(e,t){let n=he(e);return ge(n[B.TimeFormat],t)}function ho(e,t){let r=he(e)[B.DateTimeFormat];return ge(r,t)}function Eo(e,t){let n=he(e),r=n[B.NumberSymbols][t];if(typeof r>"u"){if(t===et.CurrencyDecimal)return n[B.NumberSymbols][et.Decimal];if(t===et.CurrencyGroup)return n[B.NumberSymbols][et.Group]}return r}function hf(e){if(!e[B.ExtraData])throw new Error(`Missing extra locale data for the locale "${e[B.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function Vw(e){let t=he(e);return hf(t),(t[B.ExtraData][2]||[]).map(r=>typeof r=="string"?_a(r):[_a(r[0]),_a(r[1])])}function Bw(e,t,n){let r=he(e);hf(r);let o=[r[B.ExtraData][0],r[B.ExtraData][1]],i=ge(o,t)||[];return ge(i,n)||[]}function ge(e,t){for(let n=t;n>-1;n--)if(typeof e[n]<"u")return e[n];throw new Error("Locale data API: locale data undefined")}function _a(e){let[t,n]=e.split(":");return{hours:+t,minutes:+n}}var $w=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,go={},Hw=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,ze=function(e){return e[e.Short=0]="Short",e[e.ShortGMT=1]="ShortGMT",e[e.Long=2]="Long",e[e.Extended=3]="Extended",e}(ze||{}),T=function(e){return e[e.FullYear=0]="FullYear",e[e.Month=1]="Month",e[e.Date=2]="Date",e[e.Hours=3]="Hours",e[e.Minutes=4]="Minutes",e[e.Seconds=5]="Seconds",e[e.FractionalSeconds=6]="FractionalSeconds",e[e.Day=7]="Day",e}(T||{}),S=function(e){return e[e.DayPeriods=0]="DayPeriods",e[e.Days=1]="Days",e[e.Months=2]="Months",e[e.Eras=3]="Eras",e}(S||{});function Uw(e,t,n,r){let o=Jw(e);t=Ue(n,t)||t;let s=[],a;for(;t;)if(a=Hw.exec(t),a){s=s.concat(a.slice(1));let l=s.pop();if(!l)break;t=l}else{s.push(t);break}let u=o.getTimezoneOffset();r&&(u=mf(r,u),o=Kw(o,r,!0));let c="";return s.forEach(l=>{let d=Qw(l);c+=d?d(o,n,u):l==="''"?"'":l.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}function wo(e,t,n){let r=new Date(0);return r.setFullYear(e,t,n),r.setHours(0,0,0),r}function Ue(e,t){let n=Rw(e);if(go[n]??={},go[n][t])return go[n][t];let r="";switch(t){case"shortDate":r=fo(e,ae.Short);break;case"mediumDate":r=fo(e,ae.Medium);break;case"longDate":r=fo(e,ae.Long);break;case"fullDate":r=fo(e,ae.Full);break;case"shortTime":r=po(e,ae.Short);break;case"mediumTime":r=po(e,ae.Medium);break;case"longTime":r=po(e,ae.Long);break;case"fullTime":r=po(e,ae.Full);break;case"short":let o=Ue(e,"shortTime"),i=Ue(e,"shortDate");r=mo(ho(e,ae.Short),[o,i]);break;case"medium":let s=Ue(e,"mediumTime"),a=Ue(e,"mediumDate");r=mo(ho(e,ae.Medium),[s,a]);break;case"long":let u=Ue(e,"longTime"),c=Ue(e,"longDate");r=mo(ho(e,ae.Long),[u,c]);break;case"full":let l=Ue(e,"fullTime"),d=Ue(e,"fullDate");r=mo(ho(e,ae.Full),[l,d]);break}return r&&(go[n][t]=r),r}function mo(e,t){return t&&(e=e.replace(/\{([^}]+)}/g,function(n,r){return t!=null&&r in t?t[r]:n})),e}function be(e,t,n="-",r,o){let i="";(e<0||o&&e<=0)&&(o?e=-e+1:(e=-e,i=n));let s=String(e);for(;s.length0||a>-n)&&(a+=n),e===T.Hours)a===0&&n===-12&&(a=12);else if(e===T.FractionalSeconds)return Gw(a,t);let u=Eo(s,et.MinusSign);return be(a,t,u,r,o)}}function zw(e,t){switch(e){case T.FullYear:return t.getFullYear();case T.Month:return t.getMonth();case T.Date:return t.getDate();case T.Hours:return t.getHours();case T.Minutes:return t.getMinutes();case T.Seconds:return t.getSeconds();case T.FractionalSeconds:return t.getMilliseconds();case T.Day:return t.getDay();default:throw new Error(`Unknown DateType value "${e}".`)}}function L(e,t,n=J.Format,r=!1){return function(o,i){return Ww(o,i,e,t,n,r)}}function Ww(e,t,n,r,o,i){switch(n){case S.Months:return Lw(t,o,r)[e.getMonth()];case S.Days:return kw(t,o,r)[e.getDay()];case S.DayPeriods:let s=e.getHours(),a=e.getMinutes();if(i){let c=Vw(t),l=Bw(t,o,r),d=c.findIndex(p=>{if(Array.isArray(p)){let[f,h]=p,y=s>=f.hours&&a>=f.minutes,k=s0?Math.floor(o/60):Math.ceil(o/60);switch(e){case ze.Short:return(o>=0?"+":"")+be(s,2,i)+be(Math.abs(o%60),2,i);case ze.ShortGMT:return"GMT"+(o>=0?"+":"")+be(s,1,i);case ze.Long:return"GMT"+(o>=0?"+":"")+be(s,2,i)+":"+be(Math.abs(o%60),2,i);case ze.Extended:return r===0?"Z":(o>=0?"+":"")+be(s,2,i)+":"+be(Math.abs(o%60),2,i);default:throw new Error(`Unknown zone width "${e}"`)}}}var qw=0,vo=4;function Yw(e){let t=wo(e,qw,1).getDay();return wo(e,0,1+(t<=vo?vo:vo+7)-t)}function gf(e){let t=e.getDay(),n=t===0?-3:vo-t;return wo(e.getFullYear(),e.getMonth(),e.getDate()+n)}function Ma(e,t=!1){return function(n,r){let o;if(t){let i=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,s=n.getDate();o=1+Math.floor((s+i)/7)}else{let i=gf(n),s=Yw(i.getFullYear()),a=i.getTime()-s.getTime();o=1+Math.round(a/6048e5)}return be(o,e,Eo(r,et.MinusSign))}}function Do(e,t=!1){return function(n,r){let i=gf(n).getFullYear();return be(i,e,Eo(r,et.MinusSign),t)}}var xa={};function Qw(e){if(xa[e])return xa[e];let t;switch(e){case"G":case"GG":case"GGG":t=L(S.Eras,P.Abbreviated);break;case"GGGG":t=L(S.Eras,P.Wide);break;case"GGGGG":t=L(S.Eras,P.Narrow);break;case"y":t=H(T.FullYear,1,0,!1,!0);break;case"yy":t=H(T.FullYear,2,0,!0,!0);break;case"yyy":t=H(T.FullYear,3,0,!1,!0);break;case"yyyy":t=H(T.FullYear,4,0,!1,!0);break;case"Y":t=Do(1);break;case"YY":t=Do(2,!0);break;case"YYY":t=Do(3);break;case"YYYY":t=Do(4);break;case"M":case"L":t=H(T.Month,1,1);break;case"MM":case"LL":t=H(T.Month,2,1);break;case"MMM":t=L(S.Months,P.Abbreviated);break;case"MMMM":t=L(S.Months,P.Wide);break;case"MMMMM":t=L(S.Months,P.Narrow);break;case"LLL":t=L(S.Months,P.Abbreviated,J.Standalone);break;case"LLLL":t=L(S.Months,P.Wide,J.Standalone);break;case"LLLLL":t=L(S.Months,P.Narrow,J.Standalone);break;case"w":t=Ma(1);break;case"ww":t=Ma(2);break;case"W":t=Ma(1,!0);break;case"d":t=H(T.Date,1);break;case"dd":t=H(T.Date,2);break;case"c":case"cc":t=H(T.Day,1);break;case"ccc":t=L(S.Days,P.Abbreviated,J.Standalone);break;case"cccc":t=L(S.Days,P.Wide,J.Standalone);break;case"ccccc":t=L(S.Days,P.Narrow,J.Standalone);break;case"cccccc":t=L(S.Days,P.Short,J.Standalone);break;case"E":case"EE":case"EEE":t=L(S.Days,P.Abbreviated);break;case"EEEE":t=L(S.Days,P.Wide);break;case"EEEEE":t=L(S.Days,P.Narrow);break;case"EEEEEE":t=L(S.Days,P.Short);break;case"a":case"aa":case"aaa":t=L(S.DayPeriods,P.Abbreviated);break;case"aaaa":t=L(S.DayPeriods,P.Wide);break;case"aaaaa":t=L(S.DayPeriods,P.Narrow);break;case"b":case"bb":case"bbb":t=L(S.DayPeriods,P.Abbreviated,J.Standalone,!0);break;case"bbbb":t=L(S.DayPeriods,P.Wide,J.Standalone,!0);break;case"bbbbb":t=L(S.DayPeriods,P.Narrow,J.Standalone,!0);break;case"B":case"BB":case"BBB":t=L(S.DayPeriods,P.Abbreviated,J.Format,!0);break;case"BBBB":t=L(S.DayPeriods,P.Wide,J.Format,!0);break;case"BBBBB":t=L(S.DayPeriods,P.Narrow,J.Format,!0);break;case"h":t=H(T.Hours,1,-12);break;case"hh":t=H(T.Hours,2,-12);break;case"H":t=H(T.Hours,1);break;case"HH":t=H(T.Hours,2);break;case"m":t=H(T.Minutes,1);break;case"mm":t=H(T.Minutes,2);break;case"s":t=H(T.Seconds,1);break;case"ss":t=H(T.Seconds,2);break;case"S":t=H(T.FractionalSeconds,1);break;case"SS":t=H(T.FractionalSeconds,2);break;case"SSS":t=H(T.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":t=yo(ze.Short);break;case"ZZZZZ":t=yo(ze.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":t=yo(ze.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":t=yo(ze.Long);break;default:return null}return xa[e]=t,t}function mf(e,t){e=e.replace(/:/g,"");let n=Date.parse("Jan 01, 1970 00:00:00 "+e)/6e4;return isNaN(n)?t:n}function Zw(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function Kw(e,t,n){let r=n?-1:1,o=e.getTimezoneOffset(),i=mf(t,o);return Zw(e,r*(i-o))}function Jw(e){if(uf(e))return e;if(typeof e=="number"&&!isNaN(e))return new Date(e);if(typeof e=="string"){if(e=e.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(e)){let[o,i=1,s=1]=e.split("-").map(a=>+a);return wo(o,i-1,s)}let n=parseFloat(e);if(!isNaN(e-n))return new Date(n);let r;if(r=e.match($w))return Xw(r)}let t=new Date(e);if(!uf(t))throw new Error(`Unable to convert "${e}" into a date`);return t}function Xw(e){let t=new Date(0),n=0,r=0,o=e[8]?t.setUTCFullYear:t.setFullYear,i=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=Number(e[9]+e[10]),r=Number(e[9]+e[11])),o.call(t,Number(e[1]),Number(e[2])-1,Number(e[3]));let s=Number(e[4]||0)-n,a=Number(e[5]||0)-r,u=Number(e[6]||0),c=Math.floor(parseFloat("0."+(e[7]||0))*1e3);return i.call(t,s,a,u,c),t}function uf(e){return e instanceof Date&&!isNaN(e.valueOf())}function RS(e,t){t=encodeURIComponent(t);for(let n of e.split(";")){let r=n.indexOf("="),[o,i]=r==-1?[n,""]:[n.slice(0,r),n.slice(r+1)];if(o.trim()===t)return decodeURIComponent(i)}return null}var Sa=class{constructor(t,n,r,o){this.$implicit=t,this.ngForOf=n,this.index=r,this.count=o}get first(){return this.index===0}get last(){return this.index===this.count-1}get even(){return this.index%2===0}get odd(){return!this.even}},PS=(()=>{class e{set ngForOf(n){this._ngForOf=n,this._ngForOfDirty=!0}set ngForTrackBy(n){this._trackByFn=n}get ngForTrackBy(){return this._trackByFn}constructor(n,r,o){this._viewContainer=n,this._template=r,this._differs=o,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(n){n&&(this._template=n)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;let n=this._ngForOf;if(!this._differ&&n)if(0)try{}catch{}else this._differ=this._differs.find(n).create(this.ngForTrackBy)}if(this._differ){let n=this._differ.diff(this._ngForOf);n&&this._applyChanges(n)}}_applyChanges(n){let r=this._viewContainer;n.forEachOperation((o,i,s)=>{if(o.previousIndex==null)r.createEmbeddedView(this._template,new Sa(o.item,this._ngForOf,-1,-1),s===null?void 0:s);else if(s==null)r.remove(i===null?void 0:i);else if(i!==null){let a=r.get(i);r.move(a,s),cf(a,o)}});for(let o=0,i=r.length;o{let i=r.get(o.currentIndex);cf(i,o)})}static ngTemplateContextGuard(n,r){return!0}static{this.\u0275fac=function(r){return new(r||e)(se(Xt),se(vt),se(Ca))}}static{this.\u0275dir=xs({type:e,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0})}}return e})();function cf(e,t){e.context.$implicit=t.item}var kS=(()=>{class e{constructor(n,r){this._viewContainer=n,this._context=new Ta,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=r}set ngIf(n){this._context.$implicit=this._context.ngIf=n,this._updateView()}set ngIfThen(n){lf("ngIfThen",n),this._thenTemplateRef=n,this._thenViewRef=null,this._updateView()}set ngIfElse(n){lf("ngIfElse",n),this._elseTemplateRef=n,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(n,r){return!0}static{this.\u0275fac=function(r){return new(r||e)(se(Xt),se(vt))}}static{this.\u0275dir=xs({type:e,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0})}}return e})(),Ta=class{constructor(){this.$implicit=null,this.ngIf=null}};function lf(e,t){if(!!!(!t||t.createEmbeddedView))throw new Error(`${e} must be a TemplateRef, but received '${Q(t)}'.`)}function yf(e,t){return new M(2100,!1)}var eI="mediumDate",tI=new O(""),nI=new O(""),LS=(()=>{class e{constructor(n,r,o){this.locale=n,this.defaultTimezone=r,this.defaultOptions=o}transform(n,r,o,i){if(n==null||n===""||n!==n)return null;try{let s=r??this.defaultOptions?.dateFormat??eI,a=o??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return Uw(n,s,i||this.locale,a)}catch(s){throw yf(e,s.message)}}static{this.\u0275fac=function(r){return new(r||e)(se(lo,16),se(tI,24),se(nI,24))}}static{this.\u0275pipe=Ss({name:"date",type:e,pure:!0,standalone:!0})}}return e})();var jS=(()=>{class e{transform(n,r,o){if(n==null)return null;if(!this.supports(n))throw yf(e,n);return n.slice(r,o)}supports(n){return typeof n=="string"||Array.isArray(n)}static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275pipe=Ss({name:"slice",type:e,pure:!1,standalone:!0})}}return e})();var VS=(()=>{class e{static{this.\u0275fac=function(r){return new(r||e)}}static{this.\u0275mod=Ic({type:e})}static{this.\u0275inj=ac({})}}return e})(),rI="browser",oI="server";function iI(e){return e===rI}function BS(e){return e===oI}var $S=(()=>{class e{static{this.\u0275prov=j({token:e,providedIn:"root",factory:()=>iI(E(Jr))?new Na(E(Oa),window):new Aa})}}return e})(),Na=class{constructor(t,n){this.document=t,this.window=n,this.offset=()=>[0,0]}setOffset(t){Array.isArray(t)?this.offset=()=>t:this.offset=t}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(t){this.window.scrollTo(t[0],t[1])}scrollToAnchor(t){let n=sI(this.document,t);n&&(this.scrollToElement(n),n.focus())}setHistoryScrollRestoration(t){this.window.history.scrollRestoration=t}scrollToElement(t){let n=t.getBoundingClientRect(),r=n.left+this.window.pageXOffset,o=n.top+this.window.pageYOffset,i=this.offset();this.window.scrollTo(r-i[0],o-i[1])}};function sI(e,t){let n=e.getElementById(t)||e.getElementsByName(t)[0];if(n)return n;if(typeof e.createTreeWalker=="function"&&e.body&&typeof e.body.attachShadow=="function"){let r=e.createTreeWalker(e.body,NodeFilter.SHOW_ELEMENT),o=r.currentNode;for(;o;){let i=o.shadowRoot;if(i){let s=i.getElementById(t)||i.querySelector(`[name="${t}"]`);if(s)return s}o=r.nextNode()}}return null}var Aa=class{setOffset(t){}getScrollPosition(){return[0,0]}scrollToPosition(t){}scrollToAnchor(t){}setHistoryScrollRestoration(t){}},df=class{};var Et=function(e){return e[e.State=0]="State",e[e.Transition=1]="Transition",e[e.Sequence=2]="Sequence",e[e.Group=3]="Group",e[e.Animate=4]="Animate",e[e.Keyframes=5]="Keyframes",e[e.Style=6]="Style",e[e.Trigger=7]="Trigger",e[e.Reference=8]="Reference",e[e.AnimateChild=9]="AnimateChild",e[e.AnimateRef=10]="AnimateRef",e[e.Query=11]="Query",e[e.Stagger=12]="Stagger",e}(Et||{}),GS="*";function zS(e,t){return{type:Et.Trigger,name:e,definitions:t,options:{}}}function WS(e,t=null){return{type:Et.Animate,styles:t,timings:e}}function qS(e,t=null){return{type:Et.Sequence,steps:e,options:t}}function YS(e){return{type:Et.Style,styles:e,offset:null}}function QS(e,t,n){return{type:Et.State,name:e,styles:t,options:n}}function ZS(e,t,n=null){return{type:Et.Transition,expr:e,animation:t,options:n}}var Df=class{constructor(t=0,n=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=t+n}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}onStart(t){this._originalOnStartFns.push(t),this._onStartFns.push(t)}onDone(t){this._originalOnDoneFns.push(t),this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(t=>t()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(t){this._position=this.totalTime?t*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(t){let n=t=="start"?this._onStartFns:this._onDoneFns;n.forEach(r=>r()),n.length=0}},vf=class{constructor(t){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=t;let n=0,r=0,o=0,i=this.players.length;i==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++n==i&&this._onFinish()}),s.onDestroy(()=>{++r==i&&this._onDestroy()}),s.onStart(()=>{++o==i&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(t=>t()),this._onDoneFns=[])}init(){this.players.forEach(t=>t.init())}onStart(t){this._onStartFns.push(t)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(t=>t()),this._onStartFns=[])}onDone(t){this._onDoneFns.push(t)}onDestroy(t){this._onDestroyFns.push(t)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(t=>t.play())}pause(){this.players.forEach(t=>t.pause())}restart(){this.players.forEach(t=>t.restart())}finish(){this._onFinish(),this.players.forEach(t=>t.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(t=>t.destroy()),this._onDestroyFns.forEach(t=>t()),this._onDestroyFns=[])}reset(){this.players.forEach(t=>t.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(t){let n=t*this.totalTime;this.players.forEach(r=>{let o=r.totalTime?Math.min(1,n/r.totalTime):1;r.setPosition(o)})}getPosition(){let t=this.players.reduce((n,r)=>n===null||r.totalTime>n.totalTime?r:n,null);return t!=null?t.getPosition():0}beforeDestroy(){this.players.forEach(t=>{t.beforeDestroy&&t.beforeDestroy()})}triggerCallback(t){let n=t=="start"?this._onStartFns:this._onDoneFns;n.forEach(r=>r()),n.length=0}},KS="!";export{_t as a,Mt as b,aI as c,_f as d,U as e,kf as f,b as g,Bo as h,$o as i,_e as j,tn as k,ot as l,xe as m,Wf as n,qf as o,Yf as p,Re as q,Qf as r,Pe as s,rp as t,ke as u,on as v,rr as w,ip as x,sp as y,Go as z,zo as A,pp as B,st as C,hp as D,hu as E,gp as F,mp as G,sn as H,Wo as I,yp as J,Dp as K,Ip as L,qo as M,Yo as N,Ep as O,Cp as P,bp as Q,_p as R,Mp as S,xp as T,Sp as U,Tp as V,M as W,ic as X,j as Y,ac as Z,yx as _,O as $,_ as aa,z as ba,E as ca,Zp as da,Kp as ea,dn as fa,ft as ga,Dx as ha,Ic as ia,xs as ja,Ss as ka,xc as la,Ac as ma,Qe as na,Ah as oa,Vc as pa,vx as qa,wx as ra,Ix as sa,Ex as ta,Cx as ua,Ig as va,It as wa,Ze as xa,Zt as ya,ut as za,Ti as Aa,bx as Ba,Rg as Ca,kg as Da,Jr as Ea,_x as Fa,Mx as Ga,zs as Ha,Kt as Ia,Qs as Ja,xx as Ka,Sx as La,Tx as Ma,Nx as Na,Ax as Oa,Fl as Pa,mm as Qa,no as Ra,Ox as Sa,Dm as Ta,Fx as Ua,Rx as Va,Or as Wa,Px as Xa,se as Ya,kx as Za,vt as _a,Lr as $a,co as ab,Qi as bb,Md as cb,Jt as db,le as eb,nD as fb,Xt as gb,Vx as hb,TD as ib,PD as jb,as as kb,kD as lb,ga as mb,$D as nb,GD as ob,rv as pb,Vd as qb,ov as rb,Bx as sb,$x as tb,zd as ub,Wd as vb,Dv as wb,Hx as xb,bv as yb,_v as zb,Rv as Ab,Pv as Bb,Ux as Cb,Gx as Db,zx as Eb,Wx as Fb,qx as Gb,Yx as Hb,Qx as Ib,Zx as Jb,Kx as Kb,$v as Lb,Kd as Mb,Hv as Nb,Jx as Ob,Xx as Pb,eS as Qb,tS as Rb,nS as Sb,rS as Tb,oS as Ub,iS as Vb,wa as Wb,Jv as Xb,nf as Yb,Ia as Zb,nw as _b,sS as $b,Ea as ac,aS as bc,uS as cc,Ew as dc,Cw as ec,Mw as fc,cS as gc,ba as hc,AS as ic,of as jc,Oa as kc,OS as lc,Io as mc,Tw as nc,FS as oc,Nw as pc,RS as qc,PS as rc,kS as sc,LS as tc,jS as uc,VS as vc,rI as wc,iI as xc,BS as yc,$S as zc,df as Ac,Et as Bc,GS as Cc,zS as Dc,WS as Ec,qS as Fc,YS as Gc,QS as Hc,ZS as Ic,Df as Jc,vf as Kc,KS as Lc}; diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..cee9b41 Binary files /dev/null and b/favicon.ico differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..7245787 --- /dev/null +++ b/index.html @@ -0,0 +1,23 @@ + + + + + + GDG DevFest Taipei 2024 + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/main-LIOJUFRM.js b/main-LIOJUFRM.js new file mode 100644 index 0000000..dd4efb7 --- /dev/null +++ b/main-LIOJUFRM.js @@ -0,0 +1,568 @@ +import{$ as x,$a as zc,$b as e0,A as ic,Aa as $2,Ab as _1,Ac as n0,B as R1,Ba as rc,Bb as xc,C as c1,Ca as $t,Cb as g1,D as we,Da as lc,Db as n1,Dc as a0,E as H2,Ea as m2,Eb as B,Ec as V4,F as V2,Fa as h1,Fb as p1,G as B2,Ga as A4,Gb as x1,Gc as Q3,H as ke,Ha as Zt,Hb as W,Hc as Re,I as r1,Ia as $3,Ib as G,Ic as B4,J as S4,Ja as Z3,Jb as I2,K as q3,Ka as dc,Kb as b,L as j2,La as mc,Lb as b1,M as U2,Ma as hc,Mb as D1,N as Se,Na as fc,Nb as F4,O as cc,Oa as pc,Ob as U1,P as nc,Pa as uc,Pb as E,Q as ac,Qa as gc,Qb as Kt,R as W3,Ra as B1,Rb as n2,S as C1,Sa as bc,Sb as Jt,T as M1,Ta as j1,Tb as C3,U as X,Ua as vc,Ub as Lc,V as m1,Va as _c,Vb as t0,W as l1,Wa as D4,Wb as yc,X as N4,Xa as _,Xb as Y3,Y as C,Ya as m,Yb as O4,Z as R,Za as b3,Zb as M3,_ as oc,_a as v3,_b as wc,a as f,aa as Ne,ab as E4,ac as L1,b as j,ba as u,bb as Yt,bc as kc,c as Ki,ca as v,cb as T4,cc as Sc,d as w2,da as Wt,db as Qt,dc as t1,e as P1,ea as Ie,eb as w,ec as A2,f as Ji,fa as I4,fb as Ae,fc as Nc,g as K1,ga as I,gb as _3,gc as Ic,h as xe,ha as A,hb as De,hc as Te,i as Le,ia as F,ib as f1,ic as Ac,j as N,ja as H,jb as v1,jc as Dc,k as w1,ka as Gt,kb as Cc,kc as T,l as l2,la as q2,lb as Ee,lc as Ec,m as k1,ma as sc,mb as Xt,mc as P4,n as M,na as W2,nb as Y,nc as Tc,o as f3,oa as d2,ob as J,oc as Rc,p as ye,pa as S1,pb as S,pc as D2,q as tc,qa as N1,qb as R4,qc as i0,r as Ut,ra as I1,rb as K,rc as f2,s as V,sa as u3,sb as h2,sc as Z2,t as U3,ta as G3,tb as S2,tc as c0,u as H1,ua as V1,ub as h,uc as Fc,v as k4,va as G2,vb as p,vc as E1,w as qt,wa as F1,wb as O,wc as Oc,x as p3,xa as g3,xb as N2,xc as Pc,y as ec,ya as D,yb as z3,yc as H4,z as k2,za as o1,zb as Mc,zc as Hc}from"./chunk-R2FFOFIG.js";var U4=class{},q4=class{},p2=class e{constructor(c){this.normalizedNames=new Map,this.lazyUpdate=null,c?typeof c=="string"?this.lazyInit=()=>{this.headers=new Map,c.split(` +`).forEach(t=>{let i=t.indexOf(":");if(i>0){let n=t.slice(0,i),a=n.toLowerCase(),o=t.slice(i+1).trim();this.maybeSetNormalizedName(n,a),this.headers.has(a)?this.headers.get(a).push(o):this.headers.set(a,[o])}})}:typeof Headers<"u"&&c instanceof Headers?(this.headers=new Map,c.forEach((t,i)=>{this.setHeaderEntries(i,t)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(c).forEach(([t,i])=>{this.setHeaderEntries(t,i)})}:this.headers=new Map}has(c){return this.init(),this.headers.has(c.toLowerCase())}get(c){this.init();let t=this.headers.get(c.toLowerCase());return t&&t.length>0?t[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(c){return this.init(),this.headers.get(c.toLowerCase())||null}append(c,t){return this.clone({name:c,value:t,op:"a"})}set(c,t){return this.clone({name:c,value:t,op:"s"})}delete(c,t){return this.clone({name:c,value:t,op:"d"})}maybeSetNormalizedName(c,t){this.normalizedNames.has(t)||this.normalizedNames.set(t,c)}init(){this.lazyInit&&(this.lazyInit instanceof e?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(c=>this.applyUpdate(c)),this.lazyUpdate=null))}copyFrom(c){c.init(),Array.from(c.headers.keys()).forEach(t=>{this.headers.set(t,c.headers.get(t)),this.normalizedNames.set(t,c.normalizedNames.get(t))})}clone(c){let t=new e;return t.lazyInit=this.lazyInit&&this.lazyInit instanceof e?this.lazyInit:this,t.lazyUpdate=(this.lazyUpdate||[]).concat([c]),t}applyUpdate(c){let t=c.name.toLowerCase();switch(c.op){case"a":case"s":let i=c.value;if(typeof i=="string"&&(i=[i]),i.length===0)return;this.maybeSetNormalizedName(c.name,t);let n=(c.op==="a"?this.headers.get(t):void 0)||[];n.push(...i),this.headers.set(t,n);break;case"d":let a=c.value;if(!a)this.headers.delete(t),this.normalizedNames.delete(t);else{let o=this.headers.get(t);if(!o)return;o=o.filter(s=>a.indexOf(s)===-1),o.length===0?(this.headers.delete(t),this.normalizedNames.delete(t)):this.headers.set(t,o)}break}}setHeaderEntries(c,t){let i=(Array.isArray(t)?t:[t]).map(a=>a.toString()),n=c.toLowerCase();this.headers.set(n,i),this.maybeSetNormalizedName(c,n)}forEach(c){this.init(),Array.from(this.normalizedNames.keys()).forEach(t=>c(this.normalizedNames.get(t),this.headers.get(t)))}};var Pe=class{encodeKey(c){return Vc(c)}encodeValue(c){return Vc(c)}decodeKey(c){return decodeURIComponent(c)}decodeValue(c){return decodeURIComponent(c)}};function a7(e,c){let t=new Map;return e.length>0&&e.replace(/^\?/,"").split("&").forEach(n=>{let a=n.indexOf("="),[o,s]=a==-1?[c.decodeKey(n),""]:[c.decodeKey(n.slice(0,a)),c.decodeValue(n.slice(a+1))],r=t.get(o)||[];r.push(s),t.set(o,r)}),t}var o7=/%(\d[a-f0-9])/gi,s7={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function Vc(e){return encodeURIComponent(e).replace(o7,(c,t)=>s7[t]??c)}function o0(e){return`${e}`}var Q2=class e{constructor(c={}){if(this.updates=null,this.cloneFrom=null,this.encoder=c.encoder||new Pe,c.fromString){if(c.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=a7(c.fromString,this.encoder)}else c.fromObject?(this.map=new Map,Object.keys(c.fromObject).forEach(t=>{let i=c.fromObject[t],n=Array.isArray(i)?i.map(o0):[o0(i)];this.map.set(t,n)})):this.map=null}has(c){return this.init(),this.map.has(c)}get(c){this.init();let t=this.map.get(c);return t?t[0]:null}getAll(c){return this.init(),this.map.get(c)||null}keys(){return this.init(),Array.from(this.map.keys())}append(c,t){return this.clone({param:c,value:t,op:"a"})}appendAll(c){let t=[];return Object.keys(c).forEach(i=>{let n=c[i];Array.isArray(n)?n.forEach(a=>{t.push({param:i,value:a,op:"a"})}):t.push({param:i,value:n,op:"a"})}),this.clone(t)}set(c,t){return this.clone({param:c,value:t,op:"s"})}delete(c,t){return this.clone({param:c,value:t,op:"d"})}toString(){return this.init(),this.keys().map(c=>{let t=this.encoder.encodeKey(c);return this.map.get(c).map(i=>t+"="+this.encoder.encodeValue(i)).join("&")}).filter(c=>c!=="").join("&")}clone(c){let t=new e({encoder:this.encoder});return t.cloneFrom=this.cloneFrom||this,t.updates=(this.updates||[]).concat(c),t}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(c=>this.map.set(c,this.cloneFrom.map.get(c))),this.updates.forEach(c=>{switch(c.op){case"a":case"s":let t=(c.op==="a"?this.map.get(c.param):void 0)||[];t.push(o0(c.value)),this.map.set(c.param,t);break;case"d":if(c.value!==void 0){let i=this.map.get(c.param)||[],n=i.indexOf(o0(c.value));n!==-1&&i.splice(n,1),i.length>0?this.map.set(c.param,i):this.map.delete(c.param)}else{this.map.delete(c.param);break}}}),this.cloneFrom=this.updates=null)}};var He=class{constructor(){this.map=new Map}set(c,t){return this.map.set(c,t),this}get(c){return this.map.has(c)||this.map.set(c,c.defaultValue()),this.map.get(c)}delete(c){return this.map.delete(c),this}has(c){return this.map.has(c)}keys(){return this.map.keys()}};function r7(e){switch(e){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function Bc(e){return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer}function jc(e){return typeof Blob<"u"&&e instanceof Blob}function Uc(e){return typeof FormData<"u"&&e instanceof FormData}function l7(e){return typeof URLSearchParams<"u"&&e instanceof URLSearchParams}var j4=class e{constructor(c,t,i,n){this.url=t,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=c.toUpperCase();let a;if(r7(this.method)||n?(this.body=i!==void 0?i:null,a=n):a=i,a&&(this.reportProgress=!!a.reportProgress,this.withCredentials=!!a.withCredentials,a.responseType&&(this.responseType=a.responseType),a.headers&&(this.headers=a.headers),a.context&&(this.context=a.context),a.params&&(this.params=a.params),this.transferCache=a.transferCache),this.headers??=new p2,this.context??=new He,!this.params)this.params=new Q2,this.urlWithParams=t;else{let o=this.params.toString();if(o.length===0)this.urlWithParams=t;else{let s=t.indexOf("?"),r=s===-1?"?":sz.set(y,c.setHeaders[y]),l)),c.setParams&&(d=Object.keys(c.setParams).reduce((z,y)=>z.set(y,c.setParams[y]),d)),new e(t,i,o,{params:d,headers:l,context:g,reportProgress:r,responseType:n,withCredentials:s,transferCache:a})}},X2=function(e){return e[e.Sent=0]="Sent",e[e.UploadProgress=1]="UploadProgress",e[e.ResponseHeader=2]="ResponseHeader",e[e.DownloadProgress=3]="DownloadProgress",e[e.Response=4]="Response",e[e.User=5]="User",e}(X2||{}),W4=class{constructor(c,t=G4.Ok,i="OK"){this.headers=c.headers||new p2,this.status=c.status!==void 0?c.status:t,this.statusText=c.statusText||i,this.url=c.url||null,this.ok=this.status>=200&&this.status<300}},r0=class e extends W4{constructor(c={}){super(c),this.type=X2.ResponseHeader}clone(c={}){return new e({headers:c.headers||this.headers,status:c.status!==void 0?c.status:this.status,statusText:c.statusText||this.statusText,url:c.url||this.url||void 0})}},x3=class e extends W4{constructor(c={}){super(c),this.type=X2.Response,this.body=c.body!==void 0?c.body:null}clone(c={}){return new e({body:c.body!==void 0?c.body:this.body,headers:c.headers||this.headers,status:c.status!==void 0?c.status:this.status,statusText:c.statusText||this.statusText,url:c.url||this.url||void 0})}},Y2=class extends W4{constructor(c){super(c,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${c.url||"(unknown url)"}`:this.message=`Http failure response for ${c.url||"(unknown url)"}: ${c.status} ${c.statusText}`,this.error=c.error||null}},G4=function(e){return e[e.Continue=100]="Continue",e[e.SwitchingProtocols=101]="SwitchingProtocols",e[e.Processing=102]="Processing",e[e.EarlyHints=103]="EarlyHints",e[e.Ok=200]="Ok",e[e.Created=201]="Created",e[e.Accepted=202]="Accepted",e[e.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",e[e.NoContent=204]="NoContent",e[e.ResetContent=205]="ResetContent",e[e.PartialContent=206]="PartialContent",e[e.MultiStatus=207]="MultiStatus",e[e.AlreadyReported=208]="AlreadyReported",e[e.ImUsed=226]="ImUsed",e[e.MultipleChoices=300]="MultipleChoices",e[e.MovedPermanently=301]="MovedPermanently",e[e.Found=302]="Found",e[e.SeeOther=303]="SeeOther",e[e.NotModified=304]="NotModified",e[e.UseProxy=305]="UseProxy",e[e.Unused=306]="Unused",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect",e[e.BadRequest=400]="BadRequest",e[e.Unauthorized=401]="Unauthorized",e[e.PaymentRequired=402]="PaymentRequired",e[e.Forbidden=403]="Forbidden",e[e.NotFound=404]="NotFound",e[e.MethodNotAllowed=405]="MethodNotAllowed",e[e.NotAcceptable=406]="NotAcceptable",e[e.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",e[e.RequestTimeout=408]="RequestTimeout",e[e.Conflict=409]="Conflict",e[e.Gone=410]="Gone",e[e.LengthRequired=411]="LengthRequired",e[e.PreconditionFailed=412]="PreconditionFailed",e[e.PayloadTooLarge=413]="PayloadTooLarge",e[e.UriTooLong=414]="UriTooLong",e[e.UnsupportedMediaType=415]="UnsupportedMediaType",e[e.RangeNotSatisfiable=416]="RangeNotSatisfiable",e[e.ExpectationFailed=417]="ExpectationFailed",e[e.ImATeapot=418]="ImATeapot",e[e.MisdirectedRequest=421]="MisdirectedRequest",e[e.UnprocessableEntity=422]="UnprocessableEntity",e[e.Locked=423]="Locked",e[e.FailedDependency=424]="FailedDependency",e[e.TooEarly=425]="TooEarly",e[e.UpgradeRequired=426]="UpgradeRequired",e[e.PreconditionRequired=428]="PreconditionRequired",e[e.TooManyRequests=429]="TooManyRequests",e[e.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",e[e.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",e[e.InternalServerError=500]="InternalServerError",e[e.NotImplemented=501]="NotImplemented",e[e.BadGateway=502]="BadGateway",e[e.ServiceUnavailable=503]="ServiceUnavailable",e[e.GatewayTimeout=504]="GatewayTimeout",e[e.HttpVersionNotSupported=505]="HttpVersionNotSupported",e[e.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",e[e.InsufficientStorage=507]="InsufficientStorage",e[e.LoopDetected=508]="LoopDetected",e[e.NotExtended=510]="NotExtended",e[e.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired",e}(G4||{});function Fe(e,c){return{body:c,headers:e.headers,context:e.context,observe:e.observe,params:e.params,reportProgress:e.reportProgress,responseType:e.responseType,withCredentials:e.withCredentials,transferCache:e.transferCache}}var L3=(()=>{class e{constructor(t){this.handler=t}request(t,i,n={}){let a;if(t instanceof j4)a=t;else{let r;n.headers instanceof p2?r=n.headers:r=new p2(n.headers);let l;n.params&&(n.params instanceof Q2?l=n.params:l=new Q2({fromObject:n.params})),a=new j4(t,i,n.body!==void 0?n.body:null,{headers:r,context:n.context,params:l,reportProgress:n.reportProgress,responseType:n.responseType||"json",withCredentials:n.withCredentials,transferCache:n.transferCache})}let o=M(a).pipe(V2(r=>this.handler.handle(r)));if(t instanceof j4||n.observe==="events")return o;let s=o.pipe(c1(r=>r instanceof x3));switch(n.observe||"body"){case"body":switch(a.responseType){case"arraybuffer":return s.pipe(V(r=>{if(r.body!==null&&!(r.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return r.body}));case"blob":return s.pipe(V(r=>{if(r.body!==null&&!(r.body instanceof Blob))throw new Error("Response is not a Blob.");return r.body}));case"text":return s.pipe(V(r=>{if(r.body!==null&&typeof r.body!="string")throw new Error("Response is not a string.");return r.body}));case"json":default:return s.pipe(V(r=>r.body))}case"response":return s;default:throw new Error(`Unreachable: unhandled observe type ${n.observe}}`)}}delete(t,i={}){return this.request("DELETE",t,i)}get(t,i={}){return this.request("GET",t,i)}head(t,i={}){return this.request("HEAD",t,i)}jsonp(t,i){return this.request("JSONP",t,{params:new Q2().append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,i={}){return this.request("OPTIONS",t,i)}patch(t,i,n={}){return this.request("PATCH",t,Fe(n,i))}post(t,i,n={}){return this.request("POST",t,Fe(n,i))}put(t,i,n={}){return this.request("PUT",t,Fe(n,i))}static{this.\u0275fac=function(i){return new(i||e)(u(U4))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})(),d7=/^\)\]\}',?\n/,m7="X-Request-URL";function qc(e){if(e.url)return e.url;let c=m7.toLocaleLowerCase();return e.headers.get(c)}var Oe=(()=>{class e{constructor(){this.fetchImpl=v(Ve,{optional:!0})?.fetch??fetch.bind(globalThis),this.ngZone=v(w)}handle(t){return new K1(i=>{let n=new AbortController;return this.doRequest(t,n.signal,i).then(Be,a=>i.error(new Y2({error:a}))),()=>n.abort()})}doRequest(t,i,n){return w2(this,null,function*(){let a=this.createRequestInit(t),o;try{let y=this.fetchImpl(t.urlWithParams,f({signal:i},a));h7(y),n.next({type:X2.Sent}),o=yield y}catch(y){n.error(new Y2({error:y,status:y.status??0,statusText:y.statusText,url:t.urlWithParams,headers:y.headers}));return}let s=new p2(o.headers),r=o.statusText,l=qc(o)??t.urlWithParams,d=o.status,g=null;if(t.reportProgress&&n.next(new r0({headers:s,status:d,statusText:r,url:l})),o.body){let y=o.headers.get("content-length"),q=[],k=o.body.getReader(),P=0,e1,s1,i1=typeof Zone<"u"&&Zone.current;yield this.ngZone.runOutsideAngular(()=>w2(this,null,function*(){for(;;){let{done:T1,value:h3}=yield k.read();if(T1)break;if(q.push(h3),P+=h3.length,t.reportProgress){s1=t.responseType==="text"?(s1??"")+(e1??=new TextDecoder).decode(h3,{stream:!0}):void 0;let j3=()=>n.next({type:X2.DownloadProgress,total:y?+y:void 0,loaded:P,partialText:s1});i1?i1.run(j3):j3()}}}));let X1=this.concatChunks(q,P);try{let T1=o.headers.get("Content-Type")??"";g=this.parseBody(t,X1,T1)}catch(T1){n.error(new Y2({error:T1,headers:new p2(o.headers),status:o.status,statusText:o.statusText,url:qc(o)??t.urlWithParams}));return}}d===0&&(d=g?G4.Ok:0),d>=200&&d<300?(n.next(new x3({body:g,headers:s,status:d,statusText:r,url:l})),n.complete()):n.error(new Y2({error:g,headers:s,status:d,statusText:r,url:l}))})}parseBody(t,i,n){switch(t.responseType){case"json":let a=new TextDecoder().decode(i).replace(d7,"");return a===""?null:JSON.parse(a);case"text":return new TextDecoder().decode(i);case"blob":return new Blob([i],{type:n});case"arraybuffer":return i.buffer}}createRequestInit(t){let i={},n=t.withCredentials?"include":void 0;if(t.headers.forEach((a,o)=>i[a]=o.join(",")),i.Accept??="application/json, text/plain, */*",!i["Content-Type"]){let a=t.detectContentTypeHeader();a!==null&&(i["Content-Type"]=a)}return{body:t.serializeBody(),method:t.method,headers:i,credentials:n}}concatChunks(t,i){let n=new Uint8Array(i),a=0;for(let o of t)n.set(o,a),a+=o.length;return n}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})(),Ve=class{};function Be(){}function h7(e){e.then(Be,Be)}function f7(e,c){return c(e)}function p7(e,c,t){return(i,n)=>d2(t,()=>c(i,a=>e(a,n)))}var t8=new x(""),e8=new x(""),i8=new x("");var Wc=(()=>{class e extends U4{constructor(t,i){super(),this.backend=t,this.injector=i,this.chain=null,this.pendingTasks=v(Xt);let n=v(i8,{optional:!0});this.backend=n??t}handle(t){if(this.chain===null){let n=Array.from(new Set([...this.injector.get(t8),...this.injector.get(e8,[])]));this.chain=n.reduceRight((a,o)=>p7(a,o,this.injector),f7)}let i=this.pendingTasks.add();return this.chain(t,n=>this.backend.handle(n)).pipe(j2(()=>this.pendingTasks.remove(i)))}static{this.\u0275fac=function(i){return new(i||e)(u(q4),u(W2))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})();var u7=/^\)\]\}',?\n/;function g7(e){return"responseURL"in e&&e.responseURL?e.responseURL:/^X-Request-URL:/m.test(e.getAllResponseHeaders())?e.getResponseHeader("X-Request-URL"):null}var Gc=(()=>{class e{constructor(t){this.xhrFactory=t}handle(t){if(t.method==="JSONP")throw new l1(-2800,!1);let i=this.xhrFactory;return(i.\u0275loadImpl?k1(i.\u0275loadImpl()):M(null)).pipe(M1(()=>new K1(a=>{let o=i.build();if(o.open(t.method,t.urlWithParams),t.withCredentials&&(o.withCredentials=!0),t.headers.forEach((k,P)=>o.setRequestHeader(k,P.join(","))),t.headers.has("Accept")||o.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){let k=t.detectContentTypeHeader();k!==null&&o.setRequestHeader("Content-Type",k)}if(t.responseType){let k=t.responseType.toLowerCase();o.responseType=k!=="json"?k:"text"}let s=t.serializeBody(),r=null,l=()=>{if(r!==null)return r;let k=o.statusText||"OK",P=new p2(o.getAllResponseHeaders()),e1=g7(o)||t.url;return r=new r0({headers:P,status:o.status,statusText:k,url:e1}),r},d=()=>{let{headers:k,status:P,statusText:e1,url:s1}=l(),i1=null;P!==G4.NoContent&&(i1=typeof o.response>"u"?o.responseText:o.response),P===0&&(P=i1?G4.Ok:0);let X1=P>=200&&P<300;if(t.responseType==="json"&&typeof i1=="string"){let T1=i1;i1=i1.replace(u7,"");try{i1=i1!==""?JSON.parse(i1):null}catch(h3){i1=T1,X1&&(X1=!1,i1={error:h3,text:i1})}}X1?(a.next(new x3({body:i1,headers:k,status:P,statusText:e1,url:s1||void 0})),a.complete()):a.error(new Y2({error:i1,headers:k,status:P,statusText:e1,url:s1||void 0}))},g=k=>{let{url:P}=l(),e1=new Y2({error:k,status:o.status||0,statusText:o.statusText||"Unknown Error",url:P||void 0});a.error(e1)},z=!1,y=k=>{z||(a.next(l()),z=!0);let P={type:X2.DownloadProgress,loaded:k.loaded};k.lengthComputable&&(P.total=k.total),t.responseType==="text"&&o.responseText&&(P.partialText=o.responseText),a.next(P)},q=k=>{let P={type:X2.UploadProgress,loaded:k.loaded};k.lengthComputable&&(P.total=k.total),a.next(P)};return o.addEventListener("load",d),o.addEventListener("error",g),o.addEventListener("timeout",g),o.addEventListener("abort",g),t.reportProgress&&(o.addEventListener("progress",y),s!==null&&o.upload&&o.upload.addEventListener("progress",q)),o.send(s),a.next({type:X2.Sent}),()=>{o.removeEventListener("error",g),o.removeEventListener("abort",g),o.removeEventListener("load",d),o.removeEventListener("timeout",g),t.reportProgress&&(o.removeEventListener("progress",y),s!==null&&o.upload&&o.upload.removeEventListener("progress",q)),o.readyState!==o.DONE&&o.abort()}})))}static{this.\u0275fac=function(i){return new(i||e)(u(n0))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})(),c8=new x(""),b7="XSRF-TOKEN",v7=new x("",{providedIn:"root",factory:()=>b7}),_7="X-XSRF-TOKEN",z7=new x("",{providedIn:"root",factory:()=>_7}),l0=class{},C7=(()=>{class e{constructor(t,i,n){this.doc=t,this.platform=i,this.cookieName=n,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if(this.platform==="server")return null;let t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=i0(t,this.cookieName),this.lastCookieString=t),this.lastToken}static{this.\u0275fac=function(i){return new(i||e)(u(T),u(m2),u(v7))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})();function M7(e,c){let t=e.url.toLowerCase();if(!v(c8)||e.method==="GET"||e.method==="HEAD"||t.startsWith("http://")||t.startsWith("https://"))return c(e);let i=v(l0).getToken(),n=v(z7);return i!=null&&!e.headers.has(n)&&(e=e.clone({headers:e.headers.set(n,i)})),c(e)}var n8=function(e){return e[e.Interceptors=0]="Interceptors",e[e.LegacyInterceptors=1]="LegacyInterceptors",e[e.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",e[e.NoXsrfProtection=3]="NoXsrfProtection",e[e.JsonpSupport=4]="JsonpSupport",e[e.RequestsMadeViaParent=5]="RequestsMadeViaParent",e[e.Fetch=6]="Fetch",e}(n8||{});function x7(e,c){return{\u0275kind:e,\u0275providers:c}}function a8(...e){let c=[L3,Gc,Wc,{provide:U4,useExisting:Wc},{provide:q4,useExisting:Gc},{provide:t8,useValue:M7,multi:!0},{provide:c8,useValue:!0},{provide:l0,useClass:C7}];for(let t of e)c.push(...t.\u0275providers);return q2(c)}function o8(){return x7(n8.Fetch,[Oe,{provide:q4,useExisting:Oe},{provide:i8,useExisting:Oe}])}var $c="b",Zc="h",Yc="s",Qc="st",Xc="u",Kc="rt",s0=new x(""),L7=["GET","HEAD"];function y7(e,c){let g=v(s0),{isCacheActive:t}=g,i=Ki(g,["isCacheActive"]),{transferCache:n,method:a}=e;if(!t||a==="POST"&&!i.includePostRequests&&!n||a!=="POST"&&!L7.includes(a)||n===!1||i.filter?.(e)===!1)return c(e);let o=v(Zt),s=k7(e),r=o.get(s,null),l=i.includeHeaders;if(typeof n=="object"&&n.includeHeaders&&(l=n.includeHeaders),r){let{[$c]:z,[Kc]:y,[Zc]:q,[Yc]:k,[Qc]:P,[Xc]:e1}=r,s1=z;switch(y){case"arraybuffer":s1=new TextEncoder().encode(z).buffer;break;case"blob":s1=new Blob([z]);break}let i1=new p2(q);return M(new x3({body:s1,headers:i1,status:k,statusText:P,url:e1}))}let d=H4(v(m2));return c(e).pipe(m1(z=>{z instanceof x3&&d&&o.set(s,{[$c]:z.body,[Zc]:w7(z.headers,l),[Yc]:z.status,[Qc]:z.statusText,[Xc]:z.url||"",[Kc]:e.responseType})}))}function w7(e,c){if(!c)return{};let t={};for(let i of c){let n=e.getAll(i);n!==null&&(t[i]=n)}return t}function Jc(e){return[...e.keys()].sort().map(c=>`${c}=${e.getAll(c)}`).join("&")}function k7(e){let{params:c,method:t,responseType:i,url:n}=e,a=Jc(c),o=e.serializeBody();o instanceof URLSearchParams?o=Jc(o):typeof o!="string"&&(o="");let s=[t,i,n,o,a].join("|"),r=S7(s);return r}function S7(e){let c=0;for(let t of e)c=Math.imul(31,c)+t.charCodeAt(0)<<0;return c+=2147483648,c.toString()}function s8(e){return[{provide:s0,useFactory:()=>(Qt("NgHttpTransferCache"),f({isCacheActive:!0},e))},{provide:e8,useValue:y7,multi:!0,deps:[Zt,s0]},{provide:O4,multi:!0,useFactory:()=>{let c=v(M3),t=v(s0);return()=>{wc(c).then(()=>{t.isCacheActive=!1})}}}]}var We=class extends Dc{constructor(){super(...arguments),this.supportsDOMEvents=!0}},Ge=class e extends We{static makeCurrent(){Ac(new e)}onAndCancel(c,t,i){return c.addEventListener(t,i),()=>{c.removeEventListener(t,i)}}dispatchEvent(c,t){c.dispatchEvent(t)}remove(c){c.parentNode&&c.parentNode.removeChild(c)}createElement(c,t){return t=t||this.getDefaultDocument(),t.createElement(c)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(c){return c.nodeType===Node.ELEMENT_NODE}isShadowRoot(c){return c instanceof DocumentFragment}getGlobalEventTarget(c,t){return t==="window"?window:t==="document"?c:t==="body"?c.body:null}getBaseHref(c){let t=I7();return t==null?null:A7(t)}resetBaseElement(){$4=null}getUserAgent(){return window.navigator.userAgent}getCookie(c){return i0(document.cookie,c)}},$4=null;function I7(){return $4=$4||document.querySelector("base"),$4?$4.getAttribute("href"):null}function A7(e){return new URL(e,document.baseURI).pathname}var D7=(()=>{class e{build(){return new XMLHttpRequest}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})(),$e=new x(""),m8=(()=>{class e{constructor(t,i){this._zone=i,this._eventNameToPlugin=new Map,t.forEach(n=>{n.manager=this}),this._plugins=t.slice().reverse()}addEventListener(t,i,n){return this._findPluginFor(i).addEventListener(t,i,n)}getZone(){return this._zone}_findPluginFor(t){let i=this._eventNameToPlugin.get(t);if(i)return i;if(i=this._plugins.find(a=>a.supports(t)),!i)throw new l1(5101,!1);return this._eventNameToPlugin.set(t,i),i}static{this.\u0275fac=function(i){return new(i||e)(u($e),u(w))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})(),d0=class{constructor(c){this._doc=c}},Ue="ng-app-id",h8=(()=>{class e{constructor(t,i,n,a={}){this.doc=t,this.appId=i,this.nonce=n,this.platformId=a,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=H4(a),this.resetHostNodes()}addStyles(t){for(let i of t)this.changeUsageCount(i,1)===1&&this.onStyleAdded(i)}removeStyles(t){for(let i of t)this.changeUsageCount(i,-1)<=0&&this.onStyleRemoved(i)}ngOnDestroy(){let t=this.styleNodesInDOM;t&&(t.forEach(i=>i.remove()),t.clear());for(let i of this.getAllStyles())this.onStyleRemoved(i);this.resetHostNodes()}addHost(t){this.hostNodes.add(t);for(let i of this.getAllStyles())this.addStyleToHost(t,i)}removeHost(t){this.hostNodes.delete(t)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(t){for(let i of this.hostNodes)this.addStyleToHost(i,t)}onStyleRemoved(t){let i=this.styleRef;i.get(t)?.elements?.forEach(n=>n.remove()),i.delete(t)}collectServerRenderedStyles(){let t=this.doc.head?.querySelectorAll(`style[${Ue}="${this.appId}"]`);if(t?.length){let i=new Map;return t.forEach(n=>{n.textContent!=null&&i.set(n.textContent,n)}),i}return null}changeUsageCount(t,i){let n=this.styleRef;if(n.has(t)){let a=n.get(t);return a.usage+=i,a.usage}return n.set(t,{usage:i,elements:[]}),i}getStyleElement(t,i){let n=this.styleNodesInDOM,a=n?.get(i);if(a?.parentNode===t)return n.delete(i),a.removeAttribute(Ue),a;{let o=this.doc.createElement("style");return this.nonce&&o.setAttribute("nonce",this.nonce),o.textContent=i,this.platformIsServer&&o.setAttribute(Ue,this.appId),t.appendChild(o),o}}addStyleToHost(t,i){let n=this.getStyleElement(t,i),a=this.styleRef,o=a.get(i)?.elements;o?o.push(n):a.set(i,{elements:[n],usage:1})}resetHostNodes(){let t=this.hostNodes;t.clear(),t.add(this.doc.head)}static{this.\u0275fac=function(i){return new(i||e)(u(T),u($t),u(A4,8),u(m2))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})(),qe={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},Qe=/%COMP%/g,f8="%COMP%",E7=`_nghost-${f8}`,T7=`_ngcontent-${f8}`,R7=!0,F7=new x("",{providedIn:"root",factory:()=>R7});function O7(e){return T7.replace(Qe,e)}function P7(e){return E7.replace(Qe,e)}function p8(e,c){return c.map(t=>t.replace(Qe,e))}var m0=(()=>{class e{constructor(t,i,n,a,o,s,r,l=null){this.eventManager=t,this.sharedStylesHost=i,this.appId=n,this.removeStylesOnCompDestroy=a,this.doc=o,this.platformId=s,this.ngZone=r,this.nonce=l,this.rendererByCompId=new Map,this.platformIsServer=H4(s),this.defaultRenderer=new Z4(t,o,r,this.platformIsServer)}createRenderer(t,i){if(!t||!i)return this.defaultRenderer;this.platformIsServer&&i.encapsulation===I4.ShadowDom&&(i=j(f({},i),{encapsulation:I4.Emulated}));let n=this.getOrCreateRenderer(t,i);return n instanceof h0?n.applyToHost(t):n instanceof Y4&&n.applyStyles(),n}getOrCreateRenderer(t,i){let n=this.rendererByCompId,a=n.get(i.id);if(!a){let o=this.doc,s=this.ngZone,r=this.eventManager,l=this.sharedStylesHost,d=this.removeStylesOnCompDestroy,g=this.platformIsServer;switch(i.encapsulation){case I4.Emulated:a=new h0(r,l,i,this.appId,d,o,s,g);break;case I4.ShadowDom:return new Ze(r,l,t,i,o,s,this.nonce,g);default:a=new Y4(r,l,i,d,o,s,g);break}n.set(i.id,a)}return a}ngOnDestroy(){this.rendererByCompId.clear()}static{this.\u0275fac=function(i){return new(i||e)(u(m8),u(h8),u($t),u(F7),u(T),u(m2),u(w),u(A4))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})(),Z4=class{constructor(c,t,i,n){this.eventManager=c,this.doc=t,this.ngZone=i,this.platformIsServer=n,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(c,t){return t?this.doc.createElementNS(qe[t]||t,c):this.doc.createElement(c)}createComment(c){return this.doc.createComment(c)}createText(c){return this.doc.createTextNode(c)}appendChild(c,t){(r8(c)?c.content:c).appendChild(t)}insertBefore(c,t,i){c&&(r8(c)?c.content:c).insertBefore(t,i)}removeChild(c,t){c&&c.removeChild(t)}selectRootElement(c,t){let i=typeof c=="string"?this.doc.querySelector(c):c;if(!i)throw new l1(-5104,!1);return t||(i.textContent=""),i}parentNode(c){return c.parentNode}nextSibling(c){return c.nextSibling}setAttribute(c,t,i,n){if(n){t=n+":"+t;let a=qe[n];a?c.setAttributeNS(a,t,i):c.setAttribute(t,i)}else c.setAttribute(t,i)}removeAttribute(c,t,i){if(i){let n=qe[i];n?c.removeAttributeNS(n,t):c.removeAttribute(`${i}:${t}`)}else c.removeAttribute(t)}addClass(c,t){c.classList.add(t)}removeClass(c,t){c.classList.remove(t)}setStyle(c,t,i,n){n&(D4.DashCase|D4.Important)?c.style.setProperty(t,i,n&D4.Important?"important":""):c.style[t]=i}removeStyle(c,t,i){i&D4.DashCase?c.style.removeProperty(t):c.style[t]=""}setProperty(c,t,i){c!=null&&(c[t]=i)}setValue(c,t){c.nodeValue=t}listen(c,t,i){if(typeof c=="string"&&(c=Te().getGlobalEventTarget(this.doc,c),!c))throw new Error(`Unsupported event target ${c} for event ${t}`);return this.eventManager.addEventListener(c,t,this.decoratePreventDefault(i))}decoratePreventDefault(c){return t=>{if(t==="__ngUnwrap__")return c;(this.platformIsServer?this.ngZone.runGuarded(()=>c(t)):c(t))===!1&&t.preventDefault()}}};function r8(e){return e.tagName==="TEMPLATE"&&e.content!==void 0}var Ze=class extends Z4{constructor(c,t,i,n,a,o,s,r){super(c,a,o,r),this.sharedStylesHost=t,this.hostEl=i,this.shadowRoot=i.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);let l=p8(n.id,n.styles);for(let d of l){let g=document.createElement("style");s&&g.setAttribute("nonce",s),g.textContent=d,this.shadowRoot.appendChild(g)}}nodeOrShadowRoot(c){return c===this.hostEl?this.shadowRoot:c}appendChild(c,t){return super.appendChild(this.nodeOrShadowRoot(c),t)}insertBefore(c,t,i){return super.insertBefore(this.nodeOrShadowRoot(c),t,i)}removeChild(c,t){return super.removeChild(this.nodeOrShadowRoot(c),t)}parentNode(c){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(c)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}},Y4=class extends Z4{constructor(c,t,i,n,a,o,s,r){super(c,a,o,s),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=n,this.styles=r?p8(r,i.styles):i.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}},h0=class extends Y4{constructor(c,t,i,n,a,o,s,r){let l=n+"-"+i.id;super(c,t,i,a,o,s,r,l),this.contentAttr=O7(l),this.hostAttr=P7(l)}applyToHost(c){this.applyStyles(),this.setAttribute(c,this.hostAttr,"")}createElement(c,t){let i=super.createElement(c,t);return super.setAttribute(i,this.contentAttr,""),i}},H7=(()=>{class e extends d0{constructor(t){super(t)}supports(t){return!0}addEventListener(t,i,n){return t.addEventListener(i,n,!1),()=>this.removeEventListener(t,i,n)}removeEventListener(t,i,n){return t.removeEventListener(i,n)}static{this.\u0275fac=function(i){return new(i||e)(u(T))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})(),l8=["alt","control","meta","shift"],V7={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},B7={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},j7=(()=>{class e extends d0{constructor(t){super(t)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,i,n){let a=e.parseEventName(i),o=e.eventCallback(a.fullKey,n,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Te().onAndCancel(t,a.domEventName,o))}static parseEventName(t){let i=t.toLowerCase().split("."),n=i.shift();if(i.length===0||!(n==="keydown"||n==="keyup"))return null;let a=e._normalizeKey(i.pop()),o="",s=i.indexOf("code");if(s>-1&&(i.splice(s,1),o="code."),l8.forEach(l=>{let d=i.indexOf(l);d>-1&&(i.splice(d,1),o+=l+".")}),o+=a,i.length!=0||a.length===0)return null;let r={};return r.domEventName=n,r.fullKey=o,r}static matchEventFullKeyCode(t,i){let n=V7[t.key]||t.key,a="";return i.indexOf("code.")>-1&&(n=t.code,a="code."),n==null||!n?!1:(n=n.toLowerCase(),n===" "?n="space":n==="."&&(n="dot"),l8.forEach(o=>{if(o!==n){let s=B7[o];s(t)&&(a+=o+".")}}),a+=n,a===i)}static eventCallback(t,i,n){return a=>{e.matchEventFullKeyCode(a,t)&&n.runGuarded(()=>i(a))}}static _normalizeKey(t){return t==="esc"?"escape":t}static{this.\u0275fac=function(i){return new(i||e)(u(T))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})();function u8(e,c){return kc(f({rootComponent:e},U7(c)))}function U7(e){return{appProviders:[...Z7,...e?.providers??[]],platformProviders:$7}}function q7(){Ge.makeCurrent()}function W7(){return new g3}function G7(){return rc(document),document}var $7=[{provide:m2,useValue:Oc},{provide:lc,useValue:q7,multi:!0},{provide:T,useFactory:G7,deps:[]}];var Z7=[{provide:sc,useValue:"root"},{provide:g3,useFactory:W7,deps:[]},{provide:$e,useClass:H7,multi:!0,deps:[T,w,m2]},{provide:$e,useClass:j7,multi:!0,deps:[T]},m0,h8,m8,{provide:Yt,useExisting:m0},{provide:n0,useClass:D7,deps:[]},[]];var g8=(()=>{class e{constructor(t){this._doc=t}getTitle(){return this._doc.title}setTitle(t){this._doc.title=t||""}static{this.\u0275fac=function(i){return new(i||e)(u(T))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var Q4=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:function(i){let n=null;return i?n=new(i||e):n=u(Y7),n},providedIn:"root"})}}return e})(),Y7=(()=>{class e extends Q4{constructor(t){super(),this._doc=t}sanitize(t,i){if(i==null)return null;switch(t){case B1.NONE:return i;case B1.HTML:return Z3(i,"HTML")?$3(i):gc(this._doc,String(i)).toString();case B1.STYLE:return Z3(i,"Style")?$3(i):i;case B1.SCRIPT:if(Z3(i,"Script"))return $3(i);throw new l1(5200,!1);case B1.URL:return Z3(i,"URL")?$3(i):uc(String(i));case B1.RESOURCE_URL:if(Z3(i,"ResourceURL"))return $3(i);throw new l1(5201,!1);default:throw new l1(5202,!1)}}bypassSecurityTrustHtml(t){return dc(t)}bypassSecurityTrustStyle(t){return mc(t)}bypassSecurityTrustScript(t){return hc(t)}bypassSecurityTrustUrl(t){return fc(t)}bypassSecurityTrustResourceUrl(t){return pc(t)}static{this.\u0275fac=function(i){return new(i||e)(u(T))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),Ye=function(e){return e[e.NoHttpTransferCache=0]="NoHttpTransferCache",e[e.HttpTransferCacheOptions=1]="HttpTransferCacheOptions",e}(Ye||{});function b8(...e){let c=[],t=new Set,i=t.has(Ye.HttpTransferCacheOptions);for(let{\u0275providers:n,\u0275kind:a}of e)t.add(a),n.length&&c.push(n);return q2([[],Sc(),t.has(Ye.NoHttpTransferCache)||i?[]:s8({}),c])}var U="primary",ht=Symbol("RouteTitle"),i6=class{constructor(c){this.params=c||{}}has(c){return Object.prototype.hasOwnProperty.call(this.params,c)}get(c){if(this.has(c)){let t=this.params[c];return Array.isArray(t)?t[0]:t}return null}getAll(c){if(this.has(c)){let t=this.params[c];return Array.isArray(t)?t:[t]}return[]}get keys(){return Object.keys(this.params)}};function e4(e){return new i6(e)}function Q7(e,c,t){let i=t.path.split("/");if(i.length>e.length||t.pathMatch==="full"&&(c.hasChildren()||i.lengthi[a]===n)}else return e===c}function k8(e){return e.length>0?e[e.length-1]:null}function i3(e){return ye(e)?e:yc(e)?k1(Promise.resolve(e)):M(e)}var K7={exact:N8,subset:I8},S8={exact:J7,subset:to,ignored:()=>!0};function v8(e,c,t){return K7[t.paths](e.root,c.root,t.matrixParams)&&S8[t.queryParams](e.queryParams,c.queryParams)&&!(t.fragment==="exact"&&e.fragment!==c.fragment)}function J7(e,c){return u2(e,c)}function N8(e,c,t){if(!w3(e.segments,c.segments)||!u0(e.segments,c.segments,t)||e.numberOfChildren!==c.numberOfChildren)return!1;for(let i in c.children)if(!e.children[i]||!N8(e.children[i],c.children[i],t))return!1;return!0}function to(e,c){return Object.keys(c).length<=Object.keys(e).length&&Object.keys(c).every(t=>w8(e[t],c[t]))}function I8(e,c,t){return A8(e,c,c.segments,t)}function A8(e,c,t,i){if(e.segments.length>t.length){let n=e.segments.slice(0,t.length);return!(!w3(n,t)||c.hasChildren()||!u0(n,t,i))}else if(e.segments.length===t.length){if(!w3(e.segments,t)||!u0(e.segments,t,i))return!1;for(let n in c.children)if(!e.children[n]||!I8(e.children[n],c.children[n],i))return!1;return!0}else{let n=t.slice(0,e.segments.length),a=t.slice(e.segments.length);return!w3(e.segments,n)||!u0(e.segments,n,i)||!e.children[U]?!1:A8(e.children[U],c,a,i)}}function u0(e,c,t){return c.every((i,n)=>S8[t](e[n].parameters,i.parameters))}var J2=class{constructor(c=new a1([],{}),t={},i=null){this.root=c,this.queryParams=t,this.fragment=i}get queryParamMap(){return this._queryParamMap??=e4(this.queryParams),this._queryParamMap}toString(){return co.serialize(this)}},a1=class{constructor(c,t){this.segments=c,this.children=t,this.parent=null,Object.values(t).forEach(i=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return g0(this)}},y3=class{constructor(c,t){this.path=c,this.parameters=t}get parameterMap(){return this._parameterMap??=e4(this.parameters),this._parameterMap}toString(){return E8(this)}};function eo(e,c){return w3(e,c)&&e.every((t,i)=>u2(t.parameters,c[i].parameters))}function w3(e,c){return e.length!==c.length?!1:e.every((t,i)=>t.path===c[i].path)}function io(e,c){let t=[];return Object.entries(e.children).forEach(([i,n])=>{i===U&&(t=t.concat(c(n,i)))}),Object.entries(e.children).forEach(([i,n])=>{i!==U&&(t=t.concat(c(n,i)))}),t}var ft=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:()=>new ct,providedIn:"root"})}}return e})(),ct=class{parse(c){let t=new a6(c);return new J2(t.parseRootSegment(),t.parseQueryParams(),t.parseFragment())}serialize(c){let t=`/${X4(c.root,!0)}`,i=oo(c.queryParams),n=typeof c.fragment=="string"?`#${no(c.fragment)}`:"";return`${t}${i}${n}`}},co=new ct;function g0(e){return e.segments.map(c=>E8(c)).join("/")}function X4(e,c){if(!e.hasChildren())return g0(e);if(c){let t=e.children[U]?X4(e.children[U],!1):"",i=[];return Object.entries(e.children).forEach(([n,a])=>{n!==U&&i.push(`${n}:${X4(a,!1)}`)}),i.length>0?`${t}(${i.join("//")})`:t}else{let t=io(e,(i,n)=>n===U?[X4(e.children[U],!1)]:[`${n}:${X4(i,!1)}`]);return Object.keys(e.children).length===1&&e.children[U]!=null?`${g0(e)}/${t[0]}`:`${g0(e)}/(${t.join("//")})`}}function D8(e){return encodeURIComponent(e).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function f0(e){return D8(e).replace(/%3B/gi,";")}function no(e){return encodeURI(e)}function n6(e){return D8(e).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function b0(e){return decodeURIComponent(e)}function _8(e){return b0(e.replace(/\+/g,"%20"))}function E8(e){return`${n6(e.path)}${ao(e.parameters)}`}function ao(e){return Object.entries(e).map(([c,t])=>`;${n6(c)}=${n6(t)}`).join("")}function oo(e){let c=Object.entries(e).map(([t,i])=>Array.isArray(i)?i.map(n=>`${f0(t)}=${f0(n)}`).join("&"):`${f0(t)}=${f0(i)}`).filter(t=>t);return c.length?`?${c.join("&")}`:""}var so=/^[^\/()?;#]+/;function Ke(e){let c=e.match(so);return c?c[0]:""}var ro=/^[^\/()?;=#]+/;function lo(e){let c=e.match(ro);return c?c[0]:""}var mo=/^[^=?&#]+/;function ho(e){let c=e.match(mo);return c?c[0]:""}var fo=/^[^&#]+/;function po(e){let c=e.match(fo);return c?c[0]:""}var a6=class{constructor(c){this.url=c,this.remaining=c}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new a1([],{}):new a1([],this.parseChildren())}parseQueryParams(){let c={};if(this.consumeOptional("?"))do this.parseQueryParam(c);while(this.consumeOptional("&"));return c}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let c=[];for(this.peekStartsWith("(")||c.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),c.push(this.parseSegment());let t={};this.peekStartsWith("/(")&&(this.capture("/"),t=this.parseParens(!0));let i={};return this.peekStartsWith("(")&&(i=this.parseParens(!1)),(c.length>0||Object.keys(t).length>0)&&(i[U]=new a1(c,t)),i}parseSegment(){let c=Ke(this.remaining);if(c===""&&this.peekStartsWith(";"))throw new l1(4009,!1);return this.capture(c),new y3(b0(c),this.parseMatrixParams())}parseMatrixParams(){let c={};for(;this.consumeOptional(";");)this.parseParam(c);return c}parseParam(c){let t=lo(this.remaining);if(!t)return;this.capture(t);let i="";if(this.consumeOptional("=")){let n=Ke(this.remaining);n&&(i=n,this.capture(i))}c[b0(t)]=b0(i)}parseQueryParam(c){let t=ho(this.remaining);if(!t)return;this.capture(t);let i="";if(this.consumeOptional("=")){let o=po(this.remaining);o&&(i=o,this.capture(i))}let n=_8(t),a=_8(i);if(c.hasOwnProperty(n)){let o=c[n];Array.isArray(o)||(o=[o],c[n]=o),o.push(a)}else c[n]=a}parseParens(c){let t={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let i=Ke(this.remaining),n=this.remaining[i.length];if(n!=="/"&&n!==")"&&n!==";")throw new l1(4010,!1);let a;i.indexOf(":")>-1?(a=i.slice(0,i.indexOf(":")),this.capture(a),this.capture(":")):c&&(a=U);let o=this.parseChildren();t[a]=Object.keys(o).length===1?o[U]:new a1([],o),this.consumeOptional("//")}return t}peekStartsWith(c){return this.remaining.startsWith(c)}consumeOptional(c){return this.peekStartsWith(c)?(this.remaining=this.remaining.substring(c.length),!0):!1}capture(c){if(!this.consumeOptional(c))throw new l1(4011,!1)}};function T8(e){return e.segments.length>0?new a1([],{[U]:e}):e}function R8(e){let c={};for(let[i,n]of Object.entries(e.children)){let a=R8(n);if(i===U&&a.segments.length===0&&a.hasChildren())for(let[o,s]of Object.entries(a.children))c[o]=s;else(a.segments.length>0||a.hasChildren())&&(c[i]=a)}let t=new a1(e.segments,c);return uo(t)}function uo(e){if(e.numberOfChildren===1&&e.children[U]){let c=e.children[U];return new a1(e.segments.concat(c.segments),c.children)}return e}function i4(e){return e instanceof J2}function go(e,c,t=null,i=null){let n=F8(e);return O8(n,c,t,i)}function F8(e){let c;function t(a){let o={};for(let r of a.children){let l=t(r);o[r.outlet]=l}let s=new a1(a.url,o);return a===e&&(c=s),s}let i=t(e.root),n=T8(i);return c??n}function O8(e,c,t,i){let n=e;for(;n.parent;)n=n.parent;if(c.length===0)return Je(n,n,n,t,i);let a=bo(c);if(a.toRoot())return Je(n,n,new a1([],{}),t,i);let o=vo(a,n,e),s=o.processChildren?tt(o.segmentGroup,o.index,a.commands):H8(o.segmentGroup,o.index,a.commands);return Je(n,o.segmentGroup,s,t,i)}function v0(e){return typeof e=="object"&&e!=null&&!e.outlets&&!e.segmentPath}function nt(e){return typeof e=="object"&&e!=null&&e.outlets}function Je(e,c,t,i,n){let a={};i&&Object.entries(i).forEach(([r,l])=>{a[r]=Array.isArray(l)?l.map(d=>`${d}`):`${l}`});let o;e===c?o=t:o=P8(e,c,t);let s=T8(R8(o));return new J2(s,a,n)}function P8(e,c,t){let i={};return Object.entries(e.children).forEach(([n,a])=>{a===c?i[n]=t:i[n]=P8(a,c,t)}),new a1(e.segments,i)}var _0=class{constructor(c,t,i){if(this.isAbsolute=c,this.numberOfDoubleDots=t,this.commands=i,c&&i.length>0&&v0(i[0]))throw new l1(4003,!1);let n=i.find(nt);if(n&&n!==k8(i))throw new l1(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function bo(e){if(typeof e[0]=="string"&&e.length===1&&e[0]==="/")return new _0(!0,0,e);let c=0,t=!1,i=e.reduce((n,a,o)=>{if(typeof a=="object"&&a!=null){if(a.outlets){let s={};return Object.entries(a.outlets).forEach(([r,l])=>{s[r]=typeof l=="string"?l.split("/"):l}),[...n,{outlets:s}]}if(a.segmentPath)return[...n,a.segmentPath]}return typeof a!="string"?[...n,a]:o===0?(a.split("/").forEach((s,r)=>{r==0&&s==="."||(r==0&&s===""?t=!0:s===".."?c++:s!=""&&n.push(s))}),n):[...n,a]},[]);return new _0(t,c,i)}var J3=class{constructor(c,t,i){this.segmentGroup=c,this.processChildren=t,this.index=i}};function vo(e,c,t){if(e.isAbsolute)return new J3(c,!0,0);if(!t)return new J3(c,!1,NaN);if(t.parent===null)return new J3(t,!0,0);let i=v0(e.commands[0])?0:1,n=t.segments.length-1+i;return _o(t,n,e.numberOfDoubleDots)}function _o(e,c,t){let i=e,n=c,a=t;for(;a>n;){if(a-=n,i=i.parent,!i)throw new l1(4005,!1);n=i.segments.length}return new J3(i,!1,n-a)}function zo(e){return nt(e[0])?e[0].outlets:{[U]:e}}function H8(e,c,t){if(e??=new a1([],{}),e.segments.length===0&&e.hasChildren())return tt(e,c,t);let i=Co(e,c,t),n=t.slice(i.commandIndex);if(i.match&&i.pathIndexa!==U)&&e.children[U]&&e.numberOfChildren===1&&e.children[U].segments.length===0){let a=tt(e.children[U],c,t);return new a1(e.segments,a.children)}return Object.entries(i).forEach(([a,o])=>{typeof o=="string"&&(o=[o]),o!==null&&(n[a]=H8(e.children[a],c,o))}),Object.entries(e.children).forEach(([a,o])=>{i[a]===void 0&&(n[a]=o)}),new a1(e.segments,n)}}function Co(e,c,t){let i=0,n=c,a={match:!1,pathIndex:0,commandIndex:0};for(;n=t.length)return a;let o=e.segments[n],s=t[i];if(nt(s))break;let r=`${s}`,l=i0&&r===void 0)break;if(r&&l&&typeof l=="object"&&l.outlets===void 0){if(!C8(r,l,o))return a;i+=2}else{if(!C8(r,{},o))return a;i++}n++}return{match:!0,pathIndex:n,commandIndex:i}}function o6(e,c,t){let i=e.segments.slice(0,c),n=0;for(;n{typeof i=="string"&&(i=[i]),i!==null&&(c[t]=o6(new a1([],{}),0,i))}),c}function z8(e){let c={};return Object.entries(e).forEach(([t,i])=>c[t]=`${i}`),c}function C8(e,c,t){return e==t.path&&u2(c,t.parameters)}var et="imperative",y1=function(e){return e[e.NavigationStart=0]="NavigationStart",e[e.NavigationEnd=1]="NavigationEnd",e[e.NavigationCancel=2]="NavigationCancel",e[e.NavigationError=3]="NavigationError",e[e.RoutesRecognized=4]="RoutesRecognized",e[e.ResolveStart=5]="ResolveStart",e[e.ResolveEnd=6]="ResolveEnd",e[e.GuardsCheckStart=7]="GuardsCheckStart",e[e.GuardsCheckEnd=8]="GuardsCheckEnd",e[e.RouteConfigLoadStart=9]="RouteConfigLoadStart",e[e.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",e[e.ChildActivationStart=11]="ChildActivationStart",e[e.ChildActivationEnd=12]="ChildActivationEnd",e[e.ActivationStart=13]="ActivationStart",e[e.ActivationEnd=14]="ActivationEnd",e[e.Scroll=15]="Scroll",e[e.NavigationSkipped=16]="NavigationSkipped",e}(y1||{}),J1=class{constructor(c,t){this.id=c,this.url=t}},g2=class extends J1{constructor(c,t,i="imperative",n=null){super(c,t),this.type=y1.NavigationStart,this.navigationTrigger=i,this.restoredState=n}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},G1=class extends J1{constructor(c,t,i){super(c,t),this.urlAfterRedirects=i,this.type=y1.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},W1=function(e){return e[e.Redirect=0]="Redirect",e[e.SupersededByNewNavigation=1]="SupersededByNewNavigation",e[e.NoDataFromResolver=2]="NoDataFromResolver",e[e.GuardRejected=3]="GuardRejected",e}(W1||{}),z0=function(e){return e[e.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",e[e.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",e}(z0||{}),t3=class extends J1{constructor(c,t,i,n){super(c,t),this.reason=i,this.code=n,this.type=y1.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},e3=class extends J1{constructor(c,t,i,n){super(c,t),this.reason=i,this.code=n,this.type=y1.NavigationSkipped}},at=class extends J1{constructor(c,t,i,n){super(c,t),this.error=i,this.target=n,this.type=y1.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},C0=class extends J1{constructor(c,t,i,n){super(c,t),this.urlAfterRedirects=i,this.state=n,this.type=y1.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},s6=class extends J1{constructor(c,t,i,n){super(c,t),this.urlAfterRedirects=i,this.state=n,this.type=y1.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},r6=class extends J1{constructor(c,t,i,n,a){super(c,t),this.urlAfterRedirects=i,this.state=n,this.shouldActivate=a,this.type=y1.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},l6=class extends J1{constructor(c,t,i,n){super(c,t),this.urlAfterRedirects=i,this.state=n,this.type=y1.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},d6=class extends J1{constructor(c,t,i,n){super(c,t),this.urlAfterRedirects=i,this.state=n,this.type=y1.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},m6=class{constructor(c){this.route=c,this.type=y1.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},h6=class{constructor(c){this.route=c,this.type=y1.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},f6=class{constructor(c){this.snapshot=c,this.type=y1.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},p6=class{constructor(c){this.snapshot=c,this.type=y1.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},u6=class{constructor(c){this.snapshot=c,this.type=y1.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},g6=class{constructor(c){this.snapshot=c,this.type=y1.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},M0=class{constructor(c,t,i){this.routerEvent=c,this.position=t,this.anchor=i,this.type=y1.Scroll}toString(){let c=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${c}')`}},ot=class{},st=class{constructor(c){this.url=c}};var b6=class{constructor(){this.outlet=null,this.route=null,this.injector=null,this.children=new k3,this.attachRef=null}},k3=(()=>{class e{constructor(){this.contexts=new Map}onChildOutletCreated(t,i){let n=this.getOrCreateContext(t);n.outlet=i,this.contexts.set(t,n)}onChildOutletDestroyed(t){let i=this.getContext(t);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){let t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let i=this.getContext(t);return i||(i=new b6,this.contexts.set(t,i)),i}getContext(t){return this.contexts.get(t)||null}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),x0=class{constructor(c){this._root=c}get root(){return this._root.value}parent(c){let t=this.pathFromRoot(c);return t.length>1?t[t.length-2]:null}children(c){let t=v6(c,this._root);return t?t.children.map(i=>i.value):[]}firstChild(c){let t=v6(c,this._root);return t&&t.children.length>0?t.children[0].value:null}siblings(c){let t=_6(c,this._root);return t.length<2?[]:t[t.length-2].children.map(n=>n.value).filter(n=>n!==c)}pathFromRoot(c){return _6(c,this._root).map(t=>t.value)}};function v6(e,c){if(e===c.value)return c;for(let t of c.children){let i=v6(e,t);if(i)return i}return null}function _6(e,c){if(e===c.value)return[c];for(let t of c.children){let i=_6(e,t);if(i.length)return i.unshift(c),i}return[]}var q1=class{constructor(c,t){this.value=c,this.children=t}toString(){return`TreeNode(${this.value})`}};function K3(e){let c={};return e&&e.children.forEach(t=>c[t.value.outlet]=t),c}var L0=class extends x0{constructor(c,t){super(c),this.snapshot=t,N6(this,c)}toString(){return this.snapshot.toString()}};function V8(e){let c=xo(e),t=new w1([new y3("",{})]),i=new w1({}),n=new w1({}),a=new w1({}),o=new w1(""),s=new t2(t,i,a,o,n,U,e,c.root);return s.snapshot=c.root,new L0(new q1(s,[]),c)}function xo(e){let c={},t={},i={},n="",a=new rt([],c,i,n,t,U,e,null,{});return new y0("",new q1(a,[]))}var t2=class{constructor(c,t,i,n,a,o,s,r){this.urlSubject=c,this.paramsSubject=t,this.queryParamsSubject=i,this.fragmentSubject=n,this.dataSubject=a,this.outlet=o,this.component=s,this._futureSnapshot=r,this.title=this.dataSubject?.pipe(V(l=>l[ht]))??M(void 0),this.url=c,this.params=t,this.queryParams=i,this.fragment=n,this.data=a}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(V(c=>e4(c))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(V(c=>e4(c))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function S6(e,c,t="emptyOnly"){let i,{routeConfig:n}=e;return c!==null&&(t==="always"||n?.path===""||!c.component&&!c.routeConfig?.loadComponent)?i={params:f(f({},c.params),e.params),data:f(f({},c.data),e.data),resolve:f(f(f(f({},e.data),c.data),n?.data),e._resolvedData)}:i={params:f({},e.params),data:f({},e.data),resolve:f(f({},e.data),e._resolvedData??{})},n&&j8(n)&&(i.resolve[ht]=n.title),i}var rt=class{get title(){return this.data?.[ht]}constructor(c,t,i,n,a,o,s,r,l){this.url=c,this.params=t,this.queryParams=i,this.fragment=n,this.data=a,this.outlet=o,this.component=s,this.routeConfig=r,this._resolve=l}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=e4(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=e4(this.queryParams),this._queryParamMap}toString(){let c=this.url.map(i=>i.toString()).join("/"),t=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${c}', path:'${t}')`}},y0=class extends x0{constructor(c,t){super(t),this.url=c,N6(this,t)}toString(){return B8(this._root)}};function N6(e,c){c.value._routerState=e,c.children.forEach(t=>N6(e,t))}function B8(e){let c=e.children.length>0?` { ${e.children.map(B8).join(", ")} } `:"";return`${e.value}${c}`}function t6(e){if(e.snapshot){let c=e.snapshot,t=e._futureSnapshot;e.snapshot=t,u2(c.queryParams,t.queryParams)||e.queryParamsSubject.next(t.queryParams),c.fragment!==t.fragment&&e.fragmentSubject.next(t.fragment),u2(c.params,t.params)||e.paramsSubject.next(t.params),X7(c.url,t.url)||e.urlSubject.next(t.url),u2(c.data,t.data)||e.dataSubject.next(t.data)}else e.snapshot=e._futureSnapshot,e.dataSubject.next(e._futureSnapshot.data)}function z6(e,c){let t=u2(e.params,c.params)&&eo(e.url,c.url),i=!e.parent!=!c.parent;return t&&!i&&(!e.parent||z6(e.parent,c.parent))}function j8(e){return typeof e.title=="string"||e.title===null}var S3=(()=>{class e{constructor(){this.activated=null,this._activatedRoute=null,this.name=U,this.activateEvents=new o1,this.deactivateEvents=new o1,this.attachEvents=new o1,this.detachEvents=new o1,this.parentContexts=v(k3),this.location=v(_3),this.changeDetector=v(L1),this.environmentInjector=v(W2),this.inputBinder=v(N0,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(t){if(t.name){let{firstChange:i,previousValue:n}=t.name;if(i)return;this.isTrackedInParentContexts(n)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(n)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(t){return this.parentContexts.getContext(t)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let t=this.parentContexts.getContext(this.name);t?.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new l1(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new l1(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new l1(4012,!1);this.location.detach();let t=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(t.instance),t}attach(t,i){this.activated=t,this._activatedRoute=i,this.location.insert(t.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(t.instance)}deactivate(){if(this.activated){let t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,i){if(this.isActivated)throw new l1(4013,!1);this._activatedRoute=t;let n=this.location,o=t.snapshot.component,s=this.parentContexts.getOrCreateContext(this.name).children,r=new C6(t,s,n.injector);this.activated=n.createComponent(o,{index:n.length,injector:r,environmentInjector:i??this.environmentInjector}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[S1]})}}return e})(),C6=class e{__ngOutletInjector(c){return new e(this.route,this.childContexts,c)}constructor(c,t,i){this.route=c,this.childContexts=t,this.parent=i}get(c,t){return c===t2?this.route:c===k3?this.childContexts:this.parent.get(c,t)}},N0=new x(""),M8=(()=>{class e{constructor(){this.outletDataSubscriptions=new Map}bindActivatedRouteToOutletComponent(t){this.unsubscribeFromRouteData(t),this.subscribeToRouteData(t)}unsubscribeFromRouteData(t){this.outletDataSubscriptions.get(t)?.unsubscribe(),this.outletDataSubscriptions.delete(t)}subscribeToRouteData(t){let{activatedRoute:i}=t,n=U3([i.queryParams,i.params,i.data]).pipe(M1(([a,o,s],r)=>(s=f(f(f({},a),o),s),r===0?M(s):Promise.resolve(s)))).subscribe(a=>{if(!t.isActivated||!t.activatedComponentRef||t.activatedRoute!==i||i.component===null){this.unsubscribeFromRouteData(t);return}let o=Ic(i.component);if(!o){this.unsubscribeFromRouteData(t);return}for(let{templateName:s}of o.inputs)t.activatedComponentRef.setInput(s,a[s])});this.outletDataSubscriptions.set(t,n)}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})();function Lo(e,c,t){let i=lt(e,c._root,t?t._root:void 0);return new L0(i,c)}function lt(e,c,t){if(t&&e.shouldReuseRoute(c.value,t.value.snapshot)){let i=t.value;i._futureSnapshot=c.value;let n=yo(e,c,t);return new q1(i,n)}else{if(e.shouldAttach(c.value)){let a=e.retrieve(c.value);if(a!==null){let o=a.route;return o.value._futureSnapshot=c.value,o.children=c.children.map(s=>lt(e,s)),o}}let i=wo(c.value),n=c.children.map(a=>lt(e,a));return new q1(i,n)}}function yo(e,c,t){return c.children.map(i=>{for(let n of t.children)if(e.shouldReuseRoute(i.value,n.value.snapshot))return lt(e,i,n);return lt(e,i)})}function wo(e){return new t2(new w1(e.url),new w1(e.params),new w1(e.queryParams),new w1(e.fragment),new w1(e.data),e.outlet,e.component,e)}var U8="ngNavigationCancelingError";function q8(e,c){let{redirectTo:t,navigationBehaviorOptions:i}=i4(c)?{redirectTo:c,navigationBehaviorOptions:void 0}:c,n=W8(!1,W1.Redirect);return n.url=t,n.navigationBehaviorOptions=i,n}function W8(e,c){let t=new Error(`NavigationCancelingError: ${e||""}`);return t[U8]=!0,t.cancellationCode=c,t}function ko(e){return G8(e)&&i4(e.url)}function G8(e){return!!e&&e[U8]}var So=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=A({type:e,selectors:[["ng-component"]],standalone:!0,features:[E],decls:1,vars:0,template:function(i,n){i&1&&O(0,"router-outlet")},dependencies:[S3],encapsulation:2})}}return e})();function No(e,c){return e.providers&&!e._injector&&(e._injector=Ee(e.providers,c,`Route: ${e.path}`)),e._injector??c}function I6(e){let c=e.children&&e.children.map(I6),t=c?j(f({},e),{children:c}):f({},e);return!t.component&&!t.loadComponent&&(c||t.loadChildren)&&t.outlet&&t.outlet!==U&&(t.component=So),t}function b2(e){return e.outlet||U}function Io(e,c){let t=e.filter(i=>b2(i)===c);return t.push(...e.filter(i=>b2(i)!==c)),t}function pt(e){if(!e)return null;if(e.routeConfig?._injector)return e.routeConfig._injector;for(let c=e.parent;c;c=c.parent){let t=c.routeConfig;if(t?._loadedInjector)return t._loadedInjector;if(t?._injector)return t._injector}return null}var Ao=(e,c,t,i)=>V(n=>(new M6(c,n.targetRouterState,n.currentRouterState,t,i).activate(e),n)),M6=class{constructor(c,t,i,n,a){this.routeReuseStrategy=c,this.futureState=t,this.currState=i,this.forwardEvent=n,this.inputBindingEnabled=a}activate(c){let t=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(t,i,c),t6(this.futureState.root),this.activateChildRoutes(t,i,c)}deactivateChildRoutes(c,t,i){let n=K3(t);c.children.forEach(a=>{let o=a.value.outlet;this.deactivateRoutes(a,n[o],i),delete n[o]}),Object.values(n).forEach(a=>{this.deactivateRouteAndItsChildren(a,i)})}deactivateRoutes(c,t,i){let n=c.value,a=t?t.value:null;if(n===a)if(n.component){let o=i.getContext(n.outlet);o&&this.deactivateChildRoutes(c,t,o.children)}else this.deactivateChildRoutes(c,t,i);else a&&this.deactivateRouteAndItsChildren(t,i)}deactivateRouteAndItsChildren(c,t){c.value.component&&this.routeReuseStrategy.shouldDetach(c.value.snapshot)?this.detachAndStoreRouteSubtree(c,t):this.deactivateRouteAndOutlet(c,t)}detachAndStoreRouteSubtree(c,t){let i=t.getContext(c.value.outlet),n=i&&c.value.component?i.children:t,a=K3(c);for(let o of Object.values(a))this.deactivateRouteAndItsChildren(o,n);if(i&&i.outlet){let o=i.outlet.detach(),s=i.children.onOutletDeactivated();this.routeReuseStrategy.store(c.value.snapshot,{componentRef:o,route:c,contexts:s})}}deactivateRouteAndOutlet(c,t){let i=t.getContext(c.value.outlet),n=i&&c.value.component?i.children:t,a=K3(c);for(let o of Object.values(a))this.deactivateRouteAndItsChildren(o,n);i&&(i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated()),i.attachRef=null,i.route=null)}activateChildRoutes(c,t,i){let n=K3(t);c.children.forEach(a=>{this.activateRoutes(a,n[a.value.outlet],i),this.forwardEvent(new g6(a.value.snapshot))}),c.children.length&&this.forwardEvent(new p6(c.value.snapshot))}activateRoutes(c,t,i){let n=c.value,a=t?t.value:null;if(t6(n),n===a)if(n.component){let o=i.getOrCreateContext(n.outlet);this.activateChildRoutes(c,t,o.children)}else this.activateChildRoutes(c,t,i);else if(n.component){let o=i.getOrCreateContext(n.outlet);if(this.routeReuseStrategy.shouldAttach(n.snapshot)){let s=this.routeReuseStrategy.retrieve(n.snapshot);this.routeReuseStrategy.store(n.snapshot,null),o.children.onOutletReAttached(s.contexts),o.attachRef=s.componentRef,o.route=s.route.value,o.outlet&&o.outlet.attach(s.componentRef,s.route.value),t6(s.route.value),this.activateChildRoutes(c,null,o.children)}else{let s=pt(n.snapshot);o.attachRef=null,o.route=n,o.injector=s,o.outlet&&o.outlet.activateWith(n,o.injector),this.activateChildRoutes(c,null,o.children)}}else this.activateChildRoutes(c,null,i)}},w0=class{constructor(c){this.path=c,this.route=this.path[this.path.length-1]}},t4=class{constructor(c,t){this.component=c,this.route=t}};function Do(e,c,t){let i=e._root,n=c?c._root:null;return K4(i,n,t,[i.value])}function Eo(e){let c=e.routeConfig?e.routeConfig.canActivateChild:null;return!c||c.length===0?null:{node:e,guards:c}}function n4(e,c){let t=Symbol(),i=c.get(e,t);return i===t?typeof e=="function"&&!oc(e)?e:c.get(e):i}function K4(e,c,t,i,n={canDeactivateChecks:[],canActivateChecks:[]}){let a=K3(c);return e.children.forEach(o=>{To(o,a[o.value.outlet],t,i.concat([o.value]),n),delete a[o.value.outlet]}),Object.entries(a).forEach(([o,s])=>it(s,t.getContext(o),n)),n}function To(e,c,t,i,n={canDeactivateChecks:[],canActivateChecks:[]}){let a=e.value,o=c?c.value:null,s=t?t.getContext(e.value.outlet):null;if(o&&a.routeConfig===o.routeConfig){let r=Ro(o,a,a.routeConfig.runGuardsAndResolvers);r?n.canActivateChecks.push(new w0(i)):(a.data=o.data,a._resolvedData=o._resolvedData),a.component?K4(e,c,s?s.children:null,i,n):K4(e,c,t,i,n),r&&s&&s.outlet&&s.outlet.isActivated&&n.canDeactivateChecks.push(new t4(s.outlet.component,o))}else o&&it(c,s,n),n.canActivateChecks.push(new w0(i)),a.component?K4(e,null,s?s.children:null,i,n):K4(e,null,t,i,n);return n}function Ro(e,c,t){if(typeof t=="function")return t(e,c);switch(t){case"pathParamsChange":return!w3(e.url,c.url);case"pathParamsOrQueryParamsChange":return!w3(e.url,c.url)||!u2(e.queryParams,c.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!z6(e,c)||!u2(e.queryParams,c.queryParams);case"paramsChange":default:return!z6(e,c)}}function it(e,c,t){let i=K3(e),n=e.value;Object.entries(i).forEach(([a,o])=>{n.component?c?it(o,c.children.getContext(a),t):it(o,null,t):it(o,c,t)}),n.component?c&&c.outlet&&c.outlet.isActivated?t.canDeactivateChecks.push(new t4(c.outlet.component,n)):t.canDeactivateChecks.push(new t4(null,n)):t.canDeactivateChecks.push(new t4(null,n))}function ut(e){return typeof e=="function"}function Fo(e){return typeof e=="boolean"}function Oo(e){return e&&ut(e.canLoad)}function Po(e){return e&&ut(e.canActivate)}function Ho(e){return e&&ut(e.canActivateChild)}function Vo(e){return e&&ut(e.canDeactivate)}function Bo(e){return e&&ut(e.canMatch)}function $8(e){return e instanceof tc||e?.name==="EmptyError"}var p0=Symbol("INITIAL_VALUE");function c4(){return M1(e=>U3(e.map(c=>c.pipe(r1(1),C1(p0)))).pipe(V(c=>{for(let t of c)if(t!==!0){if(t===p0)return p0;if(t===!1||t instanceof J2)return t}return!0}),c1(c=>c!==p0),r1(1)))}function jo(e,c){return H1(t=>{let{targetSnapshot:i,currentSnapshot:n,guards:{canActivateChecks:a,canDeactivateChecks:o}}=t;return o.length===0&&a.length===0?M(j(f({},t),{guardsResult:!0})):Uo(o,i,n,e).pipe(H1(s=>s&&Fo(s)?qo(i,a,e,c):M(s)),V(s=>j(f({},t),{guardsResult:s})))})}function Uo(e,c,t,i){return k1(e).pipe(H1(n=>Yo(n.component,n.route,t,c,i)),U2(n=>n!==!0,!0))}function qo(e,c,t,i){return k1(c).pipe(V2(n=>qt(Go(n.route.parent,i),Wo(n.route,i),Zo(e,n.path,t),$o(e,n.route,t))),U2(n=>n!==!0,!0))}function Wo(e,c){return e!==null&&c&&c(new u6(e)),M(!0)}function Go(e,c){return e!==null&&c&&c(new f6(e)),M(!0)}function $o(e,c,t){let i=c.routeConfig?c.routeConfig.canActivate:null;if(!i||i.length===0)return M(!0);let n=i.map(a=>p3(()=>{let o=pt(c)??t,s=n4(a,o),r=Po(s)?s.canActivate(c,e):d2(o,()=>s(c,e));return i3(r).pipe(U2())}));return M(n).pipe(c4())}function Zo(e,c,t){let i=c[c.length-1],a=c.slice(0,c.length-1).reverse().map(o=>Eo(o)).filter(o=>o!==null).map(o=>p3(()=>{let s=o.guards.map(r=>{let l=pt(o.node)??t,d=n4(r,l),g=Ho(d)?d.canActivateChild(i,e):d2(l,()=>d(i,e));return i3(g).pipe(U2())});return M(s).pipe(c4())}));return M(a).pipe(c4())}function Yo(e,c,t,i,n){let a=c&&c.routeConfig?c.routeConfig.canDeactivate:null;if(!a||a.length===0)return M(!0);let o=a.map(s=>{let r=pt(c)??n,l=n4(s,r),d=Vo(l)?l.canDeactivate(e,c,t,i):d2(r,()=>l(e,c,t,i));return i3(d).pipe(U2())});return M(o).pipe(c4())}function Qo(e,c,t,i){let n=c.canLoad;if(n===void 0||n.length===0)return M(!0);let a=n.map(o=>{let s=n4(o,e),r=Oo(s)?s.canLoad(c,t):d2(e,()=>s(c,t));return i3(r)});return M(a).pipe(c4(),Z8(i))}function Z8(e){return Ji(m1(c=>{if(i4(c))throw q8(e,c)}),V(c=>c===!0))}function Xo(e,c,t,i){let n=c.canMatch;if(!n||n.length===0)return M(!0);let a=n.map(o=>{let s=n4(o,e),r=Bo(s)?s.canMatch(c,t):d2(e,()=>s(c,t));return i3(r)});return M(a).pipe(c4(),Z8(i))}var dt=class{constructor(c){this.segmentGroup=c||null}},k0=class extends Error{constructor(c){super(),this.urlTree=c}};function X3(e){return f3(new dt(e))}function Ko(e){return f3(new l1(4e3,!1))}function Jo(e){return f3(W8(!1,W1.GuardRejected))}var x6=class{constructor(c,t){this.urlSerializer=c,this.urlTree=t}lineralizeSegments(c,t){let i=[],n=t.root;for(;;){if(i=i.concat(n.segments),n.numberOfChildren===0)return M(i);if(n.numberOfChildren>1||!n.children[U])return Ko(c.redirectTo);n=n.children[U]}}applyRedirectCommands(c,t,i){let n=this.applyRedirectCreateUrlTree(t,this.urlSerializer.parse(t),c,i);if(t.startsWith("/"))throw new k0(n);return n}applyRedirectCreateUrlTree(c,t,i,n){let a=this.createSegmentGroup(c,t.root,i,n);return new J2(a,this.createQueryParams(t.queryParams,this.urlTree.queryParams),t.fragment)}createQueryParams(c,t){let i={};return Object.entries(c).forEach(([n,a])=>{if(typeof a=="string"&&a.startsWith(":")){let s=a.substring(1);i[n]=t[s]}else i[n]=a}),i}createSegmentGroup(c,t,i,n){let a=this.createSegments(c,t.segments,i,n),o={};return Object.entries(t.children).forEach(([s,r])=>{o[s]=this.createSegmentGroup(c,r,i,n)}),new a1(a,o)}createSegments(c,t,i,n){return t.map(a=>a.path.startsWith(":")?this.findPosParam(c,a,n):this.findOrReturn(a,i))}findPosParam(c,t,i){let n=i[t.path.substring(1)];if(!n)throw new l1(4001,!1);return n}findOrReturn(c,t){let i=0;for(let n of t){if(n.path===c.path)return t.splice(i),n;i++}return c}},L6={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function ts(e,c,t,i,n){let a=A6(e,c,t);return a.matched?(i=No(c,i),Xo(i,c,t,n).pipe(V(o=>o===!0?a:f({},L6)))):M(a)}function A6(e,c,t){if(c.path==="**")return es(t);if(c.path==="")return c.pathMatch==="full"&&(e.hasChildren()||t.length>0)?f({},L6):{matched:!0,consumedSegments:[],remainingSegments:t,parameters:{},positionalParamSegments:{}};let n=(c.matcher||Q7)(t,e,c);if(!n)return f({},L6);let a={};Object.entries(n.posParams??{}).forEach(([s,r])=>{a[s]=r.path});let o=n.consumed.length>0?f(f({},a),n.consumed[n.consumed.length-1].parameters):a;return{matched:!0,consumedSegments:n.consumed,remainingSegments:t.slice(n.consumed.length),parameters:o,positionalParamSegments:n.posParams??{}}}function es(e){return{matched:!0,parameters:e.length>0?k8(e).parameters:{},consumedSegments:e,remainingSegments:[],positionalParamSegments:{}}}function x8(e,c,t,i){return t.length>0&&ns(e,t,i)?{segmentGroup:new a1(c,cs(i,new a1(t,e.children))),slicedSegments:[]}:t.length===0&&as(e,t,i)?{segmentGroup:new a1(e.segments,is(e,t,i,e.children)),slicedSegments:t}:{segmentGroup:new a1(e.segments,e.children),slicedSegments:t}}function is(e,c,t,i){let n={};for(let a of t)if(I0(e,c,a)&&!i[b2(a)]){let o=new a1([],{});n[b2(a)]=o}return f(f({},i),n)}function cs(e,c){let t={};t[U]=c;for(let i of e)if(i.path===""&&b2(i)!==U){let n=new a1([],{});t[b2(i)]=n}return t}function ns(e,c,t){return t.some(i=>I0(e,c,i)&&b2(i)!==U)}function as(e,c,t){return t.some(i=>I0(e,c,i))}function I0(e,c,t){return(e.hasChildren()||c.length>0)&&t.pathMatch==="full"?!1:t.path===""}function os(e,c,t,i){return b2(e)!==i&&(i===U||!I0(c,t,e))?!1:A6(c,e,t).matched}function ss(e,c,t){return c.length===0&&!e.children[t]}var y6=class{};function rs(e,c,t,i,n,a,o="emptyOnly"){return new w6(e,c,t,i,n,o,a).recognize()}var ls=31,w6=class{constructor(c,t,i,n,a,o,s){this.injector=c,this.configLoader=t,this.rootComponentType=i,this.config=n,this.urlTree=a,this.paramsInheritanceStrategy=o,this.urlSerializer=s,this.applyRedirects=new x6(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(c){return new l1(4002,`'${c.segmentGroup}'`)}recognize(){let c=x8(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(c).pipe(V(t=>{let i=new rt([],Object.freeze({}),Object.freeze(f({},this.urlTree.queryParams)),this.urlTree.fragment,{},U,this.rootComponentType,null,{}),n=new q1(i,t),a=new y0("",n),o=go(i,[],this.urlTree.queryParams,this.urlTree.fragment);return o.queryParams=this.urlTree.queryParams,a.url=this.urlSerializer.serialize(o),this.inheritParamsAndData(a._root,null),{state:a,tree:o}}))}match(c){return this.processSegmentGroup(this.injector,this.config,c,U).pipe(H2(i=>{if(i instanceof k0)return this.urlTree=i.urlTree,this.match(i.urlTree.root);throw i instanceof dt?this.noMatchError(i):i}))}inheritParamsAndData(c,t){let i=c.value,n=S6(i,t,this.paramsInheritanceStrategy);i.params=Object.freeze(n.params),i.data=Object.freeze(n.data),c.children.forEach(a=>this.inheritParamsAndData(a,i))}processSegmentGroup(c,t,i,n){return i.segments.length===0&&i.hasChildren()?this.processChildren(c,t,i):this.processSegment(c,t,i,i.segments,n,!0).pipe(V(a=>a instanceof q1?[a]:[]))}processChildren(c,t,i){let n=[];for(let a of Object.keys(i.children))a==="primary"?n.unshift(a):n.push(a);return k1(n).pipe(V2(a=>{let o=i.children[a],s=Io(t,a);return this.processSegmentGroup(c,s,o,a)}),nc((a,o)=>(a.push(...o),a)),ke(null),cc(),H1(a=>{if(a===null)return X3(i);let o=Y8(a);return ds(o),M(o)}))}processSegment(c,t,i,n,a,o){return k1(t).pipe(V2(s=>this.processSegmentAgainstRoute(s._injector??c,t,s,i,n,a,o).pipe(H2(r=>{if(r instanceof dt)return M(null);throw r}))),U2(s=>!!s),H2(s=>{if($8(s))return ss(i,n,a)?M(new y6):X3(i);throw s}))}processSegmentAgainstRoute(c,t,i,n,a,o,s){return os(i,n,a,o)?i.redirectTo===void 0?this.matchSegmentAgainstRoute(c,n,i,a,o):this.allowRedirects&&s?this.expandSegmentAgainstRouteUsingRedirect(c,n,t,i,a,o):X3(n):X3(n)}expandSegmentAgainstRouteUsingRedirect(c,t,i,n,a,o){let{matched:s,consumedSegments:r,positionalParamSegments:l,remainingSegments:d}=A6(t,n,a);if(!s)return X3(t);n.redirectTo.startsWith("/")&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>ls&&(this.allowRedirects=!1));let g=this.applyRedirects.applyRedirectCommands(r,n.redirectTo,l);return this.applyRedirects.lineralizeSegments(n,g).pipe(H1(z=>this.processSegment(c,i,t,z.concat(d),o,!1)))}matchSegmentAgainstRoute(c,t,i,n,a){let o=ts(t,i,n,c,this.urlSerializer);return i.path==="**"&&(t.children={}),o.pipe(M1(s=>s.matched?(c=i._injector??c,this.getChildConfig(c,i,n).pipe(M1(({routes:r})=>{let l=i._loadedInjector??c,{consumedSegments:d,remainingSegments:g,parameters:z}=s,y=new rt(d,z,Object.freeze(f({},this.urlTree.queryParams)),this.urlTree.fragment,hs(i),b2(i),i.component??i._loadedComponent??null,i,fs(i)),{segmentGroup:q,slicedSegments:k}=x8(t,d,g,r);if(k.length===0&&q.hasChildren())return this.processChildren(l,r,q).pipe(V(e1=>e1===null?null:new q1(y,e1)));if(r.length===0&&k.length===0)return M(new q1(y,[]));let P=b2(i)===a;return this.processSegment(l,r,q,k,P?U:a,!0).pipe(V(e1=>new q1(y,e1 instanceof q1?[e1]:[])))}))):X3(t)))}getChildConfig(c,t,i){return t.children?M({routes:t.children,injector:c}):t.loadChildren?t._loadedRoutes!==void 0?M({routes:t._loadedRoutes,injector:t._loadedInjector}):Qo(c,t,i,this.urlSerializer).pipe(H1(n=>n?this.configLoader.loadChildren(c,t).pipe(m1(a=>{t._loadedRoutes=a.routes,t._loadedInjector=a.injector})):Jo(t))):M({routes:[],injector:c})}};function ds(e){e.sort((c,t)=>c.value.outlet===U?-1:t.value.outlet===U?1:c.value.outlet.localeCompare(t.value.outlet))}function ms(e){let c=e.value.routeConfig;return c&&c.path===""}function Y8(e){let c=[],t=new Set;for(let i of e){if(!ms(i)){c.push(i);continue}let n=c.find(a=>i.value.routeConfig===a.value.routeConfig);n!==void 0?(n.children.push(...i.children),t.add(n)):c.push(i)}for(let i of t){let n=Y8(i.children);c.push(new q1(i.value,n))}return c.filter(i=>!t.has(i))}function hs(e){return e.data||{}}function fs(e){return e.resolve||{}}function ps(e,c,t,i,n,a){return H1(o=>rs(e,c,t,i,o.extractedUrl,n,a).pipe(V(({state:s,tree:r})=>j(f({},o),{targetSnapshot:s,urlAfterRedirects:r}))))}function us(e,c){return H1(t=>{let{targetSnapshot:i,guards:{canActivateChecks:n}}=t;if(!n.length)return M(t);let a=new Set(n.map(r=>r.route)),o=new Set;for(let r of a)if(!o.has(r))for(let l of Q8(r))o.add(l);let s=0;return k1(o).pipe(V2(r=>a.has(r)?gs(r,i,e,c):(r.data=S6(r,r.parent,e).resolve,M(void 0))),m1(()=>s++),Se(1),H1(r=>s===o.size?M(t):l2))})}function Q8(e){let c=e.children.map(t=>Q8(t)).flat();return[e,...c]}function gs(e,c,t,i){let n=e.routeConfig,a=e._resolve;return n?.title!==void 0&&!j8(n)&&(a[ht]=n.title),bs(a,e,c,i).pipe(V(o=>(e._resolvedData=o,e.data=S6(e,e.parent,t).resolve,null)))}function bs(e,c,t,i){let n=c6(e);if(n.length===0)return M({});let a={};return k1(n).pipe(H1(o=>vs(e[o],c,t,i).pipe(U2(),m1(s=>{a[o]=s}))),Se(1),S4(a),H2(o=>$8(o)?l2:f3(o)))}function vs(e,c,t,i){let n=pt(c)??i,a=n4(e,n),o=a.resolve?a.resolve(c,t):d2(n,()=>a(c,t));return i3(o)}function e6(e){return M1(c=>{let t=e(c);return t?k1(t).pipe(V(()=>c)):M(c)})}var X8=(()=>{class e{buildTitle(t){let i,n=t.root;for(;n!==void 0;)i=this.getResolvedTitleForRoute(n)??i,n=n.children.find(a=>a.outlet===U);return i}getResolvedTitleForRoute(t){return t.data[ht]}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:()=>v(_s),providedIn:"root"})}}return e})(),_s=(()=>{class e extends X8{constructor(t){super(),this.title=t}updateTitle(t){let i=this.buildTitle(t);i!==void 0&&this.title.setTitle(i)}static{this.\u0275fac=function(i){return new(i||e)(u(g8))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),gt=new x("",{providedIn:"root",factory:()=>({})}),mt=new x(""),D6=(()=>{class e{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=v(e0)}loadComponent(t){if(this.componentLoaders.get(t))return this.componentLoaders.get(t);if(t._loadedComponent)return M(t._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(t);let i=i3(t.loadComponent()).pipe(V(K8),m1(a=>{this.onLoadEndListener&&this.onLoadEndListener(t),t._loadedComponent=a}),j2(()=>{this.componentLoaders.delete(t)})),n=new Le(i,()=>new N).pipe(xe());return this.componentLoaders.set(t,n),n}loadChildren(t,i){if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return M({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);let a=zs(i,this.compiler,t,this.onLoadEndListener).pipe(j2(()=>{this.childrenLoaders.delete(i)})),o=new Le(a,()=>new N).pipe(xe());return this.childrenLoaders.set(i,o),o}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function zs(e,c,t,i){return i3(e.loadChildren()).pipe(V(K8),H1(n=>n instanceof Cc||Array.isArray(n)?M(n):k1(c.compileModuleAsync(n))),V(n=>{i&&i(e);let a,o,s=!1;return Array.isArray(n)?(o=n,s=!0):(a=n.create(t).injector,o=a.get(mt,[],{optional:!0,self:!0}).flat()),{routes:o.map(I6),injector:a}}))}function Cs(e){return e&&typeof e=="object"&&"default"in e}function K8(e){return Cs(e)?e.default:e}var E6=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:()=>v(Ms),providedIn:"root"})}}return e})(),Ms=(()=>{class e{shouldProcessUrl(t){return!0}extract(t){return t}merge(t,i){return t}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),J8=new x(""),t5=new x("");function xs(e,c,t){let i=e.get(t5),n=e.get(T);return e.get(w).runOutsideAngular(()=>{if(!n.startViewTransition||i.skipNextTransition)return i.skipNextTransition=!1,new Promise(l=>setTimeout(l));let a,o=new Promise(l=>{a=l}),s=n.startViewTransition(()=>(a(),Ls(e))),{onViewTransitionCreated:r}=i;return r&&d2(e,()=>r({transition:s,from:c,to:t})),o})}function Ls(e){return new Promise(c=>{Ae(c,{injector:e})})}var T6=(()=>{class e{get hasRequestedNavigation(){return this.navigationId!==0}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new N,this.transitionAbortSubject=new N,this.configLoader=v(D6),this.environmentInjector=v(W2),this.urlSerializer=v(ft),this.rootContexts=v(k3),this.location=v(D2),this.inputBindingEnabled=v(N0,{optional:!0})!==null,this.titleStrategy=v(X8),this.options=v(gt,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=v(E6),this.createViewTransition=v(J8,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>M(void 0),this.rootComponentType=null;let t=n=>this.events.next(new m6(n)),i=n=>this.events.next(new h6(n));this.configLoader.onLoadEndListener=i,this.configLoader.onLoadStartListener=t}complete(){this.transitions?.complete()}handleNavigationRequest(t){let i=++this.navigationId;this.transitions?.next(j(f(f({},this.transitions.value),t),{id:i}))}setupNavigations(t,i,n){return this.transitions=new w1({id:0,currentUrlTree:i,currentRawUrl:i,extractedUrl:this.urlHandlingStrategy.extract(i),urlAfterRedirects:this.urlHandlingStrategy.extract(i),rawUrl:i,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:et,restoredState:null,currentSnapshot:n.snapshot,targetSnapshot:null,currentRouterState:n,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(c1(a=>a.id!==0),V(a=>j(f({},a),{extractedUrl:this.urlHandlingStrategy.extract(a.rawUrl)})),M1(a=>{let o=!1,s=!1;return M(a).pipe(M1(r=>{if(this.navigationId>a.id)return this.cancelNavigationTransition(a,"",W1.SupersededByNewNavigation),l2;this.currentTransition=a,this.currentNavigation={id:r.id,initialUrl:r.rawUrl,extractedUrl:r.extractedUrl,trigger:r.source,extras:r.extras,previousNavigation:this.lastSuccessfulNavigation?j(f({},this.lastSuccessfulNavigation),{previousNavigation:null}):null};let l=!t.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),d=r.extras.onSameUrlNavigation??t.onSameUrlNavigation;if(!l&&d!=="reload"){let g="";return this.events.next(new e3(r.id,this.urlSerializer.serialize(r.rawUrl),g,z0.IgnoredSameUrlNavigation)),r.resolve(null),l2}if(this.urlHandlingStrategy.shouldProcessUrl(r.rawUrl))return M(r).pipe(M1(g=>{let z=this.transitions?.getValue();return this.events.next(new g2(g.id,this.urlSerializer.serialize(g.extractedUrl),g.source,g.restoredState)),z!==this.transitions?.getValue()?l2:Promise.resolve(g)}),ps(this.environmentInjector,this.configLoader,this.rootComponentType,t.config,this.urlSerializer,this.paramsInheritanceStrategy),m1(g=>{a.targetSnapshot=g.targetSnapshot,a.urlAfterRedirects=g.urlAfterRedirects,this.currentNavigation=j(f({},this.currentNavigation),{finalUrl:g.urlAfterRedirects});let z=new C0(g.id,this.urlSerializer.serialize(g.extractedUrl),this.urlSerializer.serialize(g.urlAfterRedirects),g.targetSnapshot);this.events.next(z)}));if(l&&this.urlHandlingStrategy.shouldProcessUrl(r.currentRawUrl)){let{id:g,extractedUrl:z,source:y,restoredState:q,extras:k}=r,P=new g2(g,this.urlSerializer.serialize(z),y,q);this.events.next(P);let e1=V8(this.rootComponentType).snapshot;return this.currentTransition=a=j(f({},r),{targetSnapshot:e1,urlAfterRedirects:z,extras:j(f({},k),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.finalUrl=z,M(a)}else{let g="";return this.events.next(new e3(r.id,this.urlSerializer.serialize(r.extractedUrl),g,z0.IgnoredByUrlHandlingStrategy)),r.resolve(null),l2}}),m1(r=>{let l=new s6(r.id,this.urlSerializer.serialize(r.extractedUrl),this.urlSerializer.serialize(r.urlAfterRedirects),r.targetSnapshot);this.events.next(l)}),V(r=>(this.currentTransition=a=j(f({},r),{guards:Do(r.targetSnapshot,r.currentSnapshot,this.rootContexts)}),a)),jo(this.environmentInjector,r=>this.events.next(r)),m1(r=>{if(a.guardsResult=r.guardsResult,i4(r.guardsResult))throw q8(this.urlSerializer,r.guardsResult);let l=new r6(r.id,this.urlSerializer.serialize(r.extractedUrl),this.urlSerializer.serialize(r.urlAfterRedirects),r.targetSnapshot,!!r.guardsResult);this.events.next(l)}),c1(r=>r.guardsResult?!0:(this.cancelNavigationTransition(r,"",W1.GuardRejected),!1)),e6(r=>{if(r.guards.canActivateChecks.length)return M(r).pipe(m1(l=>{let d=new l6(l.id,this.urlSerializer.serialize(l.extractedUrl),this.urlSerializer.serialize(l.urlAfterRedirects),l.targetSnapshot);this.events.next(d)}),M1(l=>{let d=!1;return M(l).pipe(us(this.paramsInheritanceStrategy,this.environmentInjector),m1({next:()=>d=!0,complete:()=>{d||this.cancelNavigationTransition(l,"",W1.NoDataFromResolver)}}))}),m1(l=>{let d=new d6(l.id,this.urlSerializer.serialize(l.extractedUrl),this.urlSerializer.serialize(l.urlAfterRedirects),l.targetSnapshot);this.events.next(d)}))}),e6(r=>{let l=d=>{let g=[];d.routeConfig?.loadComponent&&!d.routeConfig._loadedComponent&&g.push(this.configLoader.loadComponent(d.routeConfig).pipe(m1(z=>{d.component=z}),V(()=>{})));for(let z of d.children)g.push(...l(z));return g};return U3(l(r.targetSnapshot.root)).pipe(ke(null),r1(1))}),e6(()=>this.afterPreactivation()),M1(()=>{let{currentSnapshot:r,targetSnapshot:l}=a,d=this.createViewTransition?.(this.environmentInjector,r.root,l.root);return d?k1(d).pipe(V(()=>a)):M(a)}),V(r=>{let l=Lo(t.routeReuseStrategy,r.targetSnapshot,r.currentRouterState);return this.currentTransition=a=j(f({},r),{targetRouterState:l}),this.currentNavigation.targetRouterState=l,a}),m1(()=>{this.events.next(new ot)}),Ao(this.rootContexts,t.routeReuseStrategy,r=>this.events.next(r),this.inputBindingEnabled),r1(1),m1({next:r=>{o=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new G1(r.id,this.urlSerializer.serialize(r.extractedUrl),this.urlSerializer.serialize(r.urlAfterRedirects))),this.titleStrategy?.updateTitle(r.targetRouterState.snapshot),r.resolve(!0)},complete:()=>{o=!0}}),X(this.transitionAbortSubject.pipe(m1(r=>{throw r}))),j2(()=>{!o&&!s&&this.cancelNavigationTransition(a,"",W1.SupersededByNewNavigation),this.currentTransition?.id===a.id&&(this.currentNavigation=null,this.currentTransition=null)}),H2(r=>{if(s=!0,G8(r))this.events.next(new t3(a.id,this.urlSerializer.serialize(a.extractedUrl),r.message,r.cancellationCode)),ko(r)?this.events.next(new st(r.url)):a.resolve(!1);else{this.events.next(new at(a.id,this.urlSerializer.serialize(a.extractedUrl),r,a.targetSnapshot??void 0));try{a.resolve(t.errorHandler(r))}catch(l){this.options.resolveNavigationPromiseOnError?a.resolve(!1):a.reject(l)}}return l2}))}))}cancelNavigationTransition(t,i,n){let a=new t3(t.id,this.urlSerializer.serialize(t.extractedUrl),i,n);this.events.next(a),t.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function ys(e){return e!==et}var ws=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:()=>v(ks),providedIn:"root"})}}return e})(),k6=class{shouldDetach(c){return!1}store(c,t){}shouldAttach(c){return!1}retrieve(c){return null}shouldReuseRoute(c,t){return c.routeConfig===t.routeConfig}},ks=(()=>{class e extends k6{static{this.\u0275fac=(()=>{let t;return function(n){return(t||(t=V1(e)))(n||e)}})()}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),e5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:()=>v(Ss),providedIn:"root"})}}return e})(),Ss=(()=>{class e extends e5{constructor(){super(...arguments),this.location=v(D2),this.urlSerializer=v(ft),this.options=v(gt,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=v(E6),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new J2,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=V8(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(t){return this.location.subscribe(i=>{i.type==="popstate"&&t(i.url,i.state)})}handleRouterEvent(t,i){if(t instanceof g2)this.stateMemento=this.createStateMemento();else if(t instanceof e3)this.rawUrlTree=i.initialUrl;else if(t instanceof C0){if(this.urlUpdateStrategy==="eager"&&!i.extras.skipLocationChange){let n=this.urlHandlingStrategy.merge(i.finalUrl,i.initialUrl);this.setBrowserUrl(n,i)}}else t instanceof ot?(this.currentUrlTree=i.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(i.finalUrl,i.initialUrl),this.routerState=i.targetRouterState,this.urlUpdateStrategy==="deferred"&&(i.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,i))):t instanceof t3&&(t.code===W1.GuardRejected||t.code===W1.NoDataFromResolver)?this.restoreHistory(i):t instanceof at?this.restoreHistory(i,!0):t instanceof G1&&(this.lastSuccessfulId=t.id,this.currentPageId=this.browserPageId)}setBrowserUrl(t,i){let n=this.urlSerializer.serialize(t);if(this.location.isCurrentPathEqualTo(n)||i.extras.replaceUrl){let a=this.browserPageId,o=f(f({},i.extras.state),this.generateNgRouterState(i.id,a));this.location.replaceState(n,"",o)}else{let a=f(f({},i.extras.state),this.generateNgRouterState(i.id,this.browserPageId+1));this.location.go(n,"",a)}}restoreHistory(t,i=!1){if(this.canceledNavigationResolution==="computed"){let n=this.browserPageId,a=this.currentPageId-n;a!==0?this.location.historyGo(a):this.currentUrlTree===t.finalUrl&&a===0&&(this.resetState(t),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(i&&this.resetState(t),this.resetUrlToCurrentUrlTree())}resetState(t){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(t,i){return this.canceledNavigationResolution==="computed"?{navigationId:t,\u0275routerPageId:i}:{navigationId:t}}static{this.\u0275fac=(()=>{let t;return function(n){return(t||(t=V1(e)))(n||e)}})()}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),J4=function(e){return e[e.COMPLETE=0]="COMPLETE",e[e.FAILED=1]="FAILED",e[e.REDIRECTING=2]="REDIRECTING",e}(J4||{});function i5(e,c){e.events.pipe(c1(t=>t instanceof G1||t instanceof t3||t instanceof at||t instanceof e3),V(t=>t instanceof G1||t instanceof e3?J4.COMPLETE:(t instanceof t3?t.code===W1.Redirect||t.code===W1.SupersededByNewNavigation:!1)?J4.REDIRECTING:J4.FAILED),c1(t=>t!==J4.REDIRECTING),r1(1)).subscribe(()=>{c()})}function Ns(e){throw e}var Is={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},As={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},A1=(()=>{class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.isNgZoneEnabled=!1,this.console=v(t0),this.stateManager=v(e5),this.options=v(gt,{optional:!0})||{},this.pendingTasks=v(Xt),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=v(T6),this.urlSerializer=v(ft),this.location=v(D2),this.urlHandlingStrategy=v(E6),this._events=new N,this.errorHandler=this.options.errorHandler||Ns,this.navigated=!1,this.routeReuseStrategy=v(ws),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=v(mt,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!v(N0,{optional:!0}),this.eventsSubscription=new P1,this.isNgZoneEnabled=v(w)instanceof w&&w.isInAngularZone(),this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:t=>{this.console.warn(t)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){let t=this.navigationTransitions.events.subscribe(i=>{try{let n=this.navigationTransitions.currentTransition,a=this.navigationTransitions.currentNavigation;if(n!==null&&a!==null){if(this.stateManager.handleRouterEvent(i,a),i instanceof t3&&i.code!==W1.Redirect&&i.code!==W1.SupersededByNewNavigation)this.navigated=!0;else if(i instanceof G1)this.navigated=!0;else if(i instanceof st){let o=this.urlHandlingStrategy.merge(i.url,n.currentRawUrl),s={info:n.extras.info,skipLocationChange:n.extras.skipLocationChange,replaceUrl:this.urlUpdateStrategy==="eager"||ys(n.source)};this.scheduleNavigation(o,et,null,s,{resolve:n.resolve,reject:n.reject,promise:n.promise})}}Es(i)&&this._events.next(i)}catch(n){this.navigationTransitions.transitionAbortSubject.next(n)}});this.eventsSubscription.add(t)}resetRootComponentType(t){this.routerState.root.component=t,this.navigationTransitions.rootComponentType=t}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),et,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((t,i)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(t,"popstate",i)},0)})}navigateToSyncWithBrowser(t,i,n){let a={replaceUrl:!0},o=n?.navigationId?n:null;if(n){let r=f({},n);delete r.navigationId,delete r.\u0275routerPageId,Object.keys(r).length!==0&&(a.state=r)}let s=this.parseUrl(t);this.scheduleNavigation(s,i,o,a)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(t){this.config=t.map(I6),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(t,i={}){let{relativeTo:n,queryParams:a,fragment:o,queryParamsHandling:s,preserveFragment:r}=i,l=r?this.currentUrlTree.fragment:o,d=null;switch(s){case"merge":d=f(f({},this.currentUrlTree.queryParams),a);break;case"preserve":d=this.currentUrlTree.queryParams;break;default:d=a||null}d!==null&&(d=this.removeEmptyProps(d));let g;try{let z=n?n.snapshot:this.routerState.snapshot.root;g=F8(z)}catch{(typeof t[0]!="string"||!t[0].startsWith("/"))&&(t=[]),g=this.currentUrlTree.root}return O8(g,t,d,l??null)}navigateByUrl(t,i={skipLocationChange:!1}){let n=i4(t)?t:this.parseUrl(t),a=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(a,et,null,i)}navigate(t,i={skipLocationChange:!1}){return Ds(t),this.navigateByUrl(this.createUrlTree(t,i),i)}serializeUrl(t){return this.urlSerializer.serialize(t)}parseUrl(t){try{return this.urlSerializer.parse(t)}catch{return this.urlSerializer.parse("/")}}isActive(t,i){let n;if(i===!0?n=f({},Is):i===!1?n=f({},As):n=i,i4(t))return v8(this.currentUrlTree,t,n);let a=this.parseUrl(t);return v8(this.currentUrlTree,a,n)}removeEmptyProps(t){return Object.entries(t).reduce((i,[n,a])=>(a!=null&&(i[n]=a),i),{})}scheduleNavigation(t,i,n,a,o){if(this.disposed)return Promise.resolve(!1);let s,r,l;o?(s=o.resolve,r=o.reject,l=o.promise):l=new Promise((g,z)=>{s=g,r=z});let d=this.pendingTasks.add();return i5(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(d))}),this.navigationTransitions.handleNavigationRequest({source:i,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:t,extras:a,resolve:s,reject:r,promise:l,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),l.catch(g=>Promise.reject(g))}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function Ds(e){for(let c=0;c{class e{constructor(t,i,n,a,o,s){this.router=t,this.route=i,this.tabIndexAttribute=n,this.renderer=a,this.el=o,this.locationStrategy=s,this.href=null,this.commands=null,this.onChanges=new N,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1;let r=o.nativeElement.tagName?.toLowerCase();this.isAnchorElement=r==="a"||r==="area",this.isAnchorElement?this.subscription=t.events.subscribe(l=>{l instanceof G1&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}setTabIndexIfNotOnNativeEl(t){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",t)}ngOnChanges(t){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(t){t!=null?(this.commands=Array.isArray(t)?t:[t],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(t,i,n,a,o){let s=this.urlTree;if(s===null||this.isAnchorElement&&(t!==0||i||n||a||o||typeof this.target=="string"&&this.target!="_self"))return!0;let r={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(s,r),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let t=this.urlTree;this.href=t!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(t)):null;let i=this.href===null?null:_c(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",i)}applyAttributeValue(t,i){let n=this.renderer,a=this.el.nativeElement;i!==null?n.setAttribute(a,t,i):n.removeAttribute(a,t)}get urlTree(){return this.commands===null?null:this.router.createUrlTree(this.commands,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static{this.\u0275fac=function(i){return new(i||e)(m(A1),m(t2),G2("tabindex"),m(T4),m(D),m(P4))}}static{this.\u0275dir=H({type:e,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(i,n){i&1&&_1("click",function(o){return n.onClick(o.button,o.ctrlKey,o.shiftKey,o.altKey,o.metaKey)}),i&2&&J("target",n.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[I.HasDecoratorInputTransform,"preserveFragment","preserveFragment",t1],skipLocationChange:[I.HasDecoratorInputTransform,"skipLocationChange","skipLocationChange",t1],replaceUrl:[I.HasDecoratorInputTransform,"replaceUrl","replaceUrl",t1],routerLink:"routerLink"},standalone:!0,features:[v1,S1]})}}return e})(),c5=(()=>{class e{get isActive(){return this._isActive}constructor(t,i,n,a,o){this.router=t,this.element=i,this.renderer=n,this.cdr=a,this.link=o,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new o1,this.routerEventsSubscription=t.events.subscribe(s=>{s instanceof G1&&this.update()})}ngAfterContentInit(){M(this.links.changes,M(null)).pipe(k4()).subscribe(t=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let t=[...this.links.toArray(),this.link].filter(i=>!!i).map(i=>i.onChanges);this.linkInputChangesSubscription=k1(t).pipe(k4()).subscribe(i=>{this._isActive!==this.isLinkActive(this.router)(i)&&this.update()})}set routerLinkActive(t){let i=Array.isArray(t)?t:t.split(" ");this.classes=i.filter(n=>!!n)}ngOnChanges(t){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let t=this.hasActiveLinks();this.classes.forEach(i=>{t?this.renderer.addClass(this.element.nativeElement,i):this.renderer.removeClass(this.element.nativeElement,i)}),t&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==t&&(this._isActive=t,this.cdr.markForCheck(),this.isActiveChange.emit(t))})}isLinkActive(t){let i=Ts(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return n=>{let a=n.urlTree;return a?t.isActive(a,i):!1}}hasActiveLinks(){let t=this.isLinkActive(this.router);return this.link&&t(this.link)||this.links.some(t)}static{this.\u0275fac=function(i){return new(i||e)(m(A1),m(D),m(T4),m(L1),m(e2,8))}}static{this.\u0275dir=H({type:e,selectors:[["","routerLinkActive",""]],contentQueries:function(i,n,a){if(i&1&&p1(a,e2,5),i&2){let o;W(o=G())&&(n.links=o)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[S1]})}}return e})();function Ts(e){return!!e.paths}var S0=class{};var Rs=(()=>{class e{constructor(t,i,n,a,o){this.router=t,this.injector=n,this.preloadingStrategy=a,this.loader=o}setUpPreloading(){this.subscription=this.router.events.pipe(c1(t=>t instanceof G1),V2(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(t,i){let n=[];for(let a of i){a.providers&&!a._injector&&(a._injector=Ee(a.providers,t,`Route: ${a.path}`));let o=a._injector??t,s=a._loadedInjector??o;(a.loadChildren&&!a._loadedRoutes&&a.canLoad===void 0||a.loadComponent&&!a._loadedComponent)&&n.push(this.preloadConfig(o,a)),(a.children||a._loadedRoutes)&&n.push(this.processRoutes(s,a.children??a._loadedRoutes))}return k1(n).pipe(k4())}preloadConfig(t,i){return this.preloadingStrategy.preload(i,()=>{let n;i.loadChildren&&i.canLoad===void 0?n=this.loader.loadChildren(t,i):n=M(null);let a=n.pipe(H1(o=>o===null?M(void 0):(i._loadedRoutes=o.routes,i._loadedInjector=o.injector,this.processRoutes(o.injector??t,o.routes))));if(i.loadComponent&&!i._loadedComponent){let o=this.loader.loadComponent(i);return k1([a,o]).pipe(k4())}else return a})}static{this.\u0275fac=function(i){return new(i||e)(u(A1),u(e0),u(W2),u(S0),u(D6))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),n5=new x(""),Fs=(()=>{class e{constructor(t,i,n,a,o={}){this.urlSerializer=t,this.transitions=i,this.viewportScroller=n,this.zone=a,this.options=o,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},this.environmentInjector=v(W2),o.scrollPositionRestoration||="disabled",o.anchorScrolling||="disabled"}init(){this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(t=>{t instanceof g2?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=t.navigationTrigger,this.restoredId=t.restoredState?t.restoredState.navigationId:0):t instanceof G1?(this.lastId=t.id,this.scheduleScrollEvent(t,this.urlSerializer.parse(t.urlAfterRedirects).fragment)):t instanceof e3&&t.code===z0.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(t,this.urlSerializer.parse(t.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(t=>{t instanceof M0&&(t.position?this.options.scrollPositionRestoration==="top"?this.viewportScroller.scrollToPosition([0,0]):this.options.scrollPositionRestoration==="enabled"&&this.viewportScroller.scrollToPosition(t.position):t.anchor&&this.options.anchorScrolling==="enabled"?this.viewportScroller.scrollToAnchor(t.anchor):this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(t,i){this.zone.runOutsideAngular(()=>w2(this,null,function*(){yield new Promise(n=>{setTimeout(()=>{n()}),Ae(()=>{n()},{injector:this.environmentInjector})}),this.zone.run(()=>{this.transitions.events.next(new M0(t,this.lastSource==="popstate"?this.store[this.restoredId]:null,i))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static{this.\u0275fac=function(i){b3()}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})();function a5(e,...c){return q2([{provide:mt,multi:!0,useValue:e},[],{provide:t2,useFactory:o5,deps:[A1]},{provide:O4,multi:!0,useFactory:s5},c.map(t=>t.\u0275providers)])}function o5(e){return e.routerState.root}function bt(e,c){return{\u0275kind:e,\u0275providers:c}}function s5(){let e=v(F1);return c=>{let t=e.get(M3);if(c!==t.components[0])return;let i=e.get(A1),n=e.get(r5);e.get(R6)===1&&i.initialNavigation(),e.get(l5,null,Ne.Optional)?.setUpPreloading(),e.get(n5,null,Ne.Optional)?.init(),i.resetRootComponentType(t.componentTypes[0]),n.closed||(n.next(),n.complete(),n.unsubscribe())}}var r5=new x("",{factory:()=>new N}),R6=new x("",{providedIn:"root",factory:()=>1});function Os(){return bt(2,[{provide:R6,useValue:0},{provide:Y3,multi:!0,deps:[F1],useFactory:c=>{let t=c.get(Ec,Promise.resolve());return()=>t.then(()=>new Promise(i=>{let n=c.get(A1),a=c.get(r5);i5(n,()=>{i(!0)}),c.get(T6).afterPreactivation=()=>(i(!0),a.closed?M(void 0):a),n.initialNavigation()}))}}])}function Ps(){return bt(3,[{provide:Y3,multi:!0,useFactory:()=>{let c=v(A1);return()=>{c.setUpLocationChangeListener()}}},{provide:R6,useValue:2}])}var l5=new x("");function Hs(e){return bt(0,[{provide:l5,useExisting:Rs},{provide:S0,useExisting:e}])}function Vs(){return bt(8,[M8,{provide:N0,useExisting:M8}])}function Bs(e){let c=[{provide:J8,useValue:xs},{provide:t5,useValue:f({skipNextTransition:!!e?.skipInitialTransition},e)}];return bt(9,c)}var L8=new x("ROUTER_FORROOT_GUARD"),js=[D2,{provide:ft,useClass:ct},A1,k3,{provide:t2,useFactory:o5,deps:[A1]},D6,[]],v2=(()=>{class e{constructor(t){}static forRoot(t,i){return{ngModule:e,providers:[js,[],{provide:mt,multi:!0,useValue:t},{provide:L8,useFactory:Gs,deps:[[A1,new Wt,new Ie]]},{provide:gt,useValue:i||{}},i?.useHash?qs():Ws(),Us(),i?.preloadingStrategy?Hs(i.preloadingStrategy).\u0275providers:[],i?.initialNavigation?$s(i):[],i?.bindToComponentInputs?Vs().\u0275providers:[],i?.enableViewTransitions?Bs().\u0275providers:[],Zs()]}}static forChild(t){return{ngModule:e,providers:[{provide:mt,multi:!0,useValue:t}]}}static{this.\u0275fac=function(i){return new(i||e)(u(L8,8))}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({})}}return e})();function Us(){return{provide:n5,useFactory:()=>{let e=v(Hc),c=v(w),t=v(gt),i=v(T6),n=v(ft);return t.scrollOffset&&e.setOffset(t.scrollOffset),new Fs(n,i,e,c,t)}}}function qs(){return{provide:P4,useClass:Rc}}function Ws(){return{provide:P4,useClass:Tc}}function Gs(e){return"guarded"}function $s(e){return[e.initialNavigation==="disabled"?Ps().\u0275providers:[],e.initialNavigation==="enabledBlocking"?Os().\u0275providers:[]]}var y8=new x("");function Zs(){return[{provide:y8,useFactory:s5},{provide:O4,multi:!0,useExisting:y8}]}var d5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=A({type:e,selectors:[["app-home"]],standalone:!0,features:[E],decls:22,vars:0,consts:[[1,"cover",2,"background-image","url('./assets/banner.svg')"],[1,"max-width-constraint","two-columns"],[1,"two-columns-texts"],[1,"two-columns-image"],["src","./assets/df24-stack-announce.gif","alt","devFest 2024 4 themes: mobile, web, cloud and AI"],[1,"banner"],["src","./assets/df24-logo-lockup-taipei.svg","alt","devFest 2024 in Taipei"],[1,"max-width-constraint-with-padding"],["src",vc`https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3615.4486299065966!2d121.53412517537609!3d25.018844777826207!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442a989d9909417%3A0x13a8ef0043681664!2z5ZyL56uL6Ie654Gj5aSn5a245Y2a6ZuF5pWZ5a246aSo!5e0!3m2!1szh-TW!2stw!4v1728984980807!5m2!1szh-TW!2stw`,"width","100%","height","450","allowfullscreen","","loading","lazy","referrerpolicy","no-referrer-when-downgrade",2,"border","0"]],template:function(i,n){i&1&&(O(0,"div",0),h(1,"div",1)(2,"div",2)(3,"h1"),b(4,"DevFest Taipei 2024"),p(),h(5,"p"),b(6,"DevFests \u662F\u7531\u5168\u7403 Google Developer Group (GDG) \u4E3B\u8FA6\u7684\u6280\u8853\u76DB\u6703\uFF0C\u5C08\u70BA\u7576\u5730\u958B\u767C\u8005\u793E\u7FA4\u91CF\u8EAB\u6253\u9020\u3002\u6BCF\u5834 DevFest \u6D3B\u52D5\u7686\u7531\u7576\u5730\u7D44\u7E54\u8005\u7B56\u5283\uFF0C\u5167\u5BB9\u7DCA\u8CBC\u793E\u7FA4\u9700\u6C42\u8207\u8208\u8DA3\u3002\u7121\u8AD6\u662F\u900F\u904E\u5BE6\u4F5C\u5B78\u7FD2\u3001\u5C08\u5BB6\u8B1B\u5EA7\uFF0C\u9084\u662F\u8207\u5FD7\u540C\u9053\u5408\u7684\u958B\u767C\u8005\u5011\u4EA4\u6D41\uFF0C\u53C3\u8207\u8005\u90FD\u80FD\u6DF1\u5165\u63A2\u7D22 Google \u958B\u767C\u8005\u5DE5\u5177\u7684\u61C9\u7528\uFF0C\u5171\u540C\u5408\u4F5C\u8207\u5275\u65B0\u3002"),p(),h(7,"p"),b(8,"DevFest 2024 \u6DB5\u84CB\u5EE3\u6CDB Mobile\u3001Web\u3001Cloud \u53CA AI\uFF0C\u5167\u5BB9\u8C50\u5BCC\u591A\u5143\u3002\u6D3B\u52D5\u5F62\u5F0F\u5305\u62EC\u7CBE\u5F69\u7684\u6F14\u8B1B\u3001\u5BE6\u4F5C\u5DE5\u4F5C\u574A\u3001\u4E92\u52D5\u9AD4\u9A57\u7B49\uFF0C\u4E26\u63D0\u4F9B\u8207 Google \u5DE5\u7A0B\u5E2B\u53CA\u5176\u4ED6\u958B\u767C\u8005\u9762\u5C0D\u9762\u4EA4\u6D41\u7684\u5BF6\u8CB4\u6A5F\u6703\u3002\u4F5C\u70BA\u958B\u767C\u8005\u793E\u7FA4\u7684\u91CD\u8981\u6D3B\u52D5\uFF0CDevFest \u70BA\u958B\u767C\u8005\u63D0\u4F9B\u4E86\u4E00\u500B\u5B78\u7FD2\u65B0\u77E5\u3001\u62D3\u5C55\u4EBA\u8108\uFF0C\u4E26\u5171\u540C\u6210\u9577\u7684\u7D55\u4F73\u76DB\u6703\u3002 "),p()(),h(9,"div",3),O(10,"img",4),p()(),h(11,"div",5)(12,"div"),O(13,"img",6),p()(),h(14,"div",7)(15,"h2"),b(16,"\u5730\u9EDE"),p(),h(17,"p"),b(18,"106 \u53F0\u5317\u5E02\u5927\u5B89\u5340\u7F85\u65AF\u798F\u8DEF\u56DB\u6BB5 1 \u865F \u570B\u7ACB\u81FA\u7063\u5927\u5B78\u535A\u96C5\u6559\u5B78\u9928"),p(),O(19,"iframe",8),h(20,"h2"),b(21,"\u5408\u4F5C\u5925\u4F34"),p()())},styles:[".cover[_ngcontent-%COMP%]{width:100%;height:calc(100dvh - var(--mat-toolbar-standard-height));background-size:cover;background-position:center;background-attachment:fixed;margin-top:-10px}@media (max-width: 599px){.cover[_ngcontent-%COMP%]{padding-bottom:calc(100dvh - var(--mat-toolbar-mobile-height))}}.two-columns[_ngcontent-%COMP%]{display:flex;width:100%}.two-columns[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{padding:10px}.two-columns-texts[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{display:block;font-size:2rem;font-weight:700;margin:.67rem 0rem}.two-columns-texts[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.5rem;line-height:2rem}.two-columns-texts[_ngcontent-%COMP%]{flex:1 1 50%}.two-columns-image[_ngcontent-%COMP%]{max-width:450px}.two-columns-image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%}@media (max-width: 899px){.two-columns[_ngcontent-%COMP%]{flex-wrap:wrap;justify-content:center}.two-columns-texts[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.3rem}}@media (max-width: 599px){.two-columns-texts[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.1rem;line-height:1.6rem}}.banner[_ngcontent-%COMP%]{width:100%;background-color:var(--pastel-blue);padding:50px 0;margin:10px 0}.banner[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{margin:0 auto;max-width:1200px;padding:0 25px}.banner[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;display:block;max-width:600px;margin:0 auto}"]})}}return e})();var O6;try{O6=typeof Intl<"u"&&Intl.v8BreakIterator}catch{O6=!1}var Q=(()=>{class e{constructor(t){this._platformId=t,this.isBrowser=this._platformId?Pc(this._platformId):typeof document=="object"&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!!(window.chrome||O6)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}static{this.\u0275fac=function(i){return new(i||e)(u(m2))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var vt;function Ys(){if(vt==null&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>vt=!0}))}finally{vt=vt||!1}return vt}function c3(e){return Ys()?e:!!e.capture}var a2=function(e){return e[e.NORMAL=0]="NORMAL",e[e.NEGATED=1]="NEGATED",e[e.INVERTED=2]="INVERTED",e}(a2||{}),A0,N3;function D0(){if(N3==null){if(typeof document!="object"||!document||typeof Element!="function"||!Element)return N3=!1,N3;if("scrollBehavior"in document.documentElement.style)N3=!0;else{let e=Element.prototype.scrollTo;e?N3=!/\{\s*\[native code\]\s*\}/.test(e.toString()):N3=!1}}return N3}function o4(){if(typeof document!="object"||!document)return a2.NORMAL;if(A0==null){let e=document.createElement("div"),c=e.style;e.dir="rtl",c.width="1px",c.overflow="auto",c.visibility="hidden",c.pointerEvents="none",c.position="absolute";let t=document.createElement("div"),i=t.style;i.width="2px",i.height="1px",e.appendChild(t),document.body.appendChild(e),A0=a2.NORMAL,e.scrollLeft===0&&(e.scrollLeft=1,A0=e.scrollLeft===0?a2.NEGATED:a2.INVERTED),e.remove()}return A0}var F6;function Qs(){if(F6==null){let e=typeof document<"u"?document.head:null;F6=!!(e&&(e.createShadowRoot||e.attachShadow))}return F6}function m5(e){if(Qs()){let c=e.getRootNode?e.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&c instanceof ShadowRoot)return c}return null}function _t(){let e=typeof document<"u"&&document?document.activeElement:null;for(;e&&e.shadowRoot;){let c=e.shadowRoot.activeElement;if(c===e)break;e=c}return e}function o2(e){return e.composedPath?e.composedPath()[0]:e.target}function zt(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}function z2(e,...c){return c.length?c.some(t=>e[t]):e.altKey||e.shiftKey||e.ctrlKey||e.metaKey}function $1(e){return e!=null&&`${e}`!="false"}function C2(e,c=0){return Xs(e)?Number(e):c}function Xs(e){return!isNaN(parseFloat(e))&&!isNaN(Number(e))}function s4(e){return Array.isArray(e)?e:[e]}function z1(e){return e==null?"":typeof e=="string"?e:`${e}px`}function s2(e){return e instanceof D?e.nativeElement:e}function Ks(e){if(e.type==="characterData"&&e.target instanceof Comment)return!0;if(e.type==="childList"){for(let c=0;c{class e{create(t){return typeof MutationObserver>"u"?null:new MutationObserver(t)}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),Js=(()=>{class e{constructor(t){this._mutationObserverFactory=t,this._observedElements=new Map}ngOnDestroy(){this._observedElements.forEach((t,i)=>this._cleanupObserver(i))}observe(t){let i=s2(t);return new K1(n=>{let o=this._observeElement(i).pipe(V(s=>s.filter(r=>!Ks(r))),c1(s=>!!s.length)).subscribe(n);return()=>{o.unsubscribe(),this._unobserveElement(i)}})}_observeElement(t){if(this._observedElements.has(t))this._observedElements.get(t).count++;else{let i=new N,n=this._mutationObserverFactory.create(a=>i.next(a));n&&n.observe(t,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(t,{observer:n,stream:i,count:1})}return this._observedElements.get(t).stream}_unobserveElement(t){this._observedElements.has(t)&&(this._observedElements.get(t).count--,this._observedElements.get(t).count||this._cleanupObserver(t))}_cleanupObserver(t){if(this._observedElements.has(t)){let{observer:i,stream:n}=this._observedElements.get(t);i&&i.disconnect(),n.complete(),this._observedElements.delete(t)}}static{this.\u0275fac=function(i){return new(i||e)(u(h5))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),E0=(()=>{class e{get disabled(){return this._disabled}set disabled(t){this._disabled=t,this._disabled?this._unsubscribe():this._subscribe()}get debounce(){return this._debounce}set debounce(t){this._debounce=C2(t),this._subscribe()}constructor(t,i,n){this._contentObserver=t,this._elementRef=i,this._ngZone=n,this.event=new o1,this._disabled=!1,this._currentSubscription=null}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();let t=this._contentObserver.observe(this._elementRef);this._ngZone.runOutsideAngular(()=>{this._currentSubscription=(this.debounce?t.pipe(B2(this.debounce)):t).subscribe(this.event)})}_unsubscribe(){this._currentSubscription?.unsubscribe()}static{this.\u0275fac=function(i){return new(i||e)(m(Js),m(D),m(w))}}static{this.\u0275dir=H({type:e,selectors:[["","cdkObserveContent",""]],inputs:{disabled:[I.HasDecoratorInputTransform,"cdkObserveContentDisabled","disabled",t1],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"],standalone:!0,features:[v1]})}}return e})(),T0=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({providers:[h5]})}}return e})();var f5=new Set,I3,tr=(()=>{class e{constructor(t,i){this._platform=t,this._nonce=i,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):ir}matchMedia(t){return(this._platform.WEBKIT||this._platform.BLINK)&&er(t,this._nonce),this._matchMedia(t)}static{this.\u0275fac=function(i){return new(i||e)(u(Q),u(A4,8))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function er(e,c){if(!f5.has(e))try{I3||(I3=document.createElement("style"),c&&I3.setAttribute("nonce",c),I3.setAttribute("type","text/css"),document.head.appendChild(I3)),I3.sheet&&(I3.sheet.insertRule(`@media ${e} {body{ }}`,0),f5.add(e))}catch(t){console.error(t)}}function ir(e){return{matches:e==="all"||e==="",media:e,addListener:()=>{},removeListener:()=>{}}}var u5=(()=>{class e{constructor(t,i){this._mediaMatcher=t,this._zone=i,this._queries=new Map,this._destroySubject=new N}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(t){return p5(s4(t)).some(n=>this._registerQuery(n).mql.matches)}observe(t){let n=p5(s4(t)).map(o=>this._registerQuery(o).observable),a=U3(n);return a=qt(a.pipe(r1(1)),a.pipe(W3(1),B2(0))),a.pipe(V(o=>{let s={matches:!1,breakpoints:{}};return o.forEach(({matches:r,query:l})=>{s.matches=s.matches||r,s.breakpoints[l]=r}),s}))}_registerQuery(t){if(this._queries.has(t))return this._queries.get(t);let i=this._mediaMatcher.matchMedia(t),a={observable:new K1(o=>{let s=r=>this._zone.run(()=>o.next(r));return i.addListener(s),()=>{i.removeListener(s)}}).pipe(C1(i),V(({matches:o})=>({query:t,matches:o})),X(this._destroySubject)),mql:i};return this._queries.set(t,a),a}static{this.\u0275fac=function(i){return new(i||e)(u(tr),u(w))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function p5(e){return e.map(c=>c.split(",")).reduce((c,t)=>c.concat(t)).map(c=>c.trim())}var H6=class{constructor(c,t){this._items=c,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new N,this._typeaheadSubscription=P1.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=i=>i.disabled,this._pressedLetters=[],this.tabOut=new N,this.change=new N,c instanceof $2?this._itemChangesSubscription=c.changes.subscribe(i=>this._itemsChanged(i.toArray())):De(c)&&(this._effectRef=Nc(()=>this._itemsChanged(c()),{injector:t}))}skipPredicate(c){return this._skipPredicateFn=c,this}withWrap(c=!0){return this._wrap=c,this}withVerticalOrientation(c=!0){return this._vertical=c,this}withHorizontalOrientation(c){return this._horizontal=c,this}withAllowedModifierKeys(c){return this._allowedModifierKeys=c,this}withTypeAhead(c=200){return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe(m1(t=>this._pressedLetters.push(t)),B2(c),c1(()=>this._pressedLetters.length>0),V(()=>this._pressedLetters.join(""))).subscribe(t=>{let i=this._getItemsArray();for(let n=1;n!c[a]||this._allowedModifierKeys.indexOf(a)>-1);switch(t){case 9:this.tabOut.next();return;case 40:if(this._vertical&&n){this.setNextItemActive();break}else return;case 38:if(this._vertical&&n){this.setPreviousItemActive();break}else return;case 39:if(this._horizontal&&n){this._horizontal==="rtl"?this.setPreviousItemActive():this.setNextItemActive();break}else return;case 37:if(this._horizontal&&n){this._horizontal==="rtl"?this.setNextItemActive():this.setPreviousItemActive();break}else return;case 36:if(this._homeAndEnd&&n){this.setFirstItemActive();break}else return;case 35:if(this._homeAndEnd&&n){this.setLastItemActive();break}else return;case 33:if(this._pageUpAndDown.enabled&&n){let a=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(a>0?a:0,1);break}else return;case 34:if(this._pageUpAndDown.enabled&&n){let a=this._activeItemIndex+this._pageUpAndDown.delta,o=this._getItemsArray().length;this._setActiveItemByIndex(a=65&&t<=90||t>=48&&t<=57)&&this._letterKeyStream.next(String.fromCharCode(t)));return}this._pressedLetters=[],c.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._getItemsArray().length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(c){let t=this._getItemsArray(),i=typeof c=="number"?c:t.indexOf(c),n=t[i];this._activeItem=n??null,this._activeItemIndex=i}destroy(){this._typeaheadSubscription.unsubscribe(),this._itemChangesSubscription?.unsubscribe(),this._effectRef?.destroy(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(c){this._wrap?this._setActiveInWrapMode(c):this._setActiveInDefaultMode(c)}_setActiveInWrapMode(c){let t=this._getItemsArray();for(let i=1;i<=t.length;i++){let n=(this._activeItemIndex+c*i+t.length)%t.length,a=t[n];if(!this._skipPredicateFn(a)){this.setActiveItem(n);return}}}_setActiveInDefaultMode(c){this._setActiveItemByIndex(this._activeItemIndex+c,c)}_setActiveItemByIndex(c,t){let i=this._getItemsArray();if(i[c]){for(;this._skipPredicateFn(i[c]);)if(c+=t,!i[c])return;this.setActiveItem(c)}}_getItemsArray(){return De(this._items)?this._items():this._items instanceof $2?this._items.toArray():this._items}_itemsChanged(c){if(this._activeItem){let t=c.indexOf(this._activeItem);t>-1&&t!==this._activeItemIndex&&(this._activeItemIndex=t)}}};var l4=class extends H6{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(c){return this._origin=c,this}setActiveItem(c){super.setActiveItem(c),this.activeItem&&this.activeItem.focus(this._origin)}};var D3=(()=>{class e{constructor(t){this._platform=t}isDisabled(t){return t.hasAttribute("disabled")}isVisible(t){return Mr(t)&&getComputedStyle(t).visibility==="visible"}isTabbable(t){if(!this._platform.isBrowser)return!1;let i=Cr(Ir(t));if(i&&(g5(i)===-1||!this.isVisible(i)))return!1;let n=t.nodeName.toLowerCase(),a=g5(t);return t.hasAttribute("contenteditable")?a!==-1:n==="iframe"||n==="object"||this._platform.WEBKIT&&this._platform.IOS&&!Sr(t)?!1:n==="audio"?t.hasAttribute("controls")?a!==-1:!1:n==="video"?a===-1?!1:a!==null?!0:this._platform.FIREFOX||t.hasAttribute("controls"):t.tabIndex>=0}isFocusable(t,i){return Nr(t)&&!this.isDisabled(t)&&(i?.ignoreVisibility||this.isVisible(t))}static{this.\u0275fac=function(i){return new(i||e)(u(Q))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function Cr(e){try{return e.frameElement}catch{return null}}function Mr(e){return!!(e.offsetWidth||e.offsetHeight||typeof e.getClientRects=="function"&&e.getClientRects().length)}function xr(e){let c=e.nodeName.toLowerCase();return c==="input"||c==="select"||c==="button"||c==="textarea"}function Lr(e){return wr(e)&&e.type=="hidden"}function yr(e){return kr(e)&&e.hasAttribute("href")}function wr(e){return e.nodeName.toLowerCase()=="input"}function kr(e){return e.nodeName.toLowerCase()=="a"}function _5(e){if(!e.hasAttribute("tabindex")||e.tabIndex===void 0)return!1;let c=e.getAttribute("tabindex");return!!(c&&!isNaN(parseInt(c,10)))}function g5(e){if(!_5(e))return null;let c=parseInt(e.getAttribute("tabindex")||"",10);return isNaN(c)?-1:c}function Sr(e){let c=e.nodeName.toLowerCase(),t=c==="input"&&e.type;return t==="text"||t==="password"||c==="select"||c==="textarea"}function Nr(e){return Lr(e)?!1:xr(e)||yr(e)||e.hasAttribute("contenteditable")||_5(e)}function Ir(e){return e.ownerDocument&&e.ownerDocument.defaultView||window}var V6=class{get enabled(){return this._enabled}set enabled(c){this._enabled=c,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(c,this._startAnchor),this._toggleAnchorTabIndex(c,this._endAnchor))}constructor(c,t,i,n,a=!1){this._element=c,this._checker=t,this._ngZone=i,this._document=n,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,a||this.attachAnchors()}destroy(){let c=this._startAnchor,t=this._endAnchor;c&&(c.removeEventListener("focus",this.startAnchorListener),c.remove()),t&&(t.removeEventListener("focus",this.endAnchorListener),t.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return this._hasAttached?!0:(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(c){return new Promise(t=>{this._executeOnStable(()=>t(this.focusInitialElement(c)))})}focusFirstTabbableElementWhenReady(c){return new Promise(t=>{this._executeOnStable(()=>t(this.focusFirstTabbableElement(c)))})}focusLastTabbableElementWhenReady(c){return new Promise(t=>{this._executeOnStable(()=>t(this.focusLastTabbableElement(c)))})}_getRegionBoundary(c){let t=this._element.querySelectorAll(`[cdk-focus-region-${c}], [cdkFocusRegion${c}], [cdk-focus-${c}]`);return c=="start"?t.length?t[0]:this._getFirstTabbableElement(this._element):t.length?t[t.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(c){let t=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(t){if(!this._checker.isFocusable(t)){let i=this._getFirstTabbableElement(t);return i?.focus(c),!!i}return t.focus(c),!0}return this.focusFirstTabbableElement(c)}focusFirstTabbableElement(c){let t=this._getRegionBoundary("start");return t&&t.focus(c),!!t}focusLastTabbableElement(c){let t=this._getRegionBoundary("end");return t&&t.focus(c),!!t}hasAttached(){return this._hasAttached}_getFirstTabbableElement(c){if(this._checker.isFocusable(c)&&this._checker.isTabbable(c))return c;let t=c.children;for(let i=0;i=0;i--){let n=t[i].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(t[i]):null;if(n)return n}return null}_createAnchor(){let c=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,c),c.classList.add("cdk-visually-hidden"),c.classList.add("cdk-focus-trap-anchor"),c.setAttribute("aria-hidden","true"),c}_toggleAnchorTabIndex(c,t){c?t.setAttribute("tabindex","0"):t.removeAttribute("tabindex")}toggleAnchors(c){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(c,this._startAnchor),this._toggleAnchorTabIndex(c,this._endAnchor))}_executeOnStable(c){this._ngZone.isStable?c():this._ngZone.onStable.pipe(r1(1)).subscribe(c)}},d4=(()=>{class e{constructor(t,i,n){this._checker=t,this._ngZone=i,this._document=n}create(t,i=!1){return new V6(t,this._checker,this._ngZone,this._document,i)}static{this.\u0275fac=function(i){return new(i||e)(u(D3),u(w),u(T))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function B6(e){return e.buttons===0||e.detail===0}function j6(e){let c=e.touches&&e.touches[0]||e.changedTouches&&e.changedTouches[0];return!!c&&c.identifier===-1&&(c.radiusX==null||c.radiusX===1)&&(c.radiusY==null||c.radiusY===1)}var Ar=new x("cdk-input-modality-detector-options"),Dr={ignoreKeys:[18,17,224,91,16]},z5=650,r4=c3({passive:!0,capture:!0}),Er=(()=>{class e{get mostRecentModality(){return this._modality.value}constructor(t,i,n,a){this._platform=t,this._mostRecentTarget=null,this._modality=new w1(null),this._lastTouchMs=0,this._onKeydown=o=>{this._options?.ignoreKeys?.some(s=>s===o.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=o2(o))},this._onMousedown=o=>{Date.now()-this._lastTouchMs{if(j6(o)){this._modality.next("keyboard");return}this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=o2(o)},this._options=f(f({},Dr),a),this.modalityDetected=this._modality.pipe(W3(1)),this.modalityChanged=this.modalityDetected.pipe(q3()),t.isBrowser&&i.runOutsideAngular(()=>{n.addEventListener("keydown",this._onKeydown,r4),n.addEventListener("mousedown",this._onMousedown,r4),n.addEventListener("touchstart",this._onTouchstart,r4)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,r4),document.removeEventListener("mousedown",this._onMousedown,r4),document.removeEventListener("touchstart",this._onTouchstart,r4))}static{this.\u0275fac=function(i){return new(i||e)(u(Q),u(w),u(T),u(Ar,8))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var F0=function(e){return e[e.IMMEDIATE=0]="IMMEDIATE",e[e.EVENTUAL=1]="EVENTUAL",e}(F0||{}),Tr=new x("cdk-focus-monitor-default-options"),R0=c3({passive:!0,capture:!0}),i2=(()=>{class e{constructor(t,i,n,a,o){this._ngZone=t,this._platform=i,this._inputModalityDetector=n,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new N,this._rootNodeFocusAndBlurListener=s=>{let r=o2(s);for(let l=r;l;l=l.parentElement)s.type==="focus"?this._onFocus(s,l):this._onBlur(s,l)},this._document=a,this._detectionMode=o?.detectionMode||F0.IMMEDIATE}monitor(t,i=!1){let n=s2(t);if(!this._platform.isBrowser||n.nodeType!==1)return M();let a=m5(n)||this._getDocument(),o=this._elementInfo.get(n);if(o)return i&&(o.checkChildren=!0),o.subject;let s={checkChildren:i,subject:new N,rootNode:a};return this._elementInfo.set(n,s),this._registerGlobalListeners(s),s.subject}stopMonitoring(t){let i=s2(t),n=this._elementInfo.get(i);n&&(n.subject.complete(),this._setClasses(i),this._elementInfo.delete(i),this._removeGlobalListeners(n))}focusVia(t,i,n){let a=s2(t),o=this._getDocument().activeElement;a===o?this._getClosestElementsInfo(a).forEach(([s,r])=>this._originChanged(s,i,r)):(this._setOrigin(i),typeof a.focus=="function"&&a.focus(n))}ngOnDestroy(){this._elementInfo.forEach((t,i)=>this.stopMonitoring(i))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(t){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(t)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:t&&this._isLastInteractionFromInputLabel(t)?"mouse":"program"}_shouldBeAttributedToTouch(t){return this._detectionMode===F0.EVENTUAL||!!t?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(t,i){t.classList.toggle("cdk-focused",!!i),t.classList.toggle("cdk-touch-focused",i==="touch"),t.classList.toggle("cdk-keyboard-focused",i==="keyboard"),t.classList.toggle("cdk-mouse-focused",i==="mouse"),t.classList.toggle("cdk-program-focused",i==="program")}_setOrigin(t,i=!1){this._ngZone.runOutsideAngular(()=>{if(this._origin=t,this._originFromTouchInteraction=t==="touch"&&i,this._detectionMode===F0.IMMEDIATE){clearTimeout(this._originTimeoutId);let n=this._originFromTouchInteraction?z5:1;this._originTimeoutId=setTimeout(()=>this._origin=null,n)}})}_onFocus(t,i){let n=this._elementInfo.get(i),a=o2(t);!n||!n.checkChildren&&i!==a||this._originChanged(i,this._getFocusOrigin(a),n)}_onBlur(t,i){let n=this._elementInfo.get(i);!n||n.checkChildren&&t.relatedTarget instanceof Node&&i.contains(t.relatedTarget)||(this._setClasses(i),this._emitOrigin(n,null))}_emitOrigin(t,i){t.subject.observers.length&&this._ngZone.run(()=>t.subject.next(i))}_registerGlobalListeners(t){if(!this._platform.isBrowser)return;let i=t.rootNode,n=this._rootNodeFocusListenerCount.get(i)||0;n||this._ngZone.runOutsideAngular(()=>{i.addEventListener("focus",this._rootNodeFocusAndBlurListener,R0),i.addEventListener("blur",this._rootNodeFocusAndBlurListener,R0)}),this._rootNodeFocusListenerCount.set(i,n+1),++this._monitoredElementCount===1&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(X(this._stopInputModalityDetector)).subscribe(a=>{this._setOrigin(a,!0)}))}_removeGlobalListeners(t){let i=t.rootNode;if(this._rootNodeFocusListenerCount.has(i)){let n=this._rootNodeFocusListenerCount.get(i);n>1?this._rootNodeFocusListenerCount.set(i,n-1):(i.removeEventListener("focus",this._rootNodeFocusAndBlurListener,R0),i.removeEventListener("blur",this._rootNodeFocusAndBlurListener,R0),this._rootNodeFocusListenerCount.delete(i))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(t,i,n){this._setClasses(t,i),this._emitOrigin(n,i),this._lastFocusOrigin=i}_getClosestElementsInfo(t){let i=[];return this._elementInfo.forEach((n,a)=>{(a===t||n.checkChildren&&a.contains(t))&&i.push([a,n])}),i}_isLastInteractionFromInputLabel(t){let{_mostRecentTarget:i,mostRecentModality:n}=this._inputModalityDetector;if(n!=="mouse"||!i||i===t||t.nodeName!=="INPUT"&&t.nodeName!=="TEXTAREA"||t.disabled)return!1;let a=t.labels;if(a){for(let o=0;o{class e{constructor(t,i){this._platform=t,this._document=i,this._breakpointSubscription=v(u5).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return A3.NONE;let t=this._document.createElement("div");t.style.backgroundColor="rgb(1,2,3)",t.style.position="absolute",this._document.body.appendChild(t);let i=this._document.defaultView||window,n=i&&i.getComputedStyle?i.getComputedStyle(t):null,a=(n&&n.backgroundColor||"").replace(/ /g,"");switch(t.remove(),a){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return A3.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return A3.BLACK_ON_WHITE}return A3.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){let t=this._document.body.classList;t.remove(P6,b5,v5),this._hasCheckedHighContrastMode=!0;let i=this.getHighContrastMode();i===A3.BLACK_ON_WHITE?t.add(P6,b5):i===A3.WHITE_ON_BLACK&&t.add(P6,v5)}}static{this.\u0275fac=function(i){return new(i||e)(u(Q),u(T))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),C5=(()=>{class e{constructor(t){t._applyBodyHighContrastModeCssClasses()}static{this.\u0275fac=function(i){return new(i||e)(u(U6))}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[T0]})}}return e})();var Rr=new x("cdk-dir-doc",{providedIn:"root",factory:Fr});function Fr(){return v(T)}var Or=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;function Pr(e){let c=e?.toLowerCase()||"";return c==="auto"&&typeof navigator<"u"&&navigator?.language?Or.test(navigator.language)?"rtl":"ltr":c==="rtl"?"rtl":"ltr"}var O1=(()=>{class e{constructor(t){if(this.value="ltr",this.change=new o1,t){let i=t.body?t.body.dir:null,n=t.documentElement?t.documentElement.dir:null;this.value=Pr(i||n||"ltr")}}ngOnDestroy(){this.change.complete()}static{this.\u0275fac=function(i){return new(i||e)(u(Rr,8))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var n3=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({})}}return e})();function Hr(){return!0}var Vr=new x("mat-sanity-checks",{providedIn:"root",factory:Hr}),Z=(()=>{class e{constructor(t,i,n){this._sanityChecks=i,this._document=n,this._hasDoneGlobalChecks=!1,t._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(t){return zt()?!1:typeof this._sanityChecks=="boolean"?this._sanityChecks:!!this._sanityChecks[t]}static{this.\u0275fac=function(i){return new(i||e)(u(U6),u(Vr,8),u(T))}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[n3,n3]})}}return e})();var I5=(()=>{class e{isErrorState(t,i){return!!(t&&t.invalid&&(t.touched||i&&i.submitted))}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var Z6=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z,Z]})}}return e})(),c2=function(e){return e[e.FADING_IN=0]="FADING_IN",e[e.VISIBLE=1]="VISIBLE",e[e.FADING_OUT=2]="FADING_OUT",e[e.HIDDEN=3]="HIDDEN",e}(c2||{}),G6=class{constructor(c,t,i,n=!1){this._renderer=c,this.element=t,this.config=i,this._animationForciblyDisabledThroughCss=n,this.state=c2.HIDDEN}fadeOut(){this._renderer.fadeOutRipple(this)}},M5=c3({passive:!0,capture:!0}),$6=class{constructor(){this._events=new Map,this._delegateEventHandler=c=>{let t=o2(c);t&&this._events.get(c.type)?.forEach((i,n)=>{(n===t||n.contains(t))&&i.forEach(a=>a.handleEvent(c))})}}addHandler(c,t,i,n){let a=this._events.get(t);if(a){let o=a.get(i);o?o.add(n):a.set(i,new Set([n]))}else this._events.set(t,new Map([[i,new Set([n])]])),c.runOutsideAngular(()=>{document.addEventListener(t,this._delegateEventHandler,M5)})}removeHandler(c,t,i){let n=this._events.get(c);if(!n)return;let a=n.get(t);a&&(a.delete(i),a.size===0&&n.delete(t),n.size===0&&(this._events.delete(c),document.removeEventListener(c,this._delegateEventHandler,M5)))}},x5={enterDuration:225,exitDuration:150},Br=800,L5=c3({passive:!0,capture:!0}),y5=["mousedown","touchstart"],w5=["mouseup","mouseleave","touchend","touchcancel"],Mt=class e{static{this._eventManager=new $6}constructor(c,t,i,n){this._target=c,this._ngZone=t,this._platform=n,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,n.isBrowser&&(this._containerElement=s2(i))}fadeInRipple(c,t,i={}){let n=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),a=f(f({},x5),i.animation);i.centered&&(c=n.left+n.width/2,t=n.top+n.height/2);let o=i.radius||jr(c,t,n),s=c-n.left,r=t-n.top,l=a.enterDuration,d=document.createElement("div");d.classList.add("mat-ripple-element"),d.style.left=`${s-o}px`,d.style.top=`${r-o}px`,d.style.height=`${o*2}px`,d.style.width=`${o*2}px`,i.color!=null&&(d.style.backgroundColor=i.color),d.style.transitionDuration=`${l}ms`,this._containerElement.appendChild(d);let g=window.getComputedStyle(d),z=g.transitionProperty,y=g.transitionDuration,q=z==="none"||y==="0s"||y==="0s, 0s"||n.width===0&&n.height===0,k=new G6(this,d,i,q);d.style.transform="scale3d(1, 1, 1)",k.state=c2.FADING_IN,i.persistent||(this._mostRecentTransientRipple=k);let P=null;return!q&&(l||a.exitDuration)&&this._ngZone.runOutsideAngular(()=>{let e1=()=>this._finishRippleTransition(k),s1=()=>this._destroyRipple(k);d.addEventListener("transitionend",e1),d.addEventListener("transitioncancel",s1),P={onTransitionEnd:e1,onTransitionCancel:s1}}),this._activeRipples.set(k,P),(q||!l)&&this._finishRippleTransition(k),k}fadeOutRipple(c){if(c.state===c2.FADING_OUT||c.state===c2.HIDDEN)return;let t=c.element,i=f(f({},x5),c.config.animation);t.style.transitionDuration=`${i.exitDuration}ms`,t.style.opacity="0",c.state=c2.FADING_OUT,(c._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(c)}fadeOutAll(){this._getActiveRipples().forEach(c=>c.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(c=>{c.config.persistent||c.fadeOut()})}setupTriggerEvents(c){let t=s2(c);!this._platform.isBrowser||!t||t===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=t,y5.forEach(i=>{e._eventManager.addHandler(this._ngZone,i,t,this)}))}handleEvent(c){c.type==="mousedown"?this._onMousedown(c):c.type==="touchstart"?this._onTouchStart(c):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{w5.forEach(t=>{this._triggerElement.addEventListener(t,this,L5)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(c){c.state===c2.FADING_IN?this._startFadeOutTransition(c):c.state===c2.FADING_OUT&&this._destroyRipple(c)}_startFadeOutTransition(c){let t=c===this._mostRecentTransientRipple,{persistent:i}=c.config;c.state=c2.VISIBLE,!i&&(!t||!this._isPointerDown)&&c.fadeOut()}_destroyRipple(c){let t=this._activeRipples.get(c)??null;this._activeRipples.delete(c),this._activeRipples.size||(this._containerRect=null),c===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),c.state=c2.HIDDEN,t!==null&&(c.element.removeEventListener("transitionend",t.onTransitionEnd),c.element.removeEventListener("transitioncancel",t.onTransitionCancel)),c.element.remove()}_onMousedown(c){let t=B6(c),i=this._lastTouchStartEvent&&Date.now(){let t=c.state===c2.VISIBLE||c.config.terminateOnPointerUp&&c.state===c2.FADING_IN;!c.config.persistent&&t&&c.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){let c=this._triggerElement;c&&(y5.forEach(t=>e._eventManager.removeHandler(t,c,this)),this._pointerUpEventsRegistered&&(w5.forEach(t=>c.removeEventListener(t,this,L5)),this._pointerUpEventsRegistered=!1))}};function jr(e,c,t){let i=Math.max(Math.abs(e-t.left),Math.abs(e-t.right)),n=Math.max(Math.abs(c-t.top),Math.abs(c-t.bottom));return Math.sqrt(i*i+n*n)}var E2=new x("mat-ripple-global-options"),P0=(()=>{class e{get disabled(){return this._disabled}set disabled(t){t&&this.fadeOutAllNonPersistent(),this._disabled=t,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(t){this._trigger=t,this._setupTriggerEventsIfEnabled()}constructor(t,i,n,a,o){this._elementRef=t,this._animationMode=o,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=a||{},this._rippleRenderer=new Mt(this,i,t,n)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:f(f(f({},this._globalOptions.animation),this._animationMode==="NoopAnimations"?{enterDuration:0,exitDuration:0}:{}),this.animation),terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(t,i=0,n){return typeof t=="number"?this._rippleRenderer.fadeInRipple(t,i,f(f({},this.rippleConfig),n)):this._rippleRenderer.fadeInRipple(0,0,f(f({},this.rippleConfig),t))}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(w),m(Q),m(E2,8),m(h1,8))}}static{this.\u0275dir=H({type:e,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(i,n){i&2&&K("mat-ripple-unbounded",n.unbounded)},inputs:{color:[I.None,"matRippleColor","color"],unbounded:[I.None,"matRippleUnbounded","unbounded"],centered:[I.None,"matRippleCentered","centered"],radius:[I.None,"matRippleRadius","radius"],animation:[I.None,"matRippleAnimation","animation"],disabled:[I.None,"matRippleDisabled","disabled"],trigger:[I.None,"matRippleTrigger","trigger"]},exportAs:["matRipple"],standalone:!0})}}return e})(),h4=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z,Z]})}}return e})();var A5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z]})}}return e})();var k5={capture:!0},S5=["focus","click","mouseenter","touchstart"],q6="mat-ripple-loader-uninitialized",W6="mat-ripple-loader-class-name",N5="mat-ripple-loader-centered",O0="mat-ripple-loader-disabled",H0=(()=>{class e{constructor(){this._document=v(T,{optional:!0}),this._animationMode=v(h1,{optional:!0}),this._globalRippleOptions=v(E2,{optional:!0}),this._platform=v(Q),this._ngZone=v(w),this._hosts=new Map,this._onInteraction=t=>{if(!(t.target instanceof HTMLElement))return;let n=t.target.closest(`[${q6}]`);n&&this._createRipple(n)},this._ngZone.runOutsideAngular(()=>{for(let t of S5)this._document?.addEventListener(t,this._onInteraction,k5)})}ngOnDestroy(){let t=this._hosts.keys();for(let i of t)this.destroyRipple(i);for(let i of S5)this._document?.removeEventListener(i,this._onInteraction,k5)}configureRipple(t,i){t.setAttribute(q6,""),(i.className||!t.hasAttribute(W6))&&t.setAttribute(W6,i.className||""),i.centered&&t.setAttribute(N5,""),i.disabled&&t.setAttribute(O0,"")}getRipple(t){return this._hosts.get(t)||this._createRipple(t)}setDisabled(t,i){let n=this._hosts.get(t);if(n){n.disabled=i;return}i?t.setAttribute(O0,""):t.removeAttribute(O0)}_createRipple(t){if(!this._document)return;let i=this._hosts.get(t);if(i)return i;t.querySelector(".mat-ripple")?.remove();let n=this._document.createElement("span");n.classList.add("mat-ripple",t.getAttribute(W6)),t.append(n);let a=new P0(new D(n),this._ngZone,this._platform,this._globalRippleOptions?this._globalRippleOptions:void 0,this._animationMode?this._animationMode:void 0);return a._isInitialized=!0,a.trigger=t,a.centered=t.hasAttribute(N5),a.disabled=t.hasAttribute(O0),this.attachRipple(t,a),a}attachRipple(t,i){t.removeAttribute(q6),this._hosts.set(t,i)}destroyRipple(t){let i=this._hosts.get(t);i&&(i.ngOnDestroy(),this._hosts.delete(t))}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var D5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z6,Z,Z6,Z]})}}return e})();var Ur=["*"],qr=[[["mat-card-title"],["mat-card-subtitle"],["","mat-card-title",""],["","mat-card-subtitle",""],["","matCardTitle",""],["","matCardSubtitle",""]],[["","mat-card-image",""],["","matCardImage",""],["","mat-card-sm-image",""],["","matCardImageSmall",""],["","mat-card-md-image",""],["","matCardImageMedium",""],["","mat-card-lg-image",""],["","matCardImageLarge",""],["","mat-card-xl-image",""],["","matCardImageXLarge",""]],"*"],Wr=[`mat-card-title, mat-card-subtitle, + [mat-card-title], [mat-card-subtitle], + [matCardTitle], [matCardSubtitle]`,`[mat-card-image], [matCardImage], + [mat-card-sm-image], [matCardImageSmall], + [mat-card-md-image], [matCardImageMedium], + [mat-card-lg-image], [matCardImageLarge], + [mat-card-xl-image], [matCardImageXLarge]`,"*"],Gr=[[["","mat-card-avatar",""],["","matCardAvatar",""]],[["mat-card-title"],["mat-card-subtitle"],["","mat-card-title",""],["","mat-card-subtitle",""],["","matCardTitle",""],["","matCardSubtitle",""]],"*"],$r=["[mat-card-avatar], [matCardAvatar]",`mat-card-title, mat-card-subtitle, + [mat-card-title], [mat-card-subtitle], + [matCardTitle], [matCardSubtitle]`,"*"],Zr=new x("MAT_CARD_CONFIG"),V0=(()=>{class e{constructor(t){this.appearance=t?.appearance||"raised"}static{this.\u0275fac=function(i){return new(i||e)(m(Zr,8))}}static{this.\u0275cmp=A({type:e,selectors:[["mat-card"]],hostAttrs:[1,"mat-mdc-card","mdc-card"],hostVars:4,hostBindings:function(i,n){i&2&&K("mat-mdc-card-outlined",n.appearance==="outlined")("mdc-card--outlined",n.appearance==="outlined")},inputs:{appearance:"appearance"},exportAs:["matCard"],standalone:!0,features:[E],ngContentSelectors:Ur,decls:1,vars:0,template:function(i,n){i&1&&(n1(),B(0))},styles:['.mdc-card{display:flex;flex-direction:column;box-sizing:border-box}.mdc-card::after{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none;pointer-events:none}@media screen and (forced-colors: active){.mdc-card::after{border-color:CanvasText}}.mdc-card--outlined::after{border:none}.mdc-card__content{border-radius:inherit;height:100%}.mdc-card__media{position:relative;box-sizing:border-box;background-repeat:no-repeat;background-position:center;background-size:cover}.mdc-card__media::before{display:block;content:""}.mdc-card__media:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__media:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__media--square::before{margin-top:100%}.mdc-card__media--16-9::before{margin-top:56.25%}.mdc-card__media-content{position:absolute;top:0;right:0;bottom:0;left:0;box-sizing:border-box}.mdc-card__primary-action{display:flex;flex-direction:column;box-sizing:border-box;position:relative;outline:none;color:inherit;text-decoration:none;cursor:pointer;overflow:hidden}.mdc-card__primary-action:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.mdc-card__primary-action:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}.mdc-card__actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;min-height:52px;padding:8px}.mdc-card__actions--full-bleed{padding:0}.mdc-card__action-buttons,.mdc-card__action-icons{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}.mdc-card__action-icons{color:rgba(0, 0, 0, 0.6);flex-grow:1;justify-content:flex-end}.mdc-card__action-buttons+.mdc-card__action-icons{margin-left:16px;margin-right:0}[dir=rtl] .mdc-card__action-buttons+.mdc-card__action-icons,.mdc-card__action-buttons+.mdc-card__action-icons[dir=rtl]{margin-left:0;margin-right:16px}.mdc-card__action{display:inline-flex;flex-direction:row;align-items:center;box-sizing:border-box;justify-content:center;cursor:pointer;user-select:none}.mdc-card__action:focus{outline:none}.mdc-card__action--button{margin-left:0;margin-right:8px;padding:0 8px}[dir=rtl] .mdc-card__action--button,.mdc-card__action--button[dir=rtl]{margin-left:8px;margin-right:0}.mdc-card__action--button:last-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-card__action--button:last-child,.mdc-card__action--button:last-child[dir=rtl]{margin-left:0;margin-right:0}.mdc-card__actions--full-bleed .mdc-card__action--button{justify-content:space-between;width:100%;height:auto;max-height:none;margin:0;padding:8px 16px;text-align:left}[dir=rtl] .mdc-card__actions--full-bleed .mdc-card__action--button,.mdc-card__actions--full-bleed .mdc-card__action--button[dir=rtl]{text-align:right}.mdc-card__action--icon{margin:-6px 0;padding:12px}.mdc-card__action--icon:not(:disabled){color:rgba(0, 0, 0, 0.6)}.mat-mdc-card{border-radius:var(--mdc-elevated-card-container-shape);background-color:var(--mdc-elevated-card-container-color);border-width:0;border-style:solid;border-color:var(--mdc-elevated-card-container-color);box-shadow:var(--mdc-elevated-card-container-elevation)}.mat-mdc-card .mdc-card::after{border-radius:var(--mdc-elevated-card-container-shape)}.mat-mdc-card-outlined{border-width:var(--mdc-outlined-card-outline-width);border-style:solid;border-color:var(--mdc-outlined-card-outline-color);border-radius:var(--mdc-outlined-card-container-shape);background-color:var(--mdc-outlined-card-container-color);box-shadow:var(--mdc-outlined-card-container-elevation)}.mat-mdc-card-outlined .mdc-card::after{border-radius:var(--mdc-outlined-card-container-shape)}.mat-mdc-card-title{font-family:var(--mat-card-title-text-font);line-height:var(--mat-card-title-text-line-height);font-size:var(--mat-card-title-text-size);letter-spacing:var(--mat-card-title-text-tracking);font-weight:var(--mat-card-title-text-weight)}.mat-mdc-card-subtitle{color:var(--mat-card-subtitle-text-color);font-family:var(--mat-card-subtitle-text-font);line-height:var(--mat-card-subtitle-text-line-height);font-size:var(--mat-card-subtitle-text-size);letter-spacing:var(--mat-card-subtitle-text-tracking);font-weight:var(--mat-card-subtitle-text-weight)}.mat-mdc-card{position:relative}.mat-mdc-card-title,.mat-mdc-card-subtitle{display:block;margin:0}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle{padding:16px 16px 0}.mat-mdc-card-header{display:flex;padding:16px 16px 0}.mat-mdc-card-content{display:block;padding:0 16px}.mat-mdc-card-content:first-child{padding-top:16px}.mat-mdc-card-content:last-child{padding-bottom:16px}.mat-mdc-card-title-group{display:flex;justify-content:space-between;width:100%}.mat-mdc-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;margin-bottom:16px;object-fit:cover}.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-avatar~.mat-mdc-card-header-text .mat-mdc-card-title{line-height:normal}.mat-mdc-card-sm-image{width:80px;height:80px}.mat-mdc-card-md-image{width:112px;height:112px}.mat-mdc-card-lg-image{width:152px;height:152px}.mat-mdc-card-xl-image{width:240px;height:240px}.mat-mdc-card-subtitle~.mat-mdc-card-title,.mat-mdc-card-title~.mat-mdc-card-subtitle,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-title,.mat-mdc-card-header .mat-mdc-card-header-text .mat-mdc-card-subtitle,.mat-mdc-card-title-group .mat-mdc-card-title,.mat-mdc-card-title-group .mat-mdc-card-subtitle{padding-top:0}.mat-mdc-card-content>:last-child:not(.mat-mdc-card-footer){margin-bottom:0}.mat-mdc-card-actions-align-end{justify-content:flex-end}'],encapsulation:2,changeDetection:0})}}return e})(),B0=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,selectors:[["mat-card-title"],["","mat-card-title",""],["","matCardTitle",""]],hostAttrs:[1,"mat-mdc-card-title"],standalone:!0})}}return e})(),E5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=A({type:e,selectors:[["mat-card-title-group"]],hostAttrs:[1,"mat-mdc-card-title-group"],standalone:!0,features:[E],ngContentSelectors:Wr,decls:4,vars:0,template:function(i,n){i&1&&(n1(qr),h(0,"div"),B(1),p(),B(2,1),B(3,2))},encapsulation:2,changeDetection:0})}}return e})(),j0=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,selectors:[["mat-card-content"]],hostAttrs:[1,"mat-mdc-card-content"],standalone:!0})}}return e})(),U0=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,selectors:[["mat-card-subtitle"],["","mat-card-subtitle",""],["","matCardSubtitle",""]],hostAttrs:[1,"mat-mdc-card-subtitle"],standalone:!0})}}return e})();var q0=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=A({type:e,selectors:[["mat-card-header"]],hostAttrs:[1,"mat-mdc-card-header"],standalone:!0,features:[E],ngContentSelectors:$r,decls:4,vars:0,consts:[[1,"mat-mdc-card-header-text"]],template:function(i,n){i&1&&(n1(Gr),B(0),h(1,"div",0),B(2,1),p(),B(3,2))},encapsulation:2,changeDetection:0})}}return e})(),T5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,selectors:[["mat-card-footer"]],hostAttrs:[1,"mat-mdc-card-footer"],standalone:!0})}}return e})();var R5=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,selectors:[["","mat-card-avatar",""],["","matCardAvatar",""]],hostAttrs:[1,"mat-mdc-card-avatar"],standalone:!0})}}return e})();var W0=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z,E1,Z]})}}return e})();var O5=(()=>{class e{transform(t,i){return t.length>i?t.substring(0,i)+"...":t}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275pipe=Gt({name:"truncateString",type:e,pure:!0,standalone:!0})}}return e})();var Yr=["*",[["mat-chip-avatar"],["","matChipAvatar",""]],[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],Qr=["*","mat-chip-avatar, [matChipAvatar]","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function Xr(e,c){e&1&&(h(0,"span",3),B(1,1),p())}function Kr(e,c){e&1&&(h(0,"span",6),B(1,2),p())}var Jr=["*"];var tl=new x("mat-chips-default-options",{providedIn:"root",factory:()=>({separatorKeyCodes:[13]})}),P5=new x("MatChipAvatar"),H5=new x("MatChipTrailingIcon"),V5=new x("MatChipRemove"),j5=new x("MatChip"),B5=(()=>{class e{get disabled(){return this._disabled||this._parentChip.disabled}set disabled(t){this._disabled=t}_getDisabledAttribute(){return this.disabled&&!this._allowFocusWhenDisabled?"":null}_getTabindex(){return this.disabled&&!this._allowFocusWhenDisabled||!this.isInteractive?null:this.tabIndex.toString()}constructor(t,i){this._elementRef=t,this._parentChip=i,this.isInteractive=!0,this._isPrimary=!0,this._disabled=!1,this.tabIndex=-1,this._allowFocusWhenDisabled=!1,t.nativeElement.nodeName==="BUTTON"&&t.nativeElement.setAttribute("type","button")}focus(){this._elementRef.nativeElement.focus()}_handleClick(t){!this.disabled&&this.isInteractive&&this._isPrimary&&(t.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}_handleKeydown(t){(t.keyCode===13||t.keyCode===32)&&!this.disabled&&this.isInteractive&&this._isPrimary&&!this._parentChip._isEditing&&(t.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(j5))}}static{this.\u0275dir=H({type:e,selectors:[["","matChipAction",""]],hostAttrs:[1,"mdc-evolution-chip__action","mat-mdc-chip-action"],hostVars:9,hostBindings:function(i,n){i&1&&_1("click",function(o){return n._handleClick(o)})("keydown",function(o){return n._handleKeydown(o)}),i&2&&(J("tabindex",n._getTabindex())("disabled",n._getDisabledAttribute())("aria-disabled",n.disabled),K("mdc-evolution-chip__action--primary",n._isPrimary)("mdc-evolution-chip__action--presentational",!n.isInteractive)("mdc-evolution-chip__action--trailing",!n._isPrimary))},inputs:{isInteractive:"isInteractive",disabled:[I.HasDecoratorInputTransform,"disabled","disabled",t1],tabIndex:[I.HasDecoratorInputTransform,"tabIndex","tabIndex",t=>t==null?-1:A2(t)],_allowFocusWhenDisabled:"_allowFocusWhenDisabled"},standalone:!0,features:[v1]})}}return e})();var el=0,Lt=(()=>{class e{_hasFocus(){return this._hasFocusInternal}get value(){return this._value!==void 0?this._value:this._textElement.textContent.trim()}set value(t){this._value=t}get ripple(){return this._rippleLoader?.getRipple(this._elementRef.nativeElement)}set ripple(t){this._rippleLoader?.attachRipple(this._elementRef.nativeElement,t)}constructor(t,i,n,a,o,s,r,l){this._changeDetectorRef=t,this._elementRef=i,this._ngZone=n,this._focusMonitor=a,this._globalRippleOptions=r,this._onFocus=new N,this._onBlur=new N,this.role=null,this._hasFocusInternal=!1,this.id=`mat-mdc-chip-${el++}`,this.ariaLabel=null,this.ariaDescription=null,this._ariaDescriptionId=`${this.id}-aria-description`,this.removable=!0,this.highlighted=!1,this.disableRipple=!1,this.disabled=!1,this.tabIndex=-1,this.removed=new o1,this.destroyed=new o1,this.basicChipAttrName="mat-basic-chip",this._rippleLoader=v(H0),this._document=o,this._animationsDisabled=s==="NoopAnimations",l!=null&&(this.tabIndex=parseInt(l)??-1),this._monitorFocus(),this._rippleLoader?.configureRipple(this._elementRef.nativeElement,{className:"mat-mdc-chip-ripple",disabled:this._isRippleDisabled()})}ngOnInit(){let t=this._elementRef.nativeElement;this._isBasicChip=t.hasAttribute(this.basicChipAttrName)||t.tagName.toLowerCase()===this.basicChipAttrName}ngAfterViewInit(){this._textElement=this._elementRef.nativeElement.querySelector(".mat-mdc-chip-action-label"),this._pendingFocus&&(this._pendingFocus=!1,this.focus())}ngAfterContentInit(){this._actionChanges=R1(this._allLeadingIcons.changes,this._allTrailingIcons.changes,this._allRemoveIcons.changes).subscribe(()=>this._changeDetectorRef.markForCheck())}ngDoCheck(){this._rippleLoader.setDisabled(this._elementRef.nativeElement,this._isRippleDisabled())}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement),this._actionChanges?.unsubscribe(),this.destroyed.emit({chip:this}),this.destroyed.complete()}remove(){this.removable&&this.removed.emit({chip:this})}_isRippleDisabled(){return this.disabled||this.disableRipple||this._animationsDisabled||this._isBasicChip||!!this._globalRippleOptions?.disabled}_hasTrailingIcon(){return!!(this.trailingIcon||this.removeIcon)}_handleKeydown(t){(t.keyCode===8&&!t.repeat||t.keyCode===46)&&(t.preventDefault(),this.remove())}focus(){this.disabled||(this.primaryAction?this.primaryAction.focus():this._pendingFocus=!0)}_getSourceAction(t){return this._getActions().find(i=>{let n=i._elementRef.nativeElement;return n===t||n.contains(t)})}_getActions(){let t=[];return this.primaryAction&&t.push(this.primaryAction),this.removeIcon&&t.push(this.removeIcon),this.trailingIcon&&t.push(this.trailingIcon),t}_handlePrimaryActionInteraction(){}_getTabIndex(){return this.role?this.disabled?-1:this.tabIndex:null}_monitorFocus(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(t=>{let i=t!==null;i!==this._hasFocusInternal&&(this._hasFocusInternal=i,i?this._onFocus.next({chip:this}):this._ngZone.onStable.pipe(r1(1)).subscribe(()=>this._ngZone.run(()=>this._onBlur.next({chip:this}))))})}static{this.\u0275fac=function(i){return new(i||e)(m(L1),m(D),m(w),m(i2),m(T),m(h1,8),m(E2,8),G2("tabindex"))}}static{this.\u0275cmp=A({type:e,selectors:[["mat-basic-chip"],["","mat-basic-chip",""],["mat-chip"],["","mat-chip",""]],contentQueries:function(i,n,a){if(i&1&&(p1(a,P5,5),p1(a,H5,5),p1(a,V5,5),p1(a,P5,5),p1(a,H5,5),p1(a,V5,5)),i&2){let o;W(o=G())&&(n.leadingIcon=o.first),W(o=G())&&(n.trailingIcon=o.first),W(o=G())&&(n.removeIcon=o.first),W(o=G())&&(n._allLeadingIcons=o),W(o=G())&&(n._allTrailingIcons=o),W(o=G())&&(n._allRemoveIcons=o)}},viewQuery:function(i,n){if(i&1&&x1(B5,5),i&2){let a;W(a=G())&&(n.primaryAction=a.first)}},hostAttrs:[1,"mat-mdc-chip"],hostVars:32,hostBindings:function(i,n){i&1&&_1("keydown",function(o){return n._handleKeydown(o)}),i&2&&(z3("id",n.id),J("role",n.role)("tabindex",n._getTabIndex())("aria-label",n.ariaLabel),h2("mat-"+(n.color||"primary")),K("mdc-evolution-chip",!n._isBasicChip)("mdc-evolution-chip--disabled",n.disabled)("mdc-evolution-chip--with-trailing-action",n._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",n.leadingIcon)("mdc-evolution-chip--with-primary-icon",n.leadingIcon)("mdc-evolution-chip--with-avatar",n.leadingIcon)("mat-mdc-chip-with-avatar",n.leadingIcon)("mat-mdc-chip-highlighted",n.highlighted)("mat-mdc-chip-disabled",n.disabled)("mat-mdc-basic-chip",n._isBasicChip)("mat-mdc-standard-chip",!n._isBasicChip)("mat-mdc-chip-with-trailing-icon",n._hasTrailingIcon())("_mat-animation-noopable",n._animationsDisabled))},inputs:{role:"role",id:"id",ariaLabel:[I.None,"aria-label","ariaLabel"],ariaDescription:[I.None,"aria-description","ariaDescription"],value:"value",color:"color",removable:[I.HasDecoratorInputTransform,"removable","removable",t1],highlighted:[I.HasDecoratorInputTransform,"highlighted","highlighted",t1],disableRipple:[I.HasDecoratorInputTransform,"disableRipple","disableRipple",t1],disabled:[I.HasDecoratorInputTransform,"disabled","disabled",t1],tabIndex:[I.HasDecoratorInputTransform,"tabIndex","tabIndex",t=>t==null?void 0:A2(t)]},outputs:{removed:"removed",destroyed:"destroyed"},exportAs:["matChip"],standalone:!0,features:[U1([{provide:j5,useExisting:e}]),v1,E],ngContentSelectors:Qr,decls:8,vars:3,consts:[[1,"mat-mdc-chip-focus-overlay"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary"],["matChipAction","",3,"isInteractive"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],[1,"mat-mdc-chip-primary-focus-indicator","mat-mdc-focus-indicator"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"]],template:function(i,n){i&1&&(n1(Yr),O(0,"span",0),h(1,"span",1)(2,"span",2),Y(3,Xr,2,0,"span",3),h(4,"span",4),B(5),O(6,"span",5),p()()(),Y(7,Kr,2,0,"span",6)),i&2&&(_(2),S("isInteractive",!1),_(),S2(3,n.leadingIcon?3:-1),_(4),S2(7,n._hasTrailingIcon()?7:-1))},dependencies:[B5],styles:['.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{overflow-x:hidden}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mdc-evolution-chip__action--primary:before{box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1}.mdc-evolution-chip--touch{margin-top:8px;margin-bottom:8px}.mdc-evolution-chip__action-touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-evolution-chip__text-label{white-space:nowrap;user-select:none;text-overflow:ellipsis;overflow:hidden}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mdc-evolution-chip__checkmark-background{opacity:0}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__graphic{transition:width 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark{transition:opacity 50ms 0ms linear,transform 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-50%, -50%)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@keyframes mdc-evolution-chip-enter{from{transform:scale(0.8);opacity:.4}to{transform:scale(1);opacity:1}}.mdc-evolution-chip--enter{animation:mdc-evolution-chip-enter 100ms 0ms cubic-bezier(0, 0, 0.2, 1)}@keyframes mdc-evolution-chip-exit{from{opacity:1}to{opacity:0}}.mdc-evolution-chip--exit{animation:mdc-evolution-chip-exit 75ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-evolution-chip--hidden{opacity:0;pointer-events:none;transition:width 150ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip .mdc-evolution-chip__ripple{border-radius:var(--mdc-chip-container-shape-radius)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-radius:var(--mdc-chip-container-shape-radius)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius)}.mat-mdc-standard-chip.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:var(--mdc-chip-with-avatar-avatar-size)}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{height:var(--mdc-chip-with-avatar-avatar-size);width:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary:before{border-color:var(--mdc-chip-outline-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational).mdc-ripple-upgraded--background-focused:before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus:before{border-color:var(--mdc-chip-focus-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary:before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-outline-width)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font);line-height:var(--mdc-chip-label-text-line-height);font-size:var(--mdc-chip-label-text-size);font-weight:var(--mdc-chip-label-text-weight);letter-spacing:var(--mdc-chip-label-text-tracking)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{height:var(--mdc-chip-with-icon-icon-size);width:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::after{background-color:var(--mdc-chip-hover-state-layer-color)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:hover .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary.mdc-ripple-surface--hover .mdc-evolution-chip__ripple::before{opacity:var(--mdc-chip-hover-state-layer-opacity)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary.mdc-ripple-upgraded--background-focused .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:not(.mdc-ripple-upgraded):focus .mdc-evolution-chip__ripple::before{transition-duration:75ms;opacity:var(--mdc-chip-focus-state-layer-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary .mdc-evolution-chip__ripple::after{background-color:var(--mdc-chip-selected-hover-state-layer-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:hover .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary.mdc-ripple-surface--hover .mdc-evolution-chip__ripple::before{opacity:var(--mdc-chip-selected-hover-state-layer-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary.mdc-ripple-upgraded--background-focused .mdc-evolution-chip__ripple::before,.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:not(.mdc-ripple-upgraded):focus .mdc-evolution-chip__ripple::before{transition-duration:75ms;opacity:var(--mdc-chip-selected-focus-state-layer-opacity)}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color);--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color);--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color);--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color)}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color)}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color);opacity:var(--mdc-chip-hover-state-layer-opacity)}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color);opacity:var(--mdc-chip-selected-hover-state-layer-opacity)}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color);opacity:var(--mdc-chip-focus-state-layer-opacity)}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color);opacity:var(--mdc-chip-selected-focus-state-layer-opacity)}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color)}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background:var(--mat-chip-trailing-action-state-layer-color)}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity)}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity)}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background:var(--mat-chip-selected-trailing-action-state-layer-color)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__checkmark{height:20px;width:20px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.cdk-high-contrast-active .mat-mdc-standard-chip .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary{flex-basis:100%}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:"";display:block;opacity:0;position:absolute;top:-2px;bottom:-2px;left:6px;right:6px;border-radius:50%}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0})}}return e})();var $0=(()=>{class e{get chipFocusChanges(){return this._getChipStream(t=>t._onFocus)}get chipDestroyedChanges(){return this._getChipStream(t=>t.destroyed)}get chipRemovedChanges(){return this._getChipStream(t=>t.removed)}get disabled(){return this._disabled}set disabled(t){this._disabled=t,this._syncChipsState()}get empty(){return!this._chips||this._chips.length===0}get role(){return this._explicitRole?this._explicitRole:this.empty?null:this._defaultRole}set role(t){this._explicitRole=t}get focused(){return this._hasFocusedChip()}constructor(t,i,n){this._elementRef=t,this._changeDetectorRef=i,this._dir=n,this._lastDestroyedFocusedChipIndex=null,this._destroyed=new N,this._defaultRole="presentation",this._disabled=!1,this.tabIndex=0,this._explicitRole=null,this._chipActions=new $2}ngAfterViewInit(){this._setUpFocusManagement(),this._trackChipSetChanges(),this._trackDestroyedFocusedChip()}ngOnDestroy(){this._keyManager?.destroy(),this._chipActions.destroy(),this._destroyed.next(),this._destroyed.complete()}_hasFocusedChip(){return this._chips&&this._chips.some(t=>t._hasFocus())}_syncChipsState(){this._chips&&this._chips.forEach(t=>{t.disabled=this._disabled,t._changeDetectorRef.markForCheck()})}focus(){}_handleKeydown(t){this._originatesFromChip(t)&&this._keyManager.onKeydown(t)}_isValidIndex(t){return t>=0&&tthis.tabIndex=t)}}_getChipStream(t){return this._chips.changes.pipe(C1(null),M1(()=>R1(...this._chips.map(t))))}_originatesFromChip(t){let i=t.target;for(;i&&i!==this._elementRef.nativeElement;){if(i.classList.contains("mat-mdc-chip"))return!0;i=i.parentElement}return!1}_setUpFocusManagement(){this._chips.changes.pipe(C1(this._chips)).subscribe(t=>{let i=[];t.forEach(n=>n._getActions().forEach(a=>i.push(a))),this._chipActions.reset(i),this._chipActions.notifyOnChanges()}),this._keyManager=new l4(this._chipActions).withVerticalOrientation().withHorizontalOrientation(this._dir?this._dir.value:"ltr").withHomeAndEnd().skipPredicate(t=>this._skipPredicate(t)),this.chipFocusChanges.pipe(X(this._destroyed)).subscribe(({chip:t})=>{let i=t._getSourceAction(document.activeElement);i&&this._keyManager.updateActiveItem(i)}),this._dir?.change.pipe(X(this._destroyed)).subscribe(t=>this._keyManager.withHorizontalOrientation(t))}_skipPredicate(t){return!t.isInteractive||t.disabled}_trackChipSetChanges(){this._chips.changes.pipe(C1(null),X(this._destroyed)).subscribe(()=>{this.disabled&&Promise.resolve().then(()=>this._syncChipsState()),this._redirectDestroyedChipFocus()})}_trackDestroyedFocusedChip(){this.chipDestroyedChanges.pipe(X(this._destroyed)).subscribe(t=>{let n=this._chips.toArray().indexOf(t.chip);this._isValidIndex(n)&&t.chip._hasFocus()&&(this._lastDestroyedFocusedChipIndex=n)})}_redirectDestroyedChipFocus(){if(this._lastDestroyedFocusedChipIndex!=null){if(this._chips.length){let t=Math.min(this._lastDestroyedFocusedChipIndex,this._chips.length-1),i=this._chips.toArray()[t];i.disabled?this._chips.length===1?this.focus():this._keyManager.setPreviousItemActive():i.focus()}else this.focus();this._lastDestroyedFocusedChipIndex=null}}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(L1),m(O1,8))}}static{this.\u0275cmp=A({type:e,selectors:[["mat-chip-set"]],contentQueries:function(i,n,a){if(i&1&&p1(a,Lt,5),i&2){let o;W(o=G())&&(n._chips=o)}},hostAttrs:[1,"mat-mdc-chip-set","mdc-evolution-chip-set"],hostVars:1,hostBindings:function(i,n){i&1&&_1("keydown",function(o){return n._handleKeydown(o)}),i&2&&J("role",n.role)},inputs:{disabled:[I.HasDecoratorInputTransform,"disabled","disabled",t1],role:"role",tabIndex:[I.HasDecoratorInputTransform,"tabIndex","tabIndex",t=>t==null?0:A2(t)]},standalone:!0,features:[v1,E],ngContentSelectors:Jr,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(i,n){i&1&&(n1(),h(0,"div",0),B(1),p())},styles:[".mdc-evolution-chip-set{display:flex}.mdc-evolution-chip-set:focus{outline:none}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mdc-evolution-chip-set--overflow .mdc-evolution-chip-set__chips{flex-flow:nowrap}.mdc-evolution-chip-set .mdc-evolution-chip-set__chips{margin-left:-8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip-set__chips,.mdc-evolution-chip-set .mdc-evolution-chip-set__chips[dir=rtl]{margin-left:0;margin-right:-8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-left:8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip,.mdc-evolution-chip-set .mdc-evolution-chip[dir=rtl]{margin-left:0;margin-right:8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-top:4px;margin-bottom:4px}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0})}}return e})();var Z0=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({providers:[I5,{provide:tl,useValue:{separatorKeyCodes:[13]}}],imports:[Z,h4,Z]})}}return e})();var Y6=class e{constructor(c,t,i){this.level=c,this.language=t,this.tags=i}static fromCategory(c){let t="",i="",n=[];for(let a=0;as.name).join("");break;case"Tags":n=o.categoryItems.map(s=>s.name);break}}return new e(t,i,n)}},f4=(()=>{class e{constructor(t){this.http=t,this.schedules=[],this.sessionsMap=new Map}load(){return w2(this,null,function*(){let t=this.http.get("./assets/schedules.json");this.schedules=yield Ut(t);for(let i of this.schedules)for(let n of i.timeSlots)for(let a of n.rooms)a.session.generatedCategories=Y6.fromCategory(a.session.categories),this.sessionsMap.set(a.session.id,a.session);return this.schedules})}static{this.\u0275fac=function(i){return new(i||e)(u(L3))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var M2=(()=>{class e{constructor(t){this.http=t,this.speakers=[],this.speakersMap=new Map}load(){return w2(this,null,function*(){let t=this.http.get("./assets/speakers.json");this.speakers=yield Ut(t);for(let i=0;i{class e{constructor(t,i){this.service=t,this.speakerService=i,this.cols=0,this.schedules=[],this.speakersMap=new Map,this.schedules=this.service.schedules,this.speakersMap=this.speakerService.speakersMap}static{this.\u0275fac=function(i){return new(i||e)(m(f4),m(M2))}}static{this.\u0275cmp=A({type:e,selectors:[["app-schedule"]],standalone:!0,features:[E],decls:5,vars:1,consts:[[1,"max-width-constraint-with-padding"],[4,"ngFor","ngForOf"],[1,"schedule-date"],[1,"schedule-time"],[1,"mat-card-group"],["appearance","outlined",4,"ngFor","ngForOf"],["appearance","outlined"],[3,"routerLink"],[4,"ngIf"],["class","language-box",4,"ngIf"],[1,"social-link-list"],[1,"speaker-list"],[1,"card-spacing"],["aria-label","Chihuahua traits"],[1,"language-box"],[1,"speaker-avatar-link",3,"routerLink"],["alt","the avatar of the speaker",3,"src"],[1,"speaker-name"],[1,"speaker-tag-line"]],template:function(i,n){i&1&&(h(0,"div",0)(1,"h1"),b(2,"\u8B70\u7A0B"),p(),Y(3,rl,5,5,"div",1),p(),O(4,"router-outlet")),i&2&&(_(3),S("ngForOf",n.schedules))},dependencies:[D5,E1,f2,Z2,Fc,c0,W0,V0,j0,T5,q0,U0,B0,Z0,Lt,$0,v2,S3,e2],styles:[".mat-card-group[_ngcontent-%COMP%]{margin:10px 0;display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px}.language-box[_ngcontent-%COMP%]{border:1px solid;padding:1px 5px;float:right}.schedule-date[_ngcontent-%COMP%]{padding-bottom:5px;color:var(--black-02);border-bottom:3px solid var(--black-02);letter-spacing:2px;transition:border-bottom-color .75s var(--default-transition-timing-function),color .75s var(--default-transition-timing-function)}.schedule-date[_ngcontent-%COMP%]:hover{color:var(--blue-500);border-bottom-color:var(--blue-500)}.schedule-time[_ngcontent-%COMP%]{color:var(--blue-500);font-size:1.3rem;margin:20px 0 5px;letter-spacing:3px}mat-card-subtitle[_ngcontent-%COMP%]{margin-top:10px}mat-card[_ngcontent-%COMP%]{display:flex}ul.speaker-list[_ngcontent-%COMP%]{list-style-type:none;padding:0;margin:0}ul.speaker-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;margin:10px 0;justify-content:flex-start}ul.speaker-list[_ngcontent-%COMP%] a.speaker-avatar-link[_ngcontent-%COMP%]{margin-right:10px;display:block;height:40px}ul.speaker-list[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:50%;transition:box-shadow .75s var(--default-transition-timing-function);background-color:var(--pastel-green)}ul.speaker-list[_ngcontent-%COMP%] img[_ngcontent-%COMP%]:hover{box-shadow:0 0 5px var(--green-500)}ul.speaker-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:5px;font-size:1rem;line-height:1.2rem}ul.speaker-list[_ngcontent-%COMP%] p.speaker-tag-line[_ngcontent-%COMP%]{font-size:.9rem;color:#0000008a}.card-spacing[_ngcontent-%COMP%]{flex:1}mat-card-title[_ngcontent-%COMP%] a[_ngcontent-%COMP%], mat-card-title[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:visited{color:unset;text-decoration:none;transition:color .75s var(--default-transition-timing-function)}mat-card-title[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{color:var(--blue-500)}mat-card-footer[_ngcontent-%COMP%]{padding:16px}@media screen and (max-width: 1200px){.mat-card-group[_ngcontent-%COMP%]{grid-template-columns:repeat(3,1fr)}}@media screen and (max-width: 900px){.mat-card-group[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}}@media screen and (max-width: 650px){.mat-card-group[_ngcontent-%COMP%]{grid-template-columns:repeat(1,1fr)}}"]})}}return e})();var G5=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}";var $5=["mat-icon-button",""],Z5=["*"],ll='.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{color:var(--mdc-icon-button-icon-color)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button{border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 48px);height:var(--mdc-icon-button-state-layer-size, 48px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 48px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size);-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color)}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity)}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity)}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity)}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',dl=new x("MAT_BUTTON_CONFIG");var ml=[{attribute:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{attribute:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{attribute:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{attribute:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{attribute:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{attribute:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{attribute:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],Y5=(()=>{class e{get ripple(){return this._rippleLoader?.getRipple(this._elementRef.nativeElement)}set ripple(t){this._rippleLoader?.attachRipple(this._elementRef.nativeElement,t)}get disableRipple(){return this._disableRipple}set disableRipple(t){this._disableRipple=t,this._updateRippleDisabled()}get disabled(){return this._disabled}set disabled(t){this._disabled=t,this._updateRippleDisabled()}constructor(t,i,n,a){this._elementRef=t,this._platform=i,this._ngZone=n,this._animationMode=a,this._focusMonitor=v(i2),this._rippleLoader=v(H0),this._isFab=!1,this._disableRipple=!1,this._disabled=!1;let o=v(dl,{optional:!0}),s=t.nativeElement,r=s.classList;this.disabledInteractive=o?.disabledInteractive??!1,this._rippleLoader?.configureRipple(s,{className:"mat-mdc-button-ripple"});for(let{attribute:l,mdcClasses:d}of ml)s.hasAttribute(l)&&r.add(...d)}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(t="program",i){t?this._focusMonitor.focusVia(this._elementRef.nativeElement,t,i):this._elementRef.nativeElement.focus(i)}_getAriaDisabled(){return this.ariaDisabled!=null?this.ariaDisabled:this.disabled&&this.disabledInteractive?!0:null}_getDisabledAttribute(){return this.disabledInteractive||!this.disabled?null:!0}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}static{this.\u0275fac=function(i){b3()}}static{this.\u0275dir=H({type:e,inputs:{color:"color",disableRipple:[I.HasDecoratorInputTransform,"disableRipple","disableRipple",t1],disabled:[I.HasDecoratorInputTransform,"disabled","disabled",t1],ariaDisabled:[I.HasDecoratorInputTransform,"aria-disabled","ariaDisabled",t1],disabledInteractive:[I.HasDecoratorInputTransform,"disabledInteractive","disabledInteractive",t1]},features:[v1]})}}return e})();var hl=(()=>{class e extends Y5{constructor(t,i,n,a){super(t,i,n,a),this._haltDisabledEvents=o=>{this.disabled&&(o.preventDefault(),o.stopImmediatePropagation())}}ngOnInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("click",this._haltDisabledEvents)})}ngOnDestroy(){super.ngOnDestroy(),this._elementRef.nativeElement.removeEventListener("click",this._haltDisabledEvents)}_getAriaDisabled(){return this.ariaDisabled==null?this.disabled:this.ariaDisabled}static{this.\u0275fac=function(i){b3()}}static{this.\u0275dir=H({type:e,inputs:{tabIndex:[I.HasDecoratorInputTransform,"tabIndex","tabIndex",t=>t==null?void 0:A2(t)]},features:[v1,f1]})}}return e})();var p4=(()=>{class e extends Y5{constructor(t,i,n,a){super(t,i,n,a),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(Q),m(w),m(h1,8))}}static{this.\u0275cmp=A({type:e,selectors:[["button","mat-icon-button",""]],hostVars:14,hostBindings:function(i,n){i&2&&(J("disabled",n._getDisabledAttribute())("aria-disabled",n._getAriaDisabled()),h2(n.color?"mat-"+n.color:""),K("mat-mdc-button-disabled",n.disabled)("mat-mdc-button-disabled-interactive",n.disabledInteractive)("_mat-animation-noopable",n._animationMode==="NoopAnimations")("mat-unthemed",!n.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[f1,E],attrs:$5,ngContentSelectors:Z5,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,n){i&1&&(n1(),O(0,"span",0),B(1),O(2,"span",1)(3,"span",2))},styles:['.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{color:var(--mdc-icon-button-icon-color)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button{border-radius:50%;flex-shrink:0;text-align:center;width:var(--mdc-icon-button-state-layer-size, 48px);height:var(--mdc-icon-button-state-layer-size, 48px);padding:calc(calc(var(--mdc-icon-button-state-layer-size, 48px) - var(--mdc-icon-button-icon-size, 24px)) / 2);font-size:var(--mdc-icon-button-icon-size);-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color)}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity)}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity)}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity)}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%);display:var(--mat-icon-button-touch-target-display)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',G5],encapsulation:2,changeDetection:0})}}return e})(),Q0=(()=>{class e extends hl{constructor(t,i,n,a){super(t,i,n,a)}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(Q),m(w),m(h1,8))}}static{this.\u0275cmp=A({type:e,selectors:[["a","mat-icon-button",""]],hostVars:15,hostBindings:function(i,n){i&2&&(J("disabled",n._getDisabledAttribute())("tabindex",n.disabled&&!n.disabledInteractive?-1:n.tabIndex)("aria-disabled",n._getDisabledAttribute()),h2(n.color?"mat-"+n.color:""),K("mat-mdc-button-disabled",n.disabled)("mat-mdc-button-disabled-interactive",n.disabledInteractive)("_mat-animation-noopable",n._animationMode==="NoopAnimations")("mat-unthemed",!n.color)("mat-mdc-button-base",!0))},exportAs:["matButton","matAnchor"],standalone:!0,features:[f1,E],attrs:$5,ngContentSelectors:Z5,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(i,n){i&1&&(n1(),O(0,"span",0),B(1),O(2,"span",1)(3,"span",2))},styles:[ll,G5],encapsulation:2,changeDetection:0})}}return e})(),a3=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z,h4,Z]})}}return e})();var fl=20,wt=(()=>{class e{constructor(t,i,n){this._ngZone=t,this._platform=i,this._scrolled=new N,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=n}register(t){this.scrollContainers.has(t)||this.scrollContainers.set(t,t.elementScrolled().subscribe(()=>this._scrolled.next(t)))}deregister(t){let i=this.scrollContainers.get(t);i&&(i.unsubscribe(),this.scrollContainers.delete(t))}scrolled(t=fl){return this._platform.isBrowser?new K1(i=>{this._globalSubscription||this._addGlobalListener();let n=t>0?this._scrolled.pipe(we(t)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{n.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):M()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((t,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(t,i){let n=this.getAncestorScrollContainers(t);return this.scrolled(i).pipe(c1(a=>!a||n.indexOf(a)>-1))}getAncestorScrollContainers(t){let i=[];return this.scrollContainers.forEach((n,a)=>{this._scrollableContainsElement(a,t)&&i.push(a)}),i}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(t,i){let n=s2(i),a=t.getElementRef().nativeElement;do if(n==a)return!0;while(n=n.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>{let t=this._getWindow();return k2(t.document,"scroll").subscribe(()=>this._scrolled.next())})}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}static{this.\u0275fac=function(i){return new(i||e)(u(w),u(Q),u(T,8))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),K0=(()=>{class e{constructor(t,i,n,a){this.elementRef=t,this.scrollDispatcher=i,this.ngZone=n,this.dir=a,this._destroyed=new N,this._elementScrolled=new K1(o=>this.ngZone.runOutsideAngular(()=>k2(this.elementRef.nativeElement,"scroll").pipe(X(this._destroyed)).subscribe(o)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(t){let i=this.elementRef.nativeElement,n=this.dir&&this.dir.value=="rtl";t.left==null&&(t.left=n?t.end:t.start),t.right==null&&(t.right=n?t.start:t.end),t.bottom!=null&&(t.top=i.scrollHeight-i.clientHeight-t.bottom),n&&o4()!=a2.NORMAL?(t.left!=null&&(t.right=i.scrollWidth-i.clientWidth-t.left),o4()==a2.INVERTED?t.left=t.right:o4()==a2.NEGATED&&(t.left=t.right?-t.right:t.right)):t.right!=null&&(t.left=i.scrollWidth-i.clientWidth-t.right),this._applyScrollToOptions(t)}_applyScrollToOptions(t){let i=this.elementRef.nativeElement;D0()?i.scrollTo(t):(t.top!=null&&(i.scrollTop=t.top),t.left!=null&&(i.scrollLeft=t.left))}measureScrollOffset(t){let i="left",n="right",a=this.elementRef.nativeElement;if(t=="top")return a.scrollTop;if(t=="bottom")return a.scrollHeight-a.clientHeight-a.scrollTop;let o=this.dir&&this.dir.value=="rtl";return t=="start"?t=o?n:i:t=="end"&&(t=o?i:n),o&&o4()==a2.INVERTED?t==i?a.scrollWidth-a.clientWidth-a.scrollLeft:a.scrollLeft:o&&o4()==a2.NEGATED?t==i?a.scrollLeft+a.scrollWidth-a.clientWidth:-a.scrollLeft:t==i?a.scrollLeft:a.scrollWidth-a.clientWidth-a.scrollLeft}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(wt),m(w),m(O1,8))}}static{this.\u0275dir=H({type:e,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0})}}return e})(),pl=20,o3=(()=>{class e{constructor(t,i,n){this._platform=t,this._change=new N,this._changeListener=a=>{this._change.next(a)},this._document=n,i.runOutsideAngular(()=>{if(t.isBrowser){let a=this._getWindow();a.addEventListener("resize",this._changeListener),a.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){let t=this._getWindow();t.removeEventListener("resize",this._changeListener),t.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();let t={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),t}getViewportRect(){let t=this.getViewportScrollPosition(),{width:i,height:n}=this.getViewportSize();return{top:t.top,left:t.left,bottom:t.top+n,right:t.left+i,height:n,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};let t=this._document,i=this._getWindow(),n=t.documentElement,a=n.getBoundingClientRect(),o=-a.top||t.body.scrollTop||i.scrollY||n.scrollTop||0,s=-a.left||t.body.scrollLeft||i.scrollX||n.scrollLeft||0;return{top:o,left:s}}change(t=pl){return t>0?this._change.pipe(we(t)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){let t=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:t.innerWidth,height:t.innerHeight}:{width:0,height:0}}static{this.\u0275fac=function(i){return new(i||e)(u(Q),u(w),u(T,8))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var yt=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({})}}return e})(),Q6=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[n3,yt,n3,yt]})}}return e})();var kt=class{attach(c){return this._attachedHost=c,c.attach(this)}detach(){let c=this._attachedHost;c!=null&&(this._attachedHost=null,c.detach())}get isAttached(){return this._attachedHost!=null}setAttachedHost(c){this._attachedHost=c}},u4=class extends kt{constructor(c,t,i,n,a){super(),this.component=c,this.viewContainerRef=t,this.injector=i,this.componentFactoryResolver=n,this.projectableNodes=a}},g4=class extends kt{constructor(c,t,i,n){super(),this.templateRef=c,this.viewContainerRef=t,this.context=i,this.injector=n}get origin(){return this.templateRef.elementRef}attach(c,t=this.context){return this.context=t,super.attach(c)}detach(){return this.context=void 0,super.detach()}},K6=class extends kt{constructor(c){super(),this.element=c instanceof D?c.nativeElement:c}},b4=class{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(c){if(c instanceof u4)return this._attachedPortal=c,this.attachComponentPortal(c);if(c instanceof g4)return this._attachedPortal=c,this.attachTemplatePortal(c);if(this.attachDomPortal&&c instanceof K6)return this._attachedPortal=c,this.attachDomPortal(c)}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(c){this._disposeFn=c}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}};var J0=class extends b4{constructor(c,t,i,n,a){super(),this.outletElement=c,this._componentFactoryResolver=t,this._appRef=i,this._defaultInjector=n,this.attachDomPortal=o=>{this._document;let s=o.element;s.parentNode;let r=this._document.createComment("dom-portal");s.parentNode.insertBefore(r,s),this.outletElement.appendChild(s),this._attachedPortal=o,super.setDisposeFn(()=>{r.parentNode&&r.parentNode.replaceChild(s,r)})},this._document=a}attachComponentPortal(c){let i=(c.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(c.component),n;return c.viewContainerRef?(n=c.viewContainerRef.createComponent(i,c.viewContainerRef.length,c.injector||c.viewContainerRef.injector,c.projectableNodes||void 0),this.setDisposeFn(()=>n.destroy())):(n=i.create(c.injector||this._defaultInjector||F1.NULL),this._appRef.attachView(n.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(n.hostView),n.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(n)),this._attachedPortal=c,n}attachTemplatePortal(c){let t=c.viewContainerRef,i=t.createEmbeddedView(c.templateRef,c.context,{injector:c.injector});return i.rootNodes.forEach(n=>this.outletElement.appendChild(n)),i.detectChanges(),this.setDisposeFn(()=>{let n=t.indexOf(i);n!==-1&&t.remove(n)}),this._attachedPortal=c,i}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(c){return c.hostView.rootNodes[0]}};var St=(()=>{class e extends b4{constructor(t,i,n){super(),this._componentFactoryResolver=t,this._viewContainerRef=i,this._isInitialized=!1,this.attached=new o1,this.attachDomPortal=a=>{this._document;let o=a.element;o.parentNode;let s=this._document.createComment("dom-portal");a.setAttachedHost(this),o.parentNode.insertBefore(s,o),this._getRootNode().appendChild(o),this._attachedPortal=a,super.setDisposeFn(()=>{s.parentNode&&s.parentNode.replaceChild(o,s)})},this._document=n}get portal(){return this._attachedPortal}set portal(t){this.hasAttached()&&!t&&!this._isInitialized||(this.hasAttached()&&super.detach(),t&&super.attach(t),this._attachedPortal=t||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(t){t.setAttachedHost(this);let i=t.viewContainerRef!=null?t.viewContainerRef:this._viewContainerRef,a=(t.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(t.component),o=i.createComponent(a,i.length,t.injector||i.injector,t.projectableNodes||void 0);return i!==this._viewContainerRef&&this._getRootNode().appendChild(o.hostView.rootNodes[0]),super.setDisposeFn(()=>o.destroy()),this._attachedPortal=t,this._attachedRef=o,this.attached.emit(o),o}attachTemplatePortal(t){t.setAttachedHost(this);let i=this._viewContainerRef.createEmbeddedView(t.templateRef,t.context,{injector:t.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=t,this._attachedRef=i,this.attached.emit(i),i}_getRootNode(){let t=this._viewContainerRef.element.nativeElement;return t.nodeType===t.ELEMENT_NODE?t:t.parentNode}static{this.\u0275fac=function(i){return new(i||e)(m(E4),m(_3),m(T))}}static{this.\u0275dir=H({type:e,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[I.None,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],standalone:!0,features:[f1]})}}return e})();var E3=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({})}}return e})();var Q5=D0(),J6=class{constructor(c,t){this._viewportRuler=c,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=t}attach(){}enable(){if(this._canBeEnabled()){let c=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=c.style.left||"",this._previousHTMLStyles.top=c.style.top||"",c.style.left=z1(-this._previousScrollPosition.left),c.style.top=z1(-this._previousScrollPosition.top),c.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){let c=this._document.documentElement,t=this._document.body,i=c.style,n=t.style,a=i.scrollBehavior||"",o=n.scrollBehavior||"";this._isEnabled=!1,i.left=this._previousHTMLStyles.left,i.top=this._previousHTMLStyles.top,c.classList.remove("cdk-global-scrollblock"),Q5&&(i.scrollBehavior=n.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),Q5&&(i.scrollBehavior=a,n.scrollBehavior=o)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;let t=this._document.body,i=this._viewportRuler.getViewportSize();return t.scrollHeight>i.height||t.scrollWidth>i.width}};var ti=class{constructor(c,t,i,n){this._scrollDispatcher=c,this._ngZone=t,this._viewportRuler=i,this._config=n,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(c){this._overlayRef,this._overlayRef=c}enable(){if(this._scrollSubscription)return;let c=this._scrollDispatcher.scrolled(0).pipe(c1(t=>!t||!this._overlayRef.overlayElement.contains(t.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=c.subscribe(()=>{let t=this._viewportRuler.getViewportScrollPosition().top;Math.abs(t-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=c.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},te=class{enable(){}disable(){}attach(){}};function ei(e,c){return c.some(t=>{let i=e.bottomt.bottom,a=e.rightt.right;return i||n||a||o})}function X5(e,c){return c.some(t=>{let i=e.topt.bottom,a=e.leftt.right;return i||n||a||o})}var ii=class{constructor(c,t,i,n){this._scrollDispatcher=c,this._viewportRuler=t,this._ngZone=i,this._config=n,this._scrollSubscription=null}attach(c){this._overlayRef,this._overlayRef=c}enable(){if(!this._scrollSubscription){let c=this._config?this._config.scrollThrottle:0;this._scrollSubscription=this._scrollDispatcher.scrolled(c).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){let t=this._overlayRef.overlayElement.getBoundingClientRect(),{width:i,height:n}=this._viewportRuler.getViewportSize();ei(t,[{width:i,height:n,bottom:n,right:i,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}})}}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},ul=(()=>{class e{constructor(t,i,n,a){this._scrollDispatcher=t,this._viewportRuler=i,this._ngZone=n,this.noop=()=>new te,this.close=o=>new ti(this._scrollDispatcher,this._ngZone,this._viewportRuler,o),this.block=()=>new J6(this._viewportRuler,this._document),this.reposition=o=>new ii(this._scrollDispatcher,this._viewportRuler,this._ngZone,o),this._document=a}static{this.\u0275fac=function(i){return new(i||e)(u(wt),u(o3),u(w),u(T))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),Nt=class{constructor(c){if(this.scrollStrategy=new te,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,c){let t=Object.keys(c);for(let i of t)c[i]!==void 0&&(this[i]=c[i])}}};var ci=class{constructor(c,t){this.connectionPair=c,this.scrollableViewProperties=t}};var cn=(()=>{class e{constructor(t){this._attachedOverlays=[],this._document=t}ngOnDestroy(){this.detach()}add(t){this.remove(t),this._attachedOverlays.push(t)}remove(t){let i=this._attachedOverlays.indexOf(t);i>-1&&this._attachedOverlays.splice(i,1),this._attachedOverlays.length===0&&this.detach()}static{this.\u0275fac=function(i){return new(i||e)(u(T))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),gl=(()=>{class e extends cn{constructor(t,i){super(t),this._ngZone=i,this._keydownListener=n=>{let a=this._attachedOverlays;for(let o=a.length-1;o>-1;o--)if(a[o]._keydownEvents.observers.length>0){let s=a[o]._keydownEvents;this._ngZone?this._ngZone.run(()=>s.next(n)):s.next(n);break}}}add(t){super.add(t),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}static{this.\u0275fac=function(i){return new(i||e)(u(T),u(w,8))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),bl=(()=>{class e extends cn{constructor(t,i,n){super(t),this._platform=i,this._ngZone=n,this._cursorStyleIsSet=!1,this._pointerDownListener=a=>{this._pointerDownEventTarget=o2(a)},this._clickListener=a=>{let o=o2(a),s=a.type==="click"&&this._pointerDownEventTarget?this._pointerDownEventTarget:o;this._pointerDownEventTarget=null;let r=this._attachedOverlays.slice();for(let l=r.length-1;l>-1;l--){let d=r[l];if(d._outsidePointerEvents.observers.length<1||!d.hasAttached())continue;if(d.overlayElement.contains(o)||d.overlayElement.contains(s))break;let g=d._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>g.next(a)):g.next(a)}}}add(t){if(super.add(t),!this._isAttached){let i=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(i)):this._addEventListeners(i),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=i.style.cursor,i.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){let t=this._document.body;t.removeEventListener("pointerdown",this._pointerDownListener,!0),t.removeEventListener("click",this._clickListener,!0),t.removeEventListener("auxclick",this._clickListener,!0),t.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(t.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(t){t.addEventListener("pointerdown",this._pointerDownListener,!0),t.addEventListener("click",this._clickListener,!0),t.addEventListener("auxclick",this._clickListener,!0),t.addEventListener("contextmenu",this._clickListener,!0)}static{this.\u0275fac=function(i){return new(i||e)(u(T),u(Q),u(w,8))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),v4=(()=>{class e{constructor(t,i){this._platform=i,this._document=t}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){let t="cdk-overlay-container";if(this._platform.isBrowser||zt()){let n=this._document.querySelectorAll(`.${t}[platform="server"], .${t}[platform="test"]`);for(let a=0;athis._backdropClick.next(g),this._backdropTransitionendHandler=g=>{this._disposeBackdrop(g.target)},this._keydownEvents=new N,this._outsidePointerEvents=new N,n.scrollStrategy&&(this._scrollStrategy=n.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=n.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(c){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);let t=this._portalOutlet.attach(c);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe(r1(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),typeof t?.onDestroy=="function"&&t.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),t}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();let c=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),c}dispose(){let c=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._previousHostParent=this._pane=this._host=null,c&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(c){c!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=c,this.hasAttached()&&(c.attach(this),this.updatePosition()))}updateSize(c){this._config=f(f({},this._config),c),this._updateElementSize()}setDirection(c){this._config=j(f({},this._config),{direction:c}),this._updateElementDirection()}addPanelClass(c){this._pane&&this._toggleClasses(this._pane,c,!0)}removePanelClass(c){this._pane&&this._toggleClasses(this._pane,c,!1)}getDirection(){let c=this._config.direction;return c?typeof c=="string"?c:c.value:"ltr"}updateScrollStrategy(c){c!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=c,this.hasAttached()&&(c.attach(this),c.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;let c=this._pane.style;c.width=z1(this._config.width),c.height=z1(this._config.height),c.minWidth=z1(this._config.minWidth),c.minHeight=z1(this._config.minHeight),c.maxWidth=z1(this._config.maxWidth),c.maxHeight=z1(this._config.maxHeight)}_togglePointerEvents(c){this._pane.style.pointerEvents=c?"":"none"}_attachBackdrop(){let c="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(c)})}):this._backdropElement.classList.add(c)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){let c=this._backdropElement;if(c){if(this._animationsDisabled){this._disposeBackdrop(c);return}c.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{c.addEventListener("transitionend",this._backdropTransitionendHandler)}),c.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(c)},500))}}_toggleClasses(c,t,i){let n=s4(t||[]).filter(a=>!!a);n.length&&(i?c.classList.add(...n):c.classList.remove(...n))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{let c=this._ngZone.onStable.pipe(X(R1(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||this._pane.children.length===0)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),c.unsubscribe())})})}_disposeScrollStrategy(){let c=this._scrollStrategy;c&&(c.disable(),c.detach&&c.detach())}_disposeBackdrop(c){c&&(c.removeEventListener("click",this._backdropClickHandler),c.removeEventListener("transitionend",this._backdropTransitionendHandler),c.remove(),this._backdropElement===c&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}},K5="cdk-overlay-connected-position-bounding-box",vl=/([A-Za-z%]+)$/,ni=class{get positions(){return this._preferredPositions}constructor(c,t,i,n,a){this._viewportRuler=t,this._document=i,this._platform=n,this._overlayContainer=a,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new N,this._resizeSubscription=P1.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(c)}attach(c){this._overlayRef&&this._overlayRef,this._validatePositions(),c.hostElement.classList.add(K5),this._overlayRef=c,this._boundingBox=c.hostElement,this._pane=c.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition){this.reapplyLastPosition();return}this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let c=this._originRect,t=this._overlayRect,i=this._viewportRect,n=this._containerRect,a=[],o;for(let s of this._preferredPositions){let r=this._getOriginPoint(c,n,s),l=this._getOverlayPoint(r,t,s),d=this._getOverlayFit(l,t,i,s);if(d.isCompletelyWithinViewport){this._isPushed=!1,this._applyPosition(s,r);return}if(this._canFitWithFlexibleDimensions(d,l,i)){a.push({position:s,origin:r,overlayRect:t,boundingBoxRect:this._calculateBoundingBoxRect(r,s)});continue}(!o||o.overlayFit.visibleArear&&(r=d,s=l)}this._isPushed=!1,this._applyPosition(s.position,s.origin);return}if(this._canPush){this._isPushed=!0,this._applyPosition(o.position,o.originPoint);return}this._applyPosition(o.position,o.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&T3(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(K5),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;let c=this._lastPosition;if(c){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let t=this._getOriginPoint(this._originRect,this._containerRect,c);this._applyPosition(c,t)}else this.apply()}withScrollableContainers(c){return this._scrollables=c,this}withPositions(c){return this._preferredPositions=c,c.indexOf(this._lastPosition)===-1&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(c){return this._viewportMargin=c,this}withFlexibleDimensions(c=!0){return this._hasFlexibleDimensions=c,this}withGrowAfterOpen(c=!0){return this._growAfterOpen=c,this}withPush(c=!0){return this._canPush=c,this}withLockedPosition(c=!0){return this._positionLocked=c,this}setOrigin(c){return this._origin=c,this}withDefaultOffsetX(c){return this._offsetX=c,this}withDefaultOffsetY(c){return this._offsetY=c,this}withTransformOriginOn(c){return this._transformOriginSelector=c,this}_getOriginPoint(c,t,i){let n;if(i.originX=="center")n=c.left+c.width/2;else{let o=this._isRtl()?c.right:c.left,s=this._isRtl()?c.left:c.right;n=i.originX=="start"?o:s}t.left<0&&(n-=t.left);let a;return i.originY=="center"?a=c.top+c.height/2:a=i.originY=="top"?c.top:c.bottom,t.top<0&&(a-=t.top),{x:n,y:a}}_getOverlayPoint(c,t,i){let n;i.overlayX=="center"?n=-t.width/2:i.overlayX==="start"?n=this._isRtl()?-t.width:0:n=this._isRtl()?0:-t.width;let a;return i.overlayY=="center"?a=-t.height/2:a=i.overlayY=="top"?0:-t.height,{x:c.x+n,y:c.y+a}}_getOverlayFit(c,t,i,n){let a=tn(t),{x:o,y:s}=c,r=this._getOffset(n,"x"),l=this._getOffset(n,"y");r&&(o+=r),l&&(s+=l);let d=0-o,g=o+a.width-i.width,z=0-s,y=s+a.height-i.height,q=this._subtractOverflows(a.width,d,g),k=this._subtractOverflows(a.height,z,y),P=q*k;return{visibleArea:P,isCompletelyWithinViewport:a.width*a.height===P,fitsInViewportVertically:k===a.height,fitsInViewportHorizontally:q==a.width}}_canFitWithFlexibleDimensions(c,t,i){if(this._hasFlexibleDimensions){let n=i.bottom-t.y,a=i.right-t.x,o=J5(this._overlayRef.getConfig().minHeight),s=J5(this._overlayRef.getConfig().minWidth),r=c.fitsInViewportVertically||o!=null&&o<=n,l=c.fitsInViewportHorizontally||s!=null&&s<=a;return r&&l}return!1}_pushOverlayOnScreen(c,t,i){if(this._previousPushAmount&&this._positionLocked)return{x:c.x+this._previousPushAmount.x,y:c.y+this._previousPushAmount.y};let n=tn(t),a=this._viewportRect,o=Math.max(c.x+n.width-a.width,0),s=Math.max(c.y+n.height-a.height,0),r=Math.max(a.top-i.top-c.y,0),l=Math.max(a.left-i.left-c.x,0),d=0,g=0;return n.width<=a.width?d=l||-o:d=c.xq&&!this._isInitialRender&&!this._growAfterOpen&&(o=c.y-q/2)}let r=t.overlayX==="start"&&!n||t.overlayX==="end"&&n,l=t.overlayX==="end"&&!n||t.overlayX==="start"&&n,d,g,z;if(l)z=i.width-c.x+this._viewportMargin*2,d=c.x-this._viewportMargin;else if(r)g=c.x,d=i.right-c.x;else{let y=Math.min(i.right-c.x+i.left,c.x),q=this._lastBoundingBoxSize.width;d=y*2,g=c.x-y,d>q&&!this._isInitialRender&&!this._growAfterOpen&&(g=c.x-q/2)}return{top:o,left:g,bottom:s,right:z,width:d,height:a}}_setBoundingBoxStyles(c,t){let i=this._calculateBoundingBoxRect(c,t);!this._isInitialRender&&!this._growAfterOpen&&(i.height=Math.min(i.height,this._lastBoundingBoxSize.height),i.width=Math.min(i.width,this._lastBoundingBoxSize.width));let n={};if(this._hasExactPosition())n.top=n.left="0",n.bottom=n.right=n.maxHeight=n.maxWidth="",n.width=n.height="100%";else{let a=this._overlayRef.getConfig().maxHeight,o=this._overlayRef.getConfig().maxWidth;n.height=z1(i.height),n.top=z1(i.top),n.bottom=z1(i.bottom),n.width=z1(i.width),n.left=z1(i.left),n.right=z1(i.right),t.overlayX==="center"?n.alignItems="center":n.alignItems=t.overlayX==="end"?"flex-end":"flex-start",t.overlayY==="center"?n.justifyContent="center":n.justifyContent=t.overlayY==="bottom"?"flex-end":"flex-start",a&&(n.maxHeight=z1(a)),o&&(n.maxWidth=z1(o))}this._lastBoundingBoxSize=i,T3(this._boundingBox.style,n)}_resetBoundingBoxStyles(){T3(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){T3(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(c,t){let i={},n=this._hasExactPosition(),a=this._hasFlexibleDimensions,o=this._overlayRef.getConfig();if(n){let d=this._viewportRuler.getViewportScrollPosition();T3(i,this._getExactOverlayY(t,c,d)),T3(i,this._getExactOverlayX(t,c,d))}else i.position="static";let s="",r=this._getOffset(t,"x"),l=this._getOffset(t,"y");r&&(s+=`translateX(${r}px) `),l&&(s+=`translateY(${l}px)`),i.transform=s.trim(),o.maxHeight&&(n?i.maxHeight=z1(o.maxHeight):a&&(i.maxHeight="")),o.maxWidth&&(n?i.maxWidth=z1(o.maxWidth):a&&(i.maxWidth="")),T3(this._pane.style,i)}_getExactOverlayY(c,t,i){let n={top:"",bottom:""},a=this._getOverlayPoint(t,this._overlayRect,c);if(this._isPushed&&(a=this._pushOverlayOnScreen(a,this._overlayRect,i)),c.overlayY==="bottom"){let o=this._document.documentElement.clientHeight;n.bottom=`${o-(a.y+this._overlayRect.height)}px`}else n.top=z1(a.y);return n}_getExactOverlayX(c,t,i){let n={left:"",right:""},a=this._getOverlayPoint(t,this._overlayRect,c);this._isPushed&&(a=this._pushOverlayOnScreen(a,this._overlayRect,i));let o;if(this._isRtl()?o=c.overlayX==="end"?"left":"right":o=c.overlayX==="end"?"right":"left",o==="right"){let s=this._document.documentElement.clientWidth;n.right=`${s-(a.x+this._overlayRect.width)}px`}else n.left=z1(a.x);return n}_getScrollVisibility(){let c=this._getOriginRect(),t=this._pane.getBoundingClientRect(),i=this._scrollables.map(n=>n.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:X5(c,i),isOriginOutsideView:ei(c,i),isOverlayClipped:X5(t,i),isOverlayOutsideView:ei(t,i)}}_subtractOverflows(c,...t){return t.reduce((i,n)=>i-Math.max(n,0),c)}_getNarrowedViewportRect(){let c=this._document.documentElement.clientWidth,t=this._document.documentElement.clientHeight,i=this._viewportRuler.getViewportScrollPosition();return{top:i.top+this._viewportMargin,left:i.left+this._viewportMargin,right:i.left+c-this._viewportMargin,bottom:i.top+t-this._viewportMargin,width:c-2*this._viewportMargin,height:t-2*this._viewportMargin}}_isRtl(){return this._overlayRef.getDirection()==="rtl"}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(c,t){return t==="x"?c.offsetX==null?this._offsetX:c.offsetX:c.offsetY==null?this._offsetY:c.offsetY}_validatePositions(){}_addPanelClasses(c){this._pane&&s4(c).forEach(t=>{t!==""&&this._appliedPanelClasses.indexOf(t)===-1&&(this._appliedPanelClasses.push(t),this._pane.classList.add(t))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(c=>{this._pane.classList.remove(c)}),this._appliedPanelClasses=[])}_getOriginRect(){let c=this._origin;if(c instanceof D)return c.nativeElement.getBoundingClientRect();if(c instanceof Element)return c.getBoundingClientRect();let t=c.width||0,i=c.height||0;return{top:c.y,bottom:c.y+i,left:c.x,right:c.x+t,height:i,width:t}}};function T3(e,c){for(let t in c)c.hasOwnProperty(t)&&(e[t]=c[t]);return e}function J5(e){if(typeof e!="number"&&e!=null){let[c,t]=e.split(vl);return!t||t==="px"?parseFloat(c):null}return e||null}function tn(e){return{top:Math.floor(e.top),right:Math.floor(e.right),bottom:Math.floor(e.bottom),left:Math.floor(e.left),width:Math.floor(e.width),height:Math.floor(e.height)}}function _l(e,c){return e===c?!0:e.isOriginClipped===c.isOriginClipped&&e.isOriginOutsideView===c.isOriginOutsideView&&e.isOverlayClipped===c.isOverlayClipped&&e.isOverlayOutsideView===c.isOverlayOutsideView}var en="cdk-global-overlay-wrapper",ai=class{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(c){let t=c.getConfig();this._overlayRef=c,this._width&&!t.width&&c.updateSize({width:this._width}),this._height&&!t.height&&c.updateSize({height:this._height}),c.hostElement.classList.add(en),this._isDisposed=!1}top(c=""){return this._bottomOffset="",this._topOffset=c,this._alignItems="flex-start",this}left(c=""){return this._xOffset=c,this._xPosition="left",this}bottom(c=""){return this._topOffset="",this._bottomOffset=c,this._alignItems="flex-end",this}right(c=""){return this._xOffset=c,this._xPosition="right",this}start(c=""){return this._xOffset=c,this._xPosition="start",this}end(c=""){return this._xOffset=c,this._xPosition="end",this}width(c=""){return this._overlayRef?this._overlayRef.updateSize({width:c}):this._width=c,this}height(c=""){return this._overlayRef?this._overlayRef.updateSize({height:c}):this._height=c,this}centerHorizontally(c=""){return this.left(c),this._xPosition="center",this}centerVertically(c=""){return this.top(c),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;let c=this._overlayRef.overlayElement.style,t=this._overlayRef.hostElement.style,i=this._overlayRef.getConfig(),{width:n,height:a,maxWidth:o,maxHeight:s}=i,r=(n==="100%"||n==="100vw")&&(!o||o==="100%"||o==="100vw"),l=(a==="100%"||a==="100vh")&&(!s||s==="100%"||s==="100vh"),d=this._xPosition,g=this._xOffset,z=this._overlayRef.getConfig().direction==="rtl",y="",q="",k="";r?k="flex-start":d==="center"?(k="center",z?q=g:y=g):z?d==="left"||d==="end"?(k="flex-end",y=g):(d==="right"||d==="start")&&(k="flex-start",q=g):d==="left"||d==="start"?(k="flex-start",y=g):(d==="right"||d==="end")&&(k="flex-end",q=g),c.position=this._cssPosition,c.marginLeft=r?"0":y,c.marginTop=l?"0":this._topOffset,c.marginBottom=this._bottomOffset,c.marginRight=r?"0":q,t.justifyContent=k,t.alignItems=l?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;let c=this._overlayRef.overlayElement.style,t=this._overlayRef.hostElement,i=t.style;t.classList.remove(en),i.justifyContent=i.alignItems=c.marginTop=c.marginBottom=c.marginLeft=c.marginRight=c.position="",this._overlayRef=null,this._isDisposed=!0}},zl=(()=>{class e{constructor(t,i,n,a){this._viewportRuler=t,this._document=i,this._platform=n,this._overlayContainer=a}global(){return new ai}flexibleConnectedTo(t){return new ni(t,this._viewportRuler,this._document,this._platform,this._overlayContainer)}static{this.\u0275fac=function(i){return new(i||e)(u(o3),u(T),u(Q),u(v4))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),Cl=0,r2=(()=>{class e{constructor(t,i,n,a,o,s,r,l,d,g,z,y){this.scrollStrategies=t,this._overlayContainer=i,this._componentFactoryResolver=n,this._positionBuilder=a,this._keyboardDispatcher=o,this._injector=s,this._ngZone=r,this._document=l,this._directionality=d,this._location=g,this._outsideClickDispatcher=z,this._animationsModuleType=y}create(t){let i=this._createHostElement(),n=this._createPaneElement(i),a=this._createPortalOutlet(n),o=new Nt(t);return o.direction=o.direction||this._directionality.value,new T2(a,i,n,o,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,this._animationsModuleType==="NoopAnimations")}position(){return this._positionBuilder}_createPaneElement(t){let i=this._document.createElement("div");return i.id=`cdk-overlay-${Cl++}`,i.classList.add("cdk-overlay-pane"),t.appendChild(i),i}_createHostElement(){let t=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(t),t}_createPortalOutlet(t){return this._appRef||(this._appRef=this._injector.get(M3)),new J0(t,this._componentFactoryResolver,this._appRef,this._injector,this._document)}static{this.\u0275fac=function(i){return new(i||e)(u(ul),u(v4),u(E4),u(zl),u(gl),u(F1),u(w),u(T),u(O1),u(D2),u(bl),u(h1,8))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var Ml=new x("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{let e=v(r2);return()=>e.scrollStrategies.reposition()}});function xl(e){return()=>e.scrollStrategies.reposition()}var Ll={provide:Ml,deps:[r2],useFactory:xl},ee=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({providers:[r2,Ll],imports:[n3,E3,Q6,Q6]})}}return e})();function yl(e,c){}var R3=class{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0,this.closeOnOverlayDetachments=!0}};var si=(()=>{class e extends b4{constructor(t,i,n,a,o,s,r,l){super(),this._elementRef=t,this._focusTrapFactory=i,this._config=a,this._interactivityChecker=o,this._ngZone=s,this._overlayRef=r,this._focusMonitor=l,this._platform=v(Q),this._focusTrap=null,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this._ariaLabelledByQueue=[],this._changeDetectorRef=v(L1),this.attachDomPortal=d=>{this._portalOutlet.hasAttached();let g=this._portalOutlet.attachDomPortal(d);return this._contentAttached(),g},this._document=n,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(t){this._ariaLabelledByQueue.push(t),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(t){let i=this._ariaLabelledByQueue.indexOf(t);i>-1&&(this._ariaLabelledByQueue.splice(i,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._restoreFocus()}attachComponentPortal(t){this._portalOutlet.hasAttached();let i=this._portalOutlet.attachComponentPortal(t);return this._contentAttached(),i}attachTemplatePortal(t){this._portalOutlet.hasAttached();let i=this._portalOutlet.attachTemplatePortal(t);return this._contentAttached(),i}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(t,i){this._interactivityChecker.isFocusable(t)||(t.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{let n=()=>{t.removeEventListener("blur",n),t.removeEventListener("mousedown",n),t.removeAttribute("tabindex")};t.addEventListener("blur",n),t.addEventListener("mousedown",n)})),t.focus(i)}_focusByCssSelector(t,i){let n=this._elementRef.nativeElement.querySelector(t);n&&this._forceFocus(n,i)}_trapFocus(){let t=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||t.focus();break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElementWhenReady().then(i=>{i||this._focusDialogContainer()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus);break}}_restoreFocus(){let t=this._config.restoreFocus,i=null;if(typeof t=="string"?i=this._document.querySelector(t):typeof t=="boolean"?i=t?this._elementFocusedBeforeDialogWasOpened:null:t&&(i=t),this._config.restoreFocus&&i&&typeof i.focus=="function"){let n=_t(),a=this._elementRef.nativeElement;(!n||n===this._document.body||n===a||a.contains(n))&&(this._focusMonitor?(this._focusMonitor.focusVia(i,this._closeInteractionType),this._closeInteractionType=null):i.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){let t=this._elementRef.nativeElement,i=_t();return t===i||t.contains(i)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=_t()))}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(d4),m(T,8),m(R3),m(D3),m(w),m(T2),m(i2))}}static{this.\u0275cmp=A({type:e,selectors:[["cdk-dialog-container"]],viewQuery:function(i,n){if(i&1&&x1(St,7),i&2){let a;W(a=G())&&(n._portalOutlet=a.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(i,n){i&2&&J("id",n._config.id||null)("role",n._config.role)("aria-modal",n._config.ariaModal)("aria-labelledby",n._config.ariaLabel?null:n._ariaLabelledByQueue[0])("aria-label",n._config.ariaLabel)("aria-describedby",n._config.ariaDescribedBy||null)},standalone:!0,features:[f1,E],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(i,n){i&1&&Y(0,yl,0,0,"ng-template",0)},dependencies:[St],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2})}}return e})(),It=class{constructor(c,t){this.overlayRef=c,this.config=t,this.closed=new N,this.disableClose=t.disableClose,this.backdropClick=c.backdropClick(),this.keydownEvents=c.keydownEvents(),this.outsidePointerEvents=c.outsidePointerEvents(),this.id=t.id,this.keydownEvents.subscribe(i=>{i.keyCode===27&&!this.disableClose&&!z2(i)&&(i.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})}),this._detachSubscription=c.detachments().subscribe(()=>{t.closeOnOverlayDetachments!==!1&&this.close()})}close(c,t){if(this.containerInstance){let i=this.closed;this.containerInstance._closeInteractionType=t?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),i.next(c),i.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(c="",t=""){return this.overlayRef.updateSize({width:c,height:t}),this}addPanelClass(c){return this.overlayRef.addPanelClass(c),this}removePanelClass(c){return this.overlayRef.removePanelClass(c),this}},wl=new x("DialogScrollStrategy",{providedIn:"root",factory:()=>{let e=v(r2);return()=>e.scrollStrategies.block()}}),kl=new x("DialogData"),Sl=new x("DefaultDialogConfig");var Nl=0,ri=(()=>{class e{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(t,i,n,a,o,s){this._overlay=t,this._injector=i,this._defaultOptions=n,this._parentDialog=a,this._overlayContainer=o,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new N,this._afterOpenedAtThisLevel=new N,this._ariaHiddenElements=new Map,this.afterAllClosed=p3(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(C1(void 0))),this._scrollStrategy=s}open(t,i){let n=this._defaultOptions||new R3;i=f(f({},n),i),i.id=i.id||`cdk-dialog-${Nl++}`,i.id&&this.getDialogById(i.id);let a=this._getOverlayConfig(i),o=this._overlay.create(a),s=new It(o,i),r=this._attachContainer(o,s,i);return s.containerInstance=r,this._attachDialogContent(t,s,r,i),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(s),s.closed.subscribe(()=>this._removeOpenDialog(s,!0)),this.afterOpened.next(s),s}closeAll(){oi(this.openDialogs,t=>t.close())}getDialogById(t){return this.openDialogs.find(i=>i.id===t)}ngOnDestroy(){oi(this._openDialogsAtThisLevel,t=>{t.config.closeOnDestroy===!1&&this._removeOpenDialog(t,!1)}),oi(this._openDialogsAtThisLevel,t=>t.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(t){let i=new Nt({positionStrategy:t.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:t.scrollStrategy||this._scrollStrategy(),panelClass:t.panelClass,hasBackdrop:t.hasBackdrop,direction:t.direction,minWidth:t.minWidth,minHeight:t.minHeight,maxWidth:t.maxWidth,maxHeight:t.maxHeight,width:t.width,height:t.height,disposeOnNavigation:t.closeOnNavigation});return t.backdropClass&&(i.backdropClass=t.backdropClass),i}_attachContainer(t,i,n){let a=n.injector||n.viewContainerRef?.injector,o=[{provide:R3,useValue:n},{provide:It,useValue:i},{provide:T2,useValue:t}],s;n.container?typeof n.container=="function"?s=n.container:(s=n.container.type,o.push(...n.container.providers(n))):s=si;let r=new u4(s,n.viewContainerRef,F1.create({parent:a||this._injector,providers:o}),n.componentFactoryResolver);return t.attach(r).instance}_attachDialogContent(t,i,n,a){if(t instanceof v3){let o=this._createInjector(a,i,n,void 0),s={$implicit:a.data,dialogRef:i};a.templateContext&&(s=f(f({},s),typeof a.templateContext=="function"?a.templateContext():a.templateContext)),n.attachTemplatePortal(new g4(t,null,s,o))}else{let o=this._createInjector(a,i,n,this._injector),s=n.attachComponentPortal(new u4(t,a.viewContainerRef,o,a.componentFactoryResolver));i.componentRef=s,i.componentInstance=s.instance}}_createInjector(t,i,n,a){let o=t.injector||t.viewContainerRef?.injector,s=[{provide:kl,useValue:t.data},{provide:It,useValue:i}];return t.providers&&(typeof t.providers=="function"?s.push(...t.providers(i,t,n)):s.push(...t.providers)),t.direction&&(!o||!o.get(O1,null,{optional:!0}))&&s.push({provide:O1,useValue:{value:t.direction,change:M()}}),F1.create({parent:o||a,providers:s})}_removeOpenDialog(t,i){let n=this.openDialogs.indexOf(t);n>-1&&(this.openDialogs.splice(n,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((a,o)=>{a?o.setAttribute("aria-hidden",a):o.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),i&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){let t=this._overlayContainer.getContainerElement();if(t.parentElement){let i=t.parentElement.children;for(let n=i.length-1;n>-1;n--){let a=i[n];a!==t&&a.nodeName!=="SCRIPT"&&a.nodeName!=="STYLE"&&!a.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(a,a.getAttribute("aria-hidden")),a.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){let t=this._parentDialog;return t?t._getAfterAllClosed():this._afterAllClosedAtThisLevel}static{this.\u0275fac=function(i){return new(i||e)(u(r2),u(F1),u(Sl,8),u(e,12),u(v4),u(wl))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function oi(e,c){let t=e.length;for(;t--;)c(e[t])}var an=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({providers:[ri],imports:[ee,E3,C5,E3]})}}return e})();function Il(e,c){}var Dt=class{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}},li="mdc-dialog--open",on="mdc-dialog--opening",sn="mdc-dialog--closing",Al=150,Dl=75,El=(()=>{class e extends si{constructor(t,i,n,a,o,s,r,l,d){super(t,i,n,a,o,s,r,d),this._animationMode=l,this._animationStateChanged=new o1,this._animationsEnabled=this._animationMode!=="NoopAnimations",this._actionSectionCount=0,this._hostElement=this._elementRef.nativeElement,this._enterAnimationDuration=this._animationsEnabled?ln(this._config.enterAnimationDuration)??Al:0,this._exitAnimationDuration=this._animationsEnabled?ln(this._config.exitAnimationDuration)??Dl:0,this._animationTimer=null,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(rn,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(on,li)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(li),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(li),this._animationsEnabled?(this._hostElement.style.setProperty(rn,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(sn)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(t){this._actionSectionCount+=t,this._changeDetectorRef.markForCheck()}_clearAnimationClasses(){this._hostElement.classList.remove(on,sn)}_waitForAnimationToComplete(t,i){this._animationTimer!==null&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(i,t)}_requestAnimationFrame(t){this._ngZone.runOutsideAngular(()=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(t):t()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(t){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:t})}ngOnDestroy(){super.ngOnDestroy(),this._animationTimer!==null&&clearTimeout(this._animationTimer)}attachComponentPortal(t){let i=super.attachComponentPortal(t);return i.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),i}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(d4),m(T,8),m(Dt),m(D3),m(w),m(T2),m(h1,8),m(i2))}}static{this.\u0275cmp=A({type:e,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:10,hostBindings:function(i,n){i&2&&(z3("id",n._config.id),J("aria-modal",n._config.ariaModal)("role",n._config.role)("aria-labelledby",n._config.ariaLabel?null:n._ariaLabelledByQueue[0])("aria-label",n._config.ariaLabel)("aria-describedby",n._config.ariaDescribedBy||null),K("_mat-animation-noopable",!n._animationsEnabled)("mat-mdc-dialog-container-with-actions",n._actionSectionCount>0))},standalone:!0,features:[f1,E],decls:3,vars:0,consts:[[1,"mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(i,n){i&1&&(h(0,"div",0)(1,"div",1),Y(2,Il,0,0,"ng-template",2),p()())},dependencies:[St],styles:['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto;outline:0;transform:scale(0.8)}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--closing .mdc-dialog__surface{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{opacity:1}.mdc-dialog--open .mdc-dialog__surface{transform:none}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__container .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{width:100%;height:100%}.mat-mdc-dialog-component-host{display:contents}.mat-mdc-dialog-container{--mdc-dialog-container-elevation: var(--mdc-dialog-container-elevation-shadow);outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12))}.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, 4px)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, Roboto, sans-serif);line-height:var(--mdc-dialog-subhead-line-height, 1.5rem);font-size:var(--mdc-dialog-subhead-size, 1rem);font-weight:var(--mdc-dialog-subhead-weight, 400);letter-spacing:var(--mdc-dialog-subhead-tracking, 0.03125em)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, rgba(0, 0, 0, 0.87))}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, Roboto, sans-serif);line-height:var(--mdc-dialog-supporting-text-line-height, 1.5rem);font-size:var(--mdc-dialog-supporting-text-size, 1rem);font-weight:var(--mdc-dialog-supporting-text-weight, 400);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 0.03125em)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, rgba(0, 0, 0, 0.6))}.mat-mdc-dialog-container .mdc-dialog__container{transition:opacity linear var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container .mdc-dialog__surface{transition:transform var(--mat-dialog-transition-duration, 0ms) 0ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container,.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__surface{transition:none}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 80vw);min-width:var(--mat-dialog-container-min-width, 0)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, 80vw)}}.mat-mdc-dialog-title{padding:var(--mat-dialog-headline-padding, 0 24px 9px)}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{padding:var(--mat-dialog-actions-padding, 8px);justify-content:var(--mat-dialog-actions-alignment, start)}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2})}}return e})(),rn="--mat-dialog-transition-duration";function ln(e){return e==null?null:typeof e=="number"?e:e.endsWith("ms")?C2(e.substring(0,e.length-2)):e.endsWith("s")?C2(e.substring(0,e.length-1))*1e3:e==="0"?0:null}var ie=function(e){return e[e.OPEN=0]="OPEN",e[e.CLOSING=1]="CLOSING",e[e.CLOSED=2]="CLOSED",e}(ie||{}),Et=class{constructor(c,t,i){this._ref=c,this._containerInstance=i,this._afterOpened=new N,this._beforeClosed=new N,this._state=ie.OPEN,this.disableClose=t.disableClose,this.id=c.id,c.addPanelClass("mat-mdc-dialog-panel"),i._animationStateChanged.pipe(c1(n=>n.state==="opened"),r1(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),i._animationStateChanged.pipe(c1(n=>n.state==="closed"),r1(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),c.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),R1(this.backdropClick(),this.keydownEvents().pipe(c1(n=>n.keyCode===27&&!this.disableClose&&!z2(n)))).subscribe(n=>{this.disableClose||(n.preventDefault(),dn(this,n.type==="keydown"?"keyboard":"mouse"))})}close(c){this._result=c,this._containerInstance._animationStateChanged.pipe(c1(t=>t.state==="closing"),r1(1)).subscribe(t=>{this._beforeClosed.next(c),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),t.totalTime+100)}),this._state=ie.CLOSING,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(c){let t=this._ref.config.positionStrategy;return c&&(c.left||c.right)?c.left?t.left(c.left):t.right(c.right):t.centerHorizontally(),c&&(c.top||c.bottom)?c.top?t.top(c.top):t.bottom(c.bottom):t.centerVertically(),this._ref.updatePosition(),this}updateSize(c="",t=""){return this._ref.updateSize(c,t),this}addPanelClass(c){return this._ref.addPanelClass(c),this}removePanelClass(c){return this._ref.removePanelClass(c),this}getState(){return this._state}_finishDialogClose(){this._state=ie.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}};function dn(e,c,t){return e._closeInteractionType=c,e.close(t)}var Tl=new x("MatMdcDialogData"),Rl=new x("mat-mdc-dialog-default-options"),Fl=new x("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{let e=v(r2);return()=>e.scrollStrategies.block()}});var Ol=0,F3=(()=>{class e{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){let t=this._parentDialog;return t?t._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(t,i,n,a,o,s,r,l){this._overlay=t,this._defaultOptions=a,this._scrollStrategy=o,this._parentDialog=s,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new N,this._afterOpenedAtThisLevel=new N,this.dialogConfigClass=Dt,this.afterAllClosed=p3(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(C1(void 0))),this._dialog=i.get(ri),this._dialogRefConstructor=Et,this._dialogContainerType=El,this._dialogDataToken=Tl}open(t,i){let n;i=f(f({},this._defaultOptions||new Dt),i),i.id=i.id||`mat-mdc-dialog-${Ol++}`,i.scrollStrategy=i.scrollStrategy||this._scrollStrategy();let a=this._dialog.open(t,j(f({},i),{positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:i},{provide:R3,useValue:i}]},templateContext:()=>({dialogRef:n}),providers:(o,s,r)=>(n=new this._dialogRefConstructor(o,i,r),n.updatePosition(i?.position),[{provide:this._dialogContainerType,useValue:r},{provide:this._dialogDataToken,useValue:s.data},{provide:this._dialogRefConstructor,useValue:n}])}));return n.componentRef=a.componentRef,n.componentInstance=a.componentInstance,this.openDialogs.push(n),this.afterOpened.next(n),n.afterClosed().subscribe(()=>{let o=this.openDialogs.indexOf(n);o>-1&&(this.openDialogs.splice(o,1),this.openDialogs.length||this._getAfterAllClosed().next())}),n}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(t){return this.openDialogs.find(i=>i.id===t)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(t){let i=t.length;for(;i--;)t[i].close()}static{this.\u0275fac=function(i){return new(i||e)(u(r2),u(F1),u(D2,8),u(Rl,8),u(Fl),u(e,12),u(v4),u(h1,8))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var ce=(()=>{class e{constructor(t,i,n){this.dialogRef=t,this._elementRef=i,this._dialog=n,this.type="button"}ngOnInit(){this.dialogRef||(this.dialogRef=mn(this._elementRef,this._dialog.openDialogs))}ngOnChanges(t){let i=t._matDialogClose||t._matDialogCloseResult;i&&(this.dialogResult=i.currentValue)}_onButtonClick(t){dn(this.dialogRef,t.screenX===0&&t.screenY===0?"keyboard":"mouse",this.dialogResult)}static{this.\u0275fac=function(i){return new(i||e)(m(Et,8),m(D),m(F3))}}static{this.\u0275dir=H({type:e,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(i,n){i&1&&_1("click",function(o){return n._onButtonClick(o)}),i&2&&J("aria-label",n.ariaLabel||null)("type",n.type)},inputs:{ariaLabel:[I.None,"aria-label","ariaLabel"],type:"type",dialogResult:[I.None,"mat-dialog-close","dialogResult"],_matDialogClose:[I.None,"matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],standalone:!0,features:[S1]})}}return e})(),Pl=(()=>{class e{constructor(t,i,n){this._dialogRef=t,this._elementRef=i,this._dialog=n}ngOnInit(){this._dialogRef||(this._dialogRef=mn(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{this._onAdd()})}ngOnDestroy(){this._dialogRef?._containerInstance&&Promise.resolve().then(()=>{this._onRemove()})}static{this.\u0275fac=function(i){return new(i||e)(m(Et,8),m(D),m(F3))}}static{this.\u0275dir=H({type:e,standalone:!0})}}return e})();var ne=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"],standalone:!0})}}return e})(),ae=(()=>{class e extends Pl{_onAdd(){this._dialogRef._containerInstance?._updateActionSectionCount?.(1)}_onRemove(){this._dialogRef._containerInstance?._updateActionSectionCount?.(-1)}static{this.\u0275fac=(()=>{let t;return function(n){return(t||(t=V1(e)))(n||e)}})()}static{this.\u0275dir=H({type:e,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:6,hostBindings:function(i,n){i&2&&K("mat-mdc-dialog-actions-align-start",n.align==="start")("mat-mdc-dialog-actions-align-center",n.align==="center")("mat-mdc-dialog-actions-align-end",n.align==="end")},inputs:{align:"align"},standalone:!0,features:[f1]})}}return e})();function mn(e,c){let t=e.nativeElement.parentElement;for(;t&&!t.classList.contains("mat-mdc-dialog-container");)t=t.parentElement;return t?c.find(i=>i.id===t.id):null}var oe=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({providers:[F3],imports:[an,ee,E3,Z,Z]})}}return e})();var fn=()=>{},Ii={},On={},Pn=null,Hn={mark:fn,measure:fn};try{typeof window<"u"&&(Ii=window),typeof document<"u"&&(On=document),typeof MutationObserver<"u"&&(Pn=MutationObserver),typeof performance<"u"&&(Hn=performance)}catch{}var{userAgent:pn=""}=Ii.navigator||{},l3=Ii,d1=On,un=Pn,se=Hn,$g=!!l3.document,O2=!!d1.documentElement&&!!d1.head&&typeof d1.addEventListener=="function"&&typeof d1.createElement=="function",Vn=~pn.indexOf("MSIE")||~pn.indexOf("Trident/"),u1="classic",Bn="duotone",Z1="sharp",Y1="sharp-duotone",Hl=[u1,Bn,Z1,Y1],Vl={classic:{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},sharp:{900:"fass",400:"fasr",300:"fasl",100:"fast"},"sharp-duotone":{900:"fasds"}},gn={kit:{fak:"kit","fa-kit":"kit"},"kit-duotone":{fakd:"kit-duotone","fa-kit-duotone":"kit-duotone"}},Bl=["kit"],jl=/fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\-\ ]/,Ul=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i,ql={"Font Awesome 5 Free":{900:"fas",400:"far"},"Font Awesome 5 Pro":{900:"fas",400:"far",normal:"far",300:"fal"},"Font Awesome 5 Brands":{400:"fab",normal:"fab"},"Font Awesome 5 Duotone":{900:"fad"}},Wl={"Font Awesome 6 Free":{900:"fas",400:"far"},"Font Awesome 6 Pro":{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},"Font Awesome 6 Brands":{400:"fab",normal:"fab"},"Font Awesome 6 Duotone":{900:"fad"},"Font Awesome 6 Sharp":{900:"fass",400:"fasr",normal:"fasr",300:"fasl",100:"fast"},"Font Awesome 6 Sharp Duotone":{900:"fasds"}},Gl={classic:{"fa-brands":"fab","fa-duotone":"fad","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},sharp:{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"},"sharp-duotone":{"fa-solid":"fasds"}},$l={classic:["fas","far","fal","fat"],sharp:["fass","fasr","fasl","fast"],"sharp-duotone":["fasds"]},Zl={classic:{fab:"fa-brands",fad:"fa-duotone",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},sharp:{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"},"sharp-duotone":{fasds:"fa-solid"}},Yl={classic:{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab"},sharp:{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"},"sharp-duotone":{solid:"fasds"}},jn={classic:{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands"},sharp:{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"},"sharp-duotone":{fa:"solid",fasds:"solid","fa-solid":"solid"}},Ql=["solid","regular","light","thin","duotone","brands"],Un=[1,2,3,4,5,6,7,8,9,10],Xl=Un.concat([11,12,13,14,15,16,17,18,19,20]),Tt={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},Kl=[...Object.keys($l),...Ql,"2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",Tt.GROUP,Tt.SWAP_OPACITY,Tt.PRIMARY,Tt.SECONDARY].concat(Un.map(e=>"".concat(e,"x"))).concat(Xl.map(e=>"w-".concat(e))),Jl={"Font Awesome Kit":{400:"fak",normal:"fak"},"Font Awesome Kit Duotone":{400:"fakd",normal:"fakd"}},t9={kit:{"fa-kit":"fak"},"kit-duotone":{"fa-kit-duotone":"fakd"}},e9={kit:{fak:"fa-kit"},"kit-duotone":{fakd:"fa-kit-duotone"}},bn={kit:{kit:"fak"},"kit-duotone":{"kit-duotone":"fakd"}},R2="___FONT_AWESOME___",ui=16,qn="fa",Wn="svg-inline--fa",V3="data-fa-i2svg",gi="data-fa-pseudo-element",i9="data-fa-pseudo-element-pending",Ai="data-prefix",Di="data-icon",vn="fontawesome-i2svg",c9="async",n9=["HTML","HEAD","STYLE","SCRIPT"],Gn=(()=>{try{return!0}catch{return!1}})(),$n=[u1,Z1,Y1];function Vt(e){return new Proxy(e,{get(c,t){return t in c?c[t]:c[u1]}})}var Zn=f({},jn);Zn[u1]=f(f(f({},jn[u1]),gn.kit),gn["kit-duotone"]);var P3=Vt(Zn),bi=f({},Yl);bi[u1]=f(f(f({},bi[u1]),bn.kit),bn["kit-duotone"]);var Pt=Vt(bi),vi=f({},Zl);vi[u1]=f(f({},vi[u1]),e9.kit);var H3=Vt(vi),_i=f({},Gl);_i[u1]=f(f({},_i[u1]),t9.kit);var a9=Vt(_i),o9=jl,Yn="fa-layers-text",s9=Ul,r9=f({},Vl),Zg=Vt(r9),l9=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],di=Tt,C4=new Set;Object.keys(Pt[u1]).map(C4.add.bind(C4));Object.keys(Pt[Z1]).map(C4.add.bind(C4));Object.keys(Pt[Y1]).map(C4.add.bind(C4));var d9=[...Bl,...Kl],Ft=l3.FontAwesomeConfig||{};function m9(e){var c=d1.querySelector("script["+e+"]");if(c)return c.getAttribute(e)}function h9(e){return e===""?!0:e==="false"?!1:e==="true"?!0:e}d1&&typeof d1.querySelector=="function"&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(c=>{let[t,i]=c,n=h9(m9(t));n!=null&&(Ft[i]=n)});var Qn={styleDefault:"solid",familyDefault:"classic",cssPrefix:qn,replacementClass:Wn,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};Ft.familyPrefix&&(Ft.cssPrefix=Ft.familyPrefix);var M4=f(f({},Qn),Ft);M4.autoReplaceSvg||(M4.observeMutations=!1);var L={};Object.keys(Qn).forEach(e=>{Object.defineProperty(L,e,{enumerable:!0,set:function(c){M4[e]=c,Ot.forEach(t=>t(L))},get:function(){return M4[e]}})});Object.defineProperty(L,"familyPrefix",{enumerable:!0,set:function(e){M4.cssPrefix=e,Ot.forEach(c=>c(L))},get:function(){return M4.cssPrefix}});l3.FontAwesomeConfig=L;var Ot=[];function f9(e){return Ot.push(e),()=>{Ot.splice(Ot.indexOf(e),1)}}var s3=ui,x2={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function p9(e){if(!e||!O2)return;let c=d1.createElement("style");c.setAttribute("type","text/css"),c.innerHTML=e;let t=d1.head.childNodes,i=null;for(let n=t.length-1;n>-1;n--){let a=t[n],o=(a.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(o)>-1&&(i=a)}return d1.head.insertBefore(c,i),e}var u9="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Ht(){let e=12,c="";for(;e-- >0;)c+=u9[Math.random()*62|0];return c}function x4(e){let c=[];for(let t=(e||[]).length>>>0;t--;)c[t]=e[t];return c}function Ei(e){return e.classList?x4(e.classList):(e.getAttribute("class")||"").split(" ").filter(c=>c)}function Xn(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function g9(e){return Object.keys(e||{}).reduce((c,t)=>c+"".concat(t,'="').concat(Xn(e[t]),'" '),"").trim()}function he(e){return Object.keys(e||{}).reduce((c,t)=>c+"".concat(t,": ").concat(e[t].trim(),";"),"")}function Ti(e){return e.size!==x2.size||e.x!==x2.x||e.y!==x2.y||e.rotate!==x2.rotate||e.flipX||e.flipY}function b9(e){let{transform:c,containerWidth:t,iconWidth:i}=e,n={transform:"translate(".concat(t/2," 256)")},a="translate(".concat(c.x*32,", ").concat(c.y*32,") "),o="scale(".concat(c.size/16*(c.flipX?-1:1),", ").concat(c.size/16*(c.flipY?-1:1),") "),s="rotate(".concat(c.rotate," 0 0)"),r={transform:"".concat(a," ").concat(o," ").concat(s)},l={transform:"translate(".concat(i/2*-1," -256)")};return{outer:n,inner:r,path:l}}function v9(e){let{transform:c,width:t=ui,height:i=ui,startCentered:n=!1}=e,a="";return n&&Vn?a+="translate(".concat(c.x/s3-t/2,"em, ").concat(c.y/s3-i/2,"em) "):n?a+="translate(calc(-50% + ".concat(c.x/s3,"em), calc(-50% + ").concat(c.y/s3,"em)) "):a+="translate(".concat(c.x/s3,"em, ").concat(c.y/s3,"em) "),a+="scale(".concat(c.size/s3*(c.flipX?-1:1),", ").concat(c.size/s3*(c.flipY?-1:1),") "),a+="rotate(".concat(c.rotate,"deg) "),a}var _9=`:root, :host { + --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"; + --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"; + --fa-font-light: normal 300 1em/1 "Font Awesome 6 Pro"; + --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Pro"; + --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone"; + --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; + --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-duotone-solid: normal 900 1em/1 "Font Awesome 6 Sharp Duotone"; +} + +svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa { + overflow: visible; + box-sizing: content-box; +} + +.svg-inline--fa { + display: var(--fa-display, inline-block); + height: 1em; + overflow: visible; + vertical-align: -0.125em; +} +.svg-inline--fa.fa-2xs { + vertical-align: 0.1em; +} +.svg-inline--fa.fa-xs { + vertical-align: 0em; +} +.svg-inline--fa.fa-sm { + vertical-align: -0.0714285705em; +} +.svg-inline--fa.fa-lg { + vertical-align: -0.2em; +} +.svg-inline--fa.fa-xl { + vertical-align: -0.25em; +} +.svg-inline--fa.fa-2xl { + vertical-align: -0.3125em; +} +.svg-inline--fa.fa-pull-left { + margin-right: var(--fa-pull-margin, 0.3em); + width: auto; +} +.svg-inline--fa.fa-pull-right { + margin-left: var(--fa-pull-margin, 0.3em); + width: auto; +} +.svg-inline--fa.fa-li { + width: var(--fa-li-width, 2em); + top: 0.25em; +} +.svg-inline--fa.fa-fw { + width: var(--fa-fw-width, 1.25em); +} + +.fa-layers svg.svg-inline--fa { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; +} + +.fa-layers-counter, .fa-layers-text { + display: inline-block; + position: absolute; + text-align: center; +} + +.fa-layers { + display: inline-block; + height: 1em; + position: relative; + text-align: center; + vertical-align: -0.125em; + width: 1em; +} +.fa-layers svg.svg-inline--fa { + transform-origin: center center; +} + +.fa-layers-text { + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + transform-origin: center center; +} + +.fa-layers-counter { + background-color: var(--fa-counter-background-color, #ff253a); + border-radius: var(--fa-counter-border-radius, 1em); + box-sizing: border-box; + color: var(--fa-inverse, #fff); + line-height: var(--fa-counter-line-height, 1); + max-width: var(--fa-counter-max-width, 5em); + min-width: var(--fa-counter-min-width, 1.5em); + overflow: hidden; + padding: var(--fa-counter-padding, 0.25em 0.5em); + right: var(--fa-right, 0); + text-overflow: ellipsis; + top: var(--fa-top, 0); + transform: scale(var(--fa-counter-scale, 0.25)); + transform-origin: top right; +} + +.fa-layers-bottom-right { + bottom: var(--fa-bottom, 0); + right: var(--fa-right, 0); + top: auto; + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: bottom right; +} + +.fa-layers-bottom-left { + bottom: var(--fa-bottom, 0); + left: var(--fa-left, 0); + right: auto; + top: auto; + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: bottom left; +} + +.fa-layers-top-right { + top: var(--fa-top, 0); + right: var(--fa-right, 0); + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: top right; +} + +.fa-layers-top-left { + left: var(--fa-left, 0); + right: auto; + top: var(--fa-top, 0); + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: top left; +} + +.fa-1x { + font-size: 1em; +} + +.fa-2x { + font-size: 2em; +} + +.fa-3x { + font-size: 3em; +} + +.fa-4x { + font-size: 4em; +} + +.fa-5x { + font-size: 5em; +} + +.fa-6x { + font-size: 6em; +} + +.fa-7x { + font-size: 7em; +} + +.fa-8x { + font-size: 8em; +} + +.fa-9x { + font-size: 9em; +} + +.fa-10x { + font-size: 10em; +} + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; +} + +.fa-xs { + font-size: 0.75em; + line-height: 0.0833333337em; + vertical-align: 0.125em; +} + +.fa-sm { + font-size: 0.875em; + line-height: 0.0714285718em; + vertical-align: 0.0535714295em; +} + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; +} + +.fa-xl { + font-size: 1.5em; + line-height: 0.0416666682em; + vertical-align: -0.125em; +} + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; +} + +.fa-fw { + text-align: center; + width: 1.25em; +} + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; +} +.fa-ul > li { + position: relative; +} + +.fa-li { + left: calc(-1 * var(--fa-li-width, 2em)); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; +} + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); +} + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); +} + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); +} + +.fa-beat { + animation-name: fa-beat; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); +} + +.fa-bounce { + animation-name: fa-bounce; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); +} + +.fa-fade { + animation-name: fa-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); +} + +.fa-beat-fade { + animation-name: fa-beat-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); +} + +.fa-flip { + animation-name: fa-flip; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); +} + +.fa-shake { + animation-name: fa-shake; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); +} + +.fa-spin { + animation-name: fa-spin; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 2s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); +} + +.fa-spin-reverse { + --fa-animation-direction: reverse; +} + +.fa-pulse, +.fa-spin-pulse { + animation-name: fa-spin; + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, steps(8)); +} + +@media (prefers-reduced-motion: reduce) { + .fa-beat, +.fa-bounce, +.fa-fade, +.fa-beat-fade, +.fa-flip, +.fa-pulse, +.fa-shake, +.fa-spin, +.fa-spin-pulse { + animation-delay: -1ms; + animation-duration: 1ms; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; + } +} +@keyframes fa-beat { + 0%, 90% { + transform: scale(1); + } + 45% { + transform: scale(var(--fa-beat-scale, 1.25)); + } +} +@keyframes fa-bounce { + 0% { + transform: scale(1, 1) translateY(0); + } + 10% { + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + } + 30% { + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + } + 50% { + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + } + 57% { + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + } + 64% { + transform: scale(1, 1) translateY(0); + } + 100% { + transform: scale(1, 1) translateY(0); + } +} +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); + } +} +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + transform: scale(1); + } + 50% { + opacity: 1; + transform: scale(var(--fa-beat-fade-scale, 1.125)); + } +} +@keyframes fa-flip { + 50% { + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + } +} +@keyframes fa-shake { + 0% { + transform: rotate(-15deg); + } + 4% { + transform: rotate(15deg); + } + 8%, 24% { + transform: rotate(-18deg); + } + 12%, 28% { + transform: rotate(18deg); + } + 16% { + transform: rotate(-22deg); + } + 20% { + transform: rotate(22deg); + } + 32% { + transform: rotate(-12deg); + } + 36% { + transform: rotate(12deg); + } + 40%, 100% { + transform: rotate(0deg); + } +} +@keyframes fa-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +.fa-rotate-90 { + transform: rotate(90deg); +} + +.fa-rotate-180 { + transform: rotate(180deg); +} + +.fa-rotate-270 { + transform: rotate(270deg); +} + +.fa-flip-horizontal { + transform: scale(-1, 1); +} + +.fa-flip-vertical { + transform: scale(1, -1); +} + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + transform: scale(-1, -1); +} + +.fa-rotate-by { + transform: rotate(var(--fa-rotate-angle, 0)); +} + +.fa-stack { + display: inline-block; + vertical-align: middle; + height: 2em; + position: relative; + width: 2.5em; +} + +.fa-stack-1x, +.fa-stack-2x { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + z-index: var(--fa-stack-z-index, auto); +} + +.svg-inline--fa.fa-stack-1x { + height: 1em; + width: 1.25em; +} +.svg-inline--fa.fa-stack-2x { + height: 2em; + width: 2.5em; +} + +.fa-inverse { + color: var(--fa-inverse, #fff); +} + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.svg-inline--fa .fa-primary { + fill: var(--fa-primary-color, currentColor); + opacity: var(--fa-primary-opacity, 1); +} + +.svg-inline--fa .fa-secondary { + fill: var(--fa-secondary-color, currentColor); + opacity: var(--fa-secondary-opacity, 0.4); +} + +.svg-inline--fa.fa-swap-opacity .fa-primary { + opacity: var(--fa-secondary-opacity, 0.4); +} + +.svg-inline--fa.fa-swap-opacity .fa-secondary { + opacity: var(--fa-primary-opacity, 1); +} + +.svg-inline--fa mask .fa-primary, +.svg-inline--fa mask .fa-secondary { + fill: black; +} + +.fad.fa-inverse, +.fa-duotone.fa-inverse { + color: var(--fa-inverse, #fff); +}`;function Kn(){let e=qn,c=Wn,t=L.cssPrefix,i=L.replacementClass,n=_9;if(t!==e||i!==c){let a=new RegExp("\\.".concat(e,"\\-"),"g"),o=new RegExp("\\--".concat(e,"\\-"),"g"),s=new RegExp("\\.".concat(c),"g");n=n.replace(a,".".concat(t,"-")).replace(o,"--".concat(t,"-")).replace(s,".".concat(i))}return n}var _n=!1;function mi(){L.autoAddCss&&!_n&&(p9(Kn()),_n=!0)}var z9={mixout(){return{dom:{css:Kn,insertCss:mi}}},hooks(){return{beforeDOMElementCreation(){mi()},beforeI2svg(){mi()}}}},F2=l3||{};F2[R2]||(F2[R2]={});F2[R2].styles||(F2[R2].styles={});F2[R2].hooks||(F2[R2].hooks={});F2[R2].shims||(F2[R2].shims=[]);var L2=F2[R2],Jn=[],ta=function(){d1.removeEventListener("DOMContentLoaded",ta),de=1,Jn.map(e=>e())},de=!1;O2&&(de=(d1.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(d1.readyState),de||d1.addEventListener("DOMContentLoaded",ta));function C9(e){O2&&(de?setTimeout(e,0):Jn.push(e))}function Bt(e){let{tag:c,attributes:t={},children:i=[]}=e;return typeof e=="string"?Xn(e):"<".concat(c," ").concat(g9(t),">").concat(i.map(Bt).join(""),"")}function zn(e,c,t){if(e&&e[c]&&e[c][t])return{prefix:c,iconName:t,icon:e[c][t]}}var M9=function(c,t){return function(i,n,a,o){return c.call(t,i,n,a,o)}},hi=function(c,t,i,n){var a=Object.keys(c),o=a.length,s=n!==void 0?M9(t,n):t,r,l,d;for(i===void 0?(r=1,d=c[a[0]]):(r=0,d=i);r=55296&&n<=56319&&t=55296&&i<=56319&&t>c+1&&(n=e.charCodeAt(c+1),n>=56320&&n<=57343)?(i-55296)*1024+n-56320+65536:i}function Cn(e){return Object.keys(e).reduce((c,t)=>{let i=e[t];return!!i.icon?c[i.iconName]=i.icon:c[t]=i,c},{})}function Ci(e,c){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},{skipHooks:i=!1}=t,n=Cn(c);typeof L2.hooks.addPack=="function"&&!i?L2.hooks.addPack(e,Cn(c)):L2.styles[e]=f(f({},L2.styles[e]||{}),n),e==="fas"&&Ci("fa",c)}var{styles:O3,shims:y9}=L2,w9={[u1]:Object.values(H3[u1]),[Z1]:Object.values(H3[Z1]),[Y1]:Object.values(H3[Y1])},Ri=null,ea={},ia={},ca={},na={},aa={},k9={[u1]:Object.keys(P3[u1]),[Z1]:Object.keys(P3[Z1]),[Y1]:Object.keys(P3[Y1])};function S9(e){return~d9.indexOf(e)}function N9(e,c){let t=c.split("-"),i=t[0],n=t.slice(1).join("-");return i===e&&n!==""&&!S9(n)?n:null}var oa=()=>{let e=i=>hi(O3,(n,a,o)=>(n[o]=hi(a,i,{}),n),{});ea=e((i,n,a)=>(n[3]&&(i[n[3]]=a),n[2]&&n[2].filter(s=>typeof s=="number").forEach(s=>{i[s.toString(16)]=a}),i)),ia=e((i,n,a)=>(i[a]=a,n[2]&&n[2].filter(s=>typeof s=="string").forEach(s=>{i[s]=a}),i)),aa=e((i,n,a)=>{let o=n[2];return i[a]=a,o.forEach(s=>{i[s]=a}),i});let c="far"in O3||L.autoFetchSvg,t=hi(y9,(i,n)=>{let a=n[0],o=n[1],s=n[2];return o==="far"&&!c&&(o="fas"),typeof a=="string"&&(i.names[a]={prefix:o,iconName:s}),typeof a=="number"&&(i.unicodes[a.toString(16)]={prefix:o,iconName:s}),i},{names:{},unicodes:{}});ca=t.names,na=t.unicodes,Ri=fe(L.styleDefault,{family:L.familyDefault})};f9(e=>{Ri=fe(e.styleDefault,{family:L.familyDefault})});oa();function Fi(e,c){return(ea[e]||{})[c]}function I9(e,c){return(ia[e]||{})[c]}function r3(e,c){return(aa[e]||{})[c]}function sa(e){return ca[e]||{prefix:null,iconName:null}}function A9(e){let c=na[e],t=Fi("fas",e);return c||(t?{prefix:"fas",iconName:t}:null)||{prefix:null,iconName:null}}function d3(){return Ri}var Oi=()=>({prefix:null,iconName:null,rest:[]});function fe(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{family:t=u1}=c,i=P3[t][e],n=Pt[t][e]||Pt[t][i],a=e in L2.styles?e:null;return n||a||null}var D9={[u1]:Object.keys(H3[u1]),[Z1]:Object.keys(H3[Z1]),[Y1]:Object.keys(H3[Y1])};function pe(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{skipLookups:t=!1}=c,i={[u1]:"".concat(L.cssPrefix,"-").concat(u1),[Z1]:"".concat(L.cssPrefix,"-").concat(Z1),[Y1]:"".concat(L.cssPrefix,"-").concat(Y1)},n=null,a=u1,o=Hl.filter(r=>r!==Bn);o.forEach(r=>{(e.includes(i[r])||e.some(l=>D9[r].includes(l)))&&(a=r)});let s=e.reduce((r,l)=>{let d=N9(L.cssPrefix,l);if(O3[l]?(l=w9[a].includes(l)?a9[a][l]:l,n=l,r.prefix=l):k9[a].indexOf(l)>-1?(n=l,r.prefix=fe(l,{family:a})):d?r.iconName=d:l!==L.replacementClass&&!o.some(g=>l===i[g])&&r.rest.push(l),!t&&r.prefix&&r.iconName){let g=n==="fa"?sa(r.iconName):{},z=r3(r.prefix,r.iconName);g.prefix&&(n=null),r.iconName=g.iconName||z||r.iconName,r.prefix=g.prefix||r.prefix,r.prefix==="far"&&!O3.far&&O3.fas&&!L.autoFetchSvg&&(r.prefix="fas")}return r},Oi());return(e.includes("fa-brands")||e.includes("fab"))&&(s.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(s.prefix="fad"),!s.prefix&&a===Z1&&(O3.fass||L.autoFetchSvg)&&(s.prefix="fass",s.iconName=r3(s.prefix,s.iconName)||s.iconName),!s.prefix&&a===Y1&&(O3.fasds||L.autoFetchSvg)&&(s.prefix="fasds",s.iconName=r3(s.prefix,s.iconName)||s.iconName),(s.prefix==="fa"||n==="fa")&&(s.prefix=d3()||"fas"),s}var Mi=class{constructor(){this.definitions={}}add(){for(var c=arguments.length,t=new Array(c),i=0;i{this.definitions[a]=f(f({},this.definitions[a]||{}),n[a]),Ci(a,n[a]);let o=H3[u1][a];o&&Ci(o,n[a]),oa()})}reset(){this.definitions={}}_pullDefinitions(c,t){let i=t.prefix&&t.iconName&&t.icon?{0:t}:t;return Object.keys(i).map(n=>{let{prefix:a,iconName:o,icon:s}=i[n],r=s[2];c[a]||(c[a]={}),r.length>0&&r.forEach(l=>{typeof l=="string"&&(c[a][l]=s)}),c[a][o]=s}),c}},Mn=[],_4={},z4={},E9=Object.keys(z4);function T9(e,c){let{mixoutsTo:t}=c;return Mn=e,_4={},Object.keys(z4).forEach(i=>{E9.indexOf(i)===-1&&delete z4[i]}),Mn.forEach(i=>{let n=i.mixout?i.mixout():{};if(Object.keys(n).forEach(a=>{typeof n[a]=="function"&&(t[a]=n[a]),typeof n[a]=="object"&&Object.keys(n[a]).forEach(o=>{t[a]||(t[a]={}),t[a][o]=n[a][o]})}),i.hooks){let a=i.hooks();Object.keys(a).forEach(o=>{_4[o]||(_4[o]=[]),_4[o].push(a[o])})}i.provides&&i.provides(z4)}),t}function xi(e,c){for(var t=arguments.length,i=new Array(t>2?t-2:0),n=2;n{c=o.apply(null,[c,...i])}),c}function B3(e){for(var c=arguments.length,t=new Array(c>1?c-1:0),i=1;i{a.apply(null,t)})}function m3(){let e=arguments[0],c=Array.prototype.slice.call(arguments,1);return z4[e]?z4[e].apply(null,c):void 0}function Li(e){e.prefix==="fa"&&(e.prefix="fas");let{iconName:c}=e,t=e.prefix||d3();if(c)return c=r3(t,c)||c,zn(ra.definitions,t,c)||zn(L2.styles,t,c)}var ra=new Mi,R9=()=>{L.autoReplaceSvg=!1,L.observeMutations=!1,B3("noAuto")},F9={i2svg:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return O2?(B3("beforeI2svg",e),m3("pseudoElements2svg",e),m3("i2svg",e)):Promise.reject(new Error("Operation requires a DOM of some kind."))},watch:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{autoReplaceSvgRoot:c}=e;L.autoReplaceSvg===!1&&(L.autoReplaceSvg=!0),L.observeMutations=!0,C9(()=>{P9({autoReplaceSvgRoot:c}),B3("watch",e)})}},O9={icon:e=>{if(e===null)return null;if(typeof e=="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:r3(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){let c=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],t=fe(e[0]);return{prefix:t,iconName:r3(t,c)||c}}if(typeof e=="string"&&(e.indexOf("".concat(L.cssPrefix,"-"))>-1||e.match(o9))){let c=pe(e.split(" "),{skipLookups:!0});return{prefix:c.prefix||d3(),iconName:r3(c.prefix,c.iconName)||c.iconName}}if(typeof e=="string"){let c=d3();return{prefix:c,iconName:r3(c,e)||e}}}},Q1={noAuto:R9,config:L,dom:F9,parse:O9,library:ra,findIconDefinition:Li,toHtml:Bt},P9=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{autoReplaceSvgRoot:c=d1}=e;(Object.keys(L2.styles).length>0||L.autoFetchSvg)&&O2&&L.autoReplaceSvg&&Q1.dom.i2svg({node:c})};function ue(e,c){return Object.defineProperty(e,"abstract",{get:c}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(t=>Bt(t))}}),Object.defineProperty(e,"node",{get:function(){if(!O2)return;let t=d1.createElement("div");return t.innerHTML=e.html,t.children}}),e}function H9(e){let{children:c,main:t,mask:i,attributes:n,styles:a,transform:o}=e;if(Ti(o)&&t.found&&!i.found){let{width:s,height:r}=t,l={x:s/r/2,y:.5};n.style=he(j(f({},a),{"transform-origin":"".concat(l.x+o.x/16,"em ").concat(l.y+o.y/16,"em")}))}return[{tag:"svg",attributes:n,children:c}]}function V9(e){let{prefix:c,iconName:t,children:i,attributes:n,symbol:a}=e,o=a===!0?"".concat(c,"-").concat(L.cssPrefix,"-").concat(t):a;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:j(f({},n),{id:o}),children:i}]}]}function Pi(e){let{icons:{main:c,mask:t},prefix:i,iconName:n,transform:a,symbol:o,title:s,maskId:r,titleId:l,extra:d,watchable:g=!1}=e,{width:z,height:y}=t.found?t:c,q=i==="fak",k=[L.replacementClass,n?"".concat(L.cssPrefix,"-").concat(n):""].filter(T1=>d.classes.indexOf(T1)===-1).filter(T1=>T1!==""||!!T1).concat(d.classes).join(" "),P={children:[],attributes:j(f({},d.attributes),{"data-prefix":i,"data-icon":n,class:k,role:d.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(z," ").concat(y)})},e1=q&&!~d.classes.indexOf("fa-fw")?{width:"".concat(z/y*16*.0625,"em")}:{};g&&(P.attributes[V3]=""),s&&(P.children.push({tag:"title",attributes:{id:P.attributes["aria-labelledby"]||"title-".concat(l||Ht())},children:[s]}),delete P.attributes.title);let s1=j(f({},P),{prefix:i,iconName:n,main:c,mask:t,maskId:r,transform:a,symbol:o,styles:f(f({},e1),d.styles)}),{children:i1,attributes:X1}=t.found&&c.found?m3("generateAbstractMask",s1)||{children:[],attributes:{}}:m3("generateAbstractIcon",s1)||{children:[],attributes:{}};return s1.children=i1,s1.attributes=X1,o?V9(s1):H9(s1)}function xn(e){let{content:c,width:t,height:i,transform:n,title:a,extra:o,watchable:s=!1}=e,r=j(f(f({},o.attributes),a?{title:a}:{}),{class:o.classes.join(" ")});s&&(r[V3]="");let l=f({},o.styles);Ti(n)&&(l.transform=v9({transform:n,startCentered:!0,width:t,height:i}),l["-webkit-transform"]=l.transform);let d=he(l);d.length>0&&(r.style=d);let g=[];return g.push({tag:"span",attributes:r,children:[c]}),a&&g.push({tag:"span",attributes:{class:"sr-only"},children:[a]}),g}function B9(e){let{content:c,title:t,extra:i}=e,n=j(f(f({},i.attributes),t?{title:t}:{}),{class:i.classes.join(" ")}),a=he(i.styles);a.length>0&&(n.style=a);let o=[];return o.push({tag:"span",attributes:n,children:[c]}),t&&o.push({tag:"span",attributes:{class:"sr-only"},children:[t]}),o}var{styles:fi}=L2;function yi(e){let c=e[0],t=e[1],[i]=e.slice(4),n=null;return Array.isArray(i)?n={tag:"g",attributes:{class:"".concat(L.cssPrefix,"-").concat(di.GROUP)},children:[{tag:"path",attributes:{class:"".concat(L.cssPrefix,"-").concat(di.SECONDARY),fill:"currentColor",d:i[0]}},{tag:"path",attributes:{class:"".concat(L.cssPrefix,"-").concat(di.PRIMARY),fill:"currentColor",d:i[1]}}]}:n={tag:"path",attributes:{fill:"currentColor",d:i}},{found:!0,width:c,height:t,icon:n}}var j9={found:!1,width:512,height:512};function U9(e,c){!Gn&&!L.showMissingIcons&&e&&console.error('Icon with name "'.concat(e,'" and prefix "').concat(c,'" is missing.'))}function wi(e,c){let t=c;return c==="fa"&&L.styleDefault!==null&&(c=d3()),new Promise((i,n)=>{if(t==="fa"){let a=sa(e)||{};e=a.iconName||e,c=a.prefix||c}if(e&&c&&fi[c]&&fi[c][e]){let a=fi[c][e];return i(yi(a))}U9(e,c),i(j(f({},j9),{icon:L.showMissingIcons&&e?m3("missingIconAbstract")||{}:{}}))})}var Ln=()=>{},ki=L.measurePerformance&&se&&se.mark&&se.measure?se:{mark:Ln,measure:Ln},Rt='FA "6.6.0"',q9=e=>(ki.mark("".concat(Rt," ").concat(e," begins")),()=>la(e)),la=e=>{ki.mark("".concat(Rt," ").concat(e," ends")),ki.measure("".concat(Rt," ").concat(e),"".concat(Rt," ").concat(e," begins"),"".concat(Rt," ").concat(e," ends"))},Hi={begin:q9,end:la},re=()=>{};function yn(e){return typeof(e.getAttribute?e.getAttribute(V3):null)=="string"}function W9(e){let c=e.getAttribute?e.getAttribute(Ai):null,t=e.getAttribute?e.getAttribute(Di):null;return c&&t}function G9(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(L.replacementClass)}function $9(){return L.autoReplaceSvg===!0?le.replace:le[L.autoReplaceSvg]||le.replace}function Z9(e){return d1.createElementNS("http://www.w3.org/2000/svg",e)}function Y9(e){return d1.createElement(e)}function da(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{ceFn:t=e.tag==="svg"?Z9:Y9}=c;if(typeof e=="string")return d1.createTextNode(e);let i=t(e.tag);return Object.keys(e.attributes||[]).forEach(function(a){i.setAttribute(a,e.attributes[a])}),(e.children||[]).forEach(function(a){i.appendChild(da(a,{ceFn:t}))}),i}function Q9(e){let c=" ".concat(e.outerHTML," ");return c="".concat(c,"Font Awesome fontawesome.com "),c}var le={replace:function(e){let c=e[0];if(c.parentNode)if(e[1].forEach(t=>{c.parentNode.insertBefore(da(t),c)}),c.getAttribute(V3)===null&&L.keepOriginalSource){let t=d1.createComment(Q9(c));c.parentNode.replaceChild(t,c)}else c.remove()},nest:function(e){let c=e[0],t=e[1];if(~Ei(c).indexOf(L.replacementClass))return le.replace(e);let i=new RegExp("".concat(L.cssPrefix,"-.*"));if(delete t[0].attributes.id,t[0].attributes.class){let a=t[0].attributes.class.split(" ").reduce((o,s)=>(s===L.replacementClass||s.match(i)?o.toSvg.push(s):o.toNode.push(s),o),{toNode:[],toSvg:[]});t[0].attributes.class=a.toSvg.join(" "),a.toNode.length===0?c.removeAttribute("class"):c.setAttribute("class",a.toNode.join(" "))}let n=t.map(a=>Bt(a)).join(` +`);c.setAttribute(V3,""),c.innerHTML=n}};function wn(e){e()}function ma(e,c){let t=typeof c=="function"?c:re;if(e.length===0)t();else{let i=wn;L.mutateApproach===c9&&(i=l3.requestAnimationFrame||wn),i(()=>{let n=$9(),a=Hi.begin("mutate");e.map(n),a(),t()})}}var Vi=!1;function ha(){Vi=!0}function Si(){Vi=!1}var me=null;function kn(e){if(!un||!L.observeMutations)return;let{treeCallback:c=re,nodeCallback:t=re,pseudoElementsCallback:i=re,observeMutationsRoot:n=d1}=e;me=new un(a=>{if(Vi)return;let o=d3();x4(a).forEach(s=>{if(s.type==="childList"&&s.addedNodes.length>0&&!yn(s.addedNodes[0])&&(L.searchPseudoElements&&i(s.target),c(s.target)),s.type==="attributes"&&s.target.parentNode&&L.searchPseudoElements&&i(s.target.parentNode),s.type==="attributes"&&yn(s.target)&&~l9.indexOf(s.attributeName))if(s.attributeName==="class"&&W9(s.target)){let{prefix:r,iconName:l}=pe(Ei(s.target));s.target.setAttribute(Ai,r||o),l&&s.target.setAttribute(Di,l)}else G9(s.target)&&t(s.target)})}),O2&&me.observe(n,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}function X9(){me&&me.disconnect()}function K9(e){let c=e.getAttribute("style"),t=[];return c&&(t=c.split(";").reduce((i,n)=>{let a=n.split(":"),o=a[0],s=a.slice(1);return o&&s.length>0&&(i[o]=s.join(":").trim()),i},{})),t}function J9(e){let c=e.getAttribute("data-prefix"),t=e.getAttribute("data-icon"),i=e.innerText!==void 0?e.innerText.trim():"",n=pe(Ei(e));return n.prefix||(n.prefix=d3()),c&&t&&(n.prefix=c,n.iconName=t),n.iconName&&n.prefix||(n.prefix&&i.length>0&&(n.iconName=I9(n.prefix,e.innerText)||Fi(n.prefix,zi(e.innerText))),!n.iconName&&L.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(n.iconName=e.firstChild.data)),n}function td(e){let c=x4(e.attributes).reduce((n,a)=>(n.name!=="class"&&n.name!=="style"&&(n[a.name]=a.value),n),{}),t=e.getAttribute("title"),i=e.getAttribute("data-fa-title-id");return L.autoA11y&&(t?c["aria-labelledby"]="".concat(L.replacementClass,"-title-").concat(i||Ht()):(c["aria-hidden"]="true",c.focusable="false")),c}function ed(){return{iconName:null,title:null,titleId:null,prefix:null,transform:x2,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function Sn(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0},{iconName:t,prefix:i,rest:n}=J9(e),a=td(e),o=xi("parseNodeAttributes",{},e),s=c.styleParser?K9(e):[];return f({iconName:t,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:i,transform:x2,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:n,styles:s,attributes:a}},o)}var{styles:id}=L2;function fa(e){let c=L.autoReplaceSvg==="nest"?Sn(e,{styleParser:!1}):Sn(e);return~c.extra.classes.indexOf(Yn)?m3("generateLayersText",e,c):m3("generateSvgReplacementMutation",e,c)}var y2=new Set;$n.map(e=>{y2.add("fa-".concat(e))});Object.keys(P3[u1]).map(y2.add.bind(y2));Object.keys(P3[Z1]).map(y2.add.bind(y2));Object.keys(P3[Y1]).map(y2.add.bind(y2));y2=[...y2];function Nn(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!O2)return Promise.resolve();let t=d1.documentElement.classList,i=d=>t.add("".concat(vn,"-").concat(d)),n=d=>t.remove("".concat(vn,"-").concat(d)),a=L.autoFetchSvg?y2:$n.map(d=>"fa-".concat(d)).concat(Object.keys(id));a.includes("fa")||a.push("fa");let o=[".".concat(Yn,":not([").concat(V3,"])")].concat(a.map(d=>".".concat(d,":not([").concat(V3,"])"))).join(", ");if(o.length===0)return Promise.resolve();let s=[];try{s=x4(e.querySelectorAll(o))}catch{}if(s.length>0)i("pending"),n("complete");else return Promise.resolve();let r=Hi.begin("onTree"),l=s.reduce((d,g)=>{try{let z=fa(g);z&&d.push(z)}catch(z){Gn||z.name==="MissingIcon"&&console.error(z)}return d},[]);return new Promise((d,g)=>{Promise.all(l).then(z=>{ma(z,()=>{i("active"),i("complete"),n("pending"),typeof c=="function"&&c(),r(),d()})}).catch(z=>{r(),g(z)})})}function cd(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;fa(e).then(t=>{t&&ma([t],c)})}function nd(e){return function(c){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=(c||{}).icon?c:Li(c||{}),{mask:n}=t;return n&&(n=(n||{}).icon?n:Li(n||{})),e(i,j(f({},t),{mask:n}))}}var ad=function(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{transform:t=x2,symbol:i=!1,mask:n=null,maskId:a=null,title:o=null,titleId:s=null,classes:r=[],attributes:l={},styles:d={}}=c;if(!e)return;let{prefix:g,iconName:z,icon:y}=e;return ue(f({type:"icon"},e),()=>(B3("beforeDOMElementCreation",{iconDefinition:e,params:c}),L.autoA11y&&(o?l["aria-labelledby"]="".concat(L.replacementClass,"-title-").concat(s||Ht()):(l["aria-hidden"]="true",l.focusable="false")),Pi({icons:{main:yi(y),mask:n?yi(n.icon):{found:!1,width:null,height:null,icon:{}}},prefix:g,iconName:z,transform:f(f({},x2),t),symbol:i,title:o,maskId:a,titleId:s,extra:{attributes:l,styles:d,classes:r}})))},od={mixout(){return{icon:nd(ad)}},hooks(){return{mutationObserverCallbacks(e){return e.treeCallback=Nn,e.nodeCallback=cd,e}}},provides(e){e.i2svg=function(c){let{node:t=d1,callback:i=()=>{}}=c;return Nn(t,i)},e.generateSvgReplacementMutation=function(c,t){let{iconName:i,title:n,titleId:a,prefix:o,transform:s,symbol:r,mask:l,maskId:d,extra:g}=t;return new Promise((z,y)=>{Promise.all([wi(i,o),l.iconName?wi(l.iconName,l.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(q=>{let[k,P]=q;z([c,Pi({icons:{main:k,mask:P},prefix:o,iconName:i,transform:s,symbol:r,maskId:d,title:n,titleId:a,extra:g,watchable:!0})])}).catch(y)})},e.generateAbstractIcon=function(c){let{children:t,attributes:i,main:n,transform:a,styles:o}=c,s=he(o);s.length>0&&(i.style=s);let r;return Ti(a)&&(r=m3("generateAbstractTransformGrouping",{main:n,transform:a,containerWidth:n.width,iconWidth:n.width})),t.push(r||n.icon),{children:t,attributes:i}}}},sd={mixout(){return{layer(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{classes:t=[]}=c;return ue({type:"layer"},()=>{B3("beforeDOMElementCreation",{assembler:e,params:c});let i=[];return e(n=>{Array.isArray(n)?n.map(a=>{i=i.concat(a.abstract)}):i=i.concat(n.abstract)}),[{tag:"span",attributes:{class:["".concat(L.cssPrefix,"-layers"),...t].join(" ")},children:i}]})}}}},rd={mixout(){return{counter(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{title:t=null,classes:i=[],attributes:n={},styles:a={}}=c;return ue({type:"counter",content:e},()=>(B3("beforeDOMElementCreation",{content:e,params:c}),B9({content:e.toString(),title:t,extra:{attributes:n,styles:a,classes:["".concat(L.cssPrefix,"-layers-counter"),...i]}})))}}}},ld={mixout(){return{text(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},{transform:t=x2,title:i=null,classes:n=[],attributes:a={},styles:o={}}=c;return ue({type:"text",content:e},()=>(B3("beforeDOMElementCreation",{content:e,params:c}),xn({content:e,transform:f(f({},x2),t),title:i,extra:{attributes:a,styles:o,classes:["".concat(L.cssPrefix,"-layers-text"),...n]}})))}}},provides(e){e.generateLayersText=function(c,t){let{title:i,transform:n,extra:a}=t,o=null,s=null;if(Vn){let r=parseInt(getComputedStyle(c).fontSize,10),l=c.getBoundingClientRect();o=l.width/r,s=l.height/r}return L.autoA11y&&!i&&(a.attributes["aria-hidden"]="true"),Promise.resolve([c,xn({content:c.innerHTML,width:o,height:s,transform:n,title:i,extra:a,watchable:!0})])}}},dd=new RegExp('"',"ug"),In=[1105920,1112319],An=f(f(f({FontAwesome:{normal:"fas",400:"fas"}},Wl),ql),Jl),Ni=Object.keys(An).reduce((e,c)=>(e[c.toLowerCase()]=An[c],e),{}),md=Object.keys(Ni).reduce((e,c)=>{let t=Ni[c];return e[c]=t[900]||[...Object.entries(t)][0][1],e},{});function hd(e){let c=e.replace(dd,""),t=L9(c,0),i=t>=In[0]&&t<=In[1],n=c.length===2?c[0]===c[1]:!1;return{value:zi(n?c[0]:c),isSecondary:i||n}}function fd(e,c){let t=e.replace(/^['"]|['"]$/g,"").toLowerCase(),i=parseInt(c),n=isNaN(i)?"normal":i;return(Ni[t]||{})[n]||md[t]}function Dn(e,c){let t="".concat(i9).concat(c.replace(":","-"));return new Promise((i,n)=>{if(e.getAttribute(t)!==null)return i();let o=x4(e.children).filter(z=>z.getAttribute(gi)===c)[0],s=l3.getComputedStyle(e,c),r=s.getPropertyValue("font-family"),l=r.match(s9),d=s.getPropertyValue("font-weight"),g=s.getPropertyValue("content");if(o&&!l)return e.removeChild(o),i();if(l&&g!=="none"&&g!==""){let z=s.getPropertyValue("content"),y=fd(r,d),{value:q,isSecondary:k}=hd(z),P=l[0].startsWith("FontAwesome"),e1=Fi(y,q),s1=e1;if(P){let i1=A9(q);i1.iconName&&i1.prefix&&(e1=i1.iconName,y=i1.prefix)}if(e1&&!k&&(!o||o.getAttribute(Ai)!==y||o.getAttribute(Di)!==s1)){e.setAttribute(t,s1),o&&e.removeChild(o);let i1=ed(),{extra:X1}=i1;X1.attributes[gi]=c,wi(e1,y).then(T1=>{let h3=Pi(j(f({},i1),{icons:{main:T1,mask:Oi()},prefix:y,iconName:s1,extra:X1,watchable:!0})),j3=d1.createElementNS("http://www.w3.org/2000/svg","svg");c==="::before"?e.insertBefore(j3,e.firstChild):e.appendChild(j3),j3.outerHTML=h3.map(i7=>Bt(i7)).join(` +`),e.removeAttribute(t),i()}).catch(n)}else i()}else i()})}function pd(e){return Promise.all([Dn(e,"::before"),Dn(e,"::after")])}function ud(e){return e.parentNode!==document.head&&!~n9.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(gi)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function En(e){if(O2)return new Promise((c,t)=>{let i=x4(e.querySelectorAll("*")).filter(ud).map(pd),n=Hi.begin("searchPseudoElements");ha(),Promise.all(i).then(()=>{n(),Si(),c()}).catch(()=>{n(),Si(),t()})})}var gd={hooks(){return{mutationObserverCallbacks(e){return e.pseudoElementsCallback=En,e}}},provides(e){e.pseudoElements2svg=function(c){let{node:t=d1}=c;L.searchPseudoElements&&En(t)}}},Tn=!1,bd={mixout(){return{dom:{unwatch(){ha(),Tn=!0}}}},hooks(){return{bootstrap(){kn(xi("mutationObserverCallbacks",{}))},noAuto(){X9()},watch(e){let{observeMutationsRoot:c}=e;Tn?Si():kn(xi("mutationObserverCallbacks",{observeMutationsRoot:c}))}}}},Rn=e=>{let c={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e.toLowerCase().split(" ").reduce((t,i)=>{let n=i.toLowerCase().split("-"),a=n[0],o=n.slice(1).join("-");if(a&&o==="h")return t.flipX=!0,t;if(a&&o==="v")return t.flipY=!0,t;if(o=parseFloat(o),isNaN(o))return t;switch(a){case"grow":t.size=t.size+o;break;case"shrink":t.size=t.size-o;break;case"left":t.x=t.x-o;break;case"right":t.x=t.x+o;break;case"up":t.y=t.y-o;break;case"down":t.y=t.y+o;break;case"rotate":t.rotate=t.rotate+o;break}return t},c)},vd={mixout(){return{parse:{transform:e=>Rn(e)}}},hooks(){return{parseNodeAttributes(e,c){let t=c.getAttribute("data-fa-transform");return t&&(e.transform=Rn(t)),e}}},provides(e){e.generateAbstractTransformGrouping=function(c){let{main:t,transform:i,containerWidth:n,iconWidth:a}=c,o={transform:"translate(".concat(n/2," 256)")},s="translate(".concat(i.x*32,", ").concat(i.y*32,") "),r="scale(".concat(i.size/16*(i.flipX?-1:1),", ").concat(i.size/16*(i.flipY?-1:1),") "),l="rotate(".concat(i.rotate," 0 0)"),d={transform:"".concat(s," ").concat(r," ").concat(l)},g={transform:"translate(".concat(a/2*-1," -256)")},z={outer:o,inner:d,path:g};return{tag:"g",attributes:f({},z.outer),children:[{tag:"g",attributes:f({},z.inner),children:[{tag:t.icon.tag,children:t.icon.children,attributes:f(f({},t.icon.attributes),z.path)}]}]}}}},pi={x:0,y:0,width:"100%",height:"100%"};function Fn(e){let c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||c)&&(e.attributes.fill="black"),e}function _d(e){return e.tag==="g"?e.children:[e]}var zd={hooks(){return{parseNodeAttributes(e,c){let t=c.getAttribute("data-fa-mask"),i=t?pe(t.split(" ").map(n=>n.trim())):Oi();return i.prefix||(i.prefix=d3()),e.mask=i,e.maskId=c.getAttribute("data-fa-mask-id"),e}}},provides(e){e.generateAbstractMask=function(c){let{children:t,attributes:i,main:n,mask:a,maskId:o,transform:s}=c,{width:r,icon:l}=n,{width:d,icon:g}=a,z=b9({transform:s,containerWidth:d,iconWidth:r}),y={tag:"rect",attributes:j(f({},pi),{fill:"white"})},q=l.children?{children:l.children.map(Fn)}:{},k={tag:"g",attributes:f({},z.inner),children:[Fn(f({tag:l.tag,attributes:f(f({},l.attributes),z.path)},q))]},P={tag:"g",attributes:f({},z.outer),children:[k]},e1="mask-".concat(o||Ht()),s1="clip-".concat(o||Ht()),i1={tag:"mask",attributes:j(f({},pi),{id:e1,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[y,P]},X1={tag:"defs",children:[{tag:"clipPath",attributes:{id:s1},children:_d(g)},i1]};return t.push(X1,{tag:"rect",attributes:f({fill:"currentColor","clip-path":"url(#".concat(s1,")"),mask:"url(#".concat(e1,")")},pi)}),{children:t,attributes:i}}}},Cd={provides(e){let c=!1;l3.matchMedia&&(c=l3.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){let t=[],i={fill:"currentColor"},n={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};t.push({tag:"path",attributes:j(f({},i),{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});let a=j(f({},n),{attributeName:"opacity"}),o={tag:"circle",attributes:j(f({},i),{cx:"256",cy:"364",r:"28"}),children:[]};return c||o.children.push({tag:"animate",attributes:j(f({},n),{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:j(f({},a),{values:"1;0;1;1;0;1;"})}),t.push(o),t.push({tag:"path",attributes:j(f({},i),{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:c?[]:[{tag:"animate",attributes:j(f({},a),{values:"1;0;0;0;0;1;"})}]}),c||t.push({tag:"path",attributes:j(f({},i),{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:j(f({},a),{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:t}}}},Md={hooks(){return{parseNodeAttributes(e,c){let t=c.getAttribute("data-fa-symbol"),i=t===null?!1:t===""?!0:t;return e.symbol=i,e}}}},xd=[z9,od,sd,rd,ld,gd,bd,vd,zd,Cd,Md];T9(xd,{mixoutsTo:Q1});var Yg=Q1.noAuto,Qg=Q1.config,Xg=Q1.library,Kg=Q1.dom,pa=Q1.parse,Jg=Q1.findIconDefinition,tb=Q1.toHtml,ua=Q1.icon,eb=Q1.layer,Ld=Q1.text,yd=Q1.counter;var wd=["*"],kd=e=>{throw new Error(`Could not find icon with iconName=${e.iconName} and prefix=${e.prefix} in the icon library.`)},Sd=()=>{throw new Error("Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.")},Nd=e=>{let c={[`fa-${e.animation}`]:e.animation!=null&&!e.animation.startsWith("spin"),"fa-spin":e.animation==="spin"||e.animation==="spin-reverse","fa-spin-pulse":e.animation==="spin-pulse"||e.animation==="spin-pulse-reverse","fa-spin-reverse":e.animation==="spin-reverse"||e.animation==="spin-pulse-reverse","fa-pulse":e.animation==="spin-pulse"||e.animation==="spin-pulse-reverse","fa-fw":e.fixedWidth,"fa-border":e.border,"fa-inverse":e.inverse,"fa-layers-counter":e.counter,"fa-flip-horizontal":e.flip==="horizontal"||e.flip==="both","fa-flip-vertical":e.flip==="vertical"||e.flip==="both",[`fa-${e.size}`]:e.size!==null,[`fa-rotate-${e.rotate}`]:e.rotate!==null,[`fa-pull-${e.pull}`]:e.pull!==null,[`fa-stack-${e.stackItemSize}`]:e.stackItemSize!=null};return Object.keys(c).map(t=>c[t]?t:null).filter(t=>t)},Id=e=>e.prefix!==void 0&&e.iconName!==void 0,Ad=(e,c)=>Id(e)?e:typeof e=="string"?{prefix:c,iconName:e}:{prefix:e[0],iconName:e[1]},Dd=(()=>{class e{constructor(){this.defaultPrefix="fas",this.fallbackIcon=null}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),Ed=(()=>{class e{constructor(){this.definitions={}}addIcons(...t){for(let i of t){i.prefix in this.definitions||(this.definitions[i.prefix]={}),this.definitions[i.prefix][i.iconName]=i;for(let n of i.icon[2])typeof n=="string"&&(this.definitions[i.prefix][n]=i)}}addIconPacks(...t){for(let i of t){let n=Object.keys(i).map(a=>i[a]);this.addIcons(...n)}}getIconDefinition(t,i){return t in this.definitions&&i in this.definitions[t]?this.definitions[t][i]:null}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),Td=(()=>{class e{constructor(){this.stackItemSize="1x"}ngOnChanges(t){if("size"in t)throw new Error('fa-icon is not allowed to customize size when used inside fa-stack. Set size on the enclosing fa-stack instead: ....')}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,selectors:[["fa-icon","stackItemSize",""],["fa-duotone-icon","stackItemSize",""]],inputs:{stackItemSize:"stackItemSize",size:"size"},standalone:!0,features:[S1]})}}return e})(),Rd=(()=>{class e{constructor(t,i){this.renderer=t,this.elementRef=i}ngOnInit(){this.renderer.addClass(this.elementRef.nativeElement,"fa-stack")}ngOnChanges(t){"size"in t&&(t.size.currentValue!=null&&this.renderer.addClass(this.elementRef.nativeElement,`fa-${t.size.currentValue}`),t.size.previousValue!=null&&this.renderer.removeClass(this.elementRef.nativeElement,`fa-${t.size.previousValue}`))}static{this.\u0275fac=function(i){return new(i||e)(m(T4),m(D))}}static{this.\u0275cmp=A({type:e,selectors:[["fa-stack"]],inputs:{size:"size"},standalone:!0,features:[S1,E],ngContentSelectors:wd,decls:1,vars:0,template:function(i,n){i&1&&(n1(),B(0))},encapsulation:2})}}return e})(),ge=(()=>{class e{set spin(t){this.animation=t?"spin":void 0}set pulse(t){this.animation=t?"spin-pulse":void 0}constructor(t,i,n,a,o){this.sanitizer=t,this.config=i,this.iconLibrary=n,this.stackItem=a,this.classes=[],o!=null&&a==null&&console.error('FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into fa-stack. Example: .')}ngOnChanges(t){if(this.icon==null&&this.config.fallbackIcon==null){Sd();return}if(t){let i=this.icon!=null?this.icon:this.config.fallbackIcon,n=this.findIconDefinition(i);if(n!=null){let a=this.buildParams();this.renderIcon(n,a)}}}render(){this.ngOnChanges({})}findIconDefinition(t){let i=Ad(t,this.config.defaultPrefix);if("icon"in i)return i;let n=this.iconLibrary.getIconDefinition(i.prefix,i.iconName);return n??(kd(i),null)}buildParams(){let t={flip:this.flip,animation:this.animation,border:this.border,inverse:this.inverse,size:this.size||null,pull:this.pull||null,rotate:this.rotate||null,fixedWidth:typeof this.fixedWidth=="boolean"?this.fixedWidth:this.config.fixedWidth,stackItemSize:this.stackItem!=null?this.stackItem.stackItemSize:null},i=typeof this.transform=="string"?pa.transform(this.transform):this.transform;return{title:this.title,transform:i,classes:[...Nd(t),...this.classes],mask:this.mask!=null?this.findIconDefinition(this.mask):null,styles:this.styles!=null?this.styles:{},symbol:this.symbol,attributes:{role:this.a11yRole}}}renderIcon(t,i){let n=ua(t,i);this.renderedIconHTML=this.sanitizer.bypassSecurityTrustHtml(n.html.join(` +`))}static{this.\u0275fac=function(i){return new(i||e)(m(Q4),m(Dd),m(Ed),m(Td,8),m(Rd,8))}}static{this.\u0275cmp=A({type:e,selectors:[["fa-icon"]],hostAttrs:[1,"ng-fa-icon"],hostVars:2,hostBindings:function(i,n){i&2&&(z3("innerHTML",n.renderedIconHTML,bc),J("title",n.title))},inputs:{icon:"icon",title:"title",animation:"animation",spin:"spin",pulse:"pulse",mask:"mask",styles:"styles",flip:"flip",size:"size",pull:"pull",border:"border",inverse:"inverse",symbol:"symbol",rotate:"rotate",fixedWidth:"fixedWidth",classes:"classes",transform:"transform",a11yRole:"a11yRole"},standalone:!0,features:[S1,E],decls:0,vars:0,template:function(i,n){},encapsulation:2})}}return e})();var L4=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({})}}return e})();var ba={prefix:"fab",iconName:"linkedin-in",icon:[448,512,[],"f0e1","M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"]};var va={prefix:"fab",iconName:"x-twitter",icon:[512,512,[],"e61b","M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"]};var Fd={prefix:"fab",iconName:"square-facebook",icon:[448,512,["facebook-square"],"f082","M64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64h98.2V334.2H109.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H255V480H384c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z"]},_a=Fd;var za={prefix:"fab",iconName:"instagram",icon:[448,512,[],"f16d","M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"]};var Ca={prefix:"fab",iconName:"github",icon:[496,512,[],"f09b","M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"]};var Ma={prefix:"fas",iconName:"blog",icon:[512,512,[],"f781","M192 32c0 17.7 14.3 32 32 32c123.7 0 224 100.3 224 224c0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32c70.7 0 128 57.3 128 128c0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192c-17.7 0-32 14.3-32 32zM96 144c0-26.5-21.5-48-48-48S0 117.5 0 144L0 368c0 79.5 64.5 144 144 144s144-64.5 144-144s-64.5-144-144-144l-16 0 0 96 16 0c26.5 0 48 21.5 48 48s-21.5 48-48 48s-48-21.5-48-48l0-224z"]};var Bi={prefix:"fas",iconName:"link",icon:[640,512,[128279,"chain"],"f0c1","M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z"]};var be=(()=>{class e{transform(t){switch(t){case"Twitter":return va;case"LinkedIn":return ba;case"Instagram":return za;case"Blog":return Ma;case"Facebook":return _a;case"Company_Website":case"Sessionize":case"Other":return Bi;case"Github":return Ca}return Bi}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275pipe=Gt({name:"toSocialLinkIcon",type:e,pure:!0,standalone:!0})}}return e})();var Od=["*"],ve;function Pd(){if(ve===void 0&&(ve=null,typeof window<"u")){let e=window;e.trustedTypes!==void 0&&(ve=e.trustedTypes.createPolicy("angular#components",{createHTML:c=>c}))}return ve}function jt(e){return Pd()?.createHTML(e)||e}function xa(e){return Error(`Unable to find icon with the name "${e}"`)}function Hd(){return Error("Could not find HttpClient provider for use with Angular Material icons. Please include the HttpClientModule from @angular/common/http in your app imports.")}function La(e){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${e}".`)}function ya(e){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${e}".`)}var P2=class{constructor(c,t,i){this.url=c,this.svgText=t,this.options=i}},Vd=(()=>{class e{constructor(t,i,n,a){this._httpClient=t,this._sanitizer=i,this._errorHandler=a,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=n}addSvgIcon(t,i,n){return this.addSvgIconInNamespace("",t,i,n)}addSvgIconLiteral(t,i,n){return this.addSvgIconLiteralInNamespace("",t,i,n)}addSvgIconInNamespace(t,i,n,a){return this._addSvgIconConfig(t,i,new P2(n,null,a))}addSvgIconResolver(t){return this._resolvers.push(t),this}addSvgIconLiteralInNamespace(t,i,n,a){let o=this._sanitizer.sanitize(B1.HTML,n);if(!o)throw ya(n);let s=jt(o);return this._addSvgIconConfig(t,i,new P2("",s,a))}addSvgIconSet(t,i){return this.addSvgIconSetInNamespace("",t,i)}addSvgIconSetLiteral(t,i){return this.addSvgIconSetLiteralInNamespace("",t,i)}addSvgIconSetInNamespace(t,i,n){return this._addSvgIconSetConfig(t,new P2(i,null,n))}addSvgIconSetLiteralInNamespace(t,i,n){let a=this._sanitizer.sanitize(B1.HTML,i);if(!a)throw ya(i);let o=jt(a);return this._addSvgIconSetConfig(t,new P2("",o,n))}registerFontClassAlias(t,i=t){return this._fontCssClassesByAlias.set(t,i),this}classNameForFontAlias(t){return this._fontCssClassesByAlias.get(t)||t}setDefaultFontSetClass(...t){return this._defaultFontSetClass=t,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(t){let i=this._sanitizer.sanitize(B1.RESOURCE_URL,t);if(!i)throw La(t);let n=this._cachedIconsByUrl.get(i);return n?M(_e(n)):this._loadSvgIconFromConfig(new P2(t,null)).pipe(m1(a=>this._cachedIconsByUrl.set(i,a)),V(a=>_e(a)))}getNamedSvgIcon(t,i=""){let n=wa(i,t),a=this._svgIconConfigs.get(n);if(a)return this._getSvgFromConfig(a);if(a=this._getIconConfigFromResolvers(i,t),a)return this._svgIconConfigs.set(n,a),this._getSvgFromConfig(a);let o=this._iconSetConfigs.get(i);return o?this._getSvgFromIconSetConfigs(t,o):f3(xa(n))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(t){return t.svgText?M(_e(this._svgElementFromConfig(t))):this._loadSvgIconFromConfig(t).pipe(V(i=>_e(i)))}_getSvgFromIconSetConfigs(t,i){let n=this._extractIconWithNameFromAnySet(t,i);if(n)return M(n);let a=i.filter(o=>!o.svgText).map(o=>this._loadSvgIconSetFromConfig(o).pipe(H2(s=>{let l=`Loading icon set URL: ${this._sanitizer.sanitize(B1.RESOURCE_URL,o.url)} failed: ${s.message}`;return this._errorHandler.handleError(new Error(l)),M(null)})));return ec(a).pipe(V(()=>{let o=this._extractIconWithNameFromAnySet(t,i);if(!o)throw xa(t);return o}))}_extractIconWithNameFromAnySet(t,i){for(let n=i.length-1;n>=0;n--){let a=i[n];if(a.svgText&&a.svgText.toString().indexOf(t)>-1){let o=this._svgElementFromConfig(a),s=this._extractSvgIconFromSet(o,t,a.options);if(s)return s}}return null}_loadSvgIconFromConfig(t){return this._fetchIcon(t).pipe(m1(i=>t.svgText=i),V(()=>this._svgElementFromConfig(t)))}_loadSvgIconSetFromConfig(t){return t.svgText?M(null):this._fetchIcon(t).pipe(m1(i=>t.svgText=i))}_extractSvgIconFromSet(t,i,n){let a=t.querySelector(`[id="${i}"]`);if(!a)return null;let o=a.cloneNode(!0);if(o.removeAttribute("id"),o.nodeName.toLowerCase()==="svg")return this._setSvgAttributes(o,n);if(o.nodeName.toLowerCase()==="symbol")return this._setSvgAttributes(this._toSvgElement(o),n);let s=this._svgElementFromString(jt(""));return s.appendChild(o),this._setSvgAttributes(s,n)}_svgElementFromString(t){let i=this._document.createElement("DIV");i.innerHTML=t;let n=i.querySelector("svg");if(!n)throw Error(" tag not found");return n}_toSvgElement(t){let i=this._svgElementFromString(jt("")),n=t.attributes;for(let a=0;ajt(l)),j2(()=>this._inProgressUrlFetches.delete(o)),ac());return this._inProgressUrlFetches.set(o,r),r}_addSvgIconConfig(t,i,n){return this._svgIconConfigs.set(wa(t,i),n),this}_addSvgIconSetConfig(t,i){let n=this._iconSetConfigs.get(t);return n?n.push(i):this._iconSetConfigs.set(t,[i]),this}_svgElementFromConfig(t){if(!t.svgElement){let i=this._svgElementFromString(t.svgText);this._setSvgAttributes(i,t.options),t.svgElement=i}return t.svgElement}_getIconConfigFromResolvers(t,i){for(let n=0;nc?c.pathname+c.search:""}}var ka=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],Wd=ka.map(e=>`[${e}]`).join(", "),Gd=/^url\(['"]?#(.*?)['"]?\)$/,y4=(()=>{class e{get color(){return this._color||this._defaultColor}set color(t){this._color=t}get svgIcon(){return this._svgIcon}set svgIcon(t){t!==this._svgIcon&&(t?this._updateSvgIcon(t):this._svgIcon&&this._clearSvgElement(),this._svgIcon=t)}get fontSet(){return this._fontSet}set fontSet(t){let i=this._cleanupFontValue(t);i!==this._fontSet&&(this._fontSet=i,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(t){let i=this._cleanupFontValue(t);i!==this._fontIcon&&(this._fontIcon=i,this._updateFontIconClasses())}constructor(t,i,n,a,o,s){this._elementRef=t,this._iconRegistry=i,this._location=a,this._errorHandler=o,this.inline=!1,this._previousFontSetClass=[],this._currentIconFetch=P1.EMPTY,s&&(s.color&&(this.color=this._defaultColor=s.color),s.fontSet&&(this.fontSet=s.fontSet)),n||t.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(t){if(!t)return["",""];let i=t.split(":");switch(i.length){case 1:return["",i[0]];case 2:return i;default:throw Error(`Invalid icon name: "${t}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){let t=this._elementsWithExternalReferences;if(t&&t.size){let i=this._location.getPathname();i!==this._previousPath&&(this._previousPath=i,this._prependPathToReferences(i))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(t){this._clearSvgElement();let i=this._location.getPathname();this._previousPath=i,this._cacheChildrenWithExternalReferences(t),this._prependPathToReferences(i),this._elementRef.nativeElement.appendChild(t)}_clearSvgElement(){let t=this._elementRef.nativeElement,i=t.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();i--;){let n=t.childNodes[i];(n.nodeType!==1||n.nodeName.toLowerCase()==="svg")&&n.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;let t=this._elementRef.nativeElement,i=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(n=>n.length>0);this._previousFontSetClass.forEach(n=>t.classList.remove(n)),i.forEach(n=>t.classList.add(n)),this._previousFontSetClass=i,this.fontIcon!==this._previousFontIconClass&&!i.includes("mat-ligature-font")&&(this._previousFontIconClass&&t.classList.remove(this._previousFontIconClass),this.fontIcon&&t.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(t){return typeof t=="string"?t.trim().split(" ")[0]:t}_prependPathToReferences(t){let i=this._elementsWithExternalReferences;i&&i.forEach((n,a)=>{n.forEach(o=>{a.setAttribute(o.name,`url('${t}#${o.value}')`)})})}_cacheChildrenWithExternalReferences(t){let i=t.querySelectorAll(Wd),n=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let a=0;a{let s=i[a],r=s.getAttribute(o),l=r?r.match(Gd):null;if(l){let d=n.get(s);d||(d=[],n.set(s,d)),d.push({name:o,value:l[1]})}})}_updateSvgIcon(t){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),t){let[i,n]=this._splitIconName(t);i&&(this._svgNamespace=i),n&&(this._svgName=n),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(n,i).pipe(r1(1)).subscribe(a=>this._setSvgElement(a),a=>{let o=`Error retrieving icon ${i}:${n}! ${a.message}`;this._errorHandler.handleError(new Error(o))})}}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(Vd),G2("aria-hidden"),m(Ud),m(g3),m(jd,8))}}static{this.\u0275cmp=A({type:e,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(i,n){i&2&&(J("data-mat-icon-type",n._usingFontIcon()?"font":"svg")("data-mat-icon-name",n._svgName||n.fontIcon)("data-mat-icon-namespace",n._svgNamespace||n.fontSet)("fontIcon",n._usingFontIcon()?n.fontIcon:null),h2(n.color?"mat-"+n.color:""),K("mat-icon-inline",n.inline)("mat-icon-no-color",n.color!=="primary"&&n.color!=="accent"&&n.color!=="warn"))},inputs:{color:"color",inline:[I.HasDecoratorInputTransform,"inline","inline",t1],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],standalone:!0,features:[v1,E],ngContentSelectors:Od,decls:1,vars:0,template:function(i,n){i&1&&(n1(),B(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0})}}return e})(),w4=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z,Z]})}}return e})();var ze=(()=>{class e{constructor(t){this.router=t,this.history=[],this.disablePush=!1,this.router.events.subscribe(i=>{i instanceof G1&&(this.disablePush?this.disablePush=!1:this.history.push(i.urlAfterRedirects))})}dialogBack(t){this.history.pop(),this.history.length>0&&(t=this.history[this.history.length-1],this.disablePush=!0),this.router.navigate([t])}static{this.\u0275fac=function(i){return new(i||e)(u(A1))}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();function $d(e,c){if(e&1&&(h(0,"p"),b(1),p()),e&2){let t=g1(2);_(),D1("\u{1F6AA} ",t.session.room,"")}}function Zd(e,c){if(e&1&&(h(0,"p"),b(1),p()),e&2){let t=g1(2);_(),D1("\u{1F310} ",t.session.generatedCategories==null?null:t.session.generatedCategories.level,"")}}function Yd(e,c){if(e&1&&(h(0,"p"),b(1),p()),e&2){let t=g1(2);_(),D1("\u{1F525} ",t.session.generatedCategories==null?null:t.session.generatedCategories.language,"")}}function Qd(e,c){if(e&1&&(h(0,"p"),b(1),p()),e&2){let t=g1(2);_(),D1("\u{1F4DD} ",t.session.description,"")}}function Xd(e,c){if(e&1&&(h(0,"li")(1,"a",7),O(2,"img",8),p(),h(3,"div")(4,"p",9),b(5),p(),h(6,"p",10),b(7),p()()()),e&2){let t,i,n,a=c.$implicit,o=g1(2);_(),S("routerLink","/speakers/"+a.id),_(),S("src",(t=(t=o.speakersMap.get(a.id))==null?null:t.profilePicture)!==null&&t!==void 0?t:"./assets/speaker-badge.svg",j1),_(3),b1((i=(i=o.speakersMap.get(a.id))==null?null:i.fullName)!==null&&i!==void 0?i:a.name),_(2),b1((n=(n=o.speakersMap.get(a.id))==null?null:n.tagLine)!==null&&n!==void 0?n:"")}}function Kd(e,c){if(e&1&&(h(0,"mat-chip"),b(1),p()),e&2){let t=c.$implicit;_(),b1(t)}}function Jd(e,c){if(e&1&&(h(0,"mat-dialog-content",3)(1,"h1"),b(2),p(),h(3,"p"),b(4),n2(5,"date"),n2(6,"date"),p(),Y(7,$d,2,1,"p",4)(8,Zd,2,1,"p",4)(9,Yd,2,1,"p",4)(10,Qd,2,1,"p",4),h(11,"ul",5),Y(12,Xd,8,4,"li",6),p(),h(13,"div")(14,"mat-chip-set"),Y(15,Kd,2,1,"mat-chip",6),p()()()),e&2){let t=g1();_(2),b1(t.session.title),_(2),F4("\u{1F552} ",C3(5,9,t.session.startsAt,"MM/d hh:mm")," ~ ",C3(6,12,t.session.endsAt,"hh:mm"),""),_(3),S("ngIf",t.session.room),_(),S("ngIf",t.session.generatedCategories==null?null:t.session.generatedCategories.level),_(),S("ngIf",t.session.generatedCategories==null?null:t.session.generatedCategories.language),_(),S("ngIf",t.session.description),_(2),S("ngForOf",t.session==null?null:t.session.speakers),_(3),S("ngForOf",t.session.generatedCategories==null?null:t.session.generatedCategories.tags)}}var Na=(()=>{class e{constructor(){this.sessionID=""}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),Ia=(()=>{class e{constructor(t,i,n,a,o,s){this.dialog=t,this.route=i,this.dataService=n,this.zone=a,this.navigation=o,this.router=s,this.openDialog()}ngOnInit(){this.dataService.sessionID=this.route.snapshot.paramMap.get("id")??""}openDialog(){let t=this.dialog.open(tm,{autoFocus:!1,maxWidth:"80vw",width:"1200px"}),i=!1;this.zone.run(()=>{t.afterClosed().subscribe(()=>{i||this.navigation.dialogBack("/schedule")})}),this.router.events.subscribe(n=>{n instanceof g2&&(i=!0,t.close())})}static{this.\u0275fac=function(i){return new(i||e)(m(F3),m(t2),m(Na),m(w),m(ze),m(A1))}}static{this.\u0275cmp=A({type:e,selectors:[["app-schedule-dialog-entry"]],decls:0,vars:0,template:function(i,n){},encapsulation:2})}}return e})(),tm=(()=>{class e{constructor(t,i,n){this.dataService=t,this.speakerService=i,this.service=n,this.speakersMap=new Map}ngOnInit(){this.session=this.service.sessionsMap.get(this.dataService.sessionID),this.speakersMap=this.speakerService.speakersMap}static{this.\u0275fac=function(i){return new(i||e)(m(Na),m(M2),m(f4))}}static{this.\u0275cmp=A({type:e,selectors:[["app-schedule-dialog"]],standalone:!0,features:[E],decls:5,vars:2,consts:[["align","end"],["mat-icon-button","",3,"mat-dialog-close"],["class","mat-typography","style","padding-top: 0px;",4,"ngIf"],[1,"mat-typography",2,"padding-top","0px"],[4,"ngIf"],[1,"speaker-list"],[4,"ngFor","ngForOf"],[1,"speaker-avatar-link",3,"routerLink"],["alt","the avatar of the speaker",3,"src"],[1,"speaker-name"],[1,"speaker-tagLine"]],template:function(i,n){i&1&&(h(0,"mat-dialog-actions",0)(1,"button",1)(2,"mat-icon"),b(3,"close"),p()()(),Y(4,Jd,16,15,"mat-dialog-content",2)),i&2&&(_(),S("mat-dialog-close",!0),_(3),S("ngIf",n.session))},dependencies:[oe,ce,ae,ne,a3,p4,E1,f2,Z2,c0,v2,e2,L4,w4,y4,Z0,Lt,$0],styles:[".mat-card-group[_ngcontent-%COMP%]{margin:10px 0;display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px}.language-box[_ngcontent-%COMP%]{border:1px solid;padding:1px 5px;float:right}.schedule-date[_ngcontent-%COMP%]{padding-bottom:5px;color:var(--black-02);border-bottom:3px solid var(--black-02);letter-spacing:2px;transition:border-bottom-color .75s var(--default-transition-timing-function),color .75s var(--default-transition-timing-function)}.schedule-date[_ngcontent-%COMP%]:hover{color:var(--blue-500);border-bottom-color:var(--blue-500)}.schedule-time[_ngcontent-%COMP%]{color:var(--blue-500);font-size:1.3rem;margin:20px 0 5px;letter-spacing:3px}mat-card-subtitle[_ngcontent-%COMP%]{margin-top:10px}mat-card[_ngcontent-%COMP%]{display:flex}ul.speaker-list[_ngcontent-%COMP%]{list-style-type:none;padding:0;margin:0}ul.speaker-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{display:flex;align-items:center;margin:10px 0;justify-content:flex-start}ul.speaker-list[_ngcontent-%COMP%] a.speaker-avatar-link[_ngcontent-%COMP%]{margin-right:10px;display:block;height:40px}ul.speaker-list[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:40px;height:40px;border-radius:50%;transition:box-shadow .75s var(--default-transition-timing-function);background-color:var(--pastel-green)}ul.speaker-list[_ngcontent-%COMP%] img[_ngcontent-%COMP%]:hover{box-shadow:0 0 5px var(--green-500)}ul.speaker-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:5px;font-size:1rem;line-height:1.2rem}ul.speaker-list[_ngcontent-%COMP%] p.speaker-tag-line[_ngcontent-%COMP%]{font-size:.9rem;color:#0000008a}.card-spacing[_ngcontent-%COMP%]{flex:1}mat-card-title[_ngcontent-%COMP%] a[_ngcontent-%COMP%], mat-card-title[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:visited{color:unset;text-decoration:none;transition:color .75s var(--default-transition-timing-function)}mat-card-title[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{color:var(--blue-500)}mat-card-footer[_ngcontent-%COMP%]{padding:16px}@media screen and (max-width: 1200px){.mat-card-group[_ngcontent-%COMP%]{grid-template-columns:repeat(3,1fr)}}@media screen and (max-width: 900px){.mat-card-group[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}}@media screen and (max-width: 650px){.mat-card-group[_ngcontent-%COMP%]{grid-template-columns:repeat(1,1fr)}}","mat-dialog-content[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{line-height:2.2rem;font-size:1.5rem;font-weight:700;margin-bottom:20px}mat-dialog-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#717171}ul.speaker-list[_ngcontent-%COMP%] a.speaker-avatar-link[_ngcontent-%COMP%]{height:60px}ul.speaker-list[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:60px;height:60px}ul.speaker-list[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:10px}.speaker-name[_ngcontent-%COMP%]{color:var(--black-02);font-weight:700}"],changeDetection:0})}}return e})();function em(e,c){if(e&1&&(h(0,"a",8),O(1,"fa-icon",9),n2(2,"toSocialLinkIcon"),p()),e&2){let t=c.$implicit;S("href",t.url,j1)("title",t.title),_(),S("icon",Jt(2,3,t.linkType))}}function im(e,c){if(e&1&&(h(0,"mat-card",3)(1,"mat-card-header")(2,"a",4),O(3,"img",5),p(),h(4,"mat-card-title-group")(5,"mat-card-title"),b(6),p(),h(7,"mat-card-subtitle"),b(8),p()()(),h(9,"mat-card-content")(10,"p"),b(11),n2(12,"truncateString"),p(),h(13,"div",6),Y(14,em,3,5,"a",7),p()()()),e&2){let t=c.$implicit;_(2),S("routerLink",t.id),_(),S("src",t.profilePicture||"./assets/speaker-badge.svg",j1),_(3),b1(t.fullName),_(2),b1(t.tagLine||""),_(3),b1(C3(12,6,t.bio||"",150)),_(3),S("ngForOf",t.links)}}var Aa=(()=>{class e{constructor(t){this.service=t,this.speakers=[],this.speakers=this.service.speakers}static{this.\u0275fac=function(i){return new(i||e)(m(M2))}}static{this.\u0275cmp=A({type:e,selectors:[["app-speakers"]],standalone:!0,features:[E],decls:8,vars:1,consts:[[1,"max-width-constraint-with-padding"],[1,"mat-card-group"],["appearance","outlined",4,"ngFor","ngForOf"],["appearance","outlined"],[1,"avatar-link",3,"routerLink"],["mat-card-avatar","","alt","the avatar of the speaker",3,"src"],[1,"social-link-list"],["mat-icon-button","","class","social-link","target","_blank",3,"href","title",4,"ngFor","ngForOf"],["mat-icon-button","","target","_blank",1,"social-link",3,"href","title"],[3,"icon"]],template:function(i,n){i&1&&(h(0,"div",0)(1,"h1"),b(2,"\u8B1B\u8005"),p(),h(3,"p"),b(4," \u5F9E Googler\u3001\u5408\u4F5C\u5925\u4F34\u4EE5\u53CA\u793E\u7FA4\u8B1B\u8005\u5011\u77AD\u89E3\u6700\u65B0\u6280\u8853\u8CC7\u8A0A\uFF0C\u6211\u5011\u6703\u5728\u6B64\u4E0D\u5B9A\u671F\u52A0\u5165\u8B1B\u8005\u7684\u76F8\u95DC\u8CC7\u8A0A\uFF0C\u6B61\u8FCE\u60A8\u5728\u6B64\u6301\u7E8C\u95DC\u6CE8\u6211\u5011\u7684\u8A0A\u606F\u3002 "),p(),h(5,"div",1),Y(6,im,15,9,"mat-card",2),p()(),O(7,"router-outlet")),i&2&&(_(6),S("ngForOf",n.speakers))},dependencies:[W0,V0,R5,j0,q0,U0,B0,E5,L4,ge,E1,f2,be,O5,v2,S3,e2,a3,Q0],styles:[".mat-card-group[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);margin:10px 0;grid-gap:10px}mat-card-header[_ngcontent-%COMP%]{flex-direction:column;align-items:center}mat-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{word-break:break-word}.mat-mdc-card-avatar[_ngcontent-%COMP%]{background-color:var(--pastel-green);border:5px solid var(--pastel-green);width:128px;height:128px}a.avatar-link[_ngcontent-%COMP%]{text-decoration:none}.mat-mdc-card-avatar[_ngcontent-%COMP%]{transition:box-shadow .75s var(--default-transition-timing-function)}.mat-mdc-card-avatar[_ngcontent-%COMP%]:hover{box-shadow:0 0 10px var(--green-500)}@media screen and (max-width: 1200px){.mat-card-group[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}}@media screen and (max-width: 750px){.mat-card-group[_ngcontent-%COMP%]{grid-template-columns:repeat(1,1fr)}}.social-link-list[_ngcontent-%COMP%]{display:flex;gap:10px;justify-content:center}.social-link[_ngcontent-%COMP%], .social-link[_ngcontent-%COMP%]:visited{font-size:1.2rem;color:#6b6b6b;transition:color .3s}.social-link[_ngcontent-%COMP%]:hover{color:var(--black-02)}"]})}}return e})();function cm(e,c){if(e&1&&(h(0,"p"),b(1),p()),e&2){let t=g1(2);_(),D1("\u{1F464} ",t.speaker.bio,"")}}function nm(e,c){if(e&1&&(h(0,"p")(1,"a",13),b(2),p()()),e&2){let t=c.$implicit;_(),S("routerLink","/schedule/"+t.id),_(),D1("\u{1F5D3}\uFE0F ",t.name,"")}}function am(e,c){if(e&1&&(h(0,"a",14),O(1,"fa-icon",15),n2(2,"toSocialLinkIcon"),p()),e&2){let t=c.$implicit;S("href",t.url,j1)("title",t.title),_(),S("icon",Jt(2,3,t.linkType))}}function om(e,c){if(e&1&&(h(0,"mat-dialog-content",3)(1,"div",4),O(2,"img",5),h(3,"div",6)(4,"p",7),b(5),p(),h(6,"p",8),b(7),p()()(),Y(8,cm,2,1,"p",9)(9,nm,3,2,"p",10),h(10,"div",11),Y(11,am,3,5,"a",12),p()()),e&2){let t=g1();_(2),S("src",t.speaker.profilePicture||"./assets/speaker-badge.svg",j1),_(3),b1(t.speaker.fullName),_(2),b1(t.speaker.tagLine),_(),S("ngIf",t.speaker==null?null:t.speaker.bio),_(),S("ngForOf",t.speaker.sessions),_(2),S("ngForOf",t.speaker.links)}}var Da=(()=>{class e{constructor(){this.userID=""}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})(),Ea=(()=>{class e{constructor(t,i,n,a,o,s){this.dialog=t,this.route=i,this.dataService=n,this.zone=a,this.navigation=o,this.router=s,this.openDialog()}ngOnInit(){this.dataService.userID=this.route.snapshot.paramMap.get("id")??""}openDialog(){let t=this.dialog.open(sm,{autoFocus:!1,maxWidth:"1000px"}),i=!1;this.zone.run(()=>{t.afterClosed().subscribe(()=>{i||this.navigation.dialogBack("/speakers")})}),this.router.events.subscribe(n=>{n instanceof g2&&(i=!0,t.close())})}static{this.\u0275fac=function(i){return new(i||e)(m(F3),m(t2),m(Da),m(w),m(ze),m(A1))}}static{this.\u0275cmp=A({type:e,selectors:[["app-speaker-dialog-entry"]],decls:0,vars:0,template:function(i,n){},encapsulation:2})}}return e})(),sm=(()=>{class e{constructor(t,i){this.dataService=t,this.service=i}ngOnInit(){this.speaker=this.service.speakersMap.get(this.dataService.userID)}static{this.\u0275fac=function(i){return new(i||e)(m(Da),m(M2))}}static{this.\u0275cmp=A({type:e,selectors:[["app-speaker-dialog"]],standalone:!0,features:[E],decls:5,vars:2,consts:[["align","end"],["mat-icon-button","",3,"mat-dialog-close"],["class","mat-typography","style","padding-top: 0px;",4,"ngIf"],[1,"mat-typography",2,"padding-top","0px"],[1,"avatar-name-group"],["alt","the avatar of the speaker",1,"avatar",3,"src"],[1,"name-box"],[1,"full-name"],[1,"tag-line"],[4,"ngIf"],[4,"ngFor","ngForOf"],[1,"social-link-list"],["mat-icon-button","","class","social-link","target","_blank",3,"href","title",4,"ngFor","ngForOf"],[3,"routerLink"],["mat-icon-button","","target","_blank",1,"social-link",3,"href","title"],[3,"icon"]],template:function(i,n){i&1&&(h(0,"mat-dialog-actions",0)(1,"button",1)(2,"mat-icon"),b(3,"close"),p()()(),Y(4,om,12,6,"mat-dialog-content",2)),i&2&&(_(),S("mat-dialog-close",!0),_(3),S("ngIf",n.speaker))},dependencies:[oe,ce,ae,ne,a3,Q0,p4,E1,f2,Z2,v2,e2,L4,ge,be,w4,y4],styles:[".mat-card-group[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(3,1fr);margin:10px 0;grid-gap:10px}mat-card-header[_ngcontent-%COMP%]{flex-direction:column;align-items:center}mat-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{word-break:break-word}.mat-mdc-card-avatar[_ngcontent-%COMP%]{background-color:var(--pastel-green);border:5px solid var(--pastel-green);width:128px;height:128px}a.avatar-link[_ngcontent-%COMP%]{text-decoration:none}.mat-mdc-card-avatar[_ngcontent-%COMP%]{transition:box-shadow .75s var(--default-transition-timing-function)}.mat-mdc-card-avatar[_ngcontent-%COMP%]:hover{box-shadow:0 0 10px var(--green-500)}@media screen and (max-width: 1200px){.mat-card-group[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}}@media screen and (max-width: 750px){.mat-card-group[_ngcontent-%COMP%]{grid-template-columns:repeat(1,1fr)}}.social-link-list[_ngcontent-%COMP%]{display:flex;gap:10px;justify-content:center}.social-link[_ngcontent-%COMP%], .social-link[_ngcontent-%COMP%]:visited{font-size:1.2rem;color:#6b6b6b;transition:color .3s}.social-link[_ngcontent-%COMP%]:hover{color:var(--black-02)}",".avatar-name-group[_ngcontent-%COMP%]{display:flex;align-items:center}.avatar-name-group[_ngcontent-%COMP%] .avatar[_ngcontent-%COMP%]{border:5px solid var(--pastel-green);width:128px;height:128px;border-radius:25px;background-color:var(--pastel-green)}.avatar-name-group[_ngcontent-%COMP%] .name-box[_ngcontent-%COMP%]{margin-left:20px}.avatar-name-group[_ngcontent-%COMP%] .name-box[_ngcontent-%COMP%] .full-name[_ngcontent-%COMP%]{font-size:2rem;line-height:2rem;color:var(--black-02);margin:10px 0}.avatar-name-group[_ngcontent-%COMP%] .name-box[_ngcontent-%COMP%] .tag-line[_ngcontent-%COMP%]{font-size:1rem;margin:10px 0}@media screen and (max-width: 750px){.avatar-name-group[_ngcontent-%COMP%]{flex-direction:column}.avatar-name-group[_ngcontent-%COMP%] .name-box[_ngcontent-%COMP%]{width:100%;margin:15px 0 0}.avatar-name-group[_ngcontent-%COMP%] .name-box[_ngcontent-%COMP%] .full-name[_ngcontent-%COMP%]{font-size:1.5rem;line-height:1.5rem}}a[_ngcontent-%COMP%], a[_ngcontent-%COMP%]:visited{color:var(--blue-500);text-decoration:none;transition:color .75s var(--default-transition-timing-function)}a[_ngcontent-%COMP%]:hover{color:var(--green-500)}"],changeDetection:0})}}return e})();var Ta=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=A({type:e,selectors:[["app-cod"]],standalone:!0,features:[E],decls:84,vars:0,consts:[[1,"max-width-constraint-with-padding"],["href","http://lviv.gdg.org.ua/","target","_blank","title","GDG Lviv"],["target","_blank","href","https://meta.wikimedia.org/wiki/Don%27t_be_a_jerk","title","jerky behavior"],["href","mailto:o.zasadnyy@gdg.org.ua"],["href","mailto:s.huts@gdg.org.ua"]],template:function(i,n){i&1&&(h(0,"div",0)(1,"h1"),b(2,"\u793E\u7FA4\u6D3B\u52D5\u6307\u5F15"),p(),h(3,"h3"),b(4,"1. Purpose"),p(),h(5,"p"),b(6,"A primary goal of "),h(7,"a",1),b(8,"GDG Lviv"),p(),b(9," is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof). GDG Lviv prides itself on being an open, respectful, and inclusive community. That means the "),h(10,"a",2),b(11,"jerky behavior"),p(),b(12," isn\u2019t allowed at GDG meetings."),p(),h(13,"p"),b(14,"This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. We invite all those who participate in Google Developers Group to help us create safe and positive experiences for everyone."),p(),h(15,"h3"),b(16,"2. Open [Source/Culture/Tech] Citizenship"),p(),h(17,"p"),b(18,"A supplemental goal of this Code of Conduct is to increase open [source/culture/tech] citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community. Communities mirror the societies in which they exist, and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know."),p(),h(19,"h3"),b(20,"3. Expected Behavior"),p(),h(21,"p"),b(22,"The following behaviors are expected and requested of all community members:"),p(),h(23,"ul")(24,"li"),b(25,"Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community."),p(),h(26,"li"),b(27,"Exercise consideration and respect in your speech and actions."),p(),h(28,"li"),b(29,"Attempt collaboration before a conflict."),p(),h(30,"li"),b(31,"Refrain from demeaning, discriminatory, or harassing behavior and speech."),p(),h(32,"li"),b(33,"Be mindful of your surroundings and your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential."),p()(),h(34,"h3"),b(35,"4. Unacceptable Behavior"),p(),h(36,"p"),b(37,"The following actions are considered harassment and are unacceptable within our community:"),p(),h(38,"ul")(39,"li"),b(40,"Violence, threats of violence or violent language directed against another person."),p(),h(41,"li"),b(42,"Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language."),p(),h(43,"li"),b(44,"Posting or displaying sexually explicit or violent material."),p(),h(45,"li"),b(46,'Posting or threatening to post other people\u2019s personally identifying information ("doxing").'),p(),h(47,"li"),b(48,"Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability."),p(),h(49,"li"),b(50,"Inappropriate photography or recording."),p(),h(51,"li"),b(52,"Inappropriate physical contact. You should have someone\u2019s consent before touching them."),p(),h(53,"li"),b(54,"Unwelcome sexual attention. This includes sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances."),p(),h(55,"li"),b(56,"Deliberate intimidation, stalking or following (online or in person)."),p(),h(57,"li"),b(58,"Advocating for, or encouraging, any of the above behavior."),p(),h(59,"li"),b(60,"Sustained disruption of community events, including talks and, presentations."),p()(),h(61,"h3"),b(62,"5. Consequences of Unacceptable Behavior"),p(),h(63,"p"),b(64,"Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated."),O(65,"br"),b(66," Anyone asked to stop unacceptable behavior is expected to comply immediately."),O(67,"br"),b(68," If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event."),p(),h(69,"h3"),b(70,"6. Scope"),p(),h(71,"p"),b(72,"We expect all community participants to abide by this Code of Conduct in all community venues\u2013online and in-person\u2013as well as in all one-on-one communications about community business. This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to affect the safety and well-being of community members adversely."),p(),h(73,"h3"),b(74,"7. Contact info"),p(),h(75,"ul")(76,"li"),b(77,"Oleh Zasadnyy, +38 093 486 64 60, "),h(78,"a",3),b(79,"o.zasadnyy@gdg.org.ua"),p()(),h(80,"li"),b(81,"Sofiya Huts, +38 093 486 14 25, "),h(82,"a",4),b(83,"s.huts@gdg.org.ua"),p()()()())}})}}return e})();var Ce="GDG DevFest Taipei 2024",Ra=[{path:"",component:d5,data:{animations:"homePage"},title:Ce},{path:"speakers",component:Aa,data:{animations:"speakersPage"},children:[{path:":id",component:Ea}],title:`\u8B1B\u8005 | ${Ce}`},{path:"schedule",component:W5,data:{animations:"schedulePage"},children:[{path:":id",component:Ia}],title:`\u8B70\u7A0B | ${Ce}`},{path:"cod",component:Ta,data:{animations:"codePage"},title:`\u793E\u7FA4\u6D3B\u52D5\u6307\u5F15 | ${Ce}`}];var rm="@",lm=(()=>{class e{constructor(t,i,n,a,o){this.doc=t,this.delegate=i,this.zone=n,this.animationType=a,this.moduleImpl=o,this._rendererFactoryPromise=null,this.scheduler=v(zc,{optional:!0})}ngOnDestroy(){this._engine?.flush()}loadImpl(){return(this.moduleImpl??import("./chunk-BJXUBQDU.js")).catch(i=>{throw new l1(5300,!1)}).then(({\u0275createEngine:i,\u0275AnimationRendererFactory:n})=>{this._engine=i(this.animationType,this.doc,this.scheduler);let a=new n(this.delegate,this._engine,this.zone);return this.delegate=a,a})}createRenderer(t,i){let n=this.delegate.createRenderer(t,i);if(n.\u0275type===0)return n;typeof n.throwOnSyntheticProps=="boolean"&&(n.throwOnSyntheticProps=!1);let a=new Ui(n);return i?.data?.animation&&!this._rendererFactoryPromise&&(this._rendererFactoryPromise=this.loadImpl()),this._rendererFactoryPromise?.then(o=>{let s=o.createRenderer(t,i);a.use(s)}).catch(o=>{a.use(n)}),a}begin(){this.delegate.begin?.()}end(){this.delegate.end?.()}whenRenderingDone(){return this.delegate.whenRenderingDone?.()??Promise.resolve()}static{this.\u0275fac=function(i){b3()}}static{this.\u0275prov=C({token:e,factory:e.\u0275fac})}}return e})(),Ui=class{constructor(c){this.delegate=c,this.replay=[],this.\u0275type=1}use(c){if(this.delegate=c,this.replay!==null){for(let t of this.replay)t(c);this.replay=null}}get data(){return this.delegate.data}destroy(){this.replay=null,this.delegate.destroy()}createElement(c,t){return this.delegate.createElement(c,t)}createComment(c){return this.delegate.createComment(c)}createText(c){return this.delegate.createText(c)}get destroyNode(){return this.delegate.destroyNode}appendChild(c,t){this.delegate.appendChild(c,t)}insertBefore(c,t,i,n){this.delegate.insertBefore(c,t,i,n)}removeChild(c,t,i){this.delegate.removeChild(c,t,i)}selectRootElement(c,t){return this.delegate.selectRootElement(c,t)}parentNode(c){return this.delegate.parentNode(c)}nextSibling(c){return this.delegate.nextSibling(c)}setAttribute(c,t,i,n){this.delegate.setAttribute(c,t,i,n)}removeAttribute(c,t,i){this.delegate.removeAttribute(c,t,i)}addClass(c,t){this.delegate.addClass(c,t)}removeClass(c,t){this.delegate.removeClass(c,t)}setStyle(c,t,i,n){this.delegate.setStyle(c,t,i,n)}removeStyle(c,t,i){this.delegate.removeStyle(c,t,i)}setProperty(c,t,i){this.shouldReplay(t)&&this.replay.push(n=>n.setProperty(c,t,i)),this.delegate.setProperty(c,t,i)}setValue(c,t){this.delegate.setValue(c,t)}listen(c,t,i){return this.shouldReplay(t)&&this.replay.push(n=>n.listen(c,t,i)),this.delegate.listen(c,t,i)}shouldReplay(c){return this.replay!==null&&c.startsWith(rm)}};function Fa(e="animations"){return Qt("NgAsyncAnimations"),q2([{provide:Yt,useFactory:(c,t,i)=>new lm(c,t,i,e),deps:[T,m0,w]},{provide:h1,useValue:e==="noop"?"NoopAnimations":"BrowserAnimations"}])}var Oa={providers:[a5(Ra),b8(),Fa(),a8(o8()),{provide:Y3,useFactory:e=>()=>e.load(),deps:[M2],multi:!0},{provide:Y3,useFactory:e=>()=>e.load(),deps:[f4],multi:!0}]};var dm=["*",[["mat-toolbar-row"]]],mm=["*","mat-toolbar-row"],hm=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,selectors:[["mat-toolbar-row"]],hostAttrs:[1,"mat-toolbar-row"],exportAs:["matToolbarRow"],standalone:!0})}}return e})(),Pa=(()=>{class e{constructor(t,i,n){this._elementRef=t,this._platform=i,this._document=n}ngAfterViewInit(){this._platform.isBrowser&&(this._checkToolbarMixedModes(),this._toolbarRows.changes.subscribe(()=>this._checkToolbarMixedModes()))}_checkToolbarMixedModes(){this._toolbarRows.length}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(Q),m(T))}}static{this.\u0275cmp=A({type:e,selectors:[["mat-toolbar"]],contentQueries:function(i,n,a){if(i&1&&p1(a,hm,5),i&2){let o;W(o=G())&&(n._toolbarRows=o)}},hostAttrs:[1,"mat-toolbar"],hostVars:6,hostBindings:function(i,n){i&2&&(h2(n.color?"mat-"+n.color:""),K("mat-toolbar-multiple-rows",n._toolbarRows.length>0)("mat-toolbar-single-row",n._toolbarRows.length===0))},inputs:{color:"color"},exportAs:["matToolbar"],standalone:!0,features:[E],ngContentSelectors:mm,decls:2,vars:0,template:function(i,n){i&1&&(n1(dm),B(0),B(1,1))},styles:[".mat-toolbar{background:var(--mat-toolbar-container-background-color);color:var(--mat-toolbar-container-text-color)}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font-family:var(--mat-toolbar-title-text-font);font-size:var(--mat-toolbar-title-text-size);line-height:var(--mat-toolbar-title-text-line-height);font-weight:var(--mat-toolbar-title-text-weight);letter-spacing:var(--mat-toolbar-title-text-tracking);margin:0}.cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar .mat-mdc-button-base.mat-mdc-button-base.mat-unthemed{--mdc-text-button-label-text-color:var(--mat-toolbar-container-text-color);--mdc-outlined-button-label-text-color:var(--mat-toolbar-container-text-color)}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap;height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-row,.mat-toolbar-single-row{height:var(--mat-toolbar-mobile-height)}}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%;min-height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-multiple-rows{min-height:var(--mat-toolbar-mobile-height)}}"],encapsulation:2,changeDetection:0})}}return e})();var Ha=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z,Z]})}}return e})();var Gi=["*"];var pm=["tabListContainer"],um=["tabList"],gm=["tabListInner"],bm=["nextPaginator"],vm=["previousPaginator"];var _m=["mat-tab-nav-bar",""],zm=["mat-tab-link",""];var qi="mdc-tab-indicator--active",Va="mdc-tab-indicator--no-transition",Wi=class{constructor(c){this._items=c}hide(){this._items.forEach(c=>c.deactivateInkBar())}alignToElement(c){let t=this._items.find(n=>n.elementRef.nativeElement===c),i=this._currentItem;if(t!==i&&(i?.deactivateInkBar(),t)){let n=i?.elementRef.nativeElement.getBoundingClientRect?.();t.activateInkBar(n),this._currentItem=t}}},Cm=(()=>{class e{constructor(){this._elementRef=v(D),this._fitToContent=!1}get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(t){this._fitToContent!==t&&(this._fitToContent=t,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(t){let i=this._elementRef.nativeElement;if(!t||!i.getBoundingClientRect||!this._inkBarContentElement){i.classList.add(qi);return}let n=i.getBoundingClientRect(),a=t.width/n.width,o=t.left-n.left;i.classList.add(Va),this._inkBarContentElement.style.setProperty("transform",`translateX(${o}px) scaleX(${a})`),i.getBoundingClientRect(),i.classList.remove(Va),i.classList.add(qi),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this._elementRef.nativeElement.classList.remove(qi)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){this._inkBarElement?.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){let t=this._elementRef.nativeElement.ownerDocument||document,i=this._inkBarElement=t.createElement("span"),n=this._inkBarContentElement=t.createElement("span");i.className="mdc-tab-indicator",n.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",i.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){this._inkBarElement;let t=this._fitToContent?this._elementRef.nativeElement.querySelector(".mdc-tab__content"):this._elementRef.nativeElement;t.appendChild(this._inkBarElement)}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,inputs:{fitInkBarToContent:[I.HasDecoratorInputTransform,"fitInkBarToContent","fitInkBarToContent",t1]},features:[v1]})}}return e})();var Ba=c3({passive:!0}),Mm=650,xm=100,Lm=(()=>{class e{get selectedIndex(){return this._selectedIndex}set selectedIndex(t){let i=isNaN(t)?0:t;this._selectedIndex!=i&&(this._selectedIndexChanged=!0,this._selectedIndex=i,this._keyManager&&this._keyManager.updateActiveItem(i))}constructor(t,i,n,a,o,s,r){this._elementRef=t,this._changeDetectorRef=i,this._viewportRuler=n,this._dir=a,this._ngZone=o,this._platform=s,this._animationMode=r,this._scrollDistance=0,this._selectedIndexChanged=!1,this._destroyed=new N,this._showPaginationControls=!1,this._disableScrollAfter=!0,this._disableScrollBefore=!0,this._stopScrolling=new N,this.disablePagination=!1,this._selectedIndex=0,this.selectFocusedIndex=new o1,this.indexFocused=new o1,o.runOutsideAngular(()=>{k2(t.nativeElement,"mouseleave").pipe(X(this._destroyed)).subscribe(()=>{this._stopInterval()})})}ngAfterViewInit(){k2(this._previousPaginator.nativeElement,"touchstart",Ba).pipe(X(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("before")}),k2(this._nextPaginator.nativeElement,"touchstart",Ba).pipe(X(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("after")})}ngAfterContentInit(){let t=this._dir?this._dir.change:M("ltr"),i=this._viewportRuler.change(150),n=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new l4(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(this._selectedIndex),this._ngZone.onStable.pipe(r1(1)).subscribe(n),R1(t,i,this._items.changes,this._itemsResized()).pipe(X(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),n()})}),this._keyManager.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(a=>{this.indexFocused.emit(a),this._setTabFocus(a)})}_itemsResized(){return typeof ResizeObserver!="function"?l2:this._items.changes.pipe(C1(this._items),M1(t=>new K1(i=>this._ngZone.runOutsideAngular(()=>{let n=new ResizeObserver(a=>i.next(a));return t.forEach(a=>n.observe(a.elementRef.nativeElement)),()=>{n.disconnect()}}))),W3(1),c1(t=>t.some(i=>i.contentRect.width>0&&i.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){this._keyManager?.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(t){if(!z2(t))switch(t.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){let i=this._items.get(this.focusIndex);i&&!i.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(t))}break;default:this._keyManager.onKeydown(t)}}_onContentChanges(){let t=this._elementRef.nativeElement.textContent;t!==this._currentTextContent&&(this._currentTextContent=t||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(t){!this._isValidIndex(t)||this.focusIndex===t||!this._keyManager||this._keyManager.setActiveItem(t)}_isValidIndex(t){return this._items?!!this._items.toArray()[t]:!0}_setTabFocus(t){if(this._showPaginationControls&&this._scrollToLabel(t),this._items&&this._items.length){this._items.toArray()[t].focus();let i=this._tabListContainer.nativeElement;this._getLayoutDirection()=="ltr"?i.scrollLeft=0:i.scrollLeft=i.scrollWidth-i.offsetWidth}}_getLayoutDirection(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;let t=this.scrollDistance,i=this._getLayoutDirection()==="ltr"?-t:t;this._tabList.nativeElement.style.transform=`translateX(${Math.round(i)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(t){this._scrollTo(t)}_scrollHeader(t){let i=this._tabListContainer.nativeElement.offsetWidth,n=(t=="before"?-1:1)*i/3;return this._scrollTo(this._scrollDistance+n)}_handlePaginatorClick(t){this._stopInterval(),this._scrollHeader(t)}_scrollToLabel(t){if(this.disablePagination)return;let i=this._items?this._items.toArray()[t]:null;if(!i)return;let n=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:a,offsetWidth:o}=i.elementRef.nativeElement,s,r;this._getLayoutDirection()=="ltr"?(s=a,r=s+o):(r=this._tabListInner.nativeElement.offsetWidth-a,s=r-o);let l=this.scrollDistance,d=this.scrollDistance+n;sd&&(this.scrollDistance+=Math.min(r-d,s-l))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{let t=this._tabListInner.nativeElement.scrollWidth>this._elementRef.nativeElement.offsetWidth;t||(this.scrollDistance=0),t!==this._showPaginationControls&&this._changeDetectorRef.markForCheck(),this._showPaginationControls=t}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=this.scrollDistance==0,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){let t=this._tabListInner.nativeElement.scrollWidth,i=this._tabListContainer.nativeElement.offsetWidth;return t-i||0}_alignInkBarToSelectedTab(){let t=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,i=t?t.elementRef.nativeElement:null;i?this._inkBar.alignToElement(i):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(t,i){i&&i.button!=null&&i.button!==0||(this._stopInterval(),ic(Mm,xm).pipe(X(R1(this._stopScrolling,this._destroyed))).subscribe(()=>{let{maxScrollDistance:n,distance:a}=this._scrollHeader(t);(a===0||a>=n)&&this._stopInterval()}))}_scrollTo(t){if(this.disablePagination)return{maxScrollDistance:0,distance:0};let i=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(i,t)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:i,distance:this._scrollDistance}}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(L1),m(o3),m(O1,8),m(w),m(Q),m(h1,8))}}static{this.\u0275dir=H({type:e,inputs:{disablePagination:[I.HasDecoratorInputTransform,"disablePagination","disablePagination",t1],selectedIndex:[I.HasDecoratorInputTransform,"selectedIndex","selectedIndex",A2]},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"},features:[v1]})}}return e})();var ym=new x("MAT_TABS_CONFIG");var ja=0,$i=(()=>{class e extends Lm{get fitInkBarToContent(){return this._fitInkBarToContent.value}set fitInkBarToContent(t){this._fitInkBarToContent.next(t),this._changeDetectorRef.markForCheck()}get animationDuration(){return this._animationDuration}set animationDuration(t){let i=t+"";this._animationDuration=/^\d+$/.test(i)?t+"ms":i}get backgroundColor(){return this._backgroundColor}set backgroundColor(t){let i=this._elementRef.nativeElement.classList;i.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),t&&i.add("mat-tabs-with-background",`mat-background-${t}`),this._backgroundColor=t}constructor(t,i,n,a,o,s,r,l){super(t,a,o,i,n,s,r),this._fitInkBarToContent=new w1(!1),this.stretchTabs=!0,this.disableRipple=!1,this.color="primary",this.disablePagination=l&&l.disablePagination!=null?l.disablePagination:!1,this.fitInkBarToContent=l&&l.fitInkBarToContent!=null?l.fitInkBarToContent:!1,this.stretchTabs=l&&l.stretchTabs!=null?l.stretchTabs:!0}_itemSelected(){}ngAfterContentInit(){this._inkBar=new Wi(this._items),this._items.changes.pipe(C1(null),X(this._destroyed)).subscribe(()=>{this.updateActiveLink()}),super.ngAfterContentInit()}ngAfterViewInit(){this.tabPanel,super.ngAfterViewInit()}updateActiveLink(){if(!this._items)return;let t=this._items.toArray();for(let i=0;i.mat-mdc-tab-link-container .mat-mdc-tab-links{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-link-container .mat-mdc-tab-links{justify-content:flex-end}.mat-mdc-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1;border-bottom-style:solid;border-bottom-width:var(--mat-tab-header-divider-height);border-bottom-color:var(--mat-tab-header-divider-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-tab-header-with-background-background-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background.mat-primary>.mat-mdc-tab-link-container .mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background.mat-primary>.mat-mdc-tab-link-container .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-link-container .mat-mdc-tab-link:not(.mdc-tab--active) .mdc-tab__text-label{color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background:not(.mat-primary)>.mat-mdc-tab-link-container .mat-mdc-tab-link:not(.mdc-tab--active) .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-focus-indicator::before,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-focus-indicator::before{border-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mdc-tab__ripple::before,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-tab-header-with-background-foreground-color)}.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-link-container .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-nav-bar.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{color:var(--mat-tab-header-with-background-foreground-color)}"],encapsulation:2})}}return e})(),Zi=(()=>{class e extends Cm{get active(){return this._isActive}set active(t){t!==this._isActive&&(this._isActive=t,this._tabNavBar.updateActiveLink())}get rippleDisabled(){return this.disabled||this.disableRipple||this._tabNavBar.disableRipple||!!this.rippleConfig.disabled}constructor(t,i,n,a,o,s){super(),this._tabNavBar=t,this.elementRef=i,this._focusMonitor=o,this._destroyed=new N,this._isActive=!1,this.disabled=!1,this.disableRipple=!1,this.tabIndex=0,this.id=`mat-tab-link-${ja++}`,this.rippleConfig=n||{},this.tabIndex=parseInt(a)||0,s==="NoopAnimations"&&(this.rippleConfig.animation={enterDuration:0,exitDuration:0}),t._fitInkBarToContent.pipe(X(this._destroyed)).subscribe(r=>{this.fitInkBarToContent=r})}focus(){this.elementRef.nativeElement.focus()}ngAfterViewInit(){this._focusMonitor.monitor(this.elementRef)}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete(),super.ngOnDestroy(),this._focusMonitor.stopMonitoring(this.elementRef)}_handleFocus(){this._tabNavBar.focusIndex=this._tabNavBar._items.toArray().indexOf(this)}_handleKeydown(t){(t.keyCode===32||t.keyCode===13)&&(this.disabled?t.preventDefault():this._tabNavBar.tabPanel&&(t.keyCode===32&&t.preventDefault(),this.elementRef.nativeElement.click()))}_getAriaControls(){return this._tabNavBar.tabPanel?this._tabNavBar.tabPanel?.id:this.elementRef.nativeElement.getAttribute("aria-controls")}_getAriaSelected(){return this._tabNavBar.tabPanel?this.active?"true":"false":this.elementRef.nativeElement.getAttribute("aria-selected")}_getAriaCurrent(){return this.active&&!this._tabNavBar.tabPanel?"page":null}_getRole(){return this._tabNavBar.tabPanel?"tab":this.elementRef.nativeElement.getAttribute("role")}_getTabIndex(){return this._tabNavBar.tabPanel?this._isActive&&!this.disabled?0:-1:this.disabled?-1:this.tabIndex}static{this.\u0275fac=function(i){return new(i||e)(m($i),m(D),m(E2,8),G2("tabindex"),m(i2),m(h1,8))}}static{this.\u0275cmp=A({type:e,selectors:[["","mat-tab-link",""],["","matTabLink",""]],hostAttrs:[1,"mdc-tab","mat-mdc-tab-link","mat-mdc-focus-indicator"],hostVars:11,hostBindings:function(i,n){i&1&&_1("focus",function(){return n._handleFocus()})("keydown",function(o){return n._handleKeydown(o)}),i&2&&(J("aria-controls",n._getAriaControls())("aria-current",n._getAriaCurrent())("aria-disabled",n.disabled)("aria-selected",n._getAriaSelected())("id",n.id)("tabIndex",n._getTabIndex())("role",n._getRole()),K("mat-mdc-tab-disabled",n.disabled)("mdc-tab--active",n.active))},inputs:{active:[I.HasDecoratorInputTransform,"active","active",t1],disabled:[I.HasDecoratorInputTransform,"disabled","disabled",t1],disableRipple:[I.HasDecoratorInputTransform,"disableRipple","disableRipple",t1],tabIndex:[I.HasDecoratorInputTransform,"tabIndex","tabIndex",t=>t==null?0:A2(t)],id:"id"},exportAs:["matTabLink"],standalone:!0,features:[v1,f1,E],attrs:zm,ngContentSelectors:Gi,decls:5,vars:2,consts:[[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"]],template:function(i,n){i&1&&(n1(),O(0,"span",0)(1,"div",1),h(2,"span",2)(3,"span",3),B(4),p()()),i&2&&(_(),S("matRippleTrigger",n.elementRef.nativeElement)("matRippleDisabled",n.rippleDisabled))},dependencies:[P0],styles:['.mat-mdc-tab-link{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none;background:none;font-family:var(--mat-tab-header-label-text-font);font-size:var(--mat-tab-header-label-text-size);letter-spacing:var(--mat-tab-header-label-text-tracking);line-height:var(--mat-tab-header-label-text-line-height);font-weight:var(--mat-tab-header-label-text-weight)}.mat-mdc-tab-link .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color)}.mat-mdc-tab-link .mdc-tab-indicator__content--underline{border-top-width:var(--mdc-tab-indicator-active-indicator-height)}.mat-mdc-tab-link .mdc-tab-indicator__content--underline{border-radius:var(--mdc-tab-indicator-active-indicator-shape)}.mat-mdc-tab-link:not(.mdc-tab--stacked){height:var(--mdc-secondary-navigation-tab-container-height)}.mat-mdc-tab-link:not(:disabled).mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):hover.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):focus.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):active.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:disabled.mdc-tab--active .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):hover:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):focus:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:not(:disabled):active:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link:disabled:not(.mdc-tab--active) .mdc-tab__icon{fill:currentColor}.mat-mdc-tab-link.mdc-tab{flex-grow:0}.mat-mdc-tab-link:hover .mdc-tab__text-label{color:var(--mat-tab-header-inactive-hover-label-text-color)}.mat-mdc-tab-link:focus .mdc-tab__text-label{color:var(--mat-tab-header-inactive-focus-label-text-color)}.mat-mdc-tab-link.mdc-tab--active .mdc-tab__text-label{color:var(--mat-tab-header-active-label-text-color)}.mat-mdc-tab-link.mdc-tab--active .mdc-tab__ripple::before,.mat-mdc-tab-link.mdc-tab--active .mat-ripple-element{background-color:var(--mat-tab-header-active-ripple-color)}.mat-mdc-tab-link.mdc-tab--active:hover .mdc-tab__text-label{color:var(--mat-tab-header-active-hover-label-text-color)}.mat-mdc-tab-link.mdc-tab--active:hover .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-hover-indicator-color)}.mat-mdc-tab-link.mdc-tab--active:focus .mdc-tab__text-label{color:var(--mat-tab-header-active-focus-label-text-color)}.mat-mdc-tab-link.mdc-tab--active:focus .mdc-tab-indicator__content--underline{border-color:var(--mat-tab-header-active-focus-indicator-color)}.mat-mdc-tab-link.mat-mdc-tab-disabled{opacity:.4;pointer-events:none}.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__content{pointer-events:none}.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple::before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:var(--mat-tab-header-disabled-ripple-color)}.mat-mdc-tab-link .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-tab-header-inactive-label-text-color);display:inline-flex;align-items:center}.mat-mdc-tab-link .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab-link:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab-link.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab-link.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab-link .mat-ripple-element{opacity:.12;background-color:var(--mat-tab-header-inactive-ripple-color)}.mat-mdc-tab-header.mat-mdc-tab-nav-bar-stretch-tabs .mat-mdc-tab-link{flex-grow:1}.mat-mdc-tab-link::before{margin:5px}@media(max-width: 599px){.mat-mdc-tab-link{min-width:72px}}'],encapsulation:2,changeDetection:0})}}return e})(),Ua=(()=>{class e{constructor(){this.id=`mat-tab-nav-panel-${ja++}`}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275cmp=A({type:e,selectors:[["mat-tab-nav-panel"]],hostAttrs:["role","tabpanel",1,"mat-mdc-tab-nav-panel"],hostVars:2,hostBindings:function(i,n){i&2&&J("aria-labelledby",n._activeTabId)("id",n.id)},inputs:{id:"id"},exportAs:["matTabNavPanel"],standalone:!0,features:[E],ngContentSelectors:Gi,decls:1,vars:0,template:function(i,n){i&1&&(n1(),B(0))},encapsulation:2,changeDetection:0})}}return e})(),qa=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z,Z]})}}return e})();var Wa=["*"],km=["content"],Sm=[[["mat-drawer"]],[["mat-drawer-content"]],"*"],Nm=["mat-drawer","mat-drawer-content","*"];function Im(e,c){if(e&1){let t=N2();h(0,"div",1),_1("click",function(){N1(t);let n=g1();return I1(n._onBackdropClicked())}),p()}if(e&2){let t=g1();K("mat-drawer-shown",t._isShowingBackdrop())}}function Am(e,c){e&1&&(h(0,"mat-drawer-content"),B(1,2),p())}var Dm={transformDrawer:a0("transform",[Re("open, open-instant",Q3({transform:"none",visibility:"visible"})),Re("void",Q3({"box-shadow":"none",visibility:"hidden"})),B4("void => open-instant",V4("0ms")),B4("void <=> open, open-instant => void",V4("400ms cubic-bezier(0.25, 0.8, 0.25, 1)"))])};var Em=new x("MAT_DRAWER_DEFAULT_AUTOSIZE",{providedIn:"root",factory:Tm}),Ga=new x("MAT_DRAWER_CONTAINER");function Tm(){return!1}var Yi=(()=>{class e extends K0{constructor(t,i,n,a,o){super(n,a,o),this._changeDetectorRef=t,this._container=i}ngAfterContentInit(){this._container._contentMarginChanges.subscribe(()=>{this._changeDetectorRef.markForCheck()})}static{this.\u0275fac=function(i){return new(i||e)(m(L1),m(N4(()=>Xi)),m(D),m(wt),m(w))}}static{this.\u0275cmp=A({type:e,selectors:[["mat-drawer-content"]],hostAttrs:[1,"mat-drawer-content"],hostVars:4,hostBindings:function(i,n){i&2&&R4("margin-left",n._container._contentMargins.left,"px")("margin-right",n._container._contentMargins.right,"px")},standalone:!0,features:[U1([{provide:K0,useExisting:e}]),f1,E],ngContentSelectors:Wa,decls:1,vars:0,template:function(i,n){i&1&&(n1(),B(0))},encapsulation:2,changeDetection:0})}}return e})(),Qi=(()=>{class e{get position(){return this._position}set position(t){t=t==="end"?"end":"start",t!==this._position&&(this._isAttached&&this._updatePositionInParent(t),this._position=t,this.onPositionChanged.emit())}get mode(){return this._mode}set mode(t){this._mode=t,this._updateFocusTrapState(),this._modeChanged.next()}get disableClose(){return this._disableClose}set disableClose(t){this._disableClose=$1(t)}get autoFocus(){let t=this._autoFocus;return t??(this.mode==="side"?"dialog":"first-tabbable")}set autoFocus(t){(t==="true"||t==="false"||t==null)&&(t=$1(t)),this._autoFocus=t}get opened(){return this._opened}set opened(t){this.toggle($1(t))}constructor(t,i,n,a,o,s,r,l){this._elementRef=t,this._focusTrapFactory=i,this._focusMonitor=n,this._platform=a,this._ngZone=o,this._interactivityChecker=s,this._doc=r,this._container=l,this._focusTrap=null,this._elementFocusedBeforeDrawerWasOpened=null,this._enableAnimations=!1,this._position="start",this._mode="over",this._disableClose=!1,this._opened=!1,this._animationStarted=new N,this._animationEnd=new N,this._animationState="void",this.openedChange=new o1(!0),this._openedStream=this.openedChange.pipe(c1(d=>d),V(()=>{})),this.openedStart=this._animationStarted.pipe(c1(d=>d.fromState!==d.toState&&d.toState.indexOf("open")===0),S4(void 0)),this._closedStream=this.openedChange.pipe(c1(d=>!d),V(()=>{})),this.closedStart=this._animationStarted.pipe(c1(d=>d.fromState!==d.toState&&d.toState==="void"),S4(void 0)),this._destroyed=new N,this.onPositionChanged=new o1,this._modeChanged=new N,this.openedChange.subscribe(d=>{d?(this._doc&&(this._elementFocusedBeforeDrawerWasOpened=this._doc.activeElement),this._takeFocus()):this._isFocusWithinDrawer()&&this._restoreFocus(this._openedVia||"program")}),this._ngZone.runOutsideAngular(()=>{k2(this._elementRef.nativeElement,"keydown").pipe(c1(d=>d.keyCode===27&&!this.disableClose&&!z2(d)),X(this._destroyed)).subscribe(d=>this._ngZone.run(()=>{this.close(),d.stopPropagation(),d.preventDefault()}))}),this._animationEnd.pipe(q3((d,g)=>d.fromState===g.fromState&&d.toState===g.toState)).subscribe(d=>{let{fromState:g,toState:z}=d;(z.indexOf("open")===0&&g==="void"||z==="void"&&g.indexOf("open")===0)&&this.openedChange.emit(this._opened)})}_forceFocus(t,i){this._interactivityChecker.isFocusable(t)||(t.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{let n=()=>{t.removeEventListener("blur",n),t.removeEventListener("mousedown",n),t.removeAttribute("tabindex")};t.addEventListener("blur",n),t.addEventListener("mousedown",n)})),t.focus(i)}_focusByCssSelector(t,i){let n=this._elementRef.nativeElement.querySelector(t);n&&this._forceFocus(n,i)}_takeFocus(){if(!this._focusTrap)return;let t=this._elementRef.nativeElement;switch(this.autoFocus){case!1:case"dialog":return;case!0:case"first-tabbable":this._focusTrap.focusInitialElementWhenReady().then(i=>{!i&&typeof this._elementRef.nativeElement.focus=="function"&&t.focus()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this.autoFocus);break}}_restoreFocus(t){this.autoFocus!=="dialog"&&(this._elementFocusedBeforeDrawerWasOpened?this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened,t):this._elementRef.nativeElement.blur(),this._elementFocusedBeforeDrawerWasOpened=null)}_isFocusWithinDrawer(){let t=this._doc.activeElement;return!!t&&this._elementRef.nativeElement.contains(t)}ngAfterViewInit(){this._isAttached=!0,this._position==="end"&&this._updatePositionInParent("end"),this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._updateFocusTrapState())}ngAfterContentChecked(){this._platform.isBrowser&&(this._enableAnimations=!0)}ngOnDestroy(){this._focusTrap?.destroy(),this._anchor?.remove(),this._anchor=null,this._animationStarted.complete(),this._animationEnd.complete(),this._modeChanged.complete(),this._destroyed.next(),this._destroyed.complete()}open(t){return this.toggle(!0,t)}close(){return this.toggle(!1)}_closeViaBackdropClick(){return this._setOpen(!1,!0,"mouse")}toggle(t=!this.opened,i){t&&i&&(this._openedVia=i);let n=this._setOpen(t,!t&&this._isFocusWithinDrawer(),this._openedVia||"program");return t||(this._openedVia=null),n}_setOpen(t,i,n){return this._opened=t,t?this._animationState=this._enableAnimations?"open":"open-instant":(this._animationState="void",i&&this._restoreFocus(n)),this._updateFocusTrapState(),new Promise(a=>{this.openedChange.pipe(r1(1)).subscribe(o=>a(o?"open":"close"))})}_getWidth(){return this._elementRef.nativeElement&&this._elementRef.nativeElement.offsetWidth||0}_updateFocusTrapState(){this._focusTrap&&(this._focusTrap.enabled=!!this._container?.hasBackdrop)}_updatePositionInParent(t){if(!this._platform.isBrowser)return;let i=this._elementRef.nativeElement,n=i.parentNode;t==="end"?(this._anchor||(this._anchor=this._doc.createComment("mat-drawer-anchor"),n.insertBefore(this._anchor,i)),n.appendChild(i)):this._anchor&&this._anchor.parentNode.insertBefore(i,this._anchor)}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(d4),m(i2),m(Q),m(w),m(D3),m(T,8),m(Ga,8))}}static{this.\u0275cmp=A({type:e,selectors:[["mat-drawer"]],viewQuery:function(i,n){if(i&1&&x1(km,5),i&2){let a;W(a=G())&&(n._content=a.first)}},hostAttrs:["tabIndex","-1",1,"mat-drawer"],hostVars:12,hostBindings:function(i,n){i&1&&xc("@transform.start",function(o){return n._animationStarted.next(o)})("@transform.done",function(o){return n._animationEnd.next(o)}),i&2&&(Mc("@transform",n._animationState),J("align",null),K("mat-drawer-end",n.position==="end")("mat-drawer-over",n.mode==="over")("mat-drawer-push",n.mode==="push")("mat-drawer-side",n.mode==="side")("mat-drawer-opened",n.opened))},inputs:{position:"position",mode:"mode",disableClose:"disableClose",autoFocus:"autoFocus",opened:"opened"},outputs:{openedChange:"openedChange",_openedStream:"opened",openedStart:"openedStart",_closedStream:"closed",closedStart:"closedStart",onPositionChanged:"positionChanged"},exportAs:["matDrawer"],standalone:!0,features:[E],ngContentSelectors:Wa,decls:3,vars:0,consts:[["content",""],["cdkScrollable","",1,"mat-drawer-inner-container"]],template:function(i,n){i&1&&(n1(),h(0,"div",1,0),B(2),p())},dependencies:[K0],encapsulation:2,data:{animation:[Dm.transformDrawer]},changeDetection:0})}}return e})(),Xi=(()=>{class e{get start(){return this._start}get end(){return this._end}get autosize(){return this._autosize}set autosize(t){this._autosize=$1(t)}get hasBackdrop(){return this._drawerHasBackdrop(this._start)||this._drawerHasBackdrop(this._end)}set hasBackdrop(t){this._backdropOverride=t==null?null:$1(t)}get scrollable(){return this._userContent||this._content}constructor(t,i,n,a,o,s=!1,r){this._dir=t,this._element=i,this._ngZone=n,this._changeDetectorRef=a,this._animationMode=r,this._drawers=new $2,this.backdropClick=new o1,this._destroyed=new N,this._doCheckSubject=new N,this._contentMargins={left:null,right:null},this._contentMarginChanges=new N,t&&t.change.pipe(X(this._destroyed)).subscribe(()=>{this._validateDrawers(),this.updateContentMargins()}),o.change().pipe(X(this._destroyed)).subscribe(()=>this.updateContentMargins()),this._autosize=s}ngAfterContentInit(){this._allDrawers.changes.pipe(C1(this._allDrawers),X(this._destroyed)).subscribe(t=>{this._drawers.reset(t.filter(i=>!i._container||i._container===this)),this._drawers.notifyOnChanges()}),this._drawers.changes.pipe(C1(null)).subscribe(()=>{this._validateDrawers(),this._drawers.forEach(t=>{this._watchDrawerToggle(t),this._watchDrawerPosition(t),this._watchDrawerMode(t)}),(!this._drawers.length||this._isDrawerOpen(this._start)||this._isDrawerOpen(this._end))&&this.updateContentMargins(),this._changeDetectorRef.markForCheck()}),this._ngZone.runOutsideAngular(()=>{this._doCheckSubject.pipe(B2(10),X(this._destroyed)).subscribe(()=>this.updateContentMargins())})}ngOnDestroy(){this._contentMarginChanges.complete(),this._doCheckSubject.complete(),this._drawers.destroy(),this._destroyed.next(),this._destroyed.complete()}open(){this._drawers.forEach(t=>t.open())}close(){this._drawers.forEach(t=>t.close())}updateContentMargins(){let t=0,i=0;if(this._left&&this._left.opened){if(this._left.mode=="side")t+=this._left._getWidth();else if(this._left.mode=="push"){let n=this._left._getWidth();t+=n,i-=n}}if(this._right&&this._right.opened){if(this._right.mode=="side")i+=this._right._getWidth();else if(this._right.mode=="push"){let n=this._right._getWidth();i+=n,t-=n}}t=t||null,i=i||null,(t!==this._contentMargins.left||i!==this._contentMargins.right)&&(this._contentMargins={left:t,right:i},this._ngZone.run(()=>this._contentMarginChanges.next(this._contentMargins)))}ngDoCheck(){this._autosize&&this._isPushed()&&this._ngZone.runOutsideAngular(()=>this._doCheckSubject.next())}_watchDrawerToggle(t){t._animationStarted.pipe(c1(i=>i.fromState!==i.toState),X(this._drawers.changes)).subscribe(i=>{i.toState!=="open-instant"&&this._animationMode!=="NoopAnimations"&&this._element.nativeElement.classList.add("mat-drawer-transition"),this.updateContentMargins(),this._changeDetectorRef.markForCheck()}),t.mode!=="side"&&t.openedChange.pipe(X(this._drawers.changes)).subscribe(()=>this._setContainerClass(t.opened))}_watchDrawerPosition(t){t&&t.onPositionChanged.pipe(X(this._drawers.changes)).subscribe(()=>{this._ngZone.onMicrotaskEmpty.pipe(r1(1)).subscribe(()=>{this._validateDrawers()})})}_watchDrawerMode(t){t&&t._modeChanged.pipe(X(R1(this._drawers.changes,this._destroyed))).subscribe(()=>{this.updateContentMargins(),this._changeDetectorRef.markForCheck()})}_setContainerClass(t){let i=this._element.nativeElement.classList,n="mat-drawer-container-has-open";t?i.add(n):i.remove(n)}_validateDrawers(){this._start=this._end=null,this._drawers.forEach(t=>{t.position=="end"?(this._end!=null,this._end=t):(this._start!=null,this._start=t)}),this._right=this._left=null,this._dir&&this._dir.value==="rtl"?(this._left=this._end,this._right=this._start):(this._left=this._start,this._right=this._end)}_isPushed(){return this._isDrawerOpen(this._start)&&this._start.mode!="over"||this._isDrawerOpen(this._end)&&this._end.mode!="over"}_onBackdropClicked(){this.backdropClick.emit(),this._closeModalDrawersViaBackdrop()}_closeModalDrawersViaBackdrop(){[this._start,this._end].filter(t=>t&&!t.disableClose&&this._drawerHasBackdrop(t)).forEach(t=>t._closeViaBackdropClick())}_isShowingBackdrop(){return this._isDrawerOpen(this._start)&&this._drawerHasBackdrop(this._start)||this._isDrawerOpen(this._end)&&this._drawerHasBackdrop(this._end)}_isDrawerOpen(t){return t!=null&&t.opened}_drawerHasBackdrop(t){return this._backdropOverride==null?!!t&&t.mode!=="side":this._backdropOverride}static{this.\u0275fac=function(i){return new(i||e)(m(O1,8),m(D),m(w),m(L1),m(o3),m(Em),m(h1,8))}}static{this.\u0275cmp=A({type:e,selectors:[["mat-drawer-container"]],contentQueries:function(i,n,a){if(i&1&&(p1(a,Yi,5),p1(a,Qi,5)),i&2){let o;W(o=G())&&(n._content=o.first),W(o=G())&&(n._allDrawers=o)}},viewQuery:function(i,n){if(i&1&&x1(Yi,5),i&2){let a;W(a=G())&&(n._userContent=a.first)}},hostAttrs:[1,"mat-drawer-container"],hostVars:2,hostBindings:function(i,n){i&2&&K("mat-drawer-container-explicit-backdrop",n._backdropOverride)},inputs:{autosize:"autosize",hasBackdrop:"hasBackdrop"},outputs:{backdropClick:"backdropClick"},exportAs:["matDrawerContainer"],standalone:!0,features:[U1([{provide:Ga,useExisting:e}]),E],ngContentSelectors:Nm,decls:4,vars:2,consts:[[1,"mat-drawer-backdrop",3,"mat-drawer-shown"],[1,"mat-drawer-backdrop",3,"click"]],template:function(i,n){i&1&&(n1(Sm),Y(0,Im,1,2,"div",0),B(1),B(2,1),Y(3,Am,2,0,"mat-drawer-content")),i&2&&(S2(0,n.hasBackdrop?0:-1),_(3),S2(3,n._content?-1:3))},dependencies:[Yi],styles:['.mat-drawer-container{position:relative;z-index:1;color:var(--mat-sidenav-content-text-color);background-color:var(--mat-sidenav-content-background-color);box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-container-has-open{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible;background-color:var(--mat-sidenav-scrim-color)}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:background-color,visibility}.cdk-high-contrast-active .mat-drawer-backdrop{opacity:.5}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:400ms;transition-timing-function:cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;color:var(--mat-sidenav-container-text-color);box-shadow:var(--mat-sidenav-container-elevation-shadow);background-color:var(--mat-sidenav-container-background-color);border-top-right-radius:var(--mat-sidenav-container-shape);border-bottom-right-radius:var(--mat-sidenav-container-shape);width:var(--mat-sidenav-container-width);display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%, 0, 0)}.cdk-high-contrast-active .mat-drawer,.cdk-high-contrast-active [dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}.cdk-high-contrast-active [dir=rtl] .mat-drawer,.cdk-high-contrast-active .mat-drawer.mat-drawer-end{border-left:solid 1px currentColor;border-right:none}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%, 0, 0);border-top-left-radius:var(--mat-sidenav-container-shape);border-bottom-left-radius:var(--mat-sidenav-container-shape);border-top-right-radius:0;border-bottom-right-radius:0}[dir=rtl] .mat-drawer{border-top-left-radius:var(--mat-sidenav-container-shape);border-bottom-left-radius:var(--mat-sidenav-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;transform:translate3d(100%, 0, 0)}[dir=rtl] .mat-drawer.mat-drawer-end{border-top-right-radius:var(--mat-sidenav-container-shape);border-bottom-right-radius:var(--mat-sidenav-container-shape);border-top-left-radius:0;border-bottom-left-radius:0;left:0;right:auto;transform:translate3d(-100%, 0, 0)}.mat-drawer[style*="visibility: hidden"]{display:none}.mat-drawer-side{box-shadow:none;border-right-color:var(--mat-sidenav-container-divider-color);border-right-width:1px;border-right-style:solid}.mat-drawer-side.mat-drawer-end{border-left-color:var(--mat-sidenav-container-divider-color);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side{border-left-color:var(--mat-sidenav-container-divider-color);border-left-width:1px;border-left-style:solid;border-right:none}[dir=rtl] .mat-drawer-side.mat-drawer-end{border-right-color:var(--mat-sidenav-container-divider-color);border-right-width:1px;border-right-style:solid;border-left:none}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}'],encapsulation:2,changeDetection:0})}}return e})();var $a=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z,yt,yt,Z]})}}return e})();var Za=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[Z,Z]})}}return e})();var Fm=["*"],Om='@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-list-divider::after{content:"";display:block;border-bottom-width:1px;border-bottom-style:solid}}.mdc-list{margin:0;padding:8px 0;list-style-type:none}.mdc-list:focus{outline:none}.mdc-list-item__wrapper{display:block}.mdc-list-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;align-items:stretch;cursor:pointer}.mdc-list-item:focus{outline:none}.mdc-list-item.mdc-list-item--with-one-line{height:48px}.mdc-list-item.mdc-list-item--with-two-lines{height:64px}.mdc-list-item.mdc-list-item--with-three-lines{height:88px}.mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__start{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--with-three-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__end{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-two-lines .mdc-list-item__end{align-self:center;margin-top:0}.mdc-list-item.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:16px}.mdc-list-item.mdc-list-item--disabled,.mdc-list-item.mdc-list-item--non-interactive{cursor:auto}.mdc-list-item:not(.mdc-list-item--selected):focus::before,.mdc-list-item.mdc-ripple-upgraded--background-focused::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-list-item:not(.mdc-list-item--selected):focus::before,.mdc-list-item.mdc-ripple-upgraded--background-focused::before{border-color:CanvasText}}.mdc-list-item.mdc-list-item--selected::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:3px double rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-list-item.mdc-list-item--selected::before{border-color:CanvasText}}.mdc-list-item.mdc-list-item--selected:focus::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:3px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-list-item.mdc-list-item--selected:focus::before{border-color:CanvasText}}a.mdc-list-item{color:inherit;text-decoration:none}.mdc-list-item__start{fill:currentColor;flex-shrink:0;pointer-events:none}.mdc-list-item__end{flex-shrink:0;pointer-events:none}.mdc-list-item__content{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;align-self:center;flex:1;pointer-events:none}.mdc-list-item--with-two-lines .mdc-list-item__content,.mdc-list-item--with-three-lines .mdc-list-item__content{align-self:stretch}.mdc-list-item__content[for]{pointer-events:none}.mdc-list-item__primary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-list-item--with-two-lines .mdc-list-item__primary-text,.mdc-list-item--with-three-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before,.mdc-list-item--with-three-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after,.mdc-list-item--with-three-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item__secondary-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;display:block;margin-top:0;line-height:normal}.mdc-list-item__secondary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list-item--with-three-lines .mdc-list-item__secondary-text{white-space:normal;line-height:20px}.mdc-list-item--with-overline .mdc-list-item__secondary-text{white-space:nowrap;line-height:auto}.mdc-list-item__overline-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:24px;content:"";vertical-align:0}.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-three-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-three-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-three-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-avatar.mdc-list-item,.mdc-list-item--with-leading-avatar.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-avatar .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-avatar .mdc-list-item__start,.mdc-list-item--with-leading-avatar .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-avatar .mdc-list-item__start{border-radius:50%}.mdc-list-item--with-leading-icon.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-icon.mdc-list-item,.mdc-list-item--with-leading-icon.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-icon .mdc-list-item__start{margin-left:16px;margin-right:32px}[dir=rtl] .mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-leading-icon .mdc-list-item__start[dir=rtl]{margin-left:32px;margin-right:16px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-thumbnail.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-thumbnail.mdc-list-item,.mdc-list-item--with-leading-thumbnail.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-thumbnail .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-thumbnail .mdc-list-item__start,.mdc-list-item--with-leading-thumbnail .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-image.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-image.mdc-list-item,.mdc-list-item--with-leading-image.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-image .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-image .mdc-list-item__start,.mdc-list-item--with-leading-image .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-image.mdc-list-item--with-one-line{height:72px}.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-video.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-video.mdc-list-item,.mdc-list-item--with-leading-video.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-video .mdc-list-item__start{margin-left:0;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-video .mdc-list-item__start,.mdc-list-item--with-leading-video .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-video.mdc-list-item--with-one-line{height:72px}.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-checkbox.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-checkbox.mdc-list-item,.mdc-list-item--with-leading-checkbox.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-checkbox .mdc-list-item__start{margin-left:8px;margin-right:24px}[dir=rtl] .mdc-list-item--with-leading-checkbox .mdc-list-item__start,.mdc-list-item--with-leading-checkbox .mdc-list-item__start[dir=rtl]{margin-left:24px;margin-right:8px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-radio.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-radio.mdc-list-item,.mdc-list-item--with-leading-radio.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-radio .mdc-list-item__start{margin-left:8px;margin-right:24px}[dir=rtl] .mdc-list-item--with-leading-radio .mdc-list-item__start,.mdc-list-item--with-leading-radio .mdc-list-item__start[dir=rtl]{margin-left:24px;margin-right:8px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:8px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-radio.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-leading-switch.mdc-list-item{padding-left:0;padding-right:auto}[dir=rtl] .mdc-list-item--with-leading-switch.mdc-list-item,.mdc-list-item--with-leading-switch.mdc-list-item[dir=rtl]{padding-left:auto;padding-right:0}.mdc-list-item--with-leading-switch .mdc-list-item__start{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-leading-switch .mdc-list-item__start,.mdc-list-item--with-leading-switch .mdc-list-item__start[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__start{align-self:flex-start;margin-top:16px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__primary-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text{display:block;margin-top:0;line-height:normal;margin-bottom:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines .mdc-list-item__overline-text::after{display:inline-block;width:0;height:20px;content:"";vertical-align:-20px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines.mdc-list-item--with-trailing-meta .mdc-list-item__end::before{display:inline-block;width:0;height:32px;content:"";vertical-align:0}.mdc-list-item--with-leading-switch.mdc-list-item--with-one-line{height:56px}.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines{height:72px}.mdc-list-item--with-trailing-icon.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-icon.mdc-list-item,.mdc-list-item--with-trailing-icon.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-icon .mdc-list-item__end{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--with-trailing-icon .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end{align-self:flex-start;margin-top:0}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:0}.mdc-list-item--with-trailing-meta.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-meta.mdc-list-item,.mdc-list-item--with-trailing-meta.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-meta .mdc-list-item__end{margin-left:28px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-meta .mdc-list-item__end,.mdc-list-item--with-trailing-meta .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:28px}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-trailing-meta.mdc-list-item--with-two-lines .mdc-list-item__end::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-trailing-meta.mdc-list-item--with-three-lines .mdc-list-item__end::before{display:inline-block;width:0;height:28px;content:"";vertical-align:0}.mdc-list-item--with-trailing-meta .mdc-list-item__end{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mdc-typography-caption-font-family);font-size:var(--mdc-typography-caption-font-size);line-height:var(--mdc-typography-caption-line-height);font-weight:var(--mdc-typography-caption-font-weight);letter-spacing:var(--mdc-typography-caption-letter-spacing);text-decoration:var(--mdc-typography-caption-text-decoration);text-transform:var(--mdc-typography-caption-text-transform)}.mdc-list-item--with-trailing-checkbox.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-checkbox.mdc-list-item,.mdc-list-item--with-trailing-checkbox.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-checkbox .mdc-list-item__end{margin-left:24px;margin-right:8px}[dir=rtl] .mdc-list-item--with-trailing-checkbox .mdc-list-item__end,.mdc-list-item--with-trailing-checkbox .mdc-list-item__end[dir=rtl]{margin-left:8px;margin-right:24px}.mdc-list-item--with-trailing-checkbox.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:8px}.mdc-list-item--with-trailing-radio.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-radio.mdc-list-item,.mdc-list-item--with-trailing-radio.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-radio .mdc-list-item__end{margin-left:24px;margin-right:8px}[dir=rtl] .mdc-list-item--with-trailing-radio .mdc-list-item__end,.mdc-list-item--with-trailing-radio .mdc-list-item__end[dir=rtl]{margin-left:8px;margin-right:24px}.mdc-list-item--with-trailing-radio.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:8px}.mdc-list-item--with-trailing-switch.mdc-list-item{padding-left:auto;padding-right:0}[dir=rtl] .mdc-list-item--with-trailing-switch.mdc-list-item,.mdc-list-item--with-trailing-switch.mdc-list-item[dir=rtl]{padding-left:0;padding-right:auto}.mdc-list-item--with-trailing-switch .mdc-list-item__end{margin-left:16px;margin-right:16px}[dir=rtl] .mdc-list-item--with-trailing-switch .mdc-list-item__end,.mdc-list-item--with-trailing-switch .mdc-list-item__end[dir=rtl]{margin-left:16px;margin-right:16px}.mdc-list-item--with-trailing-switch.mdc-list-item--with-three-lines .mdc-list-item__end{align-self:flex-start;margin-top:16px}.mdc-list-item--with-overline.mdc-list-item--with-two-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-overline.mdc-list-item--with-two-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list-item--with-overline.mdc-list-item--with-three-lines .mdc-list-item__primary-text{display:block;margin-top:0;line-height:normal}.mdc-list-item--with-overline.mdc-list-item--with-three-lines .mdc-list-item__primary-text::before{display:inline-block;width:0;height:20px;content:"";vertical-align:0}.mdc-list-item{padding-left:16px;padding-right:16px}[dir=rtl] .mdc-list-item,.mdc-list-item[dir=rtl]{padding-left:16px;padding-right:16px}.mdc-list-group .mdc-deprecated-list{padding:0}.mdc-list-group__subheader{margin:calc((3rem - 1.5rem)/2) 16px}.mdc-list-divider{padding:0;background-clip:content-box}.mdc-list-divider.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset{padding-left:16px;padding-right:auto}[dir=rtl] .mdc-list-divider.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset,[dir=rtl] .mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset,.mdc-list-divider.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-text.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-icon.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-image.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-switch.mdc-list-divider--with-leading-inset[dir=rtl],.mdc-list-divider--with-leading-radio.mdc-list-divider--with-leading-inset[dir=rtl]{padding-left:auto;padding-right:16px}.mdc-list-divider.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset,.mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset{padding-left:auto;padding-right:16px}[dir=rtl] .mdc-list-divider.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset,[dir=rtl] .mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset,.mdc-list-divider.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-text.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-icon.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-image.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-thumbnail.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-avatar.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-checkbox.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-switch.mdc-list-divider--with-trailing-inset[dir=rtl],.mdc-list-divider--with-leading-radio.mdc-list-divider--with-trailing-inset[dir=rtl]{padding-left:16px;padding-right:auto}.mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset{padding-left:0px;padding-right:auto}[dir=rtl] .mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset,.mdc-list-divider--with-leading-video.mdc-list-divider--with-leading-inset[dir=rtl]{padding-left:auto;padding-right:0px}[dir=rtl] .mdc-list-divider,.mdc-list-divider[dir=rtl]{padding:0}.mdc-list-item{background-color:var(--mdc-list-list-item-container-color)}.mdc-list-item.mdc-list-item--selected{background-color:var(--mdc-list-list-item-selected-container-color)}.mdc-list-item--with-one-line{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-one-line.mdc-list-item--with-leading-avatar,.mdc-list-item--with-one-line.mdc-list-item--with-leading-icon,.mdc-list-item--with-one-line.mdc-list-item--with-leading-thumbnail,.mdc-list-item--with-one-line.mdc-list-item--with-leading-checkbox,.mdc-list-item--with-one-line.mdc-list-item--with-leading-radio,.mdc-list-item--with-one-line.mdc-list-item--with-leading-switch{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-one-line.mdc-list-item--with-leading-image,.mdc-list-item--with-one-line.mdc-list-item--with-leading-video{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-two-lines{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-two-lines.mdc-list-item--with-leading-avatar,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-icon,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-thumbnail,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-checkbox,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-radio,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-switch,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-image,.mdc-list-item--with-two-lines.mdc-list-item--with-leading-video{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item--with-three-lines{border-radius:var(--mdc-list-list-item-container-shape)}.mdc-list-item.mdc-list-item--with-one-line{height:var(--mdc-list-list-item-one-line-container-height)}.mdc-list-item.mdc-list-item--with-two-lines{height:var(--mdc-list-list-item-two-line-container-height)}.mdc-list-item.mdc-list-item--with-three-lines{height:var(--mdc-list-list-item-three-line-container-height)}.mdc-list-item__primary-text{color:var(--mdc-list-list-item-label-text-color)}.mdc-list-item__primary-text{font-family:var(--mdc-list-list-item-label-text-font);line-height:var(--mdc-list-list-item-label-text-line-height);font-size:var(--mdc-list-list-item-label-text-size);font-weight:var(--mdc-list-list-item-label-text-weight);letter-spacing:var(--mdc-list-list-item-label-text-tracking)}.mdc-list-item__secondary-text{color:var(--mdc-list-list-item-supporting-text-color)}.mdc-list-item__secondary-text{font-family:var(--mdc-list-list-item-supporting-text-font);line-height:var(--mdc-list-list-item-supporting-text-line-height);font-size:var(--mdc-list-list-item-supporting-text-size);font-weight:var(--mdc-list-list-item-supporting-text-weight);letter-spacing:var(--mdc-list-list-item-supporting-text-tracking)}.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-list-list-item-leading-icon-color)}.mdc-list-item--with-leading-icon .mdc-list-item__start{width:var(--mdc-list-list-item-leading-icon-size);height:var(--mdc-list-list-item-leading-icon-size)}.mdc-list-item--with-leading-icon .mdc-list-item__start>i{font-size:var(--mdc-list-list-item-leading-icon-size)}.mdc-list-item--with-leading-icon .mdc-list-item__start .mdc-list-item__icon{font-size:var(--mdc-list-list-item-leading-icon-size);width:var(--mdc-list-list-item-leading-icon-size);height:var(--mdc-list-list-item-leading-icon-size)}.mdc-list-item--with-leading-icon .mdc-list-item__start .mdc-list-item__icon,.mdc-list-item--with-leading-icon .mdc-list-item__start .mdc-list-item__icon>.materialdesignWizIconSvgsSvgIcon{display:block}.mdc-list-item--with-leading-avatar .mdc-list-item__start{width:var(--mdc-list-list-item-leading-avatar-size);height:var(--mdc-list-list-item-leading-avatar-size)}.mdc-list-item.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-list-list-item-trailing-supporting-text-color)}.mdc-list-item--with-trailing-meta .mdc-list-item__end{font-family:var(--mdc-list-list-item-trailing-supporting-text-font);line-height:var(--mdc-list-list-item-trailing-supporting-text-line-height);font-size:var(--mdc-list-list-item-trailing-supporting-text-size);font-weight:var(--mdc-list-list-item-trailing-supporting-text-weight);letter-spacing:var(--mdc-list-list-item-trailing-supporting-text-tracking)}.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-list-list-item-trailing-icon-color)}.mdc-list-item--with-trailing-icon .mdc-list-item__end{width:var(--mdc-list-list-item-trailing-icon-size);height:var(--mdc-list-list-item-trailing-icon-size)}.mdc-list-item--with-trailing-icon .mdc-list-item__end>i{font-size:var(--mdc-list-list-item-trailing-icon-size)}.mdc-list-item--with-trailing-icon .mdc-list-item__end .mdc-list-item__icon{font-size:var(--mdc-list-list-item-trailing-icon-size);width:var(--mdc-list-list-item-trailing-icon-size);height:var(--mdc-list-list-item-trailing-icon-size)}.mdc-list-item--with-trailing-icon .mdc-list-item__end .mdc-list-item__icon,.mdc-list-item--with-trailing-icon .mdc-list-item__end .mdc-list-item__icon>.materialdesignWizIconSvgsSvgIcon{display:block}.mdc-list-item--selected.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-list-list-item-selected-trailing-icon-color)}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text{opacity:var(--mdc-list-list-item-disabled-label-text-opacity)}.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-list-list-item-disabled-leading-icon-color)}.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start{opacity:var(--mdc-list-list-item-disabled-leading-icon-opacity)}.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-list-list-item-disabled-trailing-icon-color)}.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end{opacity:var(--mdc-list-list-item-disabled-trailing-icon-opacity)}.mdc-list-item:hover .mdc-list-item__primary-text{color:var(--mdc-list-list-item-hover-label-text-color)}.mdc-list-item--with-leading-icon:hover .mdc-list-item__start{color:var(--mdc-list-list-item-hover-leading-icon-color)}.mdc-list-item--with-trailing-icon:hover .mdc-list-item__end{color:var(--mdc-list-list-item-hover-trailing-icon-color)}.mdc-list-item:focus .mdc-list-item__primary-text{color:var(--mdc-list-list-item-focus-label-text-color)}.mdc-list-item.mdc-list-item--disabled .mdc-list-item__primary-text{color:var(--mdc-list-list-item-disabled-label-text-color)}.mdc-list-item:hover::before{background-color:var(--mdc-list-list-item-hover-state-layer-color);opacity:var(--mdc-list-list-item-hover-state-layer-opacity)}.mdc-list-item.mdc-list-item--disabled::before{background-color:var(--mdc-list-list-item-disabled-state-layer-color);opacity:var(--mdc-list-list-item-disabled-state-layer-opacity)}.mdc-list-item:focus::before{background-color:var(--mdc-list-list-item-focus-state-layer-color);opacity:var(--mdc-list-list-item-focus-state-layer-opacity)}.mdc-list-item--disabled .mdc-radio,.mdc-list-item--disabled .mdc-checkbox{opacity:var(--mdc-list-list-item-disabled-label-text-opacity)}.mdc-list-item--with-leading-avatar .mat-mdc-list-item-avatar{border-radius:var(--mdc-list-list-item-leading-avatar-shape);background-color:var(--mdc-list-list-item-leading-avatar-color)}.mat-mdc-list-item-icon{font-size:var(--mdc-list-list-item-leading-icon-size)}.cdk-high-contrast-active a.mdc-list-item--activated::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}.cdk-high-contrast-active a.mdc-list-item--activated [dir=rtl]::after{right:auto;left:16px}.mat-mdc-list-base{display:block}.mat-mdc-list-base .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item__end,.mat-mdc-list-base .mdc-list-item__content{pointer-events:auto}.mat-mdc-list-item,.mat-mdc-list-option{width:100%;box-sizing:border-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-list-item:not(.mat-mdc-list-item-interactive),.mat-mdc-list-option:not(.mat-mdc-list-item-interactive){cursor:default}.mat-mdc-list-item .mat-divider-inset,.mat-mdc-list-option .mat-divider-inset{position:absolute;left:0;right:0;bottom:0}.mat-mdc-list-item .mat-mdc-list-item-avatar~.mat-divider-inset,.mat-mdc-list-option .mat-mdc-list-item-avatar~.mat-divider-inset{margin-left:72px}[dir=rtl] .mat-mdc-list-item .mat-mdc-list-item-avatar~.mat-divider-inset,[dir=rtl] .mat-mdc-list-option .mat-mdc-list-item-avatar~.mat-divider-inset{margin-right:72px}.mat-mdc-list-item-interactive::before{top:0;left:0;right:0;bottom:0;position:absolute;content:"";opacity:0;pointer-events:none}.mat-mdc-list-item>.mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-list-item:focus>.mat-mdc-focus-indicator::before{content:""}.mat-mdc-list-item.mdc-list-item--with-three-lines .mat-mdc-list-item-line.mdc-list-item__secondary-text{white-space:nowrap;line-height:normal}.mat-mdc-list-item.mdc-list-item--with-three-lines .mat-mdc-list-item-unscoped-content.mdc-list-item__secondary-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}mat-action-list button{background:none;color:inherit;border:none;font:inherit;outline:inherit;-webkit-tap-highlight-color:rgba(0,0,0,0);text-align:start}mat-action-list button::-moz-focus-inner{border:0}.mdc-list-item--with-leading-icon .mdc-list-item__start{margin-inline-start:var(--mat-list-list-item-leading-icon-start-space);margin-inline-end:var(--mat-list-list-item-leading-icon-end-space)}.mat-mdc-nav-list .mat-mdc-list-item{border-radius:var(--mat-list-active-indicator-shape);--mat-mdc-focus-indicator-border-radius:var(--mat-list-active-indicator-shape)}.mat-mdc-nav-list .mat-mdc-list-item.mdc-list-item--activated{background-color:var(--mat-list-active-indicator-color)}',Pm=["unscopedContent"],Hm=["text"],Vm=[[["","matListItemAvatar",""],["","matListItemIcon",""]],[["","matListItemTitle",""]],[["","matListItemLine",""]],"*",[["","matListItemMeta",""]],[["mat-divider"]]],Bm=["[matListItemAvatar],[matListItemIcon]","[matListItemTitle]","[matListItemLine]","*","[matListItemMeta]","mat-divider"];var jm=new x("ListOption"),Um=(()=>{class e{constructor(t){this._elementRef=t}static{this.\u0275fac=function(i){return new(i||e)(m(D))}}static{this.\u0275dir=H({type:e,selectors:[["","matListItemTitle",""]],hostAttrs:[1,"mat-mdc-list-item-title","mdc-list-item__primary-text"],standalone:!0})}}return e})(),qm=(()=>{class e{constructor(t){this._elementRef=t}static{this.\u0275fac=function(i){return new(i||e)(m(D))}}static{this.\u0275dir=H({type:e,selectors:[["","matListItemLine",""]],hostAttrs:[1,"mat-mdc-list-item-line","mdc-list-item__secondary-text"],standalone:!0})}}return e})(),Wm=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,selectors:[["","matListItemMeta",""]],hostAttrs:[1,"mat-mdc-list-item-meta","mdc-list-item__end"],standalone:!0})}}return e})(),Ya=(()=>{class e{constructor(t){this._listOption=t}_isAlignedAtStart(){return!this._listOption||this._listOption?._getTogglePosition()==="after"}static{this.\u0275fac=function(i){return new(i||e)(m(jm,8))}}static{this.\u0275dir=H({type:e,hostVars:4,hostBindings:function(i,n){i&2&&K("mdc-list-item__start",n._isAlignedAtStart())("mdc-list-item__end",!n._isAlignedAtStart())},standalone:!0})}}return e})(),Gm=(()=>{class e extends Ya{static{this.\u0275fac=(()=>{let t;return function(n){return(t||(t=V1(e)))(n||e)}})()}static{this.\u0275dir=H({type:e,selectors:[["","matListItemAvatar",""]],hostAttrs:[1,"mat-mdc-list-item-avatar"],standalone:!0,features:[f1]})}}return e})(),$m=(()=>{class e extends Ya{static{this.\u0275fac=(()=>{let t;return function(n){return(t||(t=V1(e)))(n||e)}})()}static{this.\u0275dir=H({type:e,selectors:[["","matListItemIcon",""]],hostAttrs:[1,"mat-mdc-list-item-icon"],standalone:!0,features:[f1]})}}return e})(),Zm=new x("MAT_LIST_CONFIG"),Me=(()=>{class e{constructor(){this._isNonInteractive=!0,this._disableRipple=!1,this._disabled=!1,this._defaultOptions=v(Zm,{optional:!0})}get disableRipple(){return this._disableRipple}set disableRipple(t){this._disableRipple=$1(t)}get disabled(){return this._disabled}set disabled(t){this._disabled=$1(t)}static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275dir=H({type:e,hostVars:1,hostBindings:function(i,n){i&2&&J("aria-disabled",n.disabled)},inputs:{disableRipple:"disableRipple",disabled:"disabled"},standalone:!0})}}return e})(),Ym=(()=>{class e{set lines(t){this._explicitLines=C2(t,null),this._updateItemLines(!1)}get disableRipple(){return this.disabled||this._disableRipple||this._noopAnimations||!!this._listBase?.disableRipple}set disableRipple(t){this._disableRipple=$1(t)}get disabled(){return this._disabled||!!this._listBase?.disabled}set disabled(t){this._disabled=$1(t)}get rippleDisabled(){return this.disableRipple||!!this.rippleConfig.disabled}constructor(t,i,n,a,o,s){this._elementRef=t,this._ngZone=i,this._listBase=n,this._platform=a,this._explicitLines=null,this._disableRipple=!1,this._disabled=!1,this._subscriptions=new P1,this._rippleRenderer=null,this._hasUnscopedTextContent=!1,this.rippleConfig=o||{},this._hostElement=this._elementRef.nativeElement,this._isButtonElement=this._hostElement.nodeName.toLowerCase()==="button",this._noopAnimations=s==="NoopAnimations",n&&!n._isNonInteractive&&this._initInteractiveListItem(),this._isButtonElement&&!this._hostElement.hasAttribute("type")&&this._hostElement.setAttribute("type","button")}ngAfterViewInit(){this._monitorProjectedLinesAndTitle(),this._updateItemLines(!0)}ngOnDestroy(){this._subscriptions.unsubscribe(),this._rippleRenderer!==null&&this._rippleRenderer._removeTriggerEvents()}_hasIconOrAvatar(){return!!(this._avatars.length||this._icons.length)}_initInteractiveListItem(){this._hostElement.classList.add("mat-mdc-list-item-interactive"),this._rippleRenderer=new Mt(this,this._ngZone,this._hostElement,this._platform),this._rippleRenderer.setupTriggerEvents(this._hostElement)}_monitorProjectedLinesAndTitle(){this._ngZone.runOutsideAngular(()=>{this._subscriptions.add(R1(this._lines.changes,this._titles.changes).subscribe(()=>this._updateItemLines(!1)))})}_updateItemLines(t){if(!this._lines||!this._titles||!this._unscopedContent)return;t&&this._checkDomForUnscopedTextContent();let i=this._explicitLines??this._inferLinesFromContent(),n=this._unscopedContent.nativeElement;if(this._hostElement.classList.toggle("mat-mdc-list-item-single-line",i<=1),this._hostElement.classList.toggle("mdc-list-item--with-one-line",i<=1),this._hostElement.classList.toggle("mdc-list-item--with-two-lines",i===2),this._hostElement.classList.toggle("mdc-list-item--with-three-lines",i===3),this._hasUnscopedTextContent){let a=this._titles.length===0&&i===1;n.classList.toggle("mdc-list-item__primary-text",a),n.classList.toggle("mdc-list-item__secondary-text",!a)}else n.classList.remove("mdc-list-item__primary-text"),n.classList.remove("mdc-list-item__secondary-text")}_inferLinesFromContent(){let t=this._titles.length+this._lines.length;return this._hasUnscopedTextContent&&(t+=1),t}_checkDomForUnscopedTextContent(){this._hasUnscopedTextContent=Array.from(this._unscopedContent.nativeElement.childNodes).filter(t=>t.nodeType!==t.COMMENT_NODE).some(t=>!!(t.textContent&&t.textContent.trim()))}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(w),m(Me,8),m(Q),m(E2,8),m(h1,8))}}static{this.\u0275dir=H({type:e,contentQueries:function(i,n,a){if(i&1&&(p1(a,Gm,4),p1(a,$m,4)),i&2){let o;W(o=G())&&(n._avatars=o),W(o=G())&&(n._icons=o)}},hostVars:4,hostBindings:function(i,n){i&2&&(J("aria-disabled",n.disabled)("disabled",n._isButtonElement&&n.disabled||null),K("mdc-list-item--disabled",n.disabled))},inputs:{lines:"lines",disableRipple:"disableRipple",disabled:"disabled"},standalone:!0})}}return e})();var Qa=(()=>{class e extends Ym{get activated(){return this._activated}set activated(t){this._activated=$1(t)}constructor(t,i,n,a,o,s){super(t,i,n,a,o,s),this._activated=!1}_getAriaCurrent(){return this._hostElement.nodeName==="A"&&this._activated?"page":null}static{this.\u0275fac=function(i){return new(i||e)(m(D),m(w),m(Me,8),m(Q),m(E2,8),m(h1,8))}}static{this.\u0275cmp=A({type:e,selectors:[["mat-list-item"],["a","mat-list-item",""],["button","mat-list-item",""]],contentQueries:function(i,n,a){if(i&1&&(p1(a,qm,5),p1(a,Um,5),p1(a,Wm,5)),i&2){let o;W(o=G())&&(n._lines=o),W(o=G())&&(n._titles=o),W(o=G())&&(n._meta=o)}},viewQuery:function(i,n){if(i&1&&(x1(Pm,5),x1(Hm,5)),i&2){let a;W(a=G())&&(n._unscopedContent=a.first),W(a=G())&&(n._itemText=a.first)}},hostAttrs:[1,"mat-mdc-list-item","mdc-list-item"],hostVars:11,hostBindings:function(i,n){i&2&&(J("aria-current",n._getAriaCurrent()),K("mdc-list-item--activated",n.activated)("mdc-list-item--with-leading-avatar",n._avatars.length!==0)("mdc-list-item--with-leading-icon",n._icons.length!==0)("mdc-list-item--with-trailing-meta",n._meta.length!==0)("_mat-animation-noopable",n._noopAnimations))},inputs:{activated:"activated"},exportAs:["matListItem"],standalone:!0,features:[f1,E],ngContentSelectors:Bm,decls:10,vars:0,consts:[["unscopedContent",""],[1,"mdc-list-item__content"],[1,"mat-mdc-list-item-unscoped-content",3,"cdkObserveContent"],[1,"mat-mdc-focus-indicator"]],template:function(i,n){if(i&1){let a=N2();n1(Vm),B(0),h(1,"span",1),B(2,1),B(3,2),h(4,"span",2,0),_1("cdkObserveContent",function(){return N1(a),I1(n._updateItemLines(!0))}),B(6,3),p()(),B(7,4),B(8,5),O(9,"div",3)}},dependencies:[E0],encapsulation:2,changeDetection:0})}}return e})();var Xa=(()=>{class e extends Me{constructor(){super(...arguments),this._isNonInteractive=!1}static{this.\u0275fac=(()=>{let t;return function(n){return(t||(t=V1(e)))(n||e)}})()}static{this.\u0275cmp=A({type:e,selectors:[["mat-nav-list"]],hostAttrs:["role","navigation",1,"mat-mdc-nav-list","mat-mdc-list-base","mdc-list"],exportAs:["matNavList"],standalone:!0,features:[U1([{provide:Me,useExisting:e}]),f1,E],ngContentSelectors:Fm,decls:1,vars:0,template:function(i,n){i&1&&(n1(),B(0))},styles:[Om],encapsulation:2,changeDetection:0})}}return e})();var Ka=(()=>{class e{static{this.\u0275fac=function(i){return new(i||e)}}static{this.\u0275mod=F({type:e})}static{this.\u0275inj=R({imports:[T0,E1,Z,h4,A5,Za]})}}return e})();var Ja=a0("routeAnimations",[B4("* <=> *",[Q3({opacity:0,transform:"translateY(20px)"}),V4("500ms ease-in",Q3({opacity:1,transform:"translateY(0)"}))])]);var t7=e=>({exact:e});function Xm(e,c){e&1&&(h(0,"mat-icon"),b(1,"menu"),p())}function Km(e,c){e&1&&(h(0,"mat-icon"),b(1,"close"),p())}function Jm(e,c){if(e&1&&(h(0,"a",43,2),b(2),p()),e&2){let t=c.$implicit,i=I2(1);S("routerLink",t.link)("active",i.isActive)("routerLinkActiveOptions",Kt(4,t7,t.exact)),_(2),D1(" ",t.name," ")}}function th(e,c){if(e&1){let t=N2();h(0,"a",44,2),_1("click",function(){N1(t),g1();let n=I2(15);return I1(n.close())}),b(2),p()}if(e&2){let t=c.$implicit,i=I2(1);S("routerLink",t.link)("activated",i.isActive)("routerLinkActiveOptions",Kt(5,t7,t.exact)),_(2),F4("",t.emoji," ",t.name,"")}}var e7=(()=>{class e{constructor(t){this.contexts=t,this.links=[{name:"\u9996\u9801",link:"/",exact:!0,emoji:"\u{1F3E0}"},{name:"\u8B1B\u8005",link:"/speakers",exact:!1,emoji:"\u{1F3A4}"},{name:"\u8B70\u7A0B",link:"/schedule",exact:!1,emoji:"\u{1F3A4}"}],this.highlightLink={name:"\u514D\u8CBB\u5831\u540D",link:"https://gdg.community.dev/events/details/google-gdg-taipei-presents-devfest-taipei-2024/",exact:!1,emoji:"\u{1F4DD}"}}getRouteAnimationData(){return this.contexts.getContext("primary")?.route?.snapshot?.data?.animations}static{this.\u0275fac=function(i){return new(i||e)(m(k3))}}static{this.\u0275cmp=A({type:e,selectors:[["app-root"]],standalone:!0,features:[E],decls:88,vars:11,consts:[["tabPanel",""],["drawer",""],["rla","routerLinkActive"],["mat-icon-button","","aria-label","\u6253\u958B\u5074\u908A\u5C0E\u6B04\u5217",1,"menu-button","show-when-screen-smaller-than-900px",3,"click"],[4,"ngIf"],["routerLink","/",1,"logo-button"],["src","./assets/df24-logo.svg","alt","GDG DevFest 2024"],[1,"toolbar-spacer"],["mat-tab-nav-bar","",1,"hide-when-screen-smaller-than-900px",3,"tabPanel"],["mat-tab-link","","routerLinkActive","mat-tab-link-active",3,"routerLink","active","routerLinkActiveOptions",4,"ngFor","ngForOf"],["mat-tab-link","",1,"highlight-tab-link",3,"href"],["hasBackdrop","true"],["mode","over","autoFocus","false"],["mat-list-item","","routerLinkActive","mat-tab-link-active","class","drawer-flat-button",3,"routerLink","activated","routerLinkActiveOptions","click",4,"ngFor","ngForOf"],["mat-list-item","",1,"highlight-list-item",3,"href"],[1,"footer-container","max-width-constraint"],["src","./assets/df24-logo-year.svg","alt","DevFest2024 Logo",2,"height","30px"],[1,"footer-box-title"],[1,"footer-button-group"],["href","https://www.meetup.com/GDGTaipei/","target","_blank","rel","noopener",1,"footer-button"],["viewBox","0 -2.5 29 29","xmlns","http://www.w3.org/2000/svg"],["d","m28.595 23.062c-.38.374-.86.649-1.395.781l-.021.004c-.408.08-.878.126-1.358.126-1.172 0-2.281-.274-3.264-.762l.043.019c-4.365-1.92-3.401-6.785-1.486-10.139.575-1.007 1.142-2.022 1.713-3.04.449-.8 1.421-2.155 1.04-3.136-.4-1.029-1.467-1.035-2.168-.168-.634.868-1.206 1.855-1.669 2.901l-.04.102c-.507 1.058-3.04 6.618-3.04 6.618-.553 1.133-1.26 2.101-2.107 2.925l-.002.002c-.375.302-.857.484-1.381.484-.441 0-.851-.129-1.196-.351l.009.005c-.388-.278-.638-.727-.638-1.234 0-.144.02-.284.058-.416l-.003.011c.527-3.022 5.111-10.054 1.95-10.55-1.212-.19-1.541 1.158-1.914 2.019-.618 1.422-1.089 2.902-1.749 4.307-.695 1.434-1.293 3.111-1.706 4.858l-.034.169c-.32 1.386-.731 3.151-2.308 3.573-4.32 1.154-5.63-1.696-5.63-1.697-.705-2.24-.037-4.26.64-6.417.525-1.666.838-3.385 1.502-5.006 1.185-2.89 2.366-8.922 6.64-8.536 1.224.188 2.321.61 3.287 1.221l-.035-.021c.856.499 1.508.766 2.505.228.97-.522 1.414-1.495 2.57-1.829 1.238-.358 2.053.171 2.979.917 1.298 1.04 1.44.572 2.511.298.553-.155 1.189-.244 1.846-.244.37 0 .733.028 1.087.083l-.04-.005c5.01.858 1.819 7.254.624 9.824-.778 1.672-4.49 8.396-1.2 9.299.992.272 2.271.148 3.098.86.838.722.755 1.404.282 1.915z"],["href","https://www.facebook.com/GDG.Taipei/","aria-label","Facebook","target","_blank","rel","noopener",1,"footer-button"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 0 24 24"],["d","M22.675 0h-21.35c-.732 0-1.325.593-1.325 1.325v21.351c0 .731.593 1.324 1.325 1.324h11.495v-9.294h-3.128v-3.622h3.128v-2.671c0-3.1 1.893-4.788 4.659-4.788 1.325 0 2.463.099 2.795.143v3.24l-1.918.001c-1.504 0-1.795.715-1.795 1.763v2.313h3.587l-.467 3.622h-3.12v9.293h6.116c.73 0 1.323-.593 1.323-1.325v-21.35c0-.732-.593-1.325-1.325-1.325z"],["href","https://x.com/taipei_gtug/","aria-label","Twitter","target","_blank","rel","noopener",1,"footer-button"],["xmlns","http://www.w3.org/2000/svg",0,"xml","space","preserve","viewBox","0 0 248 204"],["d","M221.95 51.29c.15 2.17.15 4.34.15 6.53 0 66.73-50.8 143.69-143.69 143.69v-.04c-27.44.04-54.31-7.82-77.41-22.64 3.99.48 8 .72 12.02.73 22.74.02 44.83-7.61 62.72-21.66-21.61-.41-40.56-14.5-47.18-35.07 7.57 1.46 15.37 1.16 22.8-.87-23.56-4.76-40.51-25.46-40.51-49.5v-.64c7.02 3.91 14.88 6.08 22.92 6.32C11.58 63.31 4.74 33.79 18.14 10.71c25.64 31.55 63.47 50.73 104.08 52.76-4.07-17.54 1.49-35.92 14.61-48.25 20.34-19.12 52.33-18.14 71.45 2.19 11.31-2.23 22.15-6.38 32.07-12.26-3.77 11.69-11.66 21.62-22.2 27.93 10.01-1.18 19.79-3.86 29-7.95-6.78 10.16-15.32 19.01-25.2 26.16z"],["href","https://www.youtube.com/GDGTaipei","aria-label","Youtube","target","_blank","rel","noopener",1,"footer-button"],["version","1.1","id","Layer_1","xmlns","http://www.w3.org/2000/svg",0,"xmlns","xlink","http://www.w3.org/1999/xlink","viewBox","0 0 461.001 461.001",0,"xml","space","preserve"],["d",`M365.257,67.393H95.744C42.866,67.393,0,110.259,0,163.137v134.728 + c0,52.878,42.866,95.744,95.744,95.744h269.513c52.878,0,95.744-42.866,95.744-95.744V163.137 + C461.001,110.259,418.135,67.393,365.257,67.393z M300.506,237.056l-126.06,60.123c-3.359,1.602-7.239-0.847-7.239-4.568V168.607 + c0-3.774,3.982-6.22,7.348-4.514l126.06,63.881C304.363,229.873,304.298,235.248,300.506,237.056z`],[1,"footer-box-group"],[1,"footer-box"],["href","http://www.taipei-gtug.org/"],["href","https://developers.google.com/"],["routerLink","/team"],["href","#"],["href","https://devfest-taipei-2018.firebaseapp.com/"],["href","https://devfest-tw.appspot.com/taipei"],[1,"footer-box-last"],["src","./assets/gdg-taipei.svg","alt","GDG Taipei",2,"height","25px"],[1,"footer-box-last-spacer"],["routerLink","/cod"],["mat-tab-link","","routerLinkActive","mat-tab-link-active",3,"routerLink","active","routerLinkActiveOptions"],["mat-list-item","","routerLinkActive","mat-tab-link-active",1,"drawer-flat-button",3,"click","routerLink","activated","routerLinkActiveOptions"]],template:function(i,n){if(i&1){let a=N2();h(0,"mat-toolbar")(1,"button",3),_1("click",function(){N1(a);let s=I2(15);return I1(s.toggle())}),Y(2,Xm,2,0,"mat-icon",4)(3,Km,2,0,"mat-icon",4),p(),h(4,"a",5),O(5,"img",6),p(),O(6,"span",7),h(7,"nav",8),Y(8,Jm,3,6,"a",9),h(9,"a",10),b(10),p()()(),h(11,"mat-tab-nav-panel",null,0)(13,"mat-drawer-container",11)(14,"mat-drawer",12,1)(16,"mat-nav-list"),Y(17,th,3,7,"a",13),h(18,"a",14),b(19),p()()(),h(20,"main"),O(21,"router-outlet"),p(),h(22,"footer")(23,"div",15),O(24,"img",16),h(25,"p",17),b(26,"\u8DDF\u96A8\u6211\u5011"),p(),h(27,"div",18)(28,"a",19),u3(),h(29,"svg",20),O(30,"path",21),p()(),G3(),h(31,"a",22),u3(),h(32,"svg",23),O(33,"path",24),p()(),G3(),h(34,"a",25),u3(),h(35,"svg",26),O(36,"path",27),p()(),G3(),h(37,"a",28),u3(),h(38,"svg",29)(39,"g"),O(40,"path",30),p()()()(),G3(),h(41,"div",31)(42,"div",32)(43,"p",17),b(44,"\u95DC\u65BC"),p(),h(45,"ul")(46,"li")(47,"a",33),b(48,"\u53F0\u5317 Google \u958B\u767C\u8005\u793E\u7FA4"),p()(),h(49,"li")(50,"a",34),b(51,"Google \u958B\u767C\u8005\u793E\u7FA4 (GDG)"),p()(),h(52,"li")(53,"a",35),b(54,"\u7C4C\u8FA6\u5718\u968A"),p()()()(),h(55,"div",32)(56,"p",17),b(57,"\u5F80\u5E74\u6D3B\u52D5"),p(),h(58,"ul")(59,"li")(60,"a",36),b(61,"GDG DevFest Taipei 2017"),p()(),h(62,"li")(63,"a",37),b(64,"GDG DevFest Taipei 2018"),p()(),h(65,"li")(66,"a",38),b(67,"GDG DevFest Taipei 2019"),p()()()(),h(68,"div",32)(69,"p",17),b(70,"\u6D3B\u52D5\u8CC7\u6E90"),p(),h(71,"ul")(72,"li")(73,"a",36),b(74,"\u8CC7\u6E901"),p()(),h(75,"li")(76,"a",36),b(77,"\u8CC7\u6E902"),p()(),h(78,"li")(79,"a",36),b(80,"\u8CC7\u6E903"),p()()()()(),h(81,"div",39),O(82,"img",40)(83,"div",41),h(84,"p"),b(85,"\xA9 2024 GDG Taipei \xB7 "),h(86,"a",42),b(87,"\u793E\u7FA4\u6D3B\u52D5\u6307\u5F15"),p()()()()()()()}if(i&2){let a=I2(12),o=I2(15);_(2),S("ngIf",!o.opened),_(),S("ngIf",o.opened),_(4),S("tabPanel",a),_(),S("ngForOf",n.links),_(),S("href",n.highlightLink.link,j1),_(),b1(n.highlightLink.name),_(7),S("ngForOf",n.links),_(),S("href",n.highlightLink.link,j1),_(),F4("",n.highlightLink.emoji," ",n.highlightLink.name,""),_(),S("@routeAnimations",n.getRouteAnimationData())}},dependencies:[S3,v2,e2,c5,Ha,Pa,a3,p4,w4,y4,qa,$i,Ua,Zi,$a,Qi,Xi,Ka,Xa,Qa,E1,f2,Z2],styles:["mat-toolbar[_ngcontent-%COMP%]{display:inline-flex;position:fixed;z-index:10;top:0;left:0}mat-drawer[_ngcontent-%COMP%]{position:fixed;z-index:11;top:0;left:0;width:250px;padding:20px 10px}mat-drawer[_ngcontent-%COMP%] mat-nav-list[_ngcontent-%COMP%]{padding-top:var(--mat-toolbar-standard-height)}mat-drawer-container[_ngcontent-%COMP%]{padding-top:var(--mat-toolbar-standard-height);box-sizing:border-box;width:100%;background-color:transparent}@media (max-width: 599px){mat-drawer-container[_ngcontent-%COMP%]{padding-top:var(--mat-toolbar-mobile-height)}mat-drawer[_ngcontent-%COMP%] mat-nav-list[_ngcontent-%COMP%]{padding-top:var(--mat-toolbar-mobile-height)}}.toolbar-spacer[_ngcontent-%COMP%]{flex:1 1 auto}a.logo-button[_ngcontent-%COMP%]{display:block;height:25px}a.logo-button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{height:100%}.highlight-tab-link[_ngcontent-%COMP%]{border-radius:5px;background-color:var(--blue-500);transition:background-color .75s var(--default-transition-timing-function);margin-left:10px}.highlight-tab-link[_ngcontent-%COMP%]:hover{background-color:#7caeff} .highlight-tab-link .mdc-tab__text-label{color:#fff!important;font-weight:700}@keyframes _ngcontent-%COMP%_colorful-border{0%,to{border-color:var(--blue-500)}25%{border-color:var(--green-500)}50%{border-color:var(--yellow-600)}75%{border-color:var(--red-500)}}.highlight-list-item[_ngcontent-%COMP%]{border:2px solid;border-radius:5px;animation:_ngcontent-%COMP%_colorful-border 4s linear 0s infinite}main[_ngcontent-%COMP%]{margin:0 auto;width:100%;padding:10px 0;box-sizing:border-box}footer[_ngcontent-%COMP%]{width:100%;margin:0 auto;box-sizing:border-box;background-color:#e0e0e0}.footer-container[_ngcontent-%COMP%]{padding:20px 10px 5px;margin:0 auto;width:100%;box-sizing:border-box}.footer-box-group[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;align-content:flex-start;margin:10px 0}.footer-box-title[_ngcontent-%COMP%]{font-size:1.2rem}.footer-box[_ngcontent-%COMP%]{width:300px}.footer-box[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{padding:0;margin:0;list-style:none}.footer-box[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{padding:0;margin:5px 0}.footer-box[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .footer-box[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:visited{line-height:1.2rem;color:var(--black-02)}.footer-box[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{color:var(--green-500);transition:color .75s var(--default-transition-timing-function)}.footer-box-last[_ngcontent-%COMP%]{display:flex;align-items:center;margin-top:10px}.footer-box-last-spacer[_ngcontent-%COMP%]{flex:1 1 auto}@media screen and (max-width: 550px){.footer-box-last[_ngcontent-%COMP%]{flex-flow:row wrap;justify-content:center}.footer-box-last-spacer[_ngcontent-%COMP%]{width:100%}}.show-when-screen-smaller-than-900px[_ngcontent-%COMP%]{display:none}.menu-button[_ngcontent-%COMP%]{margin-right:10px}.footer-button-group[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;gap:5px}.footer-button[_ngcontent-%COMP%] svg[_ngcontent-%COMP%]{width:25px;height:25px;fill:var(--black-02);margin-right:5px}.footer-button[_ngcontent-%COMP%]:hover svg[_ngcontent-%COMP%]{fill:var(--green-500);transition:fill .75s var(--default-transition-timing-function)}@media screen and (max-width: 900px){.hide-when-screen-smaller-than-900px[_ngcontent-%COMP%]{display:none}.show-when-screen-smaller-than-900px[_ngcontent-%COMP%]{display:block}}"],data:{animation:[Ja]}})}}return e})();u8(e7,Oa).catch(e=>console.error(e)); diff --git a/polyfills-FFHMD2TL.js b/polyfills-FFHMD2TL.js new file mode 100644 index 0000000..b01b791 --- /dev/null +++ b/polyfills-FFHMD2TL.js @@ -0,0 +1,2 @@ +var ce=globalThis;function te(e){return(ce.__Zone_symbol_prefix||"__zone_symbol__")+e}function dt(){let e=ce.performance;function n(M){e&&e.mark&&e.mark(M)}function a(M,s){e&&e.measure&&e.measure(M,s)}n("Zone");class t{static{this.__symbol__=te}static assertZonePatched(){if(ce.Promise!==S.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let s=t.current;for(;s.parent;)s=s.parent;return s}static get current(){return b.zone}static get currentTask(){return D}static __load_patch(s,i,o=!1){if(S.hasOwnProperty(s)){let g=ce[te("forceDuplicateZoneCheck")]===!0;if(!o&&g)throw Error("Already loaded patch: "+s)}else if(!ce["__Zone_disable_"+s]){let g="Zone:"+s;n(g),S[s]=i(ce,t,w),a(g,g)}}get parent(){return this._parent}get name(){return this._name}constructor(s,i){this._parent=s,this._name=i?i.name||"unnamed":"",this._properties=i&&i.properties||{},this._zoneDelegate=new f(this,this._parent&&this._parent._zoneDelegate,i)}get(s){let i=this.getZoneWith(s);if(i)return i._properties[s]}getZoneWith(s){let i=this;for(;i;){if(i._properties.hasOwnProperty(s))return i;i=i._parent}return null}fork(s){if(!s)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,s)}wrap(s,i){if(typeof s!="function")throw new Error("Expecting function got: "+s);let o=this._zoneDelegate.intercept(this,s,i),g=this;return function(){return g.runGuarded(o,this,arguments,i)}}run(s,i,o,g){b={parent:b,zone:this};try{return this._zoneDelegate.invoke(this,s,i,o,g)}finally{b=b.parent}}runGuarded(s,i=null,o,g){b={parent:b,zone:this};try{try{return this._zoneDelegate.invoke(this,s,i,o,g)}catch(V){if(this._zoneDelegate.handleError(this,V))throw V}}finally{b=b.parent}}runTask(s,i,o){if(s.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(s.zone||J).name+"; Execution: "+this.name+")");let g=s,{type:V,data:{isPeriodic:ee=!1,isRefreshable:Z=!1}={}}=s;if(s.state===q&&(V===z||V===y))return;let he=s.state!=A;he&&g._transitionTo(A,d);let _e=D;D=g,b={parent:b,zone:this};try{V==y&&s.data&&!ee&&!Z&&(s.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,g,i,o)}catch(Q){if(this._zoneDelegate.handleError(this,Q))throw Q}}finally{let Q=s.state;if(Q!==q&&Q!==X)if(V==z||ee||Z&&Q===k)he&&g._transitionTo(d,A,k);else{let Ee=g._zoneDelegates;this._updateTaskCount(g,-1),he&&g._transitionTo(q,A,q),Z&&(g._zoneDelegates=Ee)}b=b.parent,D=_e}}scheduleTask(s){if(s.zone&&s.zone!==this){let o=this;for(;o;){if(o===s.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${s.zone.name}`);o=o.parent}}s._transitionTo(k,q);let i=[];s._zoneDelegates=i,s._zone=this;try{s=this._zoneDelegate.scheduleTask(this,s)}catch(o){throw s._transitionTo(X,k,q),this._zoneDelegate.handleError(this,o),o}return s._zoneDelegates===i&&this._updateTaskCount(s,1),s.state==k&&s._transitionTo(d,k),s}scheduleMicroTask(s,i,o,g){return this.scheduleTask(new E(G,s,i,o,g,void 0))}scheduleMacroTask(s,i,o,g,V){return this.scheduleTask(new E(y,s,i,o,g,V))}scheduleEventTask(s,i,o,g,V){return this.scheduleTask(new E(z,s,i,o,g,V))}cancelTask(s){if(s.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(s.zone||J).name+"; Execution: "+this.name+")");if(!(s.state!==d&&s.state!==A)){s._transitionTo(x,d,A);try{this._zoneDelegate.cancelTask(this,s)}catch(i){throw s._transitionTo(X,x),this._zoneDelegate.handleError(this,i),i}return this._updateTaskCount(s,-1),s._transitionTo(q,x),s.runCount=-1,s}}_updateTaskCount(s,i){let o=s._zoneDelegates;i==-1&&(s._zoneDelegates=null);for(let g=0;gM.hasTask(i,o),onScheduleTask:(M,s,i,o)=>M.scheduleTask(i,o),onInvokeTask:(M,s,i,o,g,V)=>M.invokeTask(i,o,g,V),onCancelTask:(M,s,i,o)=>M.cancelTask(i,o)};class f{get zone(){return this._zone}constructor(s,i,o){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this._zone=s,this._parentDelegate=i,this._forkZS=o&&(o&&o.onFork?o:i._forkZS),this._forkDlgt=o&&(o.onFork?i:i._forkDlgt),this._forkCurrZone=o&&(o.onFork?this._zone:i._forkCurrZone),this._interceptZS=o&&(o.onIntercept?o:i._interceptZS),this._interceptDlgt=o&&(o.onIntercept?i:i._interceptDlgt),this._interceptCurrZone=o&&(o.onIntercept?this._zone:i._interceptCurrZone),this._invokeZS=o&&(o.onInvoke?o:i._invokeZS),this._invokeDlgt=o&&(o.onInvoke?i:i._invokeDlgt),this._invokeCurrZone=o&&(o.onInvoke?this._zone:i._invokeCurrZone),this._handleErrorZS=o&&(o.onHandleError?o:i._handleErrorZS),this._handleErrorDlgt=o&&(o.onHandleError?i:i._handleErrorDlgt),this._handleErrorCurrZone=o&&(o.onHandleError?this._zone:i._handleErrorCurrZone),this._scheduleTaskZS=o&&(o.onScheduleTask?o:i._scheduleTaskZS),this._scheduleTaskDlgt=o&&(o.onScheduleTask?i:i._scheduleTaskDlgt),this._scheduleTaskCurrZone=o&&(o.onScheduleTask?this._zone:i._scheduleTaskCurrZone),this._invokeTaskZS=o&&(o.onInvokeTask?o:i._invokeTaskZS),this._invokeTaskDlgt=o&&(o.onInvokeTask?i:i._invokeTaskDlgt),this._invokeTaskCurrZone=o&&(o.onInvokeTask?this._zone:i._invokeTaskCurrZone),this._cancelTaskZS=o&&(o.onCancelTask?o:i._cancelTaskZS),this._cancelTaskDlgt=o&&(o.onCancelTask?i:i._cancelTaskDlgt),this._cancelTaskCurrZone=o&&(o.onCancelTask?this._zone:i._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let g=o&&o.onHasTask,V=i&&i._hasTaskZS;(g||V)&&(this._hasTaskZS=g?o:c,this._hasTaskDlgt=i,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,o.onScheduleTask||(this._scheduleTaskZS=c,this._scheduleTaskDlgt=i,this._scheduleTaskCurrZone=this._zone),o.onInvokeTask||(this._invokeTaskZS=c,this._invokeTaskDlgt=i,this._invokeTaskCurrZone=this._zone),o.onCancelTask||(this._cancelTaskZS=c,this._cancelTaskDlgt=i,this._cancelTaskCurrZone=this._zone))}fork(s,i){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,s,i):new t(s,i)}intercept(s,i,o){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,s,i,o):i}invoke(s,i,o,g,V){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,s,i,o,g,V):i.apply(o,g)}handleError(s,i){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,s,i):!0}scheduleTask(s,i){let o=i;if(this._scheduleTaskZS)this._hasTaskZS&&o._zoneDelegates.push(this._hasTaskDlgtOwner),o=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,s,i),o||(o=i);else if(i.scheduleFn)i.scheduleFn(i);else if(i.type==G)U(i);else throw new Error("Task is missing scheduleFn.");return o}invokeTask(s,i,o,g){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,s,i,o,g):i.callback.apply(o,g)}cancelTask(s,i){let o;if(this._cancelTaskZS)o=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,s,i);else{if(!i.cancelFn)throw Error("Task is not cancelable");o=i.cancelFn(i)}return o}hasTask(s,i){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,s,i)}catch(o){this.handleError(s,o)}}_updateTaskCount(s,i){let o=this._taskCounts,g=o[s],V=o[s]=g+i;if(V<0)throw new Error("More tasks executed then were scheduled.");if(g==0||V==0){let ee={microTask:o.microTask>0,macroTask:o.macroTask>0,eventTask:o.eventTask>0,change:s};this.hasTask(this._zone,ee)}}}class E{constructor(s,i,o,g,V,ee){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=s,this.source=i,this.data=g,this.scheduleFn=V,this.cancelFn=ee,!o)throw new Error("callback is not defined");this.callback=o;let Z=this;s===z&&g&&g.useG?this.invoke=E.invokeTask:this.invoke=function(){return E.invokeTask.call(ce,Z,this,arguments)}}static invokeTask(s,i,o){s||(s=this),K++;try{return s.runCount++,s.zone.runTask(s,i,o)}finally{K==1&&$(),K--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(q,k)}_transitionTo(s,i,o){if(this._state===i||this._state===o)this._state=s,s==q&&(this._zoneDelegates=null);else throw new Error(`${this.type} '${this.source}': can not transition to '${s}', expecting state '${i}'${o?" or '"+o+"'":""}, was '${this._state}'.`)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let T=te("setTimeout"),p=te("Promise"),C=te("then"),_=[],P=!1,I;function H(M){if(I||ce[p]&&(I=ce[p].resolve(0)),I){let s=I[C];s||(s=I.then),s.call(I,M)}else ce[T](M,0)}function U(M){K===0&&_.length===0&&H($),M&&_.push(M)}function $(){if(!P){for(P=!0;_.length;){let M=_;_=[];for(let s=0;sb,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:U,showUncaughtError:()=>!t[te("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:H},b={parent:null,zone:new t(null,null)},D=null,K=0;function W(){}return a("Zone","Zone"),t}function _t(){let e=globalThis,n=e[te("forceDuplicateZoneCheck")]===!0;if(e.Zone&&(n||typeof e.Zone.__symbol__!="function"))throw new Error("Zone already loaded.");return e.Zone??=dt(),e.Zone}var be=Object.getOwnPropertyDescriptor,Ae=Object.defineProperty,je=Object.getPrototypeOf,Et=Object.create,Tt=Array.prototype.slice,He="addEventListener",xe="removeEventListener",Le=te(He),Ie=te(xe),ae="true",le="false",Pe=te("");function Ve(e,n){return Zone.current.wrap(e,n)}function Ge(e,n,a,t,c){return Zone.current.scheduleMacroTask(e,n,a,t,c)}var j=te,De=typeof window<"u",pe=De?window:void 0,Y=De&&pe||globalThis,gt="removeAttribute";function Fe(e,n){for(let a=e.length-1;a>=0;a--)typeof e[a]=="function"&&(e[a]=Ve(e[a],n+"_"+a));return e}function yt(e,n){let a=e.constructor.name;for(let t=0;t{let p=function(){return T.apply(this,Fe(arguments,a+"."+c))};return fe(p,T),p})(f)}}}function tt(e){return e?e.writable===!1?!1:!(typeof e.get=="function"&&typeof e.set>"u"):!0}var nt=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Se=!("nw"in Y)&&typeof Y.process<"u"&&Y.process.toString()==="[object process]",Be=!Se&&!nt&&!!(De&&pe.HTMLElement),rt=typeof Y.process<"u"&&Y.process.toString()==="[object process]"&&!nt&&!!(De&&pe.HTMLElement),Ce={},mt=j("enable_beforeunload"),Ye=function(e){if(e=e||Y.event,!e)return;let n=Ce[e.type];n||(n=Ce[e.type]=j("ON_PROPERTY"+e.type));let a=this||e.target||Y,t=a[n],c;if(Be&&a===pe&&e.type==="error"){let f=e;c=t&&t.call(this,f.message,f.filename,f.lineno,f.colno,f.error),c===!0&&e.preventDefault()}else c=t&&t.apply(this,arguments),e.type==="beforeunload"&&Y[mt]&&typeof c=="string"?e.returnValue=c:c!=null&&!c&&e.preventDefault();return c};function $e(e,n,a){let t=be(e,n);if(!t&&a&&be(a,n)&&(t={enumerable:!0,configurable:!0}),!t||!t.configurable)return;let c=j("on"+n+"patched");if(e.hasOwnProperty(c)&&e[c])return;delete t.writable,delete t.value;let f=t.get,E=t.set,T=n.slice(2),p=Ce[T];p||(p=Ce[T]=j("ON_PROPERTY"+T)),t.set=function(C){let _=this;if(!_&&e===Y&&(_=Y),!_)return;typeof _[p]=="function"&&_.removeEventListener(T,Ye),E&&E.call(_,null),_[p]=C,typeof C=="function"&&_.addEventListener(T,Ye,!1)},t.get=function(){let C=this;if(!C&&e===Y&&(C=Y),!C)return null;let _=C[p];if(_)return _;if(f){let P=f.call(this);if(P)return t.set.call(this,P),typeof C[gt]=="function"&&C.removeAttribute(n),P}return null},Ae(e,n,t),e[c]=!0}function ot(e,n,a){if(n)for(let t=0;tfunction(E,T){let p=a(E,T);return p.cbIdx>=0&&typeof T[p.cbIdx]=="function"?Ge(p.name,T[p.cbIdx],p,c):f.apply(E,T)})}function fe(e,n){e[j("OriginalDelegate")]=n}var Je=!1,Me=!1;function kt(){try{let e=pe.navigator.userAgent;if(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1)return!0}catch{}return!1}function vt(){if(Je)return Me;Je=!0;try{let e=pe.navigator.userAgent;(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1||e.indexOf("Edge/")!==-1)&&(Me=!0)}catch{}return Me}function Ke(e){return typeof e=="function"}function Qe(e){return typeof e=="number"}var me=!1;if(typeof window<"u")try{let e=Object.defineProperty({},"passive",{get:function(){me=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{me=!1}var bt={useG:!0},ne={},st={},it=new RegExp("^"+Pe+"(\\w+)(true|false)$"),ct=j("propagationStopped");function at(e,n){let a=(n?n(e):e)+le,t=(n?n(e):e)+ae,c=Pe+a,f=Pe+t;ne[e]={},ne[e][le]=c,ne[e][ae]=f}function Pt(e,n,a,t){let c=t&&t.add||He,f=t&&t.rm||xe,E=t&&t.listeners||"eventListeners",T=t&&t.rmAll||"removeAllListeners",p=j(c),C="."+c+":",_="prependListener",P="."+_+":",I=function(k,d,A){if(k.isRemoved)return;let x=k.callback;typeof x=="object"&&x.handleEvent&&(k.callback=y=>x.handleEvent(y),k.originalDelegate=x);let X;try{k.invoke(k,d,[A])}catch(y){X=y}let G=k.options;if(G&&typeof G=="object"&&G.once){let y=k.originalDelegate?k.originalDelegate:k.callback;d[f].call(d,A.type,y,G)}return X};function H(k,d,A){if(d=d||e.event,!d)return;let x=k||d.target||e,X=x[ne[d.type][A?ae:le]];if(X){let G=[];if(X.length===1){let y=I(X[0],x,d);y&&G.push(y)}else{let y=X.slice();for(let z=0;z{throw z})}}}let U=function(k){return H(this,k,!1)},$=function(k){return H(this,k,!0)};function J(k,d){if(!k)return!1;let A=!0;d&&d.useG!==void 0&&(A=d.useG);let x=d&&d.vh,X=!0;d&&d.chkDup!==void 0&&(X=d.chkDup);let G=!1;d&&d.rt!==void 0&&(G=d.rt);let y=k;for(;y&&!y.hasOwnProperty(c);)y=je(y);if(!y&&k[c]&&(y=k),!y||y[p])return!1;let z=d&&d.eventNameToString,S={},w=y[p]=y[c],b=y[j(f)]=y[f],D=y[j(E)]=y[E],K=y[j(T)]=y[T],W;d&&d.prepend&&(W=y[j(d.prepend)]=y[d.prepend]);function M(r,u){return!me&&typeof r=="object"&&r?!!r.capture:!me||!u?r:typeof r=="boolean"?{capture:r,passive:!0}:r?typeof r=="object"&&r.passive!==!1?{...r,passive:!0}:r:{passive:!0}}let s=function(r){if(!S.isExisting)return w.call(S.target,S.eventName,S.capture?$:U,S.options)},i=function(r){if(!r.isRemoved){let u=ne[r.eventName],v;u&&(v=u[r.capture?ae:le]);let R=v&&r.target[v];if(R){for(let m=0;mre.zone.cancelTask(re);r.call(Te,"abort",ie,{once:!0}),re.removeAbortListener=()=>Te.removeEventListener("abort",ie)}if(S.target=null,ke&&(ke.taskData=null),Ue&&(S.options.once=!0),!me&&typeof re.options=="boolean"||(re.options=se),re.target=N,re.capture=Oe,re.eventName=L,B&&(re.originalDelegate=F),O?ge.unshift(re):ge.push(re),m)return N}};return y[c]=l(w,C,ee,Z,G),W&&(y[_]=l(W,P,g,Z,G,!0)),y[f]=function(){let r=this||e,u=arguments[0];d&&d.transferEventName&&(u=d.transferEventName(u));let v=arguments[2],R=v?typeof v=="boolean"?!0:v.capture:!1,m=arguments[1];if(!m)return b.apply(this,arguments);if(x&&!x(b,m,r,arguments))return;let O=ne[u],N;O&&(N=O[R?ae:le]);let L=N&&r[N];if(L)for(let F=0;Ffunction(c,f){c[ct]=!0,t&&t.apply(c,f)})}function Rt(e,n){n.patchMethod(e,"queueMicrotask",a=>function(t,c){Zone.current.scheduleMicroTask("queueMicrotask",c[0])})}var Re=j("zoneTask");function ye(e,n,a,t){let c=null,f=null;n+=t,a+=t;let E={};function T(C){let _=C.data;_.args[0]=function(){return C.invoke.apply(this,arguments)};let P=c.apply(e,_.args);return Qe(P)?_.handleId=P:(_.handle=P,_.isRefreshable=Ke(P.refresh)),C}function p(C){let{handle:_,handleId:P}=C.data;return f.call(e,_??P)}c=ue(e,n,C=>function(_,P){if(Ke(P[0])){let I={isRefreshable:!1,isPeriodic:t==="Interval",delay:t==="Timeout"||t==="Interval"?P[1]||0:void 0,args:P},H=P[0];P[0]=function(){try{return H.apply(this,arguments)}finally{let{handle:A,handleId:x,isPeriodic:X,isRefreshable:G}=I;!X&&!G&&(x?delete E[x]:A&&(A[Re]=null))}};let U=Ge(n,P[0],I,T,p);if(!U)return U;let{handleId:$,handle:J,isRefreshable:q,isPeriodic:k}=U.data;if($)E[$]=U;else if(J&&(J[Re]=U,q&&!k)){let d=J.refresh;J.refresh=function(){let{zone:A,state:x}=U;return x==="notScheduled"?(U._state="scheduled",A._updateTaskCount(U,1)):x==="running"&&(U._state="scheduling"),d.call(this)}}return J??$??U}else return C.apply(e,P)}),f=ue(e,a,C=>function(_,P){let I=P[0],H;Qe(I)?(H=E[I],delete E[I]):(H=I?.[Re],H?I[Re]=null:H=I),H?.type?H.cancelFn&&H.zone.cancelTask(H):C.apply(e,P)})}function Ct(e,n){let{isBrowser:a,isMix:t}=n.getGlobalObjects();if(!a&&!t||!e.customElements||!("customElements"in e))return;let c=["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"];n.patchCallbacks(n,e.customElements,"customElements","define",c)}function Dt(e,n){if(Zone[n.symbol("patchEventTarget")])return;let{eventNames:a,zoneSymbolEventNames:t,TRUE_STR:c,FALSE_STR:f,ZONE_SYMBOL_PREFIX:E}=n.getGlobalObjects();for(let p=0;pf.target===e);if(!t||t.length===0)return n;let c=t[0].ignoreProperties;return n.filter(f=>c.indexOf(f)===-1)}function et(e,n,a,t){if(!e)return;let c=ut(e,n,a);ot(e,c,t)}function Ze(e){return Object.getOwnPropertyNames(e).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}function Ot(e,n){if(Se&&!rt||Zone[e.symbol("patchEvents")])return;let a=n.__Zone_ignore_on_properties,t=[];if(Be){let c=window;t=t.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);let f=kt()?[{target:c,ignoreProperties:["error"]}]:[];et(c,Ze(c),a&&a.concat(f),je(c))}t=t.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{let a=n[e.__symbol__("legacyPatch")];a&&a()}),e.__load_patch("timers",n=>{let a="set",t="clear";ye(n,a,t,"Timeout"),ye(n,a,t,"Interval"),ye(n,a,t,"Immediate")}),e.__load_patch("requestAnimationFrame",n=>{ye(n,"request","cancel","AnimationFrame"),ye(n,"mozRequest","mozCancel","AnimationFrame"),ye(n,"webkitRequest","webkitCancel","AnimationFrame")}),e.__load_patch("blocking",(n,a)=>{let t=["alert","prompt","confirm"];for(let c=0;cfunction(C,_){return a.current.run(E,n,_,p)})}}),e.__load_patch("EventTarget",(n,a,t)=>{St(n,t),Dt(n,t);let c=n.XMLHttpRequestEventTarget;c&&c.prototype&&t.patchEventTarget(n,t,[c.prototype])}),e.__load_patch("MutationObserver",(n,a,t)=>{ve("MutationObserver"),ve("WebKitMutationObserver")}),e.__load_patch("IntersectionObserver",(n,a,t)=>{ve("IntersectionObserver")}),e.__load_patch("FileReader",(n,a,t)=>{ve("FileReader")}),e.__load_patch("on_property",(n,a,t)=>{Ot(t,n)}),e.__load_patch("customElements",(n,a,t)=>{Ct(n,t)}),e.__load_patch("XHR",(n,a)=>{C(n);let t=j("xhrTask"),c=j("xhrSync"),f=j("xhrListener"),E=j("xhrScheduled"),T=j("xhrURL"),p=j("xhrErrorBeforeScheduled");function C(_){let P=_.XMLHttpRequest;if(!P)return;let I=P.prototype;function H(w){return w[t]}let U=I[Le],$=I[Ie];if(!U){let w=_.XMLHttpRequestEventTarget;if(w){let b=w.prototype;U=b[Le],$=b[Ie]}}let J="readystatechange",q="scheduled";function k(w){let b=w.data,D=b.target;D[E]=!1,D[p]=!1;let K=D[f];U||(U=D[Le],$=D[Ie]),K&&$.call(D,J,K);let W=D[f]=()=>{if(D.readyState===D.DONE)if(!b.aborted&&D[E]&&w.state===q){let s=D[a.__symbol__("loadfalse")];if(D.status!==0&&s&&s.length>0){let i=w.invoke;w.invoke=function(){let o=D[a.__symbol__("loadfalse")];for(let g=0;gfunction(w,b){return w[c]=b[2]==!1,w[T]=b[1],x.apply(w,b)}),X="XMLHttpRequest.send",G=j("fetchTaskAborting"),y=j("fetchTaskScheduling"),z=ue(I,"send",()=>function(w,b){if(a.current[y]===!0||w[c])return z.apply(w,b);{let D={target:w,url:w[T],isPeriodic:!1,args:b,aborted:!1},K=Ge(X,d,D,k,A);w&&w[p]===!0&&!D.aborted&&K.state===q&&K.invoke()}}),S=ue(I,"abort",()=>function(w,b){let D=H(w);if(D&&typeof D.type=="string"){if(D.cancelFn==null||D.data&&D.data.aborted)return;D.zone.cancelTask(D)}else if(a.current[G]===!0)return S.apply(w,b)})}}),e.__load_patch("geolocation",n=>{n.navigator&&n.navigator.geolocation&&yt(n.navigator.geolocation,["getCurrentPosition","watchPosition"])}),e.__load_patch("PromiseRejectionEvent",(n,a)=>{function t(c){return function(f){lt(n,c).forEach(T=>{let p=n.PromiseRejectionEvent;if(p){let C=new p(c,{promise:f.promise,reason:f.rejection});T.invoke(C)}})}}n.PromiseRejectionEvent&&(a[j("unhandledPromiseRejectionHandler")]=t("unhandledrejection"),a[j("rejectionHandledHandler")]=t("rejectionhandled"))}),e.__load_patch("queueMicrotask",(n,a,t)=>{Rt(n,t)})}function Lt(e){e.__load_patch("ZoneAwarePromise",(n,a,t)=>{let c=Object.getOwnPropertyDescriptor,f=Object.defineProperty;function E(h){if(h&&h.toString===Object.prototype.toString){let l=h.constructor&&h.constructor.name;return(l||"")+": "+JSON.stringify(h)}return h?h.toString():Object.prototype.toString.call(h)}let T=t.symbol,p=[],C=n[T("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")]!==!1,_=T("Promise"),P=T("then"),I="__creationTrace__";t.onUnhandledError=h=>{if(t.showUncaughtError()){let l=h&&h.rejection;l?console.error("Unhandled Promise rejection:",l instanceof Error?l.message:l,"; Zone:",h.zone.name,"; Task:",h.task&&h.task.source,"; Value:",l,l instanceof Error?l.stack:void 0):console.error(h)}},t.microtaskDrainDone=()=>{for(;p.length;){let h=p.shift();try{h.zone.runGuarded(()=>{throw h.throwOriginal?h.rejection:h})}catch(l){U(l)}}};let H=T("unhandledPromiseRejectionHandler");function U(h){t.onUnhandledError(h);try{let l=a[H];typeof l=="function"&&l.call(this,h)}catch{}}function $(h){return h&&h.then}function J(h){return h}function q(h){return Z.reject(h)}let k=T("state"),d=T("value"),A=T("finally"),x=T("parentPromiseValue"),X=T("parentPromiseState"),G="Promise.then",y=null,z=!0,S=!1,w=0;function b(h,l){return r=>{try{M(h,l,r)}catch(u){M(h,!1,u)}}}let D=function(){let h=!1;return function(r){return function(){h||(h=!0,r.apply(null,arguments))}}},K="Promise resolved with itself",W=T("currentTaskTrace");function M(h,l,r){let u=D();if(h===r)throw new TypeError(K);if(h[k]===y){let v=null;try{(typeof r=="object"||typeof r=="function")&&(v=r&&r.then)}catch(R){return u(()=>{M(h,!1,R)})(),h}if(l!==S&&r instanceof Z&&r.hasOwnProperty(k)&&r.hasOwnProperty(d)&&r[k]!==y)i(r),M(h,r[k],r[d]);else if(l!==S&&typeof v=="function")try{v.call(r,u(b(h,l)),u(b(h,!1)))}catch(R){u(()=>{M(h,!1,R)})()}else{h[k]=l;let R=h[d];if(h[d]=r,h[A]===A&&l===z&&(h[k]=h[X],h[d]=h[x]),l===S&&r instanceof Error){let m=a.currentTask&&a.currentTask.data&&a.currentTask.data[I];m&&f(r,W,{configurable:!0,enumerable:!1,writable:!0,value:m})}for(let m=0;m{try{let O=h[d],N=!!r&&A===r[A];N&&(r[x]=O,r[X]=R);let L=l.run(m,void 0,N&&m!==q&&m!==J?[]:[O]);M(r,!0,L)}catch(O){M(r,!1,O)}},r)}let g="function ZoneAwarePromise() { [native code] }",V=function(){},ee=n.AggregateError;class Z{static toString(){return g}static resolve(l){return l instanceof Z?l:M(new this(null),z,l)}static reject(l){return M(new this(null),S,l)}static withResolvers(){let l={};return l.promise=new Z((r,u)=>{l.resolve=r,l.reject=u}),l}static any(l){if(!l||typeof l[Symbol.iterator]!="function")return Promise.reject(new ee([],"All promises were rejected"));let r=[],u=0;try{for(let m of l)u++,r.push(Z.resolve(m))}catch{return Promise.reject(new ee([],"All promises were rejected"))}if(u===0)return Promise.reject(new ee([],"All promises were rejected"));let v=!1,R=[];return new Z((m,O)=>{for(let N=0;N{v||(v=!0,m(L))},L=>{R.push(L),u--,u===0&&(v=!0,O(new ee(R,"All promises were rejected")))})})}static race(l){let r,u,v=new this((O,N)=>{r=O,u=N});function R(O){r(O)}function m(O){u(O)}for(let O of l)$(O)||(O=this.resolve(O)),O.then(R,m);return v}static all(l){return Z.allWithCallback(l)}static allSettled(l){return(this&&this.prototype instanceof Z?this:Z).allWithCallback(l,{thenCallback:u=>({status:"fulfilled",value:u}),errorCallback:u=>({status:"rejected",reason:u})})}static allWithCallback(l,r){let u,v,R=new this((L,F)=>{u=L,v=F}),m=2,O=0,N=[];for(let L of l){$(L)||(L=this.resolve(L));let F=O;try{L.then(B=>{N[F]=r?r.thenCallback(B):B,m--,m===0&&u(N)},B=>{r?(N[F]=r.errorCallback(B),m--,m===0&&u(N)):v(B)})}catch(B){v(B)}m++,O++}return m-=2,m===0&&u(N),R}constructor(l){let r=this;if(!(r instanceof Z))throw new Error("Must be an instanceof Promise.");r[k]=y,r[d]=[];try{let u=D();l&&l(u(b(r,z)),u(b(r,S)))}catch(u){M(r,!1,u)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return Z}then(l,r){let u=this.constructor?.[Symbol.species];(!u||typeof u!="function")&&(u=this.constructor||Z);let v=new u(V),R=a.current;return this[k]==y?this[d].push(R,v,l,r):o(this,R,v,l,r),v}catch(l){return this.then(null,l)}finally(l){let r=this.constructor?.[Symbol.species];(!r||typeof r!="function")&&(r=Z);let u=new r(V);u[A]=A;let v=a.current;return this[k]==y?this[d].push(v,u,l,l):o(this,v,u,l,l),u}}Z.resolve=Z.resolve,Z.reject=Z.reject,Z.race=Z.race,Z.all=Z.all;let he=n[_]=n.Promise;n.Promise=Z;let _e=T("thenPatched");function Q(h){let l=h.prototype,r=c(l,"then");if(r&&(r.writable===!1||!r.configurable))return;let u=l.then;l[P]=u,h.prototype.then=function(v,R){return new Z((O,N)=>{u.call(this,O,N)}).then(v,R)},h[_e]=!0}t.patchThen=Q;function Ee(h){return function(l,r){let u=h.apply(l,r);if(u instanceof Z)return u;let v=u.constructor;return v[_e]||Q(v),u}}return he&&(Q(he),ue(n,"fetch",h=>Ee(h))),Promise[a.__symbol__("uncaughtPromiseErrors")]=p,Z})}function It(e){e.__load_patch("toString",n=>{let a=Function.prototype.toString,t=j("OriginalDelegate"),c=j("Promise"),f=j("Error"),E=function(){if(typeof this=="function"){let _=this[t];if(_)return typeof _=="function"?a.call(_):Object.prototype.toString.call(_);if(this===Promise){let P=n[c];if(P)return a.call(P)}if(this===Error){let P=n[f];if(P)return a.call(P)}}return a.call(this)};E[t]=a,Function.prototype.toString=E;let T=Object.prototype.toString,p="[object Promise]";Object.prototype.toString=function(){return typeof Promise=="function"&&this instanceof Promise?p:T.call(this)}})}function Mt(e,n,a,t,c){let f=Zone.__symbol__(t);if(n[f])return;let E=n[f]=n[t];n[t]=function(T,p,C){return p&&p.prototype&&c.forEach(function(_){let P=`${a}.${t}::`+_,I=p.prototype;try{if(I.hasOwnProperty(_)){let H=e.ObjectGetOwnPropertyDescriptor(I,_);H&&H.value?(H.value=e.wrapWithCurrentZone(H.value,P),e._redefineProperty(p.prototype,_,H)):I[_]&&(I[_]=e.wrapWithCurrentZone(I[_],P))}else I[_]&&(I[_]=e.wrapWithCurrentZone(I[_],P))}catch{}}),E.call(n,T,p,C)},e.attachOriginToPatched(n[t],E)}function Zt(e){e.__load_patch("util",(n,a,t)=>{let c=Ze(n);t.patchOnProperties=ot,t.patchMethod=ue,t.bindArguments=Fe,t.patchMacroTask=pt;let f=a.__symbol__("BLACK_LISTED_EVENTS"),E=a.__symbol__("UNPATCHED_EVENTS");n[E]&&(n[f]=n[E]),n[f]&&(a[f]=a[E]=n[f]),t.patchEventPrototype=wt,t.patchEventTarget=Pt,t.isIEOrEdge=vt,t.ObjectDefineProperty=Ae,t.ObjectGetOwnPropertyDescriptor=be,t.ObjectCreate=Et,t.ArraySlice=Tt,t.patchClass=ve,t.wrapWithCurrentZone=Ve,t.filterProperties=ut,t.attachOriginToPatched=fe,t._redefineProperty=Object.defineProperty,t.patchCallbacks=Mt,t.getGlobalObjects=()=>({globalSources:st,zoneSymbolEventNames:ne,eventNames:c,isBrowser:Be,isMix:rt,isNode:Se,TRUE_STR:ae,FALSE_STR:le,ZONE_SYMBOL_PREFIX:Pe,ADD_EVENT_LISTENER_STR:He,REMOVE_EVENT_LISTENER_STR:xe})})}function At(e){Lt(e),It(e),Zt(e)}var ft=_t();At(ft);Nt(ft); diff --git a/styles-A7ZVGL7U.css b/styles-A7ZVGL7U.css new file mode 100644 index 0000000..9afaa69 --- /dev/null +++ b/styles-A7ZVGL7U.css @@ -0,0 +1 @@ +.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0);background-color:var(--mat-ripple-color, rgba(0, 0, 0, .1))}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-app-background{background-color:var(--mat-app-background-color, transparent);color:var(--mat-app-text-color, inherit)}html{--mat-ripple-color: rgba(0, 0, 0, .1)}html{--mat-option-selected-state-label-text-color: #3f51b5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #ff4081;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-warn{--mat-option-selected-state-label-text-color: #f44336;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}.mat-primary{--mat-full-pseudo-checkbox-selected-icon-color: #3f51b5;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color: #3f51b5;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}html,.mat-accent{--mat-full-pseudo-checkbox-selected-icon-color: #ff4081;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color: #ff4081;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}.mat-warn{--mat-full-pseudo-checkbox-selected-icon-color: #f44336;--mat-full-pseudo-checkbox-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color: #fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color: #b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color: #b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color: #f44336;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color: #b0b0b0}html{--mat-app-background-color: #fafafa;--mat-app-text-color: rgba(0, 0, 0, .87)}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}html{--mat-option-label-text-font: Roboto, sans-serif;--mat-option-label-text-line-height: 24px;--mat-option-label-text-size: 16px;--mat-option-label-text-tracking: .03125em;--mat-option-label-text-weight: 400}html{--mat-optgroup-label-text-font: Roboto, sans-serif;--mat-optgroup-label-text-line-height: 24px;--mat-optgroup-label-text-size: 16px;--mat-optgroup-label-text-tracking: .03125em;--mat-optgroup-label-text-weight: 400}html{--mdc-elevated-card-container-shape: 4px;--mdc-outlined-card-container-shape: 4px;--mdc-outlined-card-outline-width: 1px}html{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}html{--mat-card-title-text-font: Roboto, sans-serif;--mat-card-title-text-line-height: 32px;--mat-card-title-text-size: 20px;--mat-card-title-text-tracking: .0125em;--mat-card-title-text-weight: 500;--mat-card-subtitle-text-font: Roboto, sans-serif;--mat-card-subtitle-text-line-height: 22px;--mat-card-subtitle-text-size: 14px;--mat-card-subtitle-text-tracking: .0071428571em;--mat-card-subtitle-text-weight: 500}html{--mdc-linear-progress-active-indicator-height: 4px;--mdc-linear-progress-track-height: 4px;--mdc-linear-progress-track-shape: 0}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5;--mdc-linear-progress-track-color: rgba(63, 81, 181, .25)}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081;--mdc-linear-progress-track-color: rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}html{--mdc-plain-tooltip-container-shape: 4px;--mdc-plain-tooltip-supporting-text-line-height: 16px}html{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-plain-tooltip-supporting-text-font: Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size: 12px;--mdc-plain-tooltip-supporting-text-weight: 400;--mdc-plain-tooltip-supporting-text-tracking: .0333333333em}html{--mdc-filled-text-field-active-indicator-height: 1px;--mdc-filled-text-field-focus-active-indicator-height: 2px;--mdc-filled-text-field-container-shape: 4px;--mdc-outlined-text-field-outline-width: 1px;--mdc-outlined-text-field-focus-outline-width: 2px;--mdc-outlined-text-field-container-shape: 4px}html{--mdc-filled-text-field-caret-color: #3f51b5;--mdc-filled-text-field-focus-active-indicator-color: #3f51b5;--mdc-filled-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color: whitesmoke;--mdc-filled-text-field-disabled-container-color: #fafafa;--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-hover-label-text-color: #f44336;--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336;--mdc-outlined-text-field-caret-color: #3f51b5;--mdc-outlined-text-field-focus-outline-color: #3f51b5;--mdc-outlined-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-hover-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-error-hover-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336;--mat-form-field-focus-select-arrow-color: rgba(63, 81, 181, .87);--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38);--mat-form-field-state-layer-color: rgba(0, 0, 0, .87);--mat-form-field-error-text-color: #f44336;--mat-form-field-select-option-text-color: inherit;--mat-form-field-select-disabled-option-text-color: GrayText;--mat-form-field-leading-icon-color: unset;--mat-form-field-disabled-leading-icon-color: unset;--mat-form-field-trailing-icon-color: unset;--mat-form-field-disabled-trailing-icon-color: unset;--mat-form-field-error-focus-trailing-icon-color: unset;--mat-form-field-error-hover-trailing-icon-color: unset;--mat-form-field-error-trailing-icon-color: unset;--mat-form-field-enabled-select-arrow-color: rgba(0, 0, 0, .54);--mat-form-field-disabled-select-arrow-color: rgba(0, 0, 0, .38);--mat-form-field-hover-state-layer-opacity: .04;--mat-form-field-focus-state-layer-opacity: .08}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #ff4081;--mdc-filled-text-field-focus-active-indicator-color: #ff4081;--mdc-filled-text-field-focus-label-text-color: rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color: #ff4081;--mdc-outlined-text-field-focus-outline-color: #ff4081;--mdc-outlined-text-field-focus-label-text-color: rgba(255, 64, 129, .87);--mat-form-field-focus-select-arrow-color: rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87);--mat-form-field-focus-select-arrow-color: rgba(244, 67, 54, .87)}html{--mat-form-field-container-height: 56px;--mat-form-field-filled-label-display: block;--mat-form-field-container-vertical-padding: 16px;--mat-form-field-filled-with-label-container-padding-top: 24px;--mat-form-field-filled-with-label-container-padding-bottom: 8px}html{--mdc-filled-text-field-label-text-font: Roboto, sans-serif;--mdc-filled-text-field-label-text-size: 16px;--mdc-filled-text-field-label-text-tracking: .03125em;--mdc-filled-text-field-label-text-weight: 400;--mdc-outlined-text-field-label-text-font: Roboto, sans-serif;--mdc-outlined-text-field-label-text-size: 16px;--mdc-outlined-text-field-label-text-tracking: .03125em;--mdc-outlined-text-field-label-text-weight: 400;--mat-form-field-container-text-font: Roboto, sans-serif;--mat-form-field-container-text-line-height: 24px;--mat-form-field-container-text-size: 16px;--mat-form-field-container-text-tracking: .03125em;--mat-form-field-container-text-weight: 400;--mat-form-field-outlined-label-text-populated-size: 16px;--mat-form-field-subscript-text-font: Roboto, sans-serif;--mat-form-field-subscript-text-line-height: 20px;--mat-form-field-subscript-text-size: 12px;--mat-form-field-subscript-text-tracking: .0333333333em;--mat-form-field-subscript-text-weight: 400}html{--mat-select-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-select-arrow-transform: translateY(-8px)}html{--mat-select-trigger-text-font: Roboto, sans-serif;--mat-select-trigger-text-line-height: 24px;--mat-select-trigger-text-size: 16px;--mat-select-trigger-text-tracking: .03125em;--mat-select-trigger-text-weight: 400}html{--mat-autocomplete-container-shape: 4px;--mat-autocomplete-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-autocomplete-background-color: white}html{--mdc-dialog-container-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mdc-dialog-container-shadow-color: #000;--mdc-dialog-container-shape: 4px;--mat-dialog-container-max-width: 80vw;--mat-dialog-container-small-max-width: 80vw;--mat-dialog-container-min-width: 0;--mat-dialog-actions-alignment: start;--mat-dialog-actions-padding: 8px;--mat-dialog-content-padding: 20px 24px;--mat-dialog-with-actions-content-padding: 20px 24px;--mat-dialog-headline-padding: 0 24px 9px}html{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}html{--mdc-dialog-subhead-font: Roboto, sans-serif;--mdc-dialog-subhead-line-height: 32px;--mdc-dialog-subhead-size: 20px;--mdc-dialog-subhead-weight: 500;--mdc-dialog-subhead-tracking: .0125em;--mdc-dialog-supporting-text-font: Roboto, sans-serif;--mdc-dialog-supporting-text-line-height: 24px;--mdc-dialog-supporting-text-size: 16px;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-tracking: .03125em}.mat-mdc-standard-chip{--mdc-chip-container-shape-family: rounded;--mdc-chip-container-shape-radius: 16px 16px 16px 16px;--mdc-chip-with-avatar-avatar-shape-family: rounded;--mdc-chip-with-avatar-avatar-shape-radius: 14px 14px 14px 14px;--mdc-chip-with-avatar-avatar-size: 28px;--mdc-chip-with-icon-icon-size: 18px;--mdc-chip-outline-width: 0;--mdc-chip-outline-color: transparent;--mdc-chip-disabled-outline-color: transparent;--mdc-chip-focus-outline-color: transparent;--mdc-chip-hover-state-layer-opacity: .04;--mdc-chip-with-avatar-disabled-avatar-opacity: 1;--mdc-chip-flat-selected-outline-width: 0;--mdc-chip-selected-hover-state-layer-opacity: .04;--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity: 1;--mdc-chip-with-icon-disabled-icon-opacity: 1;--mat-chip-disabled-container-opacity: .4;--mat-chip-trailing-action-opacity: .54;--mat-chip-trailing-action-focus-opacity: 1;--mat-chip-trailing-action-state-layer-color: transparent;--mat-chip-selected-trailing-action-state-layer-color: transparent;--mat-chip-trailing-action-hover-state-layer-opacity: 0;--mat-chip-trailing-action-focus-state-layer-opacity: 0}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-selected-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-flat-disabled-selected-container-color: #e0e0e0;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-selected-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mat-chip-selected-disabled-trailing-icon-color: #212121;--mat-chip-selected-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-selected-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-flat-disabled-selected-container-color: #3f51b5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-selected-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-flat-disabled-selected-container-color: #ff4081;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-selected-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-flat-disabled-selected-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-hover-state-layer-color: black;--mdc-chip-selected-hover-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-selected-focus-state-layer-color: black;--mdc-chip-selected-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-selected-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mat-chip-selected-disabled-trailing-icon-color: white;--mat-chip-selected-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}.mat-mdc-standard-chip{--mdc-chip-label-text-font: Roboto, sans-serif;--mdc-chip-label-text-line-height: 20px;--mdc-chip-label-text-size: 14px;--mdc-chip-label-text-tracking: .0178571429em;--mdc-chip-label-text-weight: 400}html{--mdc-switch-disabled-selected-icon-opacity: .38;--mdc-switch-disabled-track-opacity: .12;--mdc-switch-disabled-unselected-icon-opacity: .38;--mdc-switch-handle-height: 20px;--mdc-switch-handle-shape: 10px;--mdc-switch-handle-width: 20px;--mdc-switch-selected-icon-size: 18px;--mdc-switch-track-height: 14px;--mdc-switch-track-shape: 7px;--mdc-switch-track-width: 36px;--mdc-switch-unselected-icon-size: 18px;--mdc-switch-selected-focus-state-layer-opacity: .12;--mdc-switch-selected-hover-state-layer-opacity: .04;--mdc-switch-selected-pressed-state-layer-opacity: .1;--mdc-switch-unselected-focus-state-layer-opacity: .12;--mdc-switch-unselected-hover-state-layer-opacity: .04;--mdc-switch-unselected-pressed-state-layer-opacity: .1;--mat-switch-disabled-selected-handle-opacity: .38;--mat-switch-disabled-unselected-handle-opacity: .38;--mat-switch-unselected-handle-size: 20px;--mat-switch-selected-handle-size: 20px;--mat-switch-pressed-handle-size: 20px;--mat-switch-with-icon-handle-size: 20px;--mat-switch-selected-handle-horizontal-margin: 0;--mat-switch-selected-with-icon-handle-horizontal-margin: 0;--mat-switch-selected-pressed-handle-horizontal-margin: 0;--mat-switch-unselected-handle-horizontal-margin: 0;--mat-switch-unselected-with-icon-handle-horizontal-margin: 0;--mat-switch-unselected-pressed-handle-horizontal-margin: 0;--mat-switch-visible-track-opacity: 1;--mat-switch-hidden-track-opacity: 1;--mat-switch-visible-track-transition: transform 75ms 0ms cubic-bezier(0, 0, .2, 1);--mat-switch-hidden-track-transition: transform 75ms 0ms cubic-bezier(.4, 0, .6, 1);--mat-switch-track-outline-width: 1px;--mat-switch-track-outline-color: transparent;--mat-switch-selected-track-outline-width: 1px;--mat-switch-disabled-unselected-track-outline-width: 1px;--mat-switch-disabled-unselected-track-outline-color: transparent}html{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color: black;--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-disabled-label-text-color: rgba(0, 0, 0, .38)}html .mat-mdc-slide-toggle{--mdc-form-field-label-text-color: rgba(0, 0, 0, .87)}html .mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}html .mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}html{--mdc-switch-state-layer-size: 40px}html .mat-mdc-slide-toggle{--mdc-form-field-label-text-font: Roboto, sans-serif;--mdc-form-field-label-text-line-height: 20px;--mdc-form-field-label-text-size: 14px;--mdc-form-field-label-text-tracking: .0178571429em;--mdc-form-field-label-text-weight: 400}html{--mdc-radio-disabled-selected-icon-opacity: .38;--mdc-radio-disabled-unselected-icon-opacity: .38;--mdc-radio-state-layer-size: 40px}.mat-mdc-radio-button{--mdc-form-field-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #3f51b5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #ff4081;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-radio-ripple-color: black;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}html{--mdc-radio-state-layer-size: 40px;--mat-radio-touch-target-display: block}.mat-mdc-radio-button{--mdc-form-field-label-text-font: Roboto, sans-serif;--mdc-form-field-label-text-line-height: 20px;--mdc-form-field-label-text-size: 14px;--mdc-form-field-label-text-tracking: .0178571429em;--mdc-form-field-label-text-weight: 400}html{--mat-slider-value-indicator-width: auto;--mat-slider-value-indicator-height: 32px;--mat-slider-value-indicator-caret-display: block;--mat-slider-value-indicator-border-radius: 4px;--mat-slider-value-indicator-padding: 0 12px;--mat-slider-value-indicator-text-transform: none;--mat-slider-value-indicator-container-transform: translateX(-50%);--mdc-slider-active-track-height: 6px;--mdc-slider-active-track-shape: 9999px;--mdc-slider-handle-height: 20px;--mdc-slider-handle-shape: 50%;--mdc-slider-handle-width: 20px;--mdc-slider-inactive-track-height: 4px;--mdc-slider-inactive-track-shape: 9999px;--mdc-slider-with-overlap-handle-outline-width: 1px;--mdc-slider-with-tick-marks-active-container-opacity: .6;--mdc-slider-with-tick-marks-container-shape: 50%;--mdc-slider-with-tick-marks-container-size: 2px;--mdc-slider-with-tick-marks-inactive-container-opacity: .6}html{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: white;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-label-container-color: #000;--mdc-slider-label-label-text-color: #fff;--mdc-slider-with-overlap-handle-outline-color: #fff;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mdc-slider-handle-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-slider-ripple-color: #3f51b5;--mat-slider-hover-state-layer-color: rgba(63, 81, 181, .05);--mat-slider-focus-state-layer-color: rgba(63, 81, 181, .2);--mat-slider-value-indicator-opacity: .6}html .mat-accent{--mat-slider-ripple-color: #ff4081;--mat-slider-hover-state-layer-color: rgba(255, 64, 129, .05);--mat-slider-focus-state-layer-color: rgba(255, 64, 129, .2);--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: white}html .mat-warn{--mat-slider-ripple-color: #f44336;--mat-slider-hover-state-layer-color: rgba(244, 67, 54, .05);--mat-slider-focus-state-layer-color: rgba(244, 67, 54, .2);--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: white}html{--mdc-slider-label-label-text-font: Roboto, sans-serif;--mdc-slider-label-label-text-size: 14px;--mdc-slider-label-label-text-line-height: 22px;--mdc-slider-label-label-text-tracking: .0071428571em;--mdc-slider-label-label-text-weight: 500}html{--mat-menu-container-shape: 4px;--mat-menu-divider-bottom-spacing: 0;--mat-menu-divider-top-spacing: 0;--mat-menu-item-spacing: 16px;--mat-menu-item-icon-size: 24px;--mat-menu-item-leading-spacing: 16px;--mat-menu-item-trailing-spacing: 16px;--mat-menu-item-with-icon-leading-spacing: 16px;--mat-menu-item-with-icon-trailing-spacing: 16px}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white;--mat-menu-divider-color: rgba(0, 0, 0, .12)}html{--mat-menu-item-label-text-font: Roboto, sans-serif;--mat-menu-item-label-text-size: 16px;--mat-menu-item-label-text-tracking: .03125em;--mat-menu-item-label-text-line-height: 24px;--mat-menu-item-label-text-weight: 400}html{--mdc-list-list-item-container-shape: 0;--mdc-list-list-item-leading-avatar-shape: 50%;--mdc-list-list-item-container-color: transparent;--mdc-list-list-item-selected-container-color: transparent;--mdc-list-list-item-leading-avatar-color: transparent;--mdc-list-list-item-leading-icon-size: 24px;--mdc-list-list-item-leading-avatar-size: 40px;--mdc-list-list-item-trailing-icon-size: 24px;--mdc-list-list-item-disabled-state-layer-color: transparent;--mdc-list-list-item-disabled-state-layer-opacity: 0;--mdc-list-list-item-disabled-label-text-opacity: .38;--mdc-list-list-item-disabled-leading-icon-opacity: .38;--mdc-list-list-item-disabled-trailing-icon-opacity: .38;--mat-list-active-indicator-color: transparent;--mat-list-active-indicator-shape: 4px}html{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: black;--mdc-radio-disabled-unselected-icon-color: black;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}html{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px;--mat-list-list-item-leading-icon-start-space: 16px;--mat-list-list-item-leading-icon-end-space: 32px}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-state-layer-size: 40px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mdc-list-list-item-label-text-font: Roboto, sans-serif;--mdc-list-list-item-label-text-line-height: 24px;--mdc-list-list-item-label-text-size: 16px;--mdc-list-list-item-label-text-tracking: .03125em;--mdc-list-list-item-label-text-weight: 400;--mdc-list-list-item-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height: 20px;--mdc-list-list-item-supporting-text-size: 14px;--mdc-list-list-item-supporting-text-tracking: .0178571429em;--mdc-list-list-item-supporting-text-weight: 400;--mdc-list-list-item-trailing-supporting-text-font: Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height: 20px;--mdc-list-list-item-trailing-supporting-text-size: 12px;--mdc-list-list-item-trailing-supporting-text-tracking: .0333333333em;--mdc-list-list-item-trailing-supporting-text-weight: 400}.mdc-list-group__subheader{font:400 16px/28px Roboto,sans-serif;letter-spacing:.009375em}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px;--mat-paginator-form-field-container-height: 40px;--mat-paginator-form-field-container-vertical-padding: 8px}html{--mat-paginator-container-text-font: Roboto, sans-serif;--mat-paginator-container-text-line-height: 20px;--mat-paginator-container-text-size: 12px;--mat-paginator-container-text-tracking: .0333333333em;--mat-paginator-container-text-weight: 400;--mat-paginator-select-trigger-text-size: 12px}html{--mdc-tab-indicator-active-indicator-height: 2px;--mdc-tab-indicator-active-indicator-shape: 0;--mdc-secondary-navigation-tab-container-height: 48px;--mat-tab-header-divider-color: transparent;--mat-tab-header-divider-height: 0}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #3f51b5;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #3f51b5;--mat-tab-header-active-ripple-color: #3f51b5;--mat-tab-header-inactive-ripple-color: #3f51b5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #3f51b5;--mat-tab-header-active-hover-label-text-color: #3f51b5;--mat-tab-header-active-focus-indicator-color: #3f51b5;--mat-tab-header-active-hover-indicator-color: #3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #ff4081;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #ff4081;--mat-tab-header-active-ripple-color: #ff4081;--mat-tab-header-inactive-ripple-color: #ff4081;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #ff4081;--mat-tab-header-active-hover-label-text-color: #ff4081;--mat-tab-header-active-focus-indicator-color: #ff4081;--mat-tab-header-active-hover-indicator-color: #ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: black;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #3f51b5;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #ff4081;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}.mat-mdc-tab-header{--mat-tab-header-label-text-font: Roboto, sans-serif;--mat-tab-header-label-text-size: 14px;--mat-tab-header-label-text-tracking: .0892857143em;--mat-tab-header-label-text-line-height: 36px;--mat-tab-header-label-text-weight: 500}html{--mdc-checkbox-disabled-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-state-layer-opacity: .16;--mdc-checkbox-selected-hover-state-layer-opacity: .04;--mdc-checkbox-selected-pressed-state-layer-opacity: .16;--mdc-checkbox-unselected-focus-state-layer-opacity: .16;--mdc-checkbox-unselected-hover-state-layer-opacity: .04;--mdc-checkbox-unselected-pressed-state-layer-opacity: .16}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black;--mat-checkbox-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-checkbox{--mdc-form-field-label-text-color: rgba(0, 0, 0, .87)}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: white;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}html{--mdc-checkbox-state-layer-size: 40px;--mat-checkbox-touch-target-display: block}.mat-mdc-checkbox{--mdc-form-field-label-text-font: Roboto, sans-serif;--mdc-form-field-label-text-line-height: 20px;--mdc-form-field-label-text-size: 14px;--mdc-form-field-label-text-tracking: .0178571429em;--mdc-form-field-label-text-weight: 400}html{--mdc-text-button-container-shape: 4px;--mdc-text-button-keep-touch-target: false;--mdc-filled-button-container-shape: 4px;--mdc-filled-button-keep-touch-target: false;--mdc-protected-button-container-shape: 4px;--mdc-protected-button-keep-touch-target: false;--mdc-outlined-button-keep-touch-target: false;--mdc-outlined-button-outline-width: 1px;--mdc-outlined-button-container-shape: 4px;--mat-text-button-horizontal-padding: 8px;--mat-text-button-with-icon-horizontal-padding: 8px;--mat-text-button-icon-spacing: 8px;--mat-text-button-icon-offset: 0;--mat-filled-button-horizontal-padding: 16px;--mat-filled-button-icon-spacing: 8px;--mat-filled-button-icon-offset: -4px;--mat-protected-button-horizontal-padding: 16px;--mat-protected-button-icon-spacing: 8px;--mat-protected-button-icon-offset: -4px;--mat-outlined-button-horizontal-padding: 15px;--mat-outlined-button-icon-spacing: 8px;--mat-outlined-button-icon-offset: -4px}html{--mdc-text-button-label-text-color: black;--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mat-text-button-state-layer-color: black;--mat-text-button-disabled-state-layer-color: black;--mat-text-button-ripple-color: rgba(0, 0, 0, .1);--mat-text-button-hover-state-layer-opacity: .04;--mat-text-button-focus-state-layer-opacity: .12;--mat-text-button-pressed-state-layer-opacity: .12;--mdc-filled-button-container-color: white;--mdc-filled-button-label-text-color: black;--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mat-filled-button-state-layer-color: black;--mat-filled-button-disabled-state-layer-color: black;--mat-filled-button-ripple-color: rgba(0, 0, 0, .1);--mat-filled-button-hover-state-layer-opacity: .04;--mat-filled-button-focus-state-layer-opacity: .12;--mat-filled-button-pressed-state-layer-opacity: .12;--mdc-protected-button-container-color: white;--mdc-protected-button-label-text-color: black;--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation-shadow: 0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-protected-button-container-shadow-color: #000;--mat-protected-button-state-layer-color: black;--mat-protected-button-disabled-state-layer-color: black;--mat-protected-button-ripple-color: rgba(0, 0, 0, .1);--mat-protected-button-hover-state-layer-opacity: .04;--mat-protected-button-focus-state-layer-opacity: .12;--mat-protected-button-pressed-state-layer-opacity: .12;--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-label-text-color: black;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color: black;--mat-outlined-button-disabled-state-layer-color: black;--mat-outlined-button-ripple-color: rgba(0, 0, 0, .1);--mat-outlined-button-hover-state-layer-opacity: .04;--mat-outlined-button-focus-state-layer-opacity: .12;--mat-outlined-button-pressed-state-layer-opacity: .12}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5;--mat-text-button-state-layer-color: #3f51b5;--mat-text-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081;--mat-text-button-state-layer-color: #ff4081;--mat-text-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336;--mat-text-button-state-layer-color: #f44336;--mat-text-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: white;--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: white;--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: white;--mat-filled-button-state-layer-color: white;--mat-filled-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: white;--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: white;--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: white;--mat-protected-button-state-layer-color: white;--mat-protected-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color: #3f51b5;--mat-outlined-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color: #ff4081;--mat-outlined-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336;--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color: #f44336;--mat-outlined-button-ripple-color: rgba(244, 67, 54, .1)}html{--mdc-text-button-container-height: 36px;--mdc-filled-button-container-height: 36px;--mdc-outlined-button-container-height: 36px;--mdc-protected-button-container-height: 36px;--mat-text-button-touch-target-display: block;--mat-filled-button-touch-target-display: block;--mat-protected-button-touch-target-display: block;--mat-outlined-button-touch-target-display: block}html{--mdc-text-button-label-text-font: Roboto, sans-serif;--mdc-text-button-label-text-size: 14px;--mdc-text-button-label-text-tracking: .0892857143em;--mdc-text-button-label-text-weight: 500;--mdc-text-button-label-text-transform: none;--mdc-filled-button-label-text-font: Roboto, sans-serif;--mdc-filled-button-label-text-size: 14px;--mdc-filled-button-label-text-tracking: .0892857143em;--mdc-filled-button-label-text-weight: 500;--mdc-filled-button-label-text-transform: none;--mdc-outlined-button-label-text-font: Roboto, sans-serif;--mdc-outlined-button-label-text-size: 14px;--mdc-outlined-button-label-text-tracking: .0892857143em;--mdc-outlined-button-label-text-weight: 500;--mdc-outlined-button-label-text-transform: none;--mdc-protected-button-label-text-font: Roboto, sans-serif;--mdc-protected-button-label-text-size: 14px;--mdc-protected-button-label-text-tracking: .0892857143em;--mdc-protected-button-label-text-weight: 500;--mdc-protected-button-label-text-transform: none}html{--mdc-icon-button-icon-size: 24px}html{--mdc-icon-button-icon-color: inherit;--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38);--mat-icon-button-state-layer-color: black;--mat-icon-button-disabled-state-layer-color: black;--mat-icon-button-ripple-color: rgba(0, 0, 0, .1);--mat-icon-button-hover-state-layer-opacity: .04;--mat-icon-button-focus-state-layer-opacity: .12;--mat-icon-button-pressed-state-layer-opacity: .12}html .mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5;--mat-icon-button-state-layer-color: #3f51b5;--mat-icon-button-ripple-color: rgba(63, 81, 181, .1)}html .mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081;--mat-icon-button-state-layer-color: #ff4081;--mat-icon-button-ripple-color: rgba(255, 64, 129, .1)}html .mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336;--mat-icon-button-state-layer-color: #f44336;--mat-icon-button-ripple-color: rgba(244, 67, 54, .1)}html{--mat-icon-button-touch-target-display: block}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}html{--mdc-fab-container-shape: 50%;--mdc-fab-icon-size: 24px;--mdc-fab-small-container-shape: 50%;--mdc-fab-small-icon-size: 24px;--mdc-extended-fab-container-height: 48px;--mdc-extended-fab-container-shape: 24px}html{--mdc-fab-container-color: white;--mdc-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-fab-container-shadow-color: #000;--mat-fab-foreground-color: black;--mat-fab-state-layer-color: black;--mat-fab-disabled-state-layer-color: black;--mat-fab-ripple-color: rgba(0, 0, 0, .1);--mat-fab-hover-state-layer-opacity: .04;--mat-fab-focus-state-layer-opacity: .12;--mat-fab-pressed-state-layer-opacity: .12;--mat-fab-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-disabled-state-foreground-color: rgba(0, 0, 0, .38);--mdc-fab-small-container-color: white;--mdc-fab-small-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-fab-small-container-shadow-color: #000;--mat-fab-small-foreground-color: black;--mat-fab-small-state-layer-color: black;--mat-fab-small-disabled-state-layer-color: black;--mat-fab-small-ripple-color: rgba(0, 0, 0, .1);--mat-fab-small-hover-state-layer-opacity: .04;--mat-fab-small-focus-state-layer-opacity: .12;--mat-fab-small-pressed-state-layer-opacity: .12;--mat-fab-small-disabled-state-container-color: rgba(0, 0, 0, .12);--mat-fab-small-disabled-state-foreground-color: rgba(0, 0, 0, .38);--mdc-extended-fab-container-elevation-shadow: 0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow: 0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow: 0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-extended-fab-container-shadow-color: #000}html .mat-mdc-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-fab.mat-warn{--mdc-fab-container-color: #f44336;--mat-fab-foreground-color: white;--mat-fab-state-layer-color: white;--mat-fab-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-primary{--mdc-fab-small-container-color: #3f51b5;--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-accent{--mdc-fab-small-container-color: #ff4081;--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-warn{--mdc-fab-small-container-color: #f44336;--mat-fab-small-foreground-color: white;--mat-fab-small-state-layer-color: white;--mat-fab-small-ripple-color: rgba(255, 255, 255, .1)}html{--mat-fab-touch-target-display: block;--mat-fab-small-touch-target-display: block}html{--mdc-extended-fab-label-text-font: Roboto, sans-serif;--mdc-extended-fab-label-text-size: 14px;--mdc-extended-fab-label-text-tracking: .0892857143em;--mdc-extended-fab-label-text-weight: 500}html{--mdc-snackbar-container-shape: 4px}html{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87);--mat-snack-bar-button-color: #ff4081}html{--mdc-snackbar-supporting-text-font: Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height: 20px;--mdc-snackbar-supporting-text-size: 14px;--mdc-snackbar-supporting-text-weight: 400}html{--mat-table-row-item-outline-width: 1px}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}html{--mat-table-header-headline-font: Roboto, sans-serif;--mat-table-header-headline-line-height: 22px;--mat-table-header-headline-size: 14px;--mat-table-header-headline-weight: 500;--mat-table-header-headline-tracking: .0071428571em;--mat-table-row-item-label-text-font: Roboto, sans-serif;--mat-table-row-item-label-text-line-height: 20px;--mat-table-row-item-label-text-size: 14px;--mat-table-row-item-label-text-weight: 400;--mat-table-row-item-label-text-tracking: .0178571429em;--mat-table-footer-supporting-text-font: Roboto, sans-serif;--mat-table-footer-supporting-text-line-height: 20px;--mat-table-footer-supporting-text-size: 14px;--mat-table-footer-supporting-text-weight: 400;--mat-table-footer-supporting-text-tracking: .0178571429em}html{--mdc-circular-progress-active-indicator-width: 4px;--mdc-circular-progress-size: 48px}html{--mdc-circular-progress-active-indicator-color: #3f51b5}html .mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}html .mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}html{--mat-badge-container-shape: 50%;--mat-badge-container-size: unset;--mat-badge-small-size-container-size: unset;--mat-badge-large-size-container-size: unset;--mat-badge-legacy-container-size: 22px;--mat-badge-legacy-small-size-container-size: 16px;--mat-badge-legacy-large-size-container-size: 28px;--mat-badge-container-offset: -11px 0;--mat-badge-small-size-container-offset: -8px 0;--mat-badge-large-size-container-offset: -14px 0;--mat-badge-container-overlap-offset: -11px;--mat-badge-small-size-container-overlap-offset: -8px;--mat-badge-large-size-container-overlap-offset: -14px;--mat-badge-container-padding: 0;--mat-badge-small-size-container-padding: 0;--mat-badge-large-size-container-padding: 0}html{--mat-badge-background-color: #3f51b5;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #ff4081;--mat-badge-text-color: white}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-badge-text-font: Roboto, sans-serif;--mat-badge-text-size: 12px;--mat-badge-text-weight: 600;--mat-badge-small-size-text-size: 9px;--mat-badge-large-size-text-size: 24px}html{--mat-bottom-sheet-container-shape: 4px}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-bottom-sheet-container-text-font: Roboto, sans-serif;--mat-bottom-sheet-container-text-line-height: 20px;--mat-bottom-sheet-container-text-size: 14px;--mat-bottom-sheet-container-text-tracking: .0178571429em;--mat-bottom-sheet-container-text-weight: 400}html{--mat-legacy-button-toggle-height: 36px;--mat-legacy-button-toggle-shape: 2px;--mat-legacy-button-toggle-focus-state-layer-opacity: 1;--mat-standard-button-toggle-shape: 4px;--mat-standard-button-toggle-hover-state-layer-opacity: .04;--mat-standard-button-toggle-focus-state-layer-opacity: .12}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: #e0e0e0}html{--mat-standard-button-toggle-height: 48px}html{--mat-legacy-button-toggle-label-text-font: Roboto, sans-serif;--mat-legacy-button-toggle-label-text-line-height: 24px;--mat-legacy-button-toggle-label-text-size: 16px;--mat-legacy-button-toggle-label-text-tracking: .03125em;--mat-legacy-button-toggle-label-text-weight: 400;--mat-standard-button-toggle-label-text-font: Roboto, sans-serif;--mat-standard-button-toggle-label-text-line-height: 24px;--mat-standard-button-toggle-label-text-size: 16px;--mat-standard-button-toggle-label-text-tracking: .03125em;--mat-standard-button-toggle-label-text-weight: 400}html{--mat-datepicker-calendar-container-shape: 4px;--mat-datepicker-calendar-container-touch-shape: 4px;--mat-datepicker-calendar-container-elevation-shadow: 0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-container-touch-elevation-shadow: 0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color: #3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-text-color: black;--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls{--mat-icon-button-touch-target-display: none}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}html{--mat-datepicker-calendar-text-font: Roboto, sans-serif;--mat-datepicker-calendar-text-size: 13px;--mat-datepicker-calendar-body-label-text-size: 14px;--mat-datepicker-calendar-body-label-text-weight: 500;--mat-datepicker-calendar-period-button-text-size: 14px;--mat-datepicker-calendar-period-button-text-weight: 500;--mat-datepicker-calendar-header-text-size: 11px;--mat-datepicker-calendar-header-text-weight: 400}html{--mat-divider-width: 1px}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-shape: 4px;--mat-expansion-legacy-header-indicator-display: inline-block;--mat-expansion-header-indicator-display: none}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-expansion-header-text-font: Roboto, sans-serif;--mat-expansion-header-text-size: 14px;--mat-expansion-header-text-weight: 500;--mat-expansion-header-text-line-height: inherit;--mat-expansion-header-text-tracking: inherit;--mat-expansion-container-text-font: Roboto, sans-serif;--mat-expansion-container-text-line-height: 20px;--mat-expansion-container-text-size: 14px;--mat-expansion-container-text-tracking: .0178571429em;--mat-expansion-container-text-weight: 400}html{--mat-grid-list-tile-header-primary-text-size: 14px;--mat-grid-list-tile-header-secondary-text-size: 12px;--mat-grid-list-tile-footer-primary-text-size: 14px;--mat-grid-list-tile-footer-secondary-text-size: 12px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #3f51b5}.mat-icon.mat-accent{--mat-icon-color: #ff4081}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-shape: 0;--mat-sidenav-container-elevation-shadow: 0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-sidenav-container-width: auto}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #3f51b5;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #3f51b5;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #3f51b5;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #ff4081;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #ff4081;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #ff4081;--mat-stepper-header-edit-state-icon-foreground-color: white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}html{--mat-stepper-container-text-font: Roboto, sans-serif;--mat-stepper-header-label-text-font: Roboto, sans-serif;--mat-stepper-header-label-text-size: 14px;--mat-stepper-header-label-text-weight: 400;--mat-stepper-header-error-state-label-text-size: 16px;--mat-stepper-header-selected-state-label-text-size: 16px;--mat-stepper-header-selected-state-label-text-weight: 400}html{--mat-sort-arrow-color: #757575}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #3f51b5;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #ff4081;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}html{--mat-toolbar-title-text-font: Roboto, sans-serif;--mat-toolbar-title-text-line-height: 32px;--mat-toolbar-title-text-size: 20px;--mat-toolbar-title-text-tracking: .0125em;--mat-toolbar-title-text-weight: 500}html{--mat-tree-container-background-color: white;--mat-tree-node-text-color: rgba(0, 0, 0, .87)}html{--mat-tree-node-min-height: 48px}html{--mat-tree-node-text-font: Roboto, sans-serif;--mat-tree-node-text-size: 14px;--mat-tree-node-text-weight: 400}:root{--blue-500: #4285f4;--halftone-blue: #57caff;--pastel-blue: #c3ecf6;--green-500: #34a853;--halftone-green: #5cdb6d;--pastel-green: #ccf6c5;--yellow-600: #f9ab00;--halftone-yellow: #ffd427;--pastel-yellow: #ffe7a5;--red-500: #ea4335;--halftone-red: #ff7daf;--pastel-red: #f8d8d8;--off-white: #f0f0f0;--black-02: #1e1e1e;--default-transition-timing-function: cubic-bezier(0, .55, .45, 1)}html,body{height:100%}body{margin:0;font-family:Roboto,Helvetica Neue,sans-serif;background-color:var(--off-white)}.mat-mdc-card-header-text{flex:1}.max-width-constraint{margin:0 auto;max-width:1200px}.max-width-constraint-with-padding{margin:0 auto;max-width:1200px;padding:10px}a,a:visited{color:var(--blue-500);text-decoration:none;transition:color .75s var(--default-transition-timing-function)}a:hover{color:var(--green-500)}