From bc0c412f30e18f2069e1b9081f2f7728261c12ed Mon Sep 17 00:00:00 2001 From: Bojan Mojsilovic Date: Fri, 7 Jul 2023 16:14:22 +0200 Subject: [PATCH] Opening my eyes --- .gitignore | 2 + LICENSE | 21 + README.md | 16 + fonts-google.css | 181 ++ index.html | 24 + package-lock.json | 2298 +++++++++++++++++ package.json | 37 + ...V8cWW4O8LJCoXjCnwSRSaLshNP1d9-4mF9lp.woff2 | Bin 0 -> 23280 bytes ...V8cWW4O8LJCoXjCnwSRSaLshNP1d9-8mF9lp.woff2 | Bin 0 -> 60752 bytes ...RrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-EmFw.woff2 | Bin 0 -> 88080 bytes ...V8cWW4O8LJCoXjCnwSRSaLshNP1d9-ImF9lp.woff2 | Bin 0 -> 28864 bytes ...V8cWW4O8LJCoXjCnwSRSaLshNP1d9-UmF9lp.woff2 | Bin 0 -> 43764 bytes ...V8cWW4O8LJCoXjCnwSRSaLshNP1d9-wmF9lp.woff2 | Bin 0 -> 27452 bytes public/public/fonts.css | 180 ++ public/public/primal-thumbnail.png | Bin 0 -> 305309 bytes src/App.module.scss | 6 + src/App.tsx | 64 + src/Router.tsx | 91 + src/assets/favicon.ico | Bin 0 -> 8522 bytes src/assets/icons/attach_media.svg | 4 + src/assets/icons/back.svg | 3 + src/assets/icons/caret.svg | 3 + src/assets/icons/check-black.svg | 41 + src/assets/icons/check.svg | 3 + src/assets/icons/close.svg | 3 + src/assets/icons/context.svg | 5 + src/assets/icons/copy.svg | 3 + src/assets/icons/corner_left.svg | 3 + src/assets/icons/corner_right.svg | 3 + src/assets/icons/default_avatar.svg | 3 + src/assets/icons/default_nostrich.svg | 10 + src/assets/icons/delete.svg | 6 + src/assets/icons/download.svg | 4 + src/assets/icons/drag_handle.svg | 10 + src/assets/icons/edit.svg | 4 + src/assets/icons/explore.svg | 5 + src/assets/icons/explore/clock.svg | 3 + src/assets/icons/explore/flame.svg | 3 + src/assets/icons/explore/follows.svg | 8 + src/assets/icons/explore/global.svg | 3 + src/assets/icons/explore/likes.svg | 4 + src/assets/icons/explore/network.svg | 3 + src/assets/icons/explore/tribe.svg | 16 + src/assets/icons/explore/zaps.svg | 3 + src/assets/icons/explore/zaps_hollow.svg | 3 + src/assets/icons/feed_add.svg | 6 + src/assets/icons/feed_like.svg | 3 + src/assets/icons/feed_like_fill.svg | 3 + src/assets/icons/feed_picker.svg | 5 + src/assets/icons/feed_remove.svg | 6 + src/assets/icons/feed_reply.svg | 3 + src/assets/icons/feed_reply_fill.svg | 3 + src/assets/icons/feed_repost.svg | 4 + src/assets/icons/feed_repost_fill.svg | 4 + src/assets/icons/feed_zap.svg | 10 + src/assets/icons/feed_zap_fill.svg | 10 + src/assets/icons/follows.svg | 34 + src/assets/icons/follows_latest.svg | 46 + src/assets/icons/follows_latest_light.svg | 52 + src/assets/icons/follows_light.svg | 134 + src/assets/icons/follows_popular.svg | 47 + src/assets/icons/follows_popular_light.svg | 47 + src/assets/icons/follows_trending.svg | 47 + src/assets/icons/follows_trending_light.svg | 47 + src/assets/icons/forward.svg | 3 + src/assets/icons/get_started.svg | 15 + src/assets/icons/github.svg | 10 + src/assets/icons/github_light.svg | 10 + src/assets/icons/global.svg | 10 + src/assets/icons/global_latest.svg | 21 + src/assets/icons/global_latest_light.svg | 27 + src/assets/icons/global_light.svg | 9 + src/assets/icons/global_popular.svg | 29 + src/assets/icons/global_popular_light.svg | 22 + src/assets/icons/global_trending.svg | 22 + src/assets/icons/global_trending_light.svg | 22 + src/assets/icons/golbal_popular.svg | 22 + src/assets/icons/help.svg | 5 + src/assets/icons/home.svg | 4 + src/assets/icons/key.svg | 10 + src/assets/icons/like.svg | 3 + src/assets/icons/like_filled.svg | 4 + src/assets/icons/link.svg | 4 + src/assets/icons/logo.svg | 24 + src/assets/icons/logo_fire.svg | 24 + src/assets/icons/logo_ice.svg | 29 + src/assets/icons/messages.svg | 3 + src/assets/icons/miljan.jpg | Bin 0 -> 37744 bytes src/assets/icons/network.svg | 10 + src/assets/icons/network_latest.svg | 21 + src/assets/icons/network_latest_light.svg | 27 + src/assets/icons/network_light.svg | 9 + src/assets/icons/network_popular.svg | 22 + src/assets/icons/network_popular_light.svg | 22 + src/assets/icons/network_trending.svg | 22 + src/assets/icons/network_trending_light.svg | 22 + src/assets/icons/notifications.svg | 3 + src/assets/icons/notifications/at.svg | 3 + src/assets/icons/notifications/follows.svg | 6 + src/assets/icons/notifications/mention.svg | 6 + .../icons/notifications/mention_liked.svg | 5 + .../icons/notifications/mention_replied.svg | 5 + .../icons/notifications/mention_reposted.svg | 5 + .../icons/notifications/mention_zapped.svg | 5 + .../icons/notifications/mentioned_post.svg | 5 + .../notifications/mentioned_post_liked.svg | 4 + .../notifications/mentioned_post_replied.svg | 4 + .../notifications/mentioned_post_reposted.svg | 4 + .../notifications/mentioned_post_zapped.svg | 4 + src/assets/icons/notifications/post_liked.svg | 3 + .../icons/notifications/post_replied.svg | 3 + .../icons/notifications/post_reposted.svg | 3 + .../icons/notifications/post_zapped.svg | 13 + .../icons/notifications/user_followed.svg | 7 + .../icons/notifications/user_unfollowed.svg | 7 + src/assets/icons/old/download_filled.svg | 4 + src/assets/icons/old/downloads.svg | 6 + src/assets/icons/old/explore.svg | 6 + src/assets/icons/old/explore_filled.svg | 11 + src/assets/icons/old/help.svg | 5 + src/assets/icons/old/help_filled.svg | 10 + src/assets/icons/old/home-only.svg | 3 + src/assets/icons/old/home.svg | 14 + src/assets/icons/old/home_filled.svg | 3 + src/assets/icons/old/messages.svg | 10 + src/assets/icons/old/messages_filled.svg | 10 + src/assets/icons/old/notifications.svg | 11 + src/assets/icons/old/notifications_filled.svg | 4 + src/assets/icons/old/settings.svg | 4 + src/assets/icons/old/settings_filled.svg | 10 + src/assets/icons/post.svg | 4 + src/assets/icons/reply.svg | 3 + src/assets/icons/reply_filled.svg | 3 + src/assets/icons/reposts.svg | 3 + src/assets/icons/search.svg | 3 + src/assets/icons/search_filled.svg | 4 + src/assets/icons/settings.svg | 3 + src/assets/icons/tribe.svg | 74 + src/assets/icons/tribe_latest.svg | 71 + src/assets/icons/tribe_latest_light.svg | 77 + src/assets/icons/tribe_light.svg | 144 ++ src/assets/icons/tribe_popular.svg | 72 + src/assets/icons/tribe_popular_light.svg | 72 + src/assets/icons/tribe_trending.svg | 72 + src/assets/icons/tribe_trending_light.svg | 72 + src/assets/icons/verified.svg | 3 + src/assets/icons/zaps.svg | 3 + src/assets/icons/zaps_filled.svg | 3 + src/assets/lottie/like.json | 1 + src/assets/lottie/zap_md.json | 1 + src/assets/lottie/zap_sm.json | 1 + src/components/Avatar/Avatar.module.scss | 282 ++ src/components/Avatar/Avatar.tsx | 121 + src/components/Branding/Branding.module.scss | 53 + src/components/Branding/Branding.tsx | 45 + src/components/Checkbox/Checkbox.module.scss | 19 + src/components/Checkbox/Checkbox.tsx | 29 + .../CustomZap/CustomZap.module.scss | 142 + src/components/CustomZap/CustomZap.tsx | 156 ++ .../EmbeddedNote/EmbeddedNote.module.scss | 113 + src/components/EmbeddedNote/EmbeddedNote.tsx | 187 ++ .../ExploreMenuItem.module.scss | 170 ++ .../ExploreMenuItem/ExploreMenuItem.tsx | 85 + .../ExploreSidebar/ExploreSidebar.module.scss | 43 + .../ExploreSidebar/ExploreSidebar.tsx | 144 ++ src/components/FeedSelect/FeedSelect.tsx | 91 + .../FeedSorter/FeedSorter.module.scss | 148 ++ src/components/FeedSorter/FeedSorter.tsx | 179 ++ .../FloatingNewPostButton.module.scss | 34 + .../FloatingNewPostButton.tsx | 21 + .../FollowButton/FollowButton.module.scss | 57 + src/components/FollowButton/FollowButton.tsx | 57 + .../HomeHeader/HomeHeader.module.scss | 168 ++ src/components/HomeHeader/HomeHeader.tsx | 131 + .../HomeHeaderPhone.module.scss | 109 + .../HomeHeaderPhone/HomeHeaderPhone.tsx | 81 + .../HomeSidebar/HomeSidebar.module.scss | 59 + src/components/HomeSidebar/HomeSidebar.tsx | 208 ++ src/components/Layout/Layout.module.scss | 202 ++ src/components/Layout/Layout.tsx | 112 + .../LinkPreview/LinkPreview.module.scss | 23 + src/components/LinkPreview/LinkPreview.tsx | 36 + src/components/Loader/Loader.module.scss | 51 + src/components/Loader/Loader.tsx | 12 + .../MissingPage/MissingPage.module.scss | 21 + src/components/MissingPage/MissingPage.tsx | 51 + src/components/Modal/Modal.module.scss | 8 + src/components/Modal/Modal.tsx | 19 + src/components/NavLink/NavLink.module.scss | 148 ++ src/components/NavLink/NavLink.tsx | 51 + src/components/NavMenu/NavMenu.module.scss | 43 + src/components/NavMenu/NavMenu.tsx | 79 + .../NewNote/EditBox/EditBox.module.scss | 320 +++ src/components/NewNote/EditBox/EditBox.tsx | 1163 +++++++++ src/components/NewNote/NewNote.module.scss | 146 ++ src/components/NewNote/NewNote.tsx | 41 + .../NostrStats/NostrStats.module.scss | 33 + src/components/NostrStats/NostrStats.tsx | 45 + .../MentionedUserLink.module.scss | 39 + .../MentionedUserLink/MentionedUserLink.tsx | 26 + src/components/Note/Note.module.scss | 117 + src/components/Note/Note.tsx | 71 + .../Note/NoteFooter/NoteFooter.module.scss | 155 ++ src/components/Note/NoteFooter/NoteFooter.tsx | 430 +++ .../Note/NoteHeader/NoteHeader.module.scss | 157 ++ src/components/Note/NoteHeader/NoteHeader.tsx | 145 ++ .../Note/NotePrimary/NotePrimary.module.scss | 110 + .../Note/NotePrimary/NotePrimary.tsx | 33 + .../NotificationNote.module.scss | 101 + .../NotificationNote/NotificationNote.tsx | 41 + .../NotificationAvatar.module.scss | 165 ++ .../NotificationAvatar/NotificationAvatar.tsx | 62 + .../NotificationItem.module.scss | 93 + .../Notifications/NotificationItem.tsx | 195 ++ .../Notifications/NotificationItem2.tsx | 161 ++ .../NotificationsSidebar.module.scss | 90 + .../NotificationsSidebar.tsx | 375 +++ src/components/PageNav/PageNav.module.scss | 34 + src/components/PageNav/PageNav.tsx | 25 + src/components/PageTitle/PageTitle.tsx | 28 + .../Paginator/Paginator.module.scss | 17 + src/components/Paginator/Paginator.tsx | 34 + .../ParsedNote/ParsedNote.module.scss | 90 + src/components/ParsedNote/ParsedNote.tsx | 231 ++ .../PeopleList/PeopleList.module.scss | 179 ++ src/components/PeopleList/PeopleList.tsx | 56 + .../PostButton/PostButton.module.scss | 19 + src/components/PostButton/PostButton.tsx | 15 + .../ProfileSidebar/ProfileSidebar.module.scss | 38 + .../ProfileSidebar/ProfileSidebar.tsx | 47 + .../ProfileWidget/ProfileWidget.module.scss | 113 + .../ProfileWidget/ProfileWidget.tsx | 40 + .../ReplyToNote/ReplyToNote.module.scss | 175 ++ src/components/ReplyToNote/ReplyToNote.tsx | 136 + src/components/Search/Search.module.scss | 89 + src/components/Search/Search.tsx | 191 ++ .../Search/SearchOption.module.scss | 75 + src/components/Search/SearchOption.tsx | 80 + .../SearchSidebar/SearchSidebar.tsx | 21 + src/components/SelectBox/SelectBox.scss | 240 ++ src/components/SelectBox/SelectBox.tsx | 45 + .../SettingsNotifications.module.scss | 20 + .../SettingsNotifications.tsx | 176 ++ .../SettingsZap/SettingsZap.module.scss | 37 + src/components/SettingsZap/SettingsZap.tsx | 72 + .../SmallCallToAction.module.scss | 42 + .../SmallCallToAction/SmallCallToAction.tsx | 35 + .../SmallNote/SmallNote.module.scss | 85 + src/components/SmallNote/SmallNote.tsx | 107 + .../StickySidebar/StickySidebar.module.scss | 15 + .../StickySidebar/StickySidebar.tsx | 21 + .../ThemeChooser/ThemeChooser.module.scss | 6 + src/components/ThemeChooser/ThemeChooser.tsx | 31 + .../ThemeOption/ThemeOption.module.scss | 98 + .../ThemeChooser/ThemeOption/ThemeOption.tsx | 40 + src/components/Toaster/Toaster.module.scss | 50 + src/components/Toaster/Toaster.tsx | 68 + .../VerificationCheck.module.scss | 37 + .../VerificationCheck/VerificationCheck.tsx | 39 + src/components/Wormhole/Wormhole.tsx | 24 + src/constants.ts | 251 ++ src/contexts/AccountContext.tsx | 396 +++ src/contexts/ExploreContext.tsx | 371 +++ src/contexts/HomeContext.tsx | 522 ++++ src/contexts/MediaContext.tsx | 116 + src/contexts/MessagesContext.tsx | 816 ++++++ src/contexts/NotificationsContext.tsx | 131 + src/contexts/ProfileContext.tsx | 441 ++++ src/contexts/SearchContext.tsx | 413 +++ src/contexts/SettingsContext.tsx | 444 ++++ src/contexts/ThreadContext.tsx | 317 +++ src/contexts/TranslatorContext.tsx | 49 + src/formats.ts | 9 + src/index.scss | 462 ++++ src/index.tsx | 8 + src/lib/availableFeeds.ts | 69 + src/lib/dates.ts | 57 + src/lib/feed.ts | 224 ++ src/lib/keys.ts | 6 + src/lib/localStore.ts | 111 + src/lib/media.ts | 50 + src/lib/messages.ts | 96 + src/lib/notes.ts | 317 +++ src/lib/notifications.ts | 127 + src/lib/profile.ts | 123 + src/lib/relays.ts | 66 + src/lib/scroll.ts | 11 + src/lib/search.ts | 47 + src/lib/settings.ts | 68 + src/lib/stats.ts | 47 + src/lib/textArea.ts | 136 + src/lib/zap.ts | 86 + src/logo.svg | 1 + src/pages/Downloads.module.scss | 0 src/pages/Downloads.tsx | 14 + src/pages/Explore.module.scss | 175 ++ src/pages/Explore.tsx | 131 + src/pages/ExploreMenu.module.scss | 314 +++ src/pages/ExploreMenu.tsx | 45 + src/pages/Feed.module.scss | 3 + src/pages/Feed.tsx | 39 + src/pages/Help.module.scss | 0 src/pages/Help.tsx | 13 + src/pages/Home.module.scss | 135 + src/pages/Home.tsx | 230 ++ src/pages/Messages.module.scss | 427 +++ src/pages/Messages.tsx | 1141 ++++++++ src/pages/NotFound.module.scss | 3 + src/pages/NotFound.tsx | 21 + src/pages/Notifications.module.scss | 95 + src/pages/Notifications.tsx | 1154 +++++++++ src/pages/Profile.module.scss | 418 +++ src/pages/Profile.tsx | 404 +++ src/pages/Search.module.scss | 78 + src/pages/Search.tsx | 136 + src/pages/Settings.module.scss | 42 + src/pages/Settings.tsx | 74 + src/pages/Thread.module.scss | 61 + src/pages/Thread.tsx | 174 ++ src/services/StoreService.ts | 113 + src/sockets.tsx | 102 + src/stores/note.ts | 349 +++ src/stores/profile.ts | 96 + src/stores/trending.ts | 65 + src/translations.ts | 773 ++++++ src/types/primal.d.ts | 516 ++++ src/uploadSocket.tsx | 102 + src/utils.ts | 23 + tsconfig.json | 16 + vite.config.ts | 13 + 330 files changed, 29978 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 fonts-google.css create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-4mF9lp.woff2 create mode 100644 public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-8mF9lp.woff2 create mode 100644 public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-EmFw.woff2 create mode 100644 public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-ImF9lp.woff2 create mode 100644 public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-UmF9lp.woff2 create mode 100644 public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-wmF9lp.woff2 create mode 100644 public/public/fonts.css create mode 100644 public/public/primal-thumbnail.png create mode 100644 src/App.module.scss create mode 100644 src/App.tsx create mode 100644 src/Router.tsx create mode 100644 src/assets/favicon.ico create mode 100644 src/assets/icons/attach_media.svg create mode 100644 src/assets/icons/back.svg create mode 100644 src/assets/icons/caret.svg create mode 100644 src/assets/icons/check-black.svg create mode 100644 src/assets/icons/check.svg create mode 100644 src/assets/icons/close.svg create mode 100644 src/assets/icons/context.svg create mode 100644 src/assets/icons/copy.svg create mode 100644 src/assets/icons/corner_left.svg create mode 100644 src/assets/icons/corner_right.svg create mode 100644 src/assets/icons/default_avatar.svg create mode 100644 src/assets/icons/default_nostrich.svg create mode 100644 src/assets/icons/delete.svg create mode 100644 src/assets/icons/download.svg create mode 100644 src/assets/icons/drag_handle.svg create mode 100644 src/assets/icons/edit.svg create mode 100644 src/assets/icons/explore.svg create mode 100644 src/assets/icons/explore/clock.svg create mode 100644 src/assets/icons/explore/flame.svg create mode 100644 src/assets/icons/explore/follows.svg create mode 100644 src/assets/icons/explore/global.svg create mode 100644 src/assets/icons/explore/likes.svg create mode 100644 src/assets/icons/explore/network.svg create mode 100644 src/assets/icons/explore/tribe.svg create mode 100644 src/assets/icons/explore/zaps.svg create mode 100644 src/assets/icons/explore/zaps_hollow.svg create mode 100644 src/assets/icons/feed_add.svg create mode 100644 src/assets/icons/feed_like.svg create mode 100644 src/assets/icons/feed_like_fill.svg create mode 100644 src/assets/icons/feed_picker.svg create mode 100644 src/assets/icons/feed_remove.svg create mode 100644 src/assets/icons/feed_reply.svg create mode 100644 src/assets/icons/feed_reply_fill.svg create mode 100644 src/assets/icons/feed_repost.svg create mode 100644 src/assets/icons/feed_repost_fill.svg create mode 100644 src/assets/icons/feed_zap.svg create mode 100644 src/assets/icons/feed_zap_fill.svg create mode 100644 src/assets/icons/follows.svg create mode 100644 src/assets/icons/follows_latest.svg create mode 100644 src/assets/icons/follows_latest_light.svg create mode 100644 src/assets/icons/follows_light.svg create mode 100644 src/assets/icons/follows_popular.svg create mode 100644 src/assets/icons/follows_popular_light.svg create mode 100644 src/assets/icons/follows_trending.svg create mode 100644 src/assets/icons/follows_trending_light.svg create mode 100644 src/assets/icons/forward.svg create mode 100644 src/assets/icons/get_started.svg create mode 100644 src/assets/icons/github.svg create mode 100644 src/assets/icons/github_light.svg create mode 100644 src/assets/icons/global.svg create mode 100644 src/assets/icons/global_latest.svg create mode 100644 src/assets/icons/global_latest_light.svg create mode 100644 src/assets/icons/global_light.svg create mode 100644 src/assets/icons/global_popular.svg create mode 100644 src/assets/icons/global_popular_light.svg create mode 100644 src/assets/icons/global_trending.svg create mode 100644 src/assets/icons/global_trending_light.svg create mode 100644 src/assets/icons/golbal_popular.svg create mode 100644 src/assets/icons/help.svg create mode 100644 src/assets/icons/home.svg create mode 100644 src/assets/icons/key.svg create mode 100644 src/assets/icons/like.svg create mode 100644 src/assets/icons/like_filled.svg create mode 100644 src/assets/icons/link.svg create mode 100644 src/assets/icons/logo.svg create mode 100644 src/assets/icons/logo_fire.svg create mode 100644 src/assets/icons/logo_ice.svg create mode 100644 src/assets/icons/messages.svg create mode 100644 src/assets/icons/miljan.jpg create mode 100644 src/assets/icons/network.svg create mode 100644 src/assets/icons/network_latest.svg create mode 100644 src/assets/icons/network_latest_light.svg create mode 100644 src/assets/icons/network_light.svg create mode 100644 src/assets/icons/network_popular.svg create mode 100644 src/assets/icons/network_popular_light.svg create mode 100644 src/assets/icons/network_trending.svg create mode 100644 src/assets/icons/network_trending_light.svg create mode 100644 src/assets/icons/notifications.svg create mode 100644 src/assets/icons/notifications/at.svg create mode 100644 src/assets/icons/notifications/follows.svg create mode 100644 src/assets/icons/notifications/mention.svg create mode 100644 src/assets/icons/notifications/mention_liked.svg create mode 100644 src/assets/icons/notifications/mention_replied.svg create mode 100644 src/assets/icons/notifications/mention_reposted.svg create mode 100644 src/assets/icons/notifications/mention_zapped.svg create mode 100644 src/assets/icons/notifications/mentioned_post.svg create mode 100644 src/assets/icons/notifications/mentioned_post_liked.svg create mode 100644 src/assets/icons/notifications/mentioned_post_replied.svg create mode 100644 src/assets/icons/notifications/mentioned_post_reposted.svg create mode 100644 src/assets/icons/notifications/mentioned_post_zapped.svg create mode 100644 src/assets/icons/notifications/post_liked.svg create mode 100644 src/assets/icons/notifications/post_replied.svg create mode 100644 src/assets/icons/notifications/post_reposted.svg create mode 100644 src/assets/icons/notifications/post_zapped.svg create mode 100644 src/assets/icons/notifications/user_followed.svg create mode 100644 src/assets/icons/notifications/user_unfollowed.svg create mode 100644 src/assets/icons/old/download_filled.svg create mode 100644 src/assets/icons/old/downloads.svg create mode 100644 src/assets/icons/old/explore.svg create mode 100644 src/assets/icons/old/explore_filled.svg create mode 100644 src/assets/icons/old/help.svg create mode 100644 src/assets/icons/old/help_filled.svg create mode 100644 src/assets/icons/old/home-only.svg create mode 100644 src/assets/icons/old/home.svg create mode 100644 src/assets/icons/old/home_filled.svg create mode 100644 src/assets/icons/old/messages.svg create mode 100644 src/assets/icons/old/messages_filled.svg create mode 100644 src/assets/icons/old/notifications.svg create mode 100644 src/assets/icons/old/notifications_filled.svg create mode 100644 src/assets/icons/old/settings.svg create mode 100644 src/assets/icons/old/settings_filled.svg create mode 100644 src/assets/icons/post.svg create mode 100644 src/assets/icons/reply.svg create mode 100644 src/assets/icons/reply_filled.svg create mode 100644 src/assets/icons/reposts.svg create mode 100644 src/assets/icons/search.svg create mode 100644 src/assets/icons/search_filled.svg create mode 100644 src/assets/icons/settings.svg create mode 100644 src/assets/icons/tribe.svg create mode 100644 src/assets/icons/tribe_latest.svg create mode 100644 src/assets/icons/tribe_latest_light.svg create mode 100644 src/assets/icons/tribe_light.svg create mode 100644 src/assets/icons/tribe_popular.svg create mode 100644 src/assets/icons/tribe_popular_light.svg create mode 100644 src/assets/icons/tribe_trending.svg create mode 100644 src/assets/icons/tribe_trending_light.svg create mode 100644 src/assets/icons/verified.svg create mode 100644 src/assets/icons/zaps.svg create mode 100644 src/assets/icons/zaps_filled.svg create mode 100644 src/assets/lottie/like.json create mode 100644 src/assets/lottie/zap_md.json create mode 100644 src/assets/lottie/zap_sm.json create mode 100644 src/components/Avatar/Avatar.module.scss create mode 100644 src/components/Avatar/Avatar.tsx create mode 100644 src/components/Branding/Branding.module.scss create mode 100644 src/components/Branding/Branding.tsx create mode 100644 src/components/Checkbox/Checkbox.module.scss create mode 100644 src/components/Checkbox/Checkbox.tsx create mode 100644 src/components/CustomZap/CustomZap.module.scss create mode 100644 src/components/CustomZap/CustomZap.tsx create mode 100644 src/components/EmbeddedNote/EmbeddedNote.module.scss create mode 100644 src/components/EmbeddedNote/EmbeddedNote.tsx create mode 100644 src/components/ExploreMenuItem/ExploreMenuItem.module.scss create mode 100644 src/components/ExploreMenuItem/ExploreMenuItem.tsx create mode 100644 src/components/ExploreSidebar/ExploreSidebar.module.scss create mode 100644 src/components/ExploreSidebar/ExploreSidebar.tsx create mode 100644 src/components/FeedSelect/FeedSelect.tsx create mode 100644 src/components/FeedSorter/FeedSorter.module.scss create mode 100644 src/components/FeedSorter/FeedSorter.tsx create mode 100644 src/components/FloatingNewPostButton/FloatingNewPostButton.module.scss create mode 100644 src/components/FloatingNewPostButton/FloatingNewPostButton.tsx create mode 100644 src/components/FollowButton/FollowButton.module.scss create mode 100644 src/components/FollowButton/FollowButton.tsx create mode 100644 src/components/HomeHeader/HomeHeader.module.scss create mode 100644 src/components/HomeHeader/HomeHeader.tsx create mode 100644 src/components/HomeHeaderPhone/HomeHeaderPhone.module.scss create mode 100644 src/components/HomeHeaderPhone/HomeHeaderPhone.tsx create mode 100644 src/components/HomeSidebar/HomeSidebar.module.scss create mode 100644 src/components/HomeSidebar/HomeSidebar.tsx create mode 100644 src/components/Layout/Layout.module.scss create mode 100644 src/components/Layout/Layout.tsx create mode 100644 src/components/LinkPreview/LinkPreview.module.scss create mode 100644 src/components/LinkPreview/LinkPreview.tsx create mode 100644 src/components/Loader/Loader.module.scss create mode 100644 src/components/Loader/Loader.tsx create mode 100644 src/components/MissingPage/MissingPage.module.scss create mode 100644 src/components/MissingPage/MissingPage.tsx create mode 100644 src/components/Modal/Modal.module.scss create mode 100644 src/components/Modal/Modal.tsx create mode 100644 src/components/NavLink/NavLink.module.scss create mode 100644 src/components/NavLink/NavLink.tsx create mode 100644 src/components/NavMenu/NavMenu.module.scss create mode 100644 src/components/NavMenu/NavMenu.tsx create mode 100644 src/components/NewNote/EditBox/EditBox.module.scss create mode 100644 src/components/NewNote/EditBox/EditBox.tsx create mode 100644 src/components/NewNote/NewNote.module.scss create mode 100644 src/components/NewNote/NewNote.tsx create mode 100644 src/components/NostrStats/NostrStats.module.scss create mode 100644 src/components/NostrStats/NostrStats.tsx create mode 100644 src/components/Note/MentionedUserLink/MentionedUserLink.module.scss create mode 100644 src/components/Note/MentionedUserLink/MentionedUserLink.tsx create mode 100644 src/components/Note/Note.module.scss create mode 100644 src/components/Note/Note.tsx create mode 100644 src/components/Note/NoteFooter/NoteFooter.module.scss create mode 100644 src/components/Note/NoteFooter/NoteFooter.tsx create mode 100644 src/components/Note/NoteHeader/NoteHeader.module.scss create mode 100644 src/components/Note/NoteHeader/NoteHeader.tsx create mode 100644 src/components/Note/NotePrimary/NotePrimary.module.scss create mode 100644 src/components/Note/NotePrimary/NotePrimary.tsx create mode 100644 src/components/Note/NotificationNote/NotificationNote.module.scss create mode 100644 src/components/Note/NotificationNote/NotificationNote.tsx create mode 100644 src/components/NotificationAvatar/NotificationAvatar.module.scss create mode 100644 src/components/NotificationAvatar/NotificationAvatar.tsx create mode 100644 src/components/Notifications/NotificationItem.module.scss create mode 100644 src/components/Notifications/NotificationItem.tsx create mode 100644 src/components/Notifications/NotificationItem2.tsx create mode 100644 src/components/NotificatiosSidebar/NotificationsSidebar.module.scss create mode 100644 src/components/NotificatiosSidebar/NotificationsSidebar.tsx create mode 100644 src/components/PageNav/PageNav.module.scss create mode 100644 src/components/PageNav/PageNav.tsx create mode 100644 src/components/PageTitle/PageTitle.tsx create mode 100644 src/components/Paginator/Paginator.module.scss create mode 100644 src/components/Paginator/Paginator.tsx create mode 100644 src/components/ParsedNote/ParsedNote.module.scss create mode 100644 src/components/ParsedNote/ParsedNote.tsx create mode 100644 src/components/PeopleList/PeopleList.module.scss create mode 100644 src/components/PeopleList/PeopleList.tsx create mode 100644 src/components/PostButton/PostButton.module.scss create mode 100644 src/components/PostButton/PostButton.tsx create mode 100644 src/components/ProfileSidebar/ProfileSidebar.module.scss create mode 100644 src/components/ProfileSidebar/ProfileSidebar.tsx create mode 100644 src/components/ProfileWidget/ProfileWidget.module.scss create mode 100644 src/components/ProfileWidget/ProfileWidget.tsx create mode 100644 src/components/ReplyToNote/ReplyToNote.module.scss create mode 100644 src/components/ReplyToNote/ReplyToNote.tsx create mode 100644 src/components/Search/Search.module.scss create mode 100644 src/components/Search/Search.tsx create mode 100644 src/components/Search/SearchOption.module.scss create mode 100644 src/components/Search/SearchOption.tsx create mode 100644 src/components/SearchSidebar/SearchSidebar.tsx create mode 100644 src/components/SelectBox/SelectBox.scss create mode 100644 src/components/SelectBox/SelectBox.tsx create mode 100644 src/components/SettingsNotifications/SettingsNotifications.module.scss create mode 100644 src/components/SettingsNotifications/SettingsNotifications.tsx create mode 100644 src/components/SettingsZap/SettingsZap.module.scss create mode 100644 src/components/SettingsZap/SettingsZap.tsx create mode 100644 src/components/SmallCallToAction/SmallCallToAction.module.scss create mode 100644 src/components/SmallCallToAction/SmallCallToAction.tsx create mode 100644 src/components/SmallNote/SmallNote.module.scss create mode 100644 src/components/SmallNote/SmallNote.tsx create mode 100644 src/components/StickySidebar/StickySidebar.module.scss create mode 100644 src/components/StickySidebar/StickySidebar.tsx create mode 100644 src/components/ThemeChooser/ThemeChooser.module.scss create mode 100644 src/components/ThemeChooser/ThemeChooser.tsx create mode 100644 src/components/ThemeChooser/ThemeOption/ThemeOption.module.scss create mode 100644 src/components/ThemeChooser/ThemeOption/ThemeOption.tsx create mode 100644 src/components/Toaster/Toaster.module.scss create mode 100644 src/components/Toaster/Toaster.tsx create mode 100644 src/components/VerificationCheck/VerificationCheck.module.scss create mode 100644 src/components/VerificationCheck/VerificationCheck.tsx create mode 100644 src/components/Wormhole/Wormhole.tsx create mode 100644 src/constants.ts create mode 100644 src/contexts/AccountContext.tsx create mode 100644 src/contexts/ExploreContext.tsx create mode 100644 src/contexts/HomeContext.tsx create mode 100644 src/contexts/MediaContext.tsx create mode 100644 src/contexts/MessagesContext.tsx create mode 100644 src/contexts/NotificationsContext.tsx create mode 100644 src/contexts/ProfileContext.tsx create mode 100644 src/contexts/SearchContext.tsx create mode 100644 src/contexts/SettingsContext.tsx create mode 100644 src/contexts/ThreadContext.tsx create mode 100644 src/contexts/TranslatorContext.tsx create mode 100644 src/formats.ts create mode 100644 src/index.scss create mode 100644 src/index.tsx create mode 100644 src/lib/availableFeeds.ts create mode 100644 src/lib/dates.ts create mode 100644 src/lib/feed.ts create mode 100644 src/lib/keys.ts create mode 100644 src/lib/localStore.ts create mode 100644 src/lib/media.ts create mode 100644 src/lib/messages.ts create mode 100644 src/lib/notes.ts create mode 100644 src/lib/notifications.ts create mode 100644 src/lib/profile.ts create mode 100644 src/lib/relays.ts create mode 100644 src/lib/scroll.ts create mode 100644 src/lib/search.ts create mode 100644 src/lib/settings.ts create mode 100644 src/lib/stats.ts create mode 100644 src/lib/textArea.ts create mode 100644 src/lib/zap.ts create mode 100644 src/logo.svg create mode 100644 src/pages/Downloads.module.scss create mode 100644 src/pages/Downloads.tsx create mode 100644 src/pages/Explore.module.scss create mode 100644 src/pages/Explore.tsx create mode 100644 src/pages/ExploreMenu.module.scss create mode 100644 src/pages/ExploreMenu.tsx create mode 100644 src/pages/Feed.module.scss create mode 100644 src/pages/Feed.tsx create mode 100644 src/pages/Help.module.scss create mode 100644 src/pages/Help.tsx create mode 100644 src/pages/Home.module.scss create mode 100644 src/pages/Home.tsx create mode 100644 src/pages/Messages.module.scss create mode 100644 src/pages/Messages.tsx create mode 100644 src/pages/NotFound.module.scss create mode 100644 src/pages/NotFound.tsx create mode 100644 src/pages/Notifications.module.scss create mode 100644 src/pages/Notifications.tsx create mode 100644 src/pages/Profile.module.scss create mode 100644 src/pages/Profile.tsx create mode 100644 src/pages/Search.module.scss create mode 100644 src/pages/Search.tsx create mode 100644 src/pages/Settings.module.scss create mode 100644 src/pages/Settings.tsx create mode 100644 src/pages/Thread.module.scss create mode 100644 src/pages/Thread.tsx create mode 100644 src/services/StoreService.ts create mode 100644 src/sockets.tsx create mode 100644 src/stores/note.ts create mode 100644 src/stores/profile.ts create mode 100644 src/stores/trending.ts create mode 100644 src/translations.ts create mode 100644 src/types/primal.d.ts create mode 100644 src/uploadSocket.tsx create mode 100644 src/utils.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..76add87 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +dist \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a14b6f6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 PRIMAL SYSTEMS INC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..2643c2a --- /dev/null +++ b/README.md @@ -0,0 +1,16 @@ +# Primal Web Client + +This repo holds the web client of the Primal Nostr. + +## Setup + +- Clone this repo +- run `npm install` +- run `npm run dev` to stand a local instance + +## Development + +This code is still very much a work-in-progress. Expect major changes of structure and logic to be happening somewhat frequently. +Major features are still missing. + +This code is provided as-is. diff --git a/fonts-google.css b/fonts-google.css new file mode 100644 index 0000000..823d09a --- /dev/null +++ b/fonts-google.css @@ -0,0 +1,181 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-wmF9lp.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-UmF9lp.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-ImF9lp.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-4mF9lp.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-8mF9lp.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-EmFw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-wmF9lp.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-UmF9lp.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-ImF9lp.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-4mF9lp.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-8mF9lp.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-EmFw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-wmF9lp.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-UmF9lp.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-ImF9lp.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-4mF9lp.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-8mF9lp.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: swap; + src: url(https://fonts.gstatic.com/s/robotoflex/v9/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-EmFw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + diff --git a/index.html b/index.html new file mode 100644 index 0000000..4bcad56 --- /dev/null +++ b/index.html @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + Primal + + + +
+ + + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..d112be7 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2298 @@ +{ + "name": "vite-template-solid", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vite-template-solid", + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "@cookbook/solid-intl": "^0.1.2", + "@jukben/emoji-search": "^2.0.1", + "@picocss/pico": "^1.5.7", + "@scure/base": "^1.1.1", + "@solidjs/router": "^0.7.0", + "@thisbeyond/solid-select": "^0.13.0", + "@types/dompurify": "^2.4.0", + "dompurify": "^3.0.0", + "link-preview-js": "^3.0.4", + "nostr-tools": "^1.4.1", + "sass": "^1.58.0", + "solid-js": "^1.6.6" + }, + "devDependencies": { + "@formatjs/cli": "^6.0.4", + "typescript": "^4.9.4", + "vite": "^4.0.3", + "vite-plugin-solid": "^2.5.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.13", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.13.tgz", + "integrity": "sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.20.12", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz", + "integrity": "sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-typescript": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", + "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", + "dependencies": { + "regenerator-runtime": "^0.13.2" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.13", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cookbook/solid-intl": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@cookbook/solid-intl/-/solid-intl-0.1.2.tgz", + "integrity": "sha512-mrnm8MJ+rskAF0txqs0mxBU4tra3HAnoxjqlcGMH3Bnfkgj90HycpNND7bLYeCMsTQm93Kz5C1AidbHwoSYppA==", + "dependencies": { + "@formatjs/intl": "^2.6.3" + }, + "peerDependencies": { + "solid-js": ">=1.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@formatjs/cli": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@formatjs/cli/-/cli-6.0.4.tgz", + "integrity": "sha512-ivb+uUcYmHnffBkXM7OM4NDofxyfnVvW5G52p+M9Cg3DGMz3wVBm3TwW3SXgGGTft7CMWHeGQGXjxTOwBYKeEA==", + "dev": true, + "bin": { + "formatjs": "bin/formatjs" + }, + "engines": { + "node": ">= 16" + }, + "peerDependencies": { + "@vue/compiler-sfc": "^3.2.34" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + } + } + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.14.3.tgz", + "integrity": "sha512-SlsbRC/RX+/zg4AApWIFNDdkLtFbkq3LNoZWXZCE/nHVKqoIJyaoQyge/I0Y38vLxowUn9KTtXgusLD91+orbg==", + "dependencies": { + "@formatjs/intl-localematcher": "0.2.32", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.0.1.tgz", + "integrity": "sha512-M2GgV+qJn5WJQAYewz7q2Cdl6fobQa69S1AzSM2y0P68ZDbK5cWrJIcPCO395Of1ksftGZoOt4LYCO/j9BKBSA==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.3.0.tgz", + "integrity": "sha512-xqtlqYAbfJDF4b6e4O828LBNOWXrFcuYadqAbYORlDRwhyJ2bH+xpUBPldZbzRGUN2mxlZ4Ykhm7jvERtmI8NQ==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.14.3", + "@formatjs/icu-skeleton-parser": "1.3.18", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.3.18", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.18.tgz", + "integrity": "sha512-ND1ZkZfmLPcHjAH1sVpkpQxA+QYfOX3py3SjKWMUVGDow18gZ0WPqz3F+pJLYQMpS2LnnQ5zYR2jPVYTbRwMpg==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.14.3", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.6.9.tgz", + "integrity": "sha512-EtcMZ9O24YSASu/jGOaTQtArx7XROjlKiO4KmkxJ/3EyAQLCr5hrS+KKvNud0a7GIwBucOb3IFrZ7WiSm2A/Cw==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.14.3", + "@formatjs/fast-memoize": "2.0.1", + "@formatjs/icu-messageformat-parser": "2.3.0", + "@formatjs/intl-displaynames": "6.2.6", + "@formatjs/intl-listformat": "7.1.9", + "intl-messageformat": "10.3.3", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "typescript": "^4.7" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@formatjs/intl-displaynames": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.2.6.tgz", + "integrity": "sha512-scf5AQTk9EjpvPhboo5sizVOvidTdMOnajv9z+0cejvl7JNl9bl/aMrNBgC72UH+bP3l45usPUKAGskV6sNIrA==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.14.3", + "@formatjs/intl-localematcher": "0.2.32", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-listformat": { + "version": "7.1.9", + "resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.1.9.tgz", + "integrity": "sha512-5YikxwRqRXTVWVujhswDOTCq6gs+m9IcNbNZLa6FLtyBStAjEsuE2vAU+lPsbz9ZTST57D5fodjIh2JXT6sMWQ==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.14.3", + "@formatjs/intl-localematcher": "0.2.32", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.2.32", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.32.tgz", + "integrity": "sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jukben/emoji-search": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@jukben/emoji-search/-/emoji-search-2.0.1.tgz", + "integrity": "sha512-jXVcJGTBl+uOsGld+6J+hcHlRt3Vhm9ffvkrb1IeSVXuFCuyklY2XPI2wvSHG1uMGXfgmKbuUe1MCh1ZV3CXNg==", + "dependencies": { + "@babel/runtime": "7.5.5", + "emojilib": "2.4.0", + "match-sorter": "4.0.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@picocss/pico": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/@picocss/pico/-/pico-1.5.7.tgz", + "integrity": "sha512-RygdXNlSXieAs9jMw/AeqA1ki1kldgEYbRn8BnYZIPfRTM5NWZ4uVzMK6uMPhYlRjoT5wD/OplZvIefnCqyDCQ==" + }, + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.4.tgz", + "integrity": "sha512-m925ACYK0wPELsF7Z/VdLGmKj1StIeHraPMYB9xiAFiq/PnvqWd/99I0TQ2OZhjjlMDsDJeZlyXMWi0beaA7NA==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@solidjs/router": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@solidjs/router/-/router-0.7.0.tgz", + "integrity": "sha512-8HI84twe5FjYRebSLMAhtkL9bRuTDIlxJK56kjfjU9WKGoUCTaWpCnkuj8Hqde1bWZ0X+GOZxKDfNkn1CjtjxA==", + "peerDependencies": { + "solid-js": "^1.5.3" + } + }, + "node_modules/@thisbeyond/solid-select": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@thisbeyond/solid-select/-/solid-select-0.13.0.tgz", + "integrity": "sha512-eION+Xf8TGLs1NZrvRo1NRKOl4plYMbY7UswHhh5bEUY8oMltjrBhUWF0hzaFViEc1zZpkCQyafaD89iofG6Tg==", + "peerDependencies": { + "solid-js": "^1.5" + } + }, + "node_modules/@types/dompurify": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-2.4.0.tgz", + "integrity": "sha512-IDBwO5IZhrKvHFUl+clZxgf3hn2b/lU6H1KaBShPkQyGJUQ0xwebezIPSuiyGwfz1UzJWQl4M7BDxtHtCCPlTg==", + "dependencies": { + "@types/trusted-types": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", + "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/babel-plugin-jsx-dom-expressions": { + "version": "0.35.15", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.35.15.tgz", + "integrity": "sha512-33GQnanjYKefOTO2lQK6EaKXPJ1W8vtzvBneGfhKaOZHQJLqe61P93jP0TLTz67sqsA0m1ph1cNdGpLc/Nx2Xg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "7.18.6", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.20.7", + "html-entities": "2.3.3", + "validate-html-nesting": "^1.2.0" + }, + "peerDependencies": { + "@babel/core": "^7.20.12" + } + }, + "node_modules/babel-preset-solid": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.6.10.tgz", + "integrity": "sha512-qBLjzeWmgY5jX11sJg/lriXABYdClfJrJJrIHaT6G5EuGhxhm6jn7XjqXjLBZHBgy5n/Z+iqJ5YfQj8KG2jKTA==", + "dev": true, + "dependencies": { + "babel-plugin-jsx-dom-expressions": "^0.35.15" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001449", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001449.tgz", + "integrity": "sha512-CPB+UL9XMT/Av+pJxCKGhdx+yg1hzplvFJQlJ2n68PyQGMz9L/E2zCyLdOL8uasbouTUgnPl+y0tccI/se+BEw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.11", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.11.tgz", + "integrity": "sha512-bQwNaDIBKID5ts/DsdhxrjqFXYfLw4ste+wMKqWA8DyKcS4qwsPP4Bk8ZNaTJjvpiX/qW3BT4sU7d6Bh5i+dag==", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.0.tgz", + "integrity": "sha512-0g/yr2IJn4nTbxwL785YxS7/AvvgGFJw6LLWP+BzWzB1+BYOqPUT9Hy0rXrZh5HLdHnxH72aDdzvC9SdTjsuaA==" + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/immutable": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", + "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==" + }, + "node_modules/intl-messageformat": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.3.3.tgz", + "integrity": "sha512-un/f07/g2e/3Q8e1ghDKET+el22Bi49M7O/rHxd597R+oLpPOMykSv5s51cABVfu3FZW+fea4hrzf2MHu1W4hw==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.14.3", + "@formatjs/fast-memoize": "2.0.1", + "@formatjs/icu-messageformat-parser": "2.3.0", + "tslib": "^2.4.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-what": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.8.tgz", + "integrity": "sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA==", + "dev": true, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/link-preview-js": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/link-preview-js/-/link-preview-js-3.0.4.tgz", + "integrity": "sha512-xsuxMigAZd4xmj6BIwMNuQjjpJdh0DWeIo1NXQgaoWSi9Z/dzz/Kxy6vzzsUonFlMTPJ1i0EC8aeOg/xrOMidg==", + "dependencies": { + "abort-controller": "^3.0.0", + "cheerio": "1.0.0-rc.11", + "cross-fetch": "3.1.5", + "url": "0.11.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/match-sorter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-4.0.0.tgz", + "integrity": "sha512-E4DWje5l7+VvDUlqnACXy1iecuD6ZNiqUFw/DUYdFQljRIskZVHoT+76lLv5zz2BQOTxF2CUEgP1/Xu9Xn3MyQ==", + "dependencies": { + "remove-accents": "0.4.2" + } + }, + "node_modules/merge-anything": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.1.4.tgz", + "integrity": "sha512-7PWKwGOs5WWcpw+/OvbiFiAvEP6bv/QHiicigpqMGKIqPPAtGhBLR8LFJW+Zu6m9TXiR/a8+AiPlGG0ko1ruoQ==", + "dev": true, + "dependencies": { + "is-what": "^4.1.8" + }, + "engines": { + "node": ">=12.13" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz", + "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nostr-tools": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.10.1.tgz", + "integrity": "sha512-zgTYJeuZQ3CDASsmBEcB5i6V6l0IaA6cjnll6OVik3FoZcvbCaL7yP8I40hYnOIi3KlJykV7jEF9fn8h1NzMnA==", + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/base": "1.1.1", + "@scure/bip32": "1.1.4", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/remove-accents": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", + "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.12.0.tgz", + "integrity": "sha512-4MZ8kA2HNYahIjz63rzrMMRvDqQDeS9LoriJvMuV0V6zIGysP36e9t4yObUfwdT9h/szXoHQideICftcdZklWg==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/sass": { + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.58.0.tgz", + "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/solid-js": { + "version": "1.6.10", + "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.6.10.tgz", + "integrity": "sha512-Sf0e6PQCEFkFtbPq0L+93Ua81YQOefBEbvDJ0YXT92b6Lzw0k7UvzSd2l1BbYM+yzE3UmepU1tyMDc/3nIByjA==", + "dependencies": { + "csstype": "^3.1.0" + } + }, + "node_modules/solid-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/solid-refresh/-/solid-refresh-0.4.3.tgz", + "integrity": "sha512-7+4/gYsVi0BlM4PzT1PU1TB5nW3Hv8FWuB+Kw/ofWui7KQkWBf+dVZOrReQYHEmLCzytHUa2JysUXgzVALJmSw==", + "dev": true, + "dependencies": { + "@babel/generator": "^7.18.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/types": "^7.18.4" + }, + "peerDependencies": { + "solid-js": "^1.3" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/validate-html-nesting": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/validate-html-nesting/-/validate-html-nesting-1.2.0.tgz", + "integrity": "sha512-sI65QUd3T/e5wbQkdPKjikFsIVLPIaOQK+9uowPp6/k609SN8hs5eqBLrnN5DeW9Kd932Q4Imo0fzK2dxoOsCA==", + "dev": true + }, + "node_modules/vite": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz", + "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==", + "dev": true, + "dependencies": { + "esbuild": "^0.16.3", + "postcss": "^8.4.20", + "resolve": "^1.22.1", + "rollup": "^3.7.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-solid": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/vite-plugin-solid/-/vite-plugin-solid-2.5.0.tgz", + "integrity": "sha512-VneGd3RyFJvwaiffsqgymeMaofn0IzQLPwDzafTV2f1agoWeeJlk5VrI5WqT9BTtLe69vNNbCJWqLhHr9fOdDw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.5", + "@babel/preset-typescript": "^7.18.6", + "babel-preset-solid": "^1.6.3", + "merge-anything": "^5.1.4", + "solid-refresh": "^0.4.1", + "vitefu": "^0.2.3" + }, + "peerDependencies": { + "solid-js": "^1.3.17 || ^1.4.0 || ^1.5.0 || ^1.6.0", + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/vitefu": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", + "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4e5b601 --- /dev/null +++ b/package.json @@ -0,0 +1,37 @@ +{ + "name": "vite-template-solid", + "version": "0.0.0", + "description": "", + "scripts": { + "start": "vite", + "dev": "vite", + "dev:host": "vite --host", + "build": "vite build", + "build:unminified": "vite build --minify=false", + "serve": "vite preview", + "host": "vite preview --host", + "extract": "formatjs extract", + "compile": "formatjs compile" + }, + "license": "MIT", + "devDependencies": { + "@formatjs/cli": "^6.0.4", + "typescript": "^4.9.4", + "vite": "^4.0.3", + "vite-plugin-solid": "^2.5.0" + }, + "dependencies": { + "@cookbook/solid-intl": "^0.1.2", + "@jukben/emoji-search": "^2.0.1", + "@picocss/pico": "^1.5.7", + "@scure/base": "^1.1.1", + "@solidjs/router": "^0.7.0", + "@thisbeyond/solid-select": "^0.13.0", + "@types/dompurify": "^2.4.0", + "dompurify": "^3.0.0", + "link-preview-js": "^3.0.4", + "nostr-tools": "^1.4.1", + "sass": "^1.58.0", + "solid-js": "^1.6.6" + } +} diff --git a/public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-4mF9lp.woff2 b/public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-4mF9lp.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..210269ad045887b2ca806f95a32f843bfba5fcc2 GIT binary patch literal 23280 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 literal 0 HcmV?d00001 diff --git a/public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-8mF9lp.woff2 b/public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-8mF9lp.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..5460715567735cd1786b29c3f66cb2f5c5587ee5 GIT binary patch literal 60752 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 z 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 literal 0 HcmV?d00001 diff --git a/public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-EmFw.woff2 b/public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-EmFw.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..e1159ed61b3c11063dc9e82077447ca6aae8d674 GIT binary patch literal 88080 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 AF8}}l literal 0 HcmV?d00001 diff --git a/public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-wmF9lp.woff2 b/public/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-wmF9lp.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4f521536a2dabf7b9ed8fcaf6bb95f1491c56948 GIT binary patch literal 27452 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 LkI=tezqfY)uH6B@ literal 0 HcmV?d00001 diff --git a/public/public/fonts.css b/public/public/fonts.css new file mode 100644 index 0000000..e8e8c97 --- /dev/null +++ b/public/public/fonts.css @@ -0,0 +1,180 @@ +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-wmF9lp.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-UmF9lp.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-ImF9lp.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-4mF9lp.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-8mF9lp.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 100; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-EmFw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-wmF9lp.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-UmF9lp.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-ImF9lp.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-4mF9lp.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-8mF9lp.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 400; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-EmFw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-wmF9lp.woff2) format('woff2'); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-UmF9lp.woff2) format('woff2'); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* greek */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-ImF9lp.woff2) format('woff2'); + unicode-range: U+0370-03FF; +} +/* vietnamese */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-4mF9lp.woff2) format('woff2'); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-8mF9lp.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: 'Roboto Flex'; + font-style: normal; + font-weight: 700; + font-stretch: 100%; + font-display: block; + src: url(/public/NaNeepOXO_NexZs0b5QrzlOHb8wCikXpYqmZsWI-__OGfttPZktqc2VdZ80KvCLZaPcSBZtOx2MifRuWR28sPJtUMbsFEK6cRrleUx9Xgbm3WLHa_F4Ep4Fm0PN19Ik5Dntczx0wZGzhPlL1YNMYKbv9_1IQXOw7AiUJVXRrV8cWW4O8LJCoXjCnwSRSaLshNP1d9-EmFw.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/public/public/primal-thumbnail.png b/public/public/primal-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bcf744aed7295e8aa06738bf20afca933b24f7 GIT binary patch literal 305309 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 z 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


C@3MHG_?ff6sa01@)W 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 literal 0 HcmV?d00001 diff --git a/src/App.module.scss b/src/App.module.scss new file mode 100644 index 0000000..2e9bc94 --- /dev/null +++ b/src/App.module.scss @@ -0,0 +1,6 @@ +.invisible { + position: fixed; + width: 0px !important; + height: 0px !important; + opacity: 0; +} diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..c700e37 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,64 @@ +import { Component, onCleanup, onMount } from 'solid-js'; +import { AccountProvider } from './contexts/AccountContext'; +import { connect, disconnect } from './sockets'; +import { connect as uploadConnect, disconnect as uploadDisconnet } from './uploadSocket'; +import styles from './App.module.scss'; +import Toaster from './components/Toaster/Toaster'; +import { HomeProvider } from './contexts/HomeContext'; +import { ExploreProvider } from './contexts/ExploreContext'; +import { ThreadProvider } from './contexts/ThreadContext'; +import Router from './Router'; +import { ProfileProvider } from './contexts/ProfileContext'; +import { SettingsProvider } from './contexts/SettingsContext'; +import { TranslatorProvider } from './contexts/TranslatorContext'; +import { NotificationsProvider } from './contexts/NotificationsContext'; +import { SearchProvider } from './contexts/SearchContext'; +import { MessagesProvider } from './contexts/MessagesContext'; +import { MediaProvider } from './contexts/MediaContext'; + + +export const APP_ID = `${Math.floor(Math.random()*10000000000)}`; + +const App: Component = () => { + + onMount(() => { + connect(); + uploadConnect(); + }); + + onCleanup(() => { + disconnect(); + uploadDisconnet(); + }) + + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default App; diff --git a/src/Router.tsx b/src/Router.tsx new file mode 100644 index 0000000..a0ac3f3 --- /dev/null +++ b/src/Router.tsx @@ -0,0 +1,91 @@ +import { Component, createReaction, createResource, lazy, Resource } from 'solid-js'; +import { Routes, Route, Navigate, RouteDataFuncArgs } from "@solidjs/router" +import Home from './pages/Home'; +import Layout from './components/Layout/Layout'; +import Explore from './pages/Explore'; +import Thread from './pages/Thread'; +import Messages from './pages/Messages'; +import Notifications from './pages/Notifications'; +import Downloads from './pages/Downloads'; +import Settings from './pages/Settings'; +import Help from './pages/Help'; +// import Profile from './pages/Profile'; +import { PrimalWindow } from './types/primal'; +import { useHomeContext } from './contexts/HomeContext'; +import { useExploreContext } from './contexts/ExploreContext'; +import { useThreadContext } from './contexts/ThreadContext'; +import { useAccountContext } from './contexts/AccountContext'; +import { useProfileContext } from './contexts/ProfileContext'; +import { useSettingsContext } from './contexts/SettingsContext'; +import NotFound from './pages/NotFound'; +import { fetchKnownProfiles } from './lib/profile'; +import Search from './pages/Search'; +import { useMessagesContext } from './contexts/MessagesContext'; +import { useMediaContext } from './contexts/MediaContext'; +import { useNotificationsContext } from './contexts/NotificationsContext'; +import { useSearchContext } from './contexts/SearchContext'; + +const primalWindow = window as PrimalWindow; + +const Router: Component = () => { + + const account = useAccountContext(); + const profile = useProfileContext(); + const settings = useSettingsContext(); + const home = useHomeContext(); + const explore = useExploreContext(); + const thread = useThreadContext(); + const messages = useMessagesContext(); + const media = useMediaContext(); + const notifications = useNotificationsContext(); + const search = useSearchContext(); + + const loadPrimalStores = () => { + primalWindow.primal = { + account, + explore, + home, + media, + messages, + notifications, + profile, + search, + settings, + thread, + }; + }; + + primalWindow.loadPrimalStores = loadPrimalStores; + + const Profile = lazy(() => import('./pages/Profile')) + + const getKnownProfiles = ({ params }: RouteDataFuncArgs) => { + const [profiles] = createResource(params.vanityName, fetchKnownProfiles) + return profiles; + } + + return ( + <> + + + } /> + + + + + + + + + + + + + + + + + ); +}; + +export default Router; diff --git a/src/assets/favicon.ico b/src/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d98a7c0e1328dae3aa48bee8b6162bcf0362d417 GIT binary patch literal 8522 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 B#s~la literal 0 HcmV?d00001 diff --git a/src/assets/icons/attach_media.svg b/src/assets/icons/attach_media.svg new file mode 100644 index 0000000..4909985 --- /dev/null +++ b/src/assets/icons/attach_media.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/back.svg b/src/assets/icons/back.svg new file mode 100644 index 0000000..aaa6f47 --- /dev/null +++ b/src/assets/icons/back.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/caret.svg b/src/assets/icons/caret.svg new file mode 100644 index 0000000..ddb1e2f --- /dev/null +++ b/src/assets/icons/caret.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/check-black.svg b/src/assets/icons/check-black.svg new file mode 100644 index 0000000..8740937 --- /dev/null +++ b/src/assets/icons/check-black.svg @@ -0,0 +1,41 @@ + + + + + + diff --git a/src/assets/icons/check.svg b/src/assets/icons/check.svg new file mode 100644 index 0000000..67d6e1d --- /dev/null +++ b/src/assets/icons/check.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/close.svg b/src/assets/icons/close.svg new file mode 100644 index 0000000..39660b3 --- /dev/null +++ b/src/assets/icons/close.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/context.svg b/src/assets/icons/context.svg new file mode 100644 index 0000000..b7c0e51 --- /dev/null +++ b/src/assets/icons/context.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/copy.svg b/src/assets/icons/copy.svg new file mode 100644 index 0000000..6b579e0 --- /dev/null +++ b/src/assets/icons/copy.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/corner_left.svg b/src/assets/icons/corner_left.svg new file mode 100644 index 0000000..8b09421 --- /dev/null +++ b/src/assets/icons/corner_left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/corner_right.svg b/src/assets/icons/corner_right.svg new file mode 100644 index 0000000..e6746a9 --- /dev/null +++ b/src/assets/icons/corner_right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/default_avatar.svg b/src/assets/icons/default_avatar.svg new file mode 100644 index 0000000..d6dffe6 --- /dev/null +++ b/src/assets/icons/default_avatar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/default_nostrich.svg b/src/assets/icons/default_nostrich.svg new file mode 100644 index 0000000..521fbbe --- /dev/null +++ b/src/assets/icons/default_nostrich.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/delete.svg b/src/assets/icons/delete.svg new file mode 100644 index 0000000..d15a3f4 --- /dev/null +++ b/src/assets/icons/delete.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/download.svg b/src/assets/icons/download.svg new file mode 100644 index 0000000..87d8a81 --- /dev/null +++ b/src/assets/icons/download.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/drag_handle.svg b/src/assets/icons/drag_handle.svg new file mode 100644 index 0000000..8eea3e9 --- /dev/null +++ b/src/assets/icons/drag_handle.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/edit.svg b/src/assets/icons/edit.svg new file mode 100644 index 0000000..ccaa264 --- /dev/null +++ b/src/assets/icons/edit.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/explore.svg b/src/assets/icons/explore.svg new file mode 100644 index 0000000..4472d74 --- /dev/null +++ b/src/assets/icons/explore.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/explore/clock.svg b/src/assets/icons/explore/clock.svg new file mode 100644 index 0000000..a83a8e8 --- /dev/null +++ b/src/assets/icons/explore/clock.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/explore/flame.svg b/src/assets/icons/explore/flame.svg new file mode 100644 index 0000000..48f1b12 --- /dev/null +++ b/src/assets/icons/explore/flame.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/explore/follows.svg b/src/assets/icons/explore/follows.svg new file mode 100644 index 0000000..8e5be78 --- /dev/null +++ b/src/assets/icons/explore/follows.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/icons/explore/global.svg b/src/assets/icons/explore/global.svg new file mode 100644 index 0000000..4ad5abf --- /dev/null +++ b/src/assets/icons/explore/global.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/explore/likes.svg b/src/assets/icons/explore/likes.svg new file mode 100644 index 0000000..f78c6f6 --- /dev/null +++ b/src/assets/icons/explore/likes.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/explore/network.svg b/src/assets/icons/explore/network.svg new file mode 100644 index 0000000..552fe89 --- /dev/null +++ b/src/assets/icons/explore/network.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/explore/tribe.svg b/src/assets/icons/explore/tribe.svg new file mode 100644 index 0000000..19328bb --- /dev/null +++ b/src/assets/icons/explore/tribe.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/explore/zaps.svg b/src/assets/icons/explore/zaps.svg new file mode 100644 index 0000000..a081611 --- /dev/null +++ b/src/assets/icons/explore/zaps.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/explore/zaps_hollow.svg b/src/assets/icons/explore/zaps_hollow.svg new file mode 100644 index 0000000..be8c07b --- /dev/null +++ b/src/assets/icons/explore/zaps_hollow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/feed_add.svg b/src/assets/icons/feed_add.svg new file mode 100644 index 0000000..88a50c7 --- /dev/null +++ b/src/assets/icons/feed_add.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/feed_like.svg b/src/assets/icons/feed_like.svg new file mode 100644 index 0000000..bd34559 --- /dev/null +++ b/src/assets/icons/feed_like.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/feed_like_fill.svg b/src/assets/icons/feed_like_fill.svg new file mode 100644 index 0000000..ff5ad67 --- /dev/null +++ b/src/assets/icons/feed_like_fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/feed_picker.svg b/src/assets/icons/feed_picker.svg new file mode 100644 index 0000000..259fd56 --- /dev/null +++ b/src/assets/icons/feed_picker.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/feed_remove.svg b/src/assets/icons/feed_remove.svg new file mode 100644 index 0000000..e588f73 --- /dev/null +++ b/src/assets/icons/feed_remove.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/feed_reply.svg b/src/assets/icons/feed_reply.svg new file mode 100644 index 0000000..2f254a0 --- /dev/null +++ b/src/assets/icons/feed_reply.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/feed_reply_fill.svg b/src/assets/icons/feed_reply_fill.svg new file mode 100644 index 0000000..2964b56 --- /dev/null +++ b/src/assets/icons/feed_reply_fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/feed_repost.svg b/src/assets/icons/feed_repost.svg new file mode 100644 index 0000000..106e48d --- /dev/null +++ b/src/assets/icons/feed_repost.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/feed_repost_fill.svg b/src/assets/icons/feed_repost_fill.svg new file mode 100644 index 0000000..93467cb --- /dev/null +++ b/src/assets/icons/feed_repost_fill.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/feed_zap.svg b/src/assets/icons/feed_zap.svg new file mode 100644 index 0000000..472277d --- /dev/null +++ b/src/assets/icons/feed_zap.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/feed_zap_fill.svg b/src/assets/icons/feed_zap_fill.svg new file mode 100644 index 0000000..dbf907e --- /dev/null +++ b/src/assets/icons/feed_zap_fill.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/follows.svg b/src/assets/icons/follows.svg new file mode 100644 index 0000000..3ea8590 --- /dev/null +++ b/src/assets/icons/follows.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/follows_latest.svg b/src/assets/icons/follows_latest.svg new file mode 100644 index 0000000..cd65369 --- /dev/null +++ b/src/assets/icons/follows_latest.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/follows_latest_light.svg b/src/assets/icons/follows_latest_light.svg new file mode 100644 index 0000000..1c3298d --- /dev/null +++ b/src/assets/icons/follows_latest_light.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/follows_light.svg b/src/assets/icons/follows_light.svg new file mode 100644 index 0000000..a31768e --- /dev/null +++ b/src/assets/icons/follows_light.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/follows_popular.svg b/src/assets/icons/follows_popular.svg new file mode 100644 index 0000000..a392ac5 --- /dev/null +++ b/src/assets/icons/follows_popular.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/follows_popular_light.svg b/src/assets/icons/follows_popular_light.svg new file mode 100644 index 0000000..6d51af2 --- /dev/null +++ b/src/assets/icons/follows_popular_light.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/follows_trending.svg b/src/assets/icons/follows_trending.svg new file mode 100644 index 0000000..e5f3c37 --- /dev/null +++ b/src/assets/icons/follows_trending.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/follows_trending_light.svg b/src/assets/icons/follows_trending_light.svg new file mode 100644 index 0000000..2857de7 --- /dev/null +++ b/src/assets/icons/follows_trending_light.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/forward.svg b/src/assets/icons/forward.svg new file mode 100644 index 0000000..89ef8db --- /dev/null +++ b/src/assets/icons/forward.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/get_started.svg b/src/assets/icons/get_started.svg new file mode 100644 index 0000000..c1837d0 --- /dev/null +++ b/src/assets/icons/get_started.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/assets/icons/github.svg b/src/assets/icons/github.svg new file mode 100644 index 0000000..0223dcb --- /dev/null +++ b/src/assets/icons/github.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/github_light.svg b/src/assets/icons/github_light.svg new file mode 100644 index 0000000..4669af8 --- /dev/null +++ b/src/assets/icons/github_light.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/global.svg b/src/assets/icons/global.svg new file mode 100644 index 0000000..7bdfc32 --- /dev/null +++ b/src/assets/icons/global.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/global_latest.svg b/src/assets/icons/global_latest.svg new file mode 100644 index 0000000..43d050e --- /dev/null +++ b/src/assets/icons/global_latest.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/global_latest_light.svg b/src/assets/icons/global_latest_light.svg new file mode 100644 index 0000000..5aec3ea --- /dev/null +++ b/src/assets/icons/global_latest_light.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/global_light.svg b/src/assets/icons/global_light.svg new file mode 100644 index 0000000..b806c34 --- /dev/null +++ b/src/assets/icons/global_light.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/icons/global_popular.svg b/src/assets/icons/global_popular.svg new file mode 100644 index 0000000..990407b --- /dev/null +++ b/src/assets/icons/global_popular.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/global_popular_light.svg b/src/assets/icons/global_popular_light.svg new file mode 100644 index 0000000..b1ab616 --- /dev/null +++ b/src/assets/icons/global_popular_light.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/global_trending.svg b/src/assets/icons/global_trending.svg new file mode 100644 index 0000000..04a40fe --- /dev/null +++ b/src/assets/icons/global_trending.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/global_trending_light.svg b/src/assets/icons/global_trending_light.svg new file mode 100644 index 0000000..734fa7e --- /dev/null +++ b/src/assets/icons/global_trending_light.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/golbal_popular.svg b/src/assets/icons/golbal_popular.svg new file mode 100644 index 0000000..d00562f --- /dev/null +++ b/src/assets/icons/golbal_popular.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/help.svg b/src/assets/icons/help.svg new file mode 100644 index 0000000..d624030 --- /dev/null +++ b/src/assets/icons/help.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/home.svg b/src/assets/icons/home.svg new file mode 100644 index 0000000..5843407 --- /dev/null +++ b/src/assets/icons/home.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/key.svg b/src/assets/icons/key.svg new file mode 100644 index 0000000..de44eba --- /dev/null +++ b/src/assets/icons/key.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/like.svg b/src/assets/icons/like.svg new file mode 100644 index 0000000..d3a038c --- /dev/null +++ b/src/assets/icons/like.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/like_filled.svg b/src/assets/icons/like_filled.svg new file mode 100644 index 0000000..58c9777 --- /dev/null +++ b/src/assets/icons/like_filled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/link.svg b/src/assets/icons/link.svg new file mode 100644 index 0000000..1f7d157 --- /dev/null +++ b/src/assets/icons/link.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/logo.svg b/src/assets/icons/logo.svg new file mode 100644 index 0000000..d43e531 --- /dev/null +++ b/src/assets/icons/logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/logo_fire.svg b/src/assets/icons/logo_fire.svg new file mode 100644 index 0000000..d584495 --- /dev/null +++ b/src/assets/icons/logo_fire.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/logo_ice.svg b/src/assets/icons/logo_ice.svg new file mode 100644 index 0000000..04dcdcd --- /dev/null +++ b/src/assets/icons/logo_ice.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/messages.svg b/src/assets/icons/messages.svg new file mode 100644 index 0000000..113406f --- /dev/null +++ b/src/assets/icons/messages.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/miljan.jpg b/src/assets/icons/miljan.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2e088d606e29fc612ed067781b1780c01719e7d4 GIT binary patch literal 37744 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 MMbWHKXumW6*^Imat^fc4 literal 0 HcmV?d00001 diff --git a/src/assets/icons/network.svg b/src/assets/icons/network.svg new file mode 100644 index 0000000..fe9e268 --- /dev/null +++ b/src/assets/icons/network.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/network_latest.svg b/src/assets/icons/network_latest.svg new file mode 100644 index 0000000..aebb78d --- /dev/null +++ b/src/assets/icons/network_latest.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/network_latest_light.svg b/src/assets/icons/network_latest_light.svg new file mode 100644 index 0000000..d5e9566 --- /dev/null +++ b/src/assets/icons/network_latest_light.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/network_light.svg b/src/assets/icons/network_light.svg new file mode 100644 index 0000000..b931d10 --- /dev/null +++ b/src/assets/icons/network_light.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/icons/network_popular.svg b/src/assets/icons/network_popular.svg new file mode 100644 index 0000000..c1d8ebd --- /dev/null +++ b/src/assets/icons/network_popular.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/network_popular_light.svg b/src/assets/icons/network_popular_light.svg new file mode 100644 index 0000000..a2ca1d3 --- /dev/null +++ b/src/assets/icons/network_popular_light.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/network_trending.svg b/src/assets/icons/network_trending.svg new file mode 100644 index 0000000..8842ef5 --- /dev/null +++ b/src/assets/icons/network_trending.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/network_trending_light.svg b/src/assets/icons/network_trending_light.svg new file mode 100644 index 0000000..b37ac28 --- /dev/null +++ b/src/assets/icons/network_trending_light.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/notifications.svg b/src/assets/icons/notifications.svg new file mode 100644 index 0000000..8812646 --- /dev/null +++ b/src/assets/icons/notifications.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/notifications/at.svg b/src/assets/icons/notifications/at.svg new file mode 100644 index 0000000..3baca47 --- /dev/null +++ b/src/assets/icons/notifications/at.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/notifications/follows.svg b/src/assets/icons/notifications/follows.svg new file mode 100644 index 0000000..921d9c4 --- /dev/null +++ b/src/assets/icons/notifications/follows.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/notifications/mention.svg b/src/assets/icons/notifications/mention.svg new file mode 100644 index 0000000..ac59246 --- /dev/null +++ b/src/assets/icons/notifications/mention.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/notifications/mention_liked.svg b/src/assets/icons/notifications/mention_liked.svg new file mode 100644 index 0000000..e48e710 --- /dev/null +++ b/src/assets/icons/notifications/mention_liked.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/notifications/mention_replied.svg b/src/assets/icons/notifications/mention_replied.svg new file mode 100644 index 0000000..89bb4ae --- /dev/null +++ b/src/assets/icons/notifications/mention_replied.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/notifications/mention_reposted.svg b/src/assets/icons/notifications/mention_reposted.svg new file mode 100644 index 0000000..7ba4683 --- /dev/null +++ b/src/assets/icons/notifications/mention_reposted.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/notifications/mention_zapped.svg b/src/assets/icons/notifications/mention_zapped.svg new file mode 100644 index 0000000..30d51be --- /dev/null +++ b/src/assets/icons/notifications/mention_zapped.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/notifications/mentioned_post.svg b/src/assets/icons/notifications/mentioned_post.svg new file mode 100644 index 0000000..14f0397 --- /dev/null +++ b/src/assets/icons/notifications/mentioned_post.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/notifications/mentioned_post_liked.svg b/src/assets/icons/notifications/mentioned_post_liked.svg new file mode 100644 index 0000000..3a049cf --- /dev/null +++ b/src/assets/icons/notifications/mentioned_post_liked.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/notifications/mentioned_post_replied.svg b/src/assets/icons/notifications/mentioned_post_replied.svg new file mode 100644 index 0000000..6614cac --- /dev/null +++ b/src/assets/icons/notifications/mentioned_post_replied.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/notifications/mentioned_post_reposted.svg b/src/assets/icons/notifications/mentioned_post_reposted.svg new file mode 100644 index 0000000..c5a52aa --- /dev/null +++ b/src/assets/icons/notifications/mentioned_post_reposted.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/notifications/mentioned_post_zapped.svg b/src/assets/icons/notifications/mentioned_post_zapped.svg new file mode 100644 index 0000000..f48f526 --- /dev/null +++ b/src/assets/icons/notifications/mentioned_post_zapped.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/notifications/post_liked.svg b/src/assets/icons/notifications/post_liked.svg new file mode 100644 index 0000000..b2a1f57 --- /dev/null +++ b/src/assets/icons/notifications/post_liked.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/notifications/post_replied.svg b/src/assets/icons/notifications/post_replied.svg new file mode 100644 index 0000000..e1badbe --- /dev/null +++ b/src/assets/icons/notifications/post_replied.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/notifications/post_reposted.svg b/src/assets/icons/notifications/post_reposted.svg new file mode 100644 index 0000000..3244ed9 --- /dev/null +++ b/src/assets/icons/notifications/post_reposted.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/notifications/post_zapped.svg b/src/assets/icons/notifications/post_zapped.svg new file mode 100644 index 0000000..ff69da8 --- /dev/null +++ b/src/assets/icons/notifications/post_zapped.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/icons/notifications/user_followed.svg b/src/assets/icons/notifications/user_followed.svg new file mode 100644 index 0000000..802cb5f --- /dev/null +++ b/src/assets/icons/notifications/user_followed.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/icons/notifications/user_unfollowed.svg b/src/assets/icons/notifications/user_unfollowed.svg new file mode 100644 index 0000000..8dc46a2 --- /dev/null +++ b/src/assets/icons/notifications/user_unfollowed.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/icons/old/download_filled.svg b/src/assets/icons/old/download_filled.svg new file mode 100644 index 0000000..839e888 --- /dev/null +++ b/src/assets/icons/old/download_filled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/old/downloads.svg b/src/assets/icons/old/downloads.svg new file mode 100644 index 0000000..7acd348 --- /dev/null +++ b/src/assets/icons/old/downloads.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/old/explore.svg b/src/assets/icons/old/explore.svg new file mode 100644 index 0000000..a535d40 --- /dev/null +++ b/src/assets/icons/old/explore.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/old/explore_filled.svg b/src/assets/icons/old/explore_filled.svg new file mode 100644 index 0000000..41daf35 --- /dev/null +++ b/src/assets/icons/old/explore_filled.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/icons/old/help.svg b/src/assets/icons/old/help.svg new file mode 100644 index 0000000..8e8620d --- /dev/null +++ b/src/assets/icons/old/help.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/old/help_filled.svg b/src/assets/icons/old/help_filled.svg new file mode 100644 index 0000000..2d7d9dd --- /dev/null +++ b/src/assets/icons/old/help_filled.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/old/home-only.svg b/src/assets/icons/old/home-only.svg new file mode 100644 index 0000000..204b650 --- /dev/null +++ b/src/assets/icons/old/home-only.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/old/home.svg b/src/assets/icons/old/home.svg new file mode 100644 index 0000000..74adf86 --- /dev/null +++ b/src/assets/icons/old/home.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/icons/old/home_filled.svg b/src/assets/icons/old/home_filled.svg new file mode 100644 index 0000000..29e2d3c --- /dev/null +++ b/src/assets/icons/old/home_filled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/old/messages.svg b/src/assets/icons/old/messages.svg new file mode 100644 index 0000000..1f71691 --- /dev/null +++ b/src/assets/icons/old/messages.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/old/messages_filled.svg b/src/assets/icons/old/messages_filled.svg new file mode 100644 index 0000000..e842aab --- /dev/null +++ b/src/assets/icons/old/messages_filled.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/old/notifications.svg b/src/assets/icons/old/notifications.svg new file mode 100644 index 0000000..c9798a0 --- /dev/null +++ b/src/assets/icons/old/notifications.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/icons/old/notifications_filled.svg b/src/assets/icons/old/notifications_filled.svg new file mode 100644 index 0000000..c64db85 --- /dev/null +++ b/src/assets/icons/old/notifications_filled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/old/settings.svg b/src/assets/icons/old/settings.svg new file mode 100644 index 0000000..418b7f1 --- /dev/null +++ b/src/assets/icons/old/settings.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/old/settings_filled.svg b/src/assets/icons/old/settings_filled.svg new file mode 100644 index 0000000..78d2ca1 --- /dev/null +++ b/src/assets/icons/old/settings_filled.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/post.svg b/src/assets/icons/post.svg new file mode 100644 index 0000000..dd75152 --- /dev/null +++ b/src/assets/icons/post.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/reply.svg b/src/assets/icons/reply.svg new file mode 100644 index 0000000..3179623 --- /dev/null +++ b/src/assets/icons/reply.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/reply_filled.svg b/src/assets/icons/reply_filled.svg new file mode 100644 index 0000000..b34b012 --- /dev/null +++ b/src/assets/icons/reply_filled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/reposts.svg b/src/assets/icons/reposts.svg new file mode 100644 index 0000000..eee660d --- /dev/null +++ b/src/assets/icons/reposts.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/search.svg b/src/assets/icons/search.svg new file mode 100644 index 0000000..8390f42 --- /dev/null +++ b/src/assets/icons/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/search_filled.svg b/src/assets/icons/search_filled.svg new file mode 100644 index 0000000..2df437e --- /dev/null +++ b/src/assets/icons/search_filled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/settings.svg b/src/assets/icons/settings.svg new file mode 100644 index 0000000..ae9a0f0 --- /dev/null +++ b/src/assets/icons/settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/tribe.svg b/src/assets/icons/tribe.svg new file mode 100644 index 0000000..06731e7 --- /dev/null +++ b/src/assets/icons/tribe.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/tribe_latest.svg b/src/assets/icons/tribe_latest.svg new file mode 100644 index 0000000..bdb499f --- /dev/null +++ b/src/assets/icons/tribe_latest.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/tribe_latest_light.svg b/src/assets/icons/tribe_latest_light.svg new file mode 100644 index 0000000..05a8360 --- /dev/null +++ b/src/assets/icons/tribe_latest_light.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/tribe_light.svg b/src/assets/icons/tribe_light.svg new file mode 100644 index 0000000..cbe8e2e --- /dev/null +++ b/src/assets/icons/tribe_light.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/tribe_popular.svg b/src/assets/icons/tribe_popular.svg new file mode 100644 index 0000000..0416909 --- /dev/null +++ b/src/assets/icons/tribe_popular.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/tribe_popular_light.svg b/src/assets/icons/tribe_popular_light.svg new file mode 100644 index 0000000..d72b333 --- /dev/null +++ b/src/assets/icons/tribe_popular_light.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/tribe_trending.svg b/src/assets/icons/tribe_trending.svg new file mode 100644 index 0000000..2d11698 --- /dev/null +++ b/src/assets/icons/tribe_trending.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/tribe_trending_light.svg b/src/assets/icons/tribe_trending_light.svg new file mode 100644 index 0000000..aed8840 --- /dev/null +++ b/src/assets/icons/tribe_trending_light.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/icons/verified.svg b/src/assets/icons/verified.svg new file mode 100644 index 0000000..4a94d12 --- /dev/null +++ b/src/assets/icons/verified.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/zaps.svg b/src/assets/icons/zaps.svg new file mode 100644 index 0000000..bbcb0ad --- /dev/null +++ b/src/assets/icons/zaps.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/zaps_filled.svg b/src/assets/icons/zaps_filled.svg new file mode 100644 index 0000000..7fa2904 --- /dev/null +++ b/src/assets/icons/zaps_filled.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/lottie/like.json b/src/assets/lottie/like.json new file mode 100644 index 0000000..6f816c7 --- /dev/null +++ b/src/assets/lottie/like.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.4.3","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":44,"w":1600,"h":1600,"nm":"Icon - Like","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Like Color 2","parent":5,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":7,"s":[-2,434.828,0],"to":[0.333,-72.471,0],"ti":[-0.333,72.471,0]},{"t":14,"s":[0,0,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.4,0.4,0.4],"y":[1,1,1]},"o":{"x":[0.6,0.6,0.6],"y":[0,0,0]},"t":7,"s":[36,36,100]},{"t":14,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.19,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":5,"s":[{"i":[[15.537,10.805],[0,0],[0,0],[0,0],[0,0],[24.175,34.947],[-4.877,38.506],[-56.821,33.922],[-53.848,-2.421],[-33.941,-19.469],[-16.983,-16.073],[-28.203,16.177],[-52.681,2.369],[-55.881,-33.356],[-11.642,-34.748],[13.993,-26.374],[0,0],[0,0],[1.764,-1.123],[0,0],[204.541,-93.271],[15.378,6.376]],"o":[[-15.537,-10.805],[-0.604,-0.383],[0,0],[0,0],[0,0],[-20.785,-30.046],[5.004,-39.505],[55.876,-33.358],[52.68,2.368],[28.203,16.177],[16.981,-16.073],[33.941,-19.469],[53.844,-2.421],[54.635,32.613],[11.597,34.614],[-31.498,59.367],[0,0],[0,0],[-0.694,0.444],[0,0],[-11.329,3.018],[-202.799,-88.104]],"v":[[-303.824,211.323],[-330.653,190.152],[-350.982,173.525],[-368.486,159.303],[-397.687,131.331],[-435.015,80.555],[-465.623,-46.906],[-371.81,-163.249],[-205.928,-207.579],[-75.101,-168.51],[-7.027,-117.542],[61.045,-168.51],[191.873,-207.579],[357.756,-163.25],[454.403,-61.346],[449.552,41.575],[348.551,159.808],[313.936,186.669],[294.309,201.001],[271.896,217.15],[12.146,357.199],[-26.197,357.199]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0.819,0.913],[2.814,3.325],[8.731,11.953],[16.875,40.213],[-3.836,51.798],[-44.687,45.632],[-42.348,-3.257],[-26.693,-26.189],[-13.356,-21.621],[-22.18,21.761],[-41.431,3.186],[-43.948,-44.871],[-9.156,-46.742],[11.481,-35.165],[13.512,-19.323],[4.56,-5.377],[1.387,-1.51],[0.382,-0.406],[0,0],[8.36,9.959]],"o":[[0,0],[-0.475,-0.516],[-1.637,-1.825],[-5.62,-6.641],[-17.318,-23.709],[-16.798,-40.031],[3.935,-53.142],[43.943,-44.873],[41.43,3.186],[22.18,21.761],[13.355,-21.621],[26.693,-26.189],[42.345,-3.257],[42.968,43.87],[9.121,46.563],[-11.393,34.896],[-6.828,9.764],[-2.285,2.694],[-0.545,0.597],[0,0],[-8.361,9.959],[0,0]],"v":[[-249.674,103.832],[-249.717,103.786],[-251.667,101.638],[-258.414,93.88],[-280.502,65.729],[-336.618,-32.269],[-362.443,-172.769],[-292.613,-323.585],[-162.156,-383.217],[-59.268,-330.662],[-5.731,-262.1],[47.804,-330.662],[150.693,-383.217],[281.151,-323.586],[357.159,-186.507],[348.519,-61.958],[306.813,20.634],[289.241,43.499],[283.676,49.825],[282.28,51.33],[9.348,376.514],[-20.807,376.514]],"c":true}]},{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0},"t":17,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":20,"s":[{"i":[[14.574,11.501],[0,0],[0,0],[0,0],[0,0],[22.678,37.202],[-4.575,40.99],[-53.302,36.11],[-50.513,-2.577],[-31.839,-20.725],[-15.931,-17.11],[-26.456,17.221],[-49.418,2.521],[-52.421,-35.508],[-10.921,-36.989],[13.127,-28.076],[0,0],[0,0],[1.654,-1.195],[0,0],[191.873,-99.288],[14.425,6.788]],"o":[[-14.574,-11.502],[-0.567,-0.408],[0,0],[0,0],[0,0],[-19.497,-31.985],[4.694,-42.054],[52.415,-35.51],[49.418,2.521],[26.456,17.221],[15.93,-17.11],[31.839,-20.725],[50.509,-2.577],[51.252,34.716],[10.879,36.847],[-29.547,63.196],[0,0],[0,0],[-0.651,0.473],[0,0],[-10.627,3.212],[-190.239,-93.788]],"v":[[-285.147,201.501],[-310.314,178.965],[-329.384,161.265],[-345.804,146.126],[-373.197,116.349],[-408.213,62.298],[-436.925,-73.386],[-348.922,-197.233],[-193.314,-244.423],[-70.589,-202.834],[-6.731,-148.578],[57.125,-202.834],[179.85,-244.423],[335.46,-197.234],[426.121,-88.757],[421.571,20.804],[326.825,146.664],[294.354,175.257],[275.942,190.513],[254.917,207.705],[21.255,356.575],[-42.714,356.575]],"c":true}]},{"t":24,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156862745,0.027450980392,0.623529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":6,"op":62,"st":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Like Color","parent":5,"tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.19,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":5,"s":[{"i":[[15.537,10.805],[0,0],[0,0],[0,0],[0,0],[24.175,34.947],[-4.877,38.506],[-56.821,33.922],[-53.848,-2.421],[-33.941,-19.469],[-16.983,-16.073],[-28.203,16.177],[-52.681,2.369],[-55.881,-33.356],[-11.642,-34.748],[13.993,-26.374],[0,0],[0,0],[1.764,-1.123],[0,0],[204.541,-93.271],[15.378,6.376]],"o":[[-15.537,-10.805],[-0.604,-0.383],[0,0],[0,0],[0,0],[-20.785,-30.046],[5.004,-39.505],[55.876,-33.358],[52.68,2.368],[28.203,16.177],[16.981,-16.073],[33.941,-19.469],[53.844,-2.421],[54.635,32.613],[11.597,34.614],[-31.498,59.367],[0,0],[0,0],[-0.694,0.444],[0,0],[-11.329,3.018],[-202.799,-88.104]],"v":[[-303.824,211.323],[-330.653,190.152],[-350.982,173.525],[-368.486,159.303],[-397.687,131.331],[-435.015,80.555],[-465.623,-46.906],[-371.81,-163.249],[-205.928,-207.579],[-75.101,-168.51],[-7.027,-117.542],[61.045,-168.51],[191.873,-207.579],[357.756,-163.25],[454.403,-61.346],[449.552,41.575],[348.551,159.808],[313.936,186.669],[294.309,201.001],[271.896,217.15],[12.146,357.199],[-26.197,357.199]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0.819,0.913],[2.814,3.325],[8.731,11.953],[16.875,40.213],[-3.836,51.798],[-44.687,45.632],[-42.348,-3.257],[-26.693,-26.189],[-13.356,-21.621],[-22.18,21.761],[-41.431,3.186],[-43.948,-44.871],[-9.156,-46.742],[11.481,-35.165],[13.512,-19.323],[4.56,-5.377],[1.387,-1.51],[0.382,-0.406],[0,0],[8.36,9.959]],"o":[[0,0],[-0.475,-0.516],[-1.637,-1.825],[-5.62,-6.641],[-17.318,-23.709],[-16.798,-40.031],[3.935,-53.142],[43.943,-44.873],[41.43,3.186],[22.18,21.761],[13.355,-21.621],[26.693,-26.189],[42.345,-3.257],[42.968,43.87],[9.121,46.563],[-11.393,34.896],[-6.828,9.764],[-2.285,2.694],[-0.545,0.597],[0,0],[-8.361,9.959],[0,0]],"v":[[-249.674,103.832],[-249.717,103.786],[-251.667,101.638],[-258.414,93.88],[-280.502,65.729],[-336.618,-32.269],[-362.443,-172.769],[-292.613,-323.585],[-162.156,-383.217],[-59.268,-330.662],[-5.731,-262.1],[47.804,-330.662],[150.693,-383.217],[281.151,-323.586],[357.159,-186.507],[348.519,-61.958],[306.813,20.634],[289.241,43.499],[283.676,49.825],[282.28,51.33],[9.348,376.514],[-20.807,376.514]],"c":true}]},{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0},"t":17,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":20,"s":[{"i":[[14.574,11.501],[0,0],[0,0],[0,0],[0,0],[22.678,37.202],[-4.575,40.99],[-53.302,36.11],[-50.513,-2.577],[-31.839,-20.725],[-15.931,-17.11],[-26.456,17.221],[-49.418,2.521],[-52.421,-35.508],[-10.921,-36.989],[13.127,-28.076],[0,0],[0,0],[1.654,-1.195],[0,0],[191.873,-99.288],[14.425,6.788]],"o":[[-14.574,-11.502],[-0.567,-0.408],[0,0],[0,0],[0,0],[-19.497,-31.985],[4.694,-42.054],[52.415,-35.51],[49.418,2.521],[26.456,17.221],[15.93,-17.11],[31.839,-20.725],[50.509,-2.577],[51.252,34.716],[10.879,36.847],[-29.547,63.196],[0,0],[0,0],[-0.651,0.473],[0,0],[-10.627,3.212],[-190.239,-93.788]],"v":[[-285.147,201.501],[-310.314,178.965],[-329.384,161.265],[-345.804,146.126],[-373.197,116.349],[-408.213,62.298],[-436.925,-73.386],[-348.922,-197.233],[-193.314,-244.423],[-70.589,-202.834],[-6.731,-148.578],[57.125,-202.834],[179.85,-244.423],[335.46,-197.234],[426.121,-88.757],[421.571,20.804],[326.825,146.664],[294.354,175.257],[275.942,190.513],[254.917,207.705],[21.255,356.575],[-42.714,356.575]],"c":true}]},{"t":24,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156862745,0.027450980392,0.623529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":6,"op":62,"st":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Like Color 4","parent":5,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":5,"s":[-2,434.828,0],"to":[0.333,-72.471,0],"ti":[-0.333,72.471,0]},{"t":12,"s":[0,0,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.4,0.4,0.4],"y":[1,1,1]},"o":{"x":[0.6,0.6,0.6],"y":[0,0,0]},"t":5,"s":[36,36,100]},{"t":12,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.19,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":5,"s":[{"i":[[15.537,10.805],[0,0],[0,0],[0,0],[0,0],[24.175,34.947],[-4.877,38.506],[-56.821,33.922],[-53.848,-2.421],[-33.941,-19.469],[-16.983,-16.073],[-28.203,16.177],[-52.681,2.369],[-55.881,-33.356],[-11.642,-34.748],[13.993,-26.374],[0,0],[0,0],[1.764,-1.123],[0,0],[204.541,-93.271],[15.378,6.376]],"o":[[-15.537,-10.805],[-0.604,-0.383],[0,0],[0,0],[0,0],[-20.785,-30.046],[5.004,-39.505],[55.876,-33.358],[52.68,2.368],[28.203,16.177],[16.981,-16.073],[33.941,-19.469],[53.844,-2.421],[54.635,32.613],[11.597,34.614],[-31.498,59.367],[0,0],[0,0],[-0.694,0.444],[0,0],[-11.329,3.018],[-202.799,-88.104]],"v":[[-303.824,211.323],[-330.653,190.152],[-350.982,173.525],[-368.486,159.303],[-397.687,131.331],[-435.015,80.555],[-465.623,-46.906],[-371.81,-163.249],[-205.928,-207.579],[-75.101,-168.51],[-7.027,-117.542],[61.045,-168.51],[191.873,-207.579],[357.756,-163.25],[454.403,-61.346],[449.552,41.575],[348.551,159.808],[313.936,186.669],[294.309,201.001],[271.896,217.15],[12.146,357.199],[-26.197,357.199]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0.819,0.913],[2.814,3.325],[8.731,11.953],[16.875,40.213],[-3.836,51.798],[-44.687,45.632],[-42.348,-3.257],[-26.693,-26.189],[-13.356,-21.621],[-22.18,21.761],[-41.431,3.186],[-43.948,-44.871],[-9.156,-46.742],[11.481,-35.165],[13.512,-19.323],[4.56,-5.377],[1.387,-1.51],[0.382,-0.406],[0,0],[8.36,9.959]],"o":[[0,0],[-0.475,-0.516],[-1.637,-1.825],[-5.62,-6.641],[-17.318,-23.709],[-16.798,-40.031],[3.935,-53.142],[43.943,-44.873],[41.43,3.186],[22.18,21.761],[13.355,-21.621],[26.693,-26.189],[42.345,-3.257],[42.968,43.87],[9.121,46.563],[-11.393,34.896],[-6.828,9.764],[-2.285,2.694],[-0.545,0.597],[0,0],[-8.361,9.959],[0,0]],"v":[[-249.674,103.832],[-249.717,103.786],[-251.667,101.638],[-258.414,93.88],[-280.502,65.729],[-336.618,-32.269],[-362.443,-172.769],[-292.613,-323.585],[-162.156,-383.217],[-59.268,-330.662],[-5.731,-262.1],[47.804,-330.662],[150.693,-383.217],[281.151,-323.586],[357.159,-186.507],[348.519,-61.958],[306.813,20.634],[289.241,43.499],[283.676,49.825],[282.28,51.33],[9.348,376.514],[-20.807,376.514]],"c":true}]},{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0},"t":17,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":20,"s":[{"i":[[14.574,11.501],[0,0],[0,0],[0,0],[0,0],[22.678,37.202],[-4.575,40.99],[-53.302,36.11],[-50.513,-2.577],[-31.839,-20.725],[-15.931,-17.11],[-26.456,17.221],[-49.418,2.521],[-52.421,-35.508],[-10.921,-36.989],[13.127,-28.076],[0,0],[0,0],[1.654,-1.195],[0,0],[191.873,-99.288],[14.425,6.788]],"o":[[-14.574,-11.502],[-0.567,-0.408],[0,0],[0,0],[0,0],[-19.497,-31.985],[4.694,-42.054],[52.415,-35.51],[49.418,2.521],[26.456,17.221],[15.93,-17.11],[31.839,-20.725],[50.509,-2.577],[51.252,34.716],[10.879,36.847],[-29.547,63.196],[0,0],[0,0],[-0.651,0.473],[0,0],[-10.627,3.212],[-190.239,-93.788]],"v":[[-285.147,201.501],[-310.314,178.965],[-329.384,161.265],[-345.804,146.126],[-373.197,116.349],[-408.213,62.298],[-436.925,-73.386],[-348.922,-197.233],[-193.314,-244.423],[-70.589,-202.834],[-6.731,-148.578],[57.125,-202.834],[179.85,-244.423],[335.46,-197.234],[426.121,-88.757],[421.571,20.804],[326.825,146.664],[294.354,175.257],[275.942,190.513],[254.917,207.705],[21.255,356.575],[-42.714,356.575]],"c":true}]},{"t":24,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.792156862745,0.027450980392,0.623529411765,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":61,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Like Color 3","parent":5,"tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.19,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":5,"s":[{"i":[[15.537,10.805],[0,0],[0,0],[0,0],[0,0],[24.175,34.947],[-4.877,38.506],[-56.821,33.922],[-53.848,-2.421],[-33.941,-19.469],[-16.983,-16.073],[-28.203,16.177],[-52.681,2.369],[-55.881,-33.356],[-11.642,-34.748],[13.993,-26.374],[0,0],[0,0],[1.764,-1.123],[0,0],[204.541,-93.271],[15.378,6.376]],"o":[[-15.537,-10.805],[-0.604,-0.383],[0,0],[0,0],[0,0],[-20.785,-30.046],[5.004,-39.505],[55.876,-33.358],[52.68,2.368],[28.203,16.177],[16.981,-16.073],[33.941,-19.469],[53.844,-2.421],[54.635,32.613],[11.597,34.614],[-31.498,59.367],[0,0],[0,0],[-0.694,0.444],[0,0],[-11.329,3.018],[-202.799,-88.104]],"v":[[-303.824,211.323],[-330.653,190.152],[-350.982,173.525],[-368.486,159.303],[-397.687,131.331],[-435.015,80.555],[-465.623,-46.906],[-371.81,-163.249],[-205.928,-207.579],[-75.101,-168.51],[-7.027,-117.542],[61.045,-168.51],[191.873,-207.579],[357.756,-163.25],[454.403,-61.346],[449.552,41.575],[348.551,159.808],[313.936,186.669],[294.309,201.001],[271.896,217.15],[12.146,357.199],[-26.197,357.199]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0.819,0.913],[2.814,3.325],[8.731,11.953],[16.875,40.213],[-3.836,51.798],[-44.687,45.632],[-42.348,-3.257],[-26.693,-26.189],[-13.356,-21.621],[-22.18,21.761],[-41.431,3.186],[-43.948,-44.871],[-9.156,-46.742],[11.481,-35.165],[13.512,-19.323],[4.56,-5.377],[1.387,-1.51],[0.382,-0.406],[0,0],[8.36,9.959]],"o":[[0,0],[-0.475,-0.516],[-1.637,-1.825],[-5.62,-6.641],[-17.318,-23.709],[-16.798,-40.031],[3.935,-53.142],[43.943,-44.873],[41.43,3.186],[22.18,21.761],[13.355,-21.621],[26.693,-26.189],[42.345,-3.257],[42.968,43.87],[9.121,46.563],[-11.393,34.896],[-6.828,9.764],[-2.285,2.694],[-0.545,0.597],[0,0],[-8.361,9.959],[0,0]],"v":[[-249.674,103.832],[-249.717,103.786],[-251.667,101.638],[-258.414,93.88],[-280.502,65.729],[-336.618,-32.269],[-362.443,-172.769],[-292.613,-323.585],[-162.156,-383.217],[-59.268,-330.662],[-5.731,-262.1],[47.804,-330.662],[150.693,-383.217],[281.151,-323.586],[357.159,-186.507],[348.519,-61.958],[306.813,20.634],[289.241,43.499],[283.676,49.825],[282.28,51.33],[9.348,376.514],[-20.807,376.514]],"c":true}]},{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0},"t":17,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":20,"s":[{"i":[[14.574,11.501],[0,0],[0,0],[0,0],[0,0],[22.678,37.202],[-4.575,40.99],[-53.302,36.11],[-50.513,-2.577],[-31.839,-20.725],[-15.931,-17.11],[-26.456,17.221],[-49.418,2.521],[-52.421,-35.508],[-10.921,-36.989],[13.127,-28.076],[0,0],[0,0],[1.654,-1.195],[0,0],[191.873,-99.288],[14.425,6.788]],"o":[[-14.574,-11.502],[-0.567,-0.408],[0,0],[0,0],[0,0],[-19.497,-31.985],[4.694,-42.054],[52.415,-35.51],[49.418,2.521],[26.456,17.221],[15.93,-17.11],[31.839,-20.725],[50.509,-2.577],[51.252,34.716],[10.879,36.847],[-29.547,63.196],[0,0],[0,0],[-0.651,0.473],[0,0],[-10.627,3.212],[-190.239,-93.788]],"v":[[-285.147,201.501],[-310.314,178.965],[-329.384,161.265],[-345.804,146.126],[-373.197,116.349],[-408.213,62.298],[-436.925,-73.386],[-348.922,-197.233],[-193.314,-244.423],[-70.589,-202.834],[-6.731,-148.578],[57.125,-202.834],[179.85,-244.423],[335.46,-197.234],[426.121,-88.757],[421.571,20.804],[326.825,146.664],[294.354,175.257],[275.942,190.513],[254.917,207.705],[21.255,356.575],[-42.714,356.575]],"c":true}]},{"t":24,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.874509803922,0.531564749923,0.798880722943,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":5,"op":61,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Like","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":5,"s":[0]},{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[13]},{"t":17,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0,"y":1},"o":{"x":1,"y":0},"t":5,"s":[800,800,0],"to":[1.667,-22.833,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":1},"o":{"x":0.8,"y":0},"t":12,"s":[810,663,0],"to":[0,0,0],"ti":[1.667,-22.833,0]},{"t":17,"s":[800,800,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.4,0.4,0.4],"y":[1,1,1]},"o":{"x":[0.6,0.6,0.6],"y":[0,0,0]},"t":5,"s":[100,100,100]},{"i":{"x":[0.4,0.4,0.4],"y":[1,1,1]},"o":{"x":[0.6,0.6,0.6],"y":[0,0,0]},"t":12,"s":[121,121,100]},{"t":17,"s":[100,100,100]}],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.19,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[9.287,18.318],[0,0],[0,0],[0.398,0.734],[1.686,2.893],[6.63,9.544],[23.055,18.726],[26.012,1.656],[38.106,-32.213],[2.601,-29.08],[-15.501,-30.58],[-17.271,-19.574],[-5.308,-5.191],[-1.369,-1.263],[-0.306,-0.275],[0,0],[0,0],[0,0],[0,0],[-9.529,9.397],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.87,1.828],[-5.996,7.099],[-9.069,22.999],[6.143,25.967],[39.224,33.159],[24.971,-1.59],[23.126,-18.782],[13.435,-19.34],[3.378,-5.799],[0.795,-1.47],[0.166,-0.318]],"o":[[0,0],[-9.286,18.318],[0,0],[0,0],[-0.166,-0.318],[-0.796,-1.469],[-3.379,-5.799],[-13.437,-19.34],[-23.124,-18.782],[-24.966,-1.59],[-37.259,31.498],[-2.715,30.347],[15.414,30.409],[8.553,9.694],[2.649,2.592],[0.684,0.631],[0,0],[0,0],[0,0],[0,0],[9.529,9.397],[0,0],[0,0],[0,0],[0,0],[0,0],[0.92,-0.833],[3.759,-3.666],[12.163,-14.394],[8.967,-22.744],[-6.103,-25.797],[-38.113,-32.214],[-26.009,1.656],[-23.053,18.726],[-6.629,9.544],[-1.686,2.893],[-0.397,0.734],[0,0]],"v":[[27.765,-160.404],[16.508,-138.198],[-28.568,-138.197],[-39.807,-160.366],[-39.983,-160.704],[-40.829,-162.292],[-44.561,-168.912],[-59.654,-192.529],[-115.107,-253.946],[-189.191,-286.686],[-283.819,-248.212],[-337.301,-155.968],[-315.553,-63.293],[-262.184,13.571],[-240.802,36.139],[-234.701,41.952],[-233.206,43.315],[-232.905,43.584],[-232.862,43.622],[-232.076,44.311],[-23.216,250.321],[11.154,250.321],[270.655,-5.637],[271.658,-6.485],[271.707,-6.527],[271.8,-6.609],[272.759,-7.461],[277.008,-11.469],[292.122,-27.763],[327.279,-84.988],[333.964,-158.54],[271.761,-248.211],[177.122,-286.686],[103.039,-253.947],[47.59,-192.53],[32.5,-168.913],[28.769,-162.293],[27.922,-160.706]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":5,"s":[{"i":[[0,0],[0,0],[10.158,13.194],[0,0],[0,0],[0.435,0.529],[1.844,2.084],[7.253,6.874],[25.217,13.488],[28.451,1.193],[41.679,-23.202],[2.846,-20.945],[-9.356,-17.439],[-11.826,-12.205],[0,0],[0,0],[-0.335,-0.198],[0,0],[0,0],[0,0],[-65.391,-27.115],[-16.238,6.813],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-10.258,10.459],[-7.899,16.306],[6.72,18.703],[42.905,23.881],[27.313,-1.145],[25.294,-13.53],[14.694,-13.932],[3.696,-4.176],[0.87,-1.059],[0.182,-0.229]],"o":[[0,0],[-10.157,13.194],[0,0],[0,0],[-0.182,-0.229],[-0.87,-1.058],[-3.696,-4.177],[-14.697,-13.93],[-25.293,-13.528],[-27.307,-1.145],[-40.753,22.687],[-2.97,21.858],[9.356,17.439],[13.327,13.754],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[16.096,7.029],[73.661,-26.654],[0,0],[0,0],[0,0],[0,0],[1.006,-0.6],[0,0],[10.258,-10.459],[7.899,-16.306],[-6.676,-18.581],[-41.687,-23.203],[-28.448,1.193],[-25.215,13.488],[-7.25,6.874],[-1.844,2.083],[-0.435,0.529],[0,0]],"v":[[30.365,-47.434],[18.052,-36.054],[-31.251,-36.054],[-43.545,-47.407],[-43.737,-47.651],[-44.663,-48.794],[-48.744,-53.562],[-65.253,-70.573],[-125.907,-109.273],[-206.938,-132.855],[-310.441,-105.143],[-368.939,-38.702],[-351.714,36.354],[-317.403,82.027],[-281.438,115.355],[-263.826,128.308],[-251.253,137.134],[-237.798,146.556],[-214.782,160.887],[-176.186,184.454],[-24.304,265.471],[13.29,265.471],[199.233,163.243],[232.051,142.33],[251.792,127.996],[268.301,115.479],[288.491,97.332],[302.982,85.217],[330.451,58.254],[360.702,17.037],[365.28,-40.555],[297.243,-105.143],[193.729,-132.855],[112.699,-109.274],[52.049,-70.574],[35.544,-53.563],[31.463,-48.795],[30.536,-47.652]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[8.613,20.725],[0,0],[0,0],[0.369,0.831],[1.563,3.273],[6.149,10.798],[21.381,21.187],[24.123,1.874],[35.339,-36.447],[2.413,-32.901],[-14.376,-34.599],[-16.016,-22.147],[-4.921,-5.874],[-1.27,-1.429],[-0.284,-0.311],[0,0],[0,0],[0,0],[0,0],[-8.837,10.632],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.736,2.066],[-5.562,8.031],[-8.409,26.022],[5.698,29.379],[36.38,37.513],[23.159,-1.799],[21.446,-21.252],[12.458,-21.883],[3.134,-6.56],[0.738,-1.663],[0.154,-0.359]],"o":[[0,0],[-8.612,20.726],[0,0],[0,0],[-0.154,-0.359],[-0.738,-1.662],[-3.133,-6.561],[-12.461,-21.882],[-21.446,-21.251],[-23.154,-1.799],[-34.554,35.637],[-2.518,34.335],[14.295,34.405],[7.932,10.968],[2.457,2.932],[0.635,0.714],[0,0],[0,0],[0,0],[0,0],[8.837,10.632],[0,0],[0,0],[0,0],[0,0],[0,0],[0.853,-0.942],[3.486,-4.148],[11.28,-16.286],[8.316,-25.733],[-5.66,-29.187],[-35.346,-36.447],[-24.121,1.873],[-21.379,21.186],[-6.147,10.798],[-1.563,3.273],[-0.369,0.831],[0,0]],"v":[[25.753,-179.606],[15.313,-154.482],[-26.491,-154.481],[-36.914,-179.563],[-37.077,-179.946],[-37.862,-181.742],[-41.323,-189.232],[-55.32,-215.952],[-106.748,-285.44],[-175.454,-322.483],[-263.213,-278.953],[-312.813,-174.587],[-292.644,-69.734],[-243.149,17.23],[-223.319,42.765],[-217.66,49.341],[-216.274,50.883],[-215.995,51.188],[-215.955,51.231],[-215.226,52.01],[-21.527,285.091],[10.348,285.091],[251.011,-4.501],[251.941,-5.461],[251.987,-5.509],[252.073,-5.601],[252.963,-6.565],[256.902,-11.1],[270.919,-29.535],[303.524,-94.28],[309.725,-177.497],[252.037,-278.952],[164.267,-322.483],[95.563,-285.441],[44.139,-215.953],[30.144,-189.233],[26.684,-181.743],[25.898,-179.947]],"c":true}]},{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0},"t":17,"s":[{"i":[[0,0],[0,0],[9.287,18.318],[0,0],[0,0],[0.398,0.734],[1.686,2.893],[6.63,9.544],[23.055,18.726],[26.012,1.656],[38.106,-32.213],[2.601,-29.08],[-15.501,-30.58],[-17.271,-19.574],[-5.308,-5.191],[-1.369,-1.263],[-0.306,-0.275],[0,0],[0,0],[0,0],[0,0],[-9.529,9.397],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.87,1.828],[-5.996,7.099],[-9.069,22.999],[6.143,25.967],[39.224,33.159],[24.971,-1.59],[23.126,-18.782],[13.435,-19.34],[3.378,-5.799],[0.795,-1.47],[0.166,-0.318]],"o":[[0,0],[-9.286,18.318],[0,0],[0,0],[-0.166,-0.318],[-0.796,-1.469],[-3.379,-5.799],[-13.437,-19.34],[-23.124,-18.782],[-24.966,-1.59],[-37.259,31.498],[-2.715,30.347],[15.414,30.409],[8.553,9.694],[2.649,2.592],[0.684,0.631],[0,0],[0,0],[0,0],[0,0],[9.529,9.397],[0,0],[0,0],[0,0],[0,0],[0,0],[0.92,-0.833],[3.759,-3.666],[12.163,-14.394],[8.967,-22.744],[-6.103,-25.797],[-38.113,-32.214],[-26.009,1.656],[-23.053,18.726],[-6.629,9.544],[-1.686,2.893],[-0.397,0.734],[0,0]],"v":[[27.765,-160.404],[16.508,-138.198],[-28.568,-138.197],[-39.807,-160.366],[-39.983,-160.704],[-40.829,-162.292],[-44.561,-168.912],[-59.654,-192.529],[-115.107,-253.946],[-189.191,-286.686],[-283.819,-248.212],[-337.301,-155.968],[-315.553,-63.293],[-262.184,13.571],[-240.802,36.139],[-234.701,41.952],[-233.206,43.315],[-232.905,43.584],[-232.862,43.622],[-232.076,44.311],[-23.216,250.321],[11.154,250.321],[270.655,-5.637],[271.658,-6.485],[271.707,-6.527],[271.8,-6.609],[272.759,-7.461],[277.008,-11.469],[292.122,-27.763],[327.279,-84.988],[333.964,-158.54],[271.761,-248.211],[177.122,-286.686],[103.039,-253.947],[47.59,-192.53],[32.5,-168.913],[28.769,-162.293],[27.922,-160.706]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":20,"s":[{"i":[[0,0],[0,0],[9.721,14.297],[0,0],[0,0],[0.416,0.573],[1.764,2.258],[6.941,7.449],[24.132,14.616],[27.227,1.293],[39.886,-25.143],[2.723,-22.697],[-8.953,-18.897],[-11.318,-13.226],[0,0],[0,0],[-0.32,-0.215],[0,0],[0,0],[0,0],[-62.578,-29.383],[-15.539,7.383],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-9.816,11.334],[-7.559,17.67],[6.431,20.267],[41.06,25.878],[26.138,-1.241],[24.206,-14.662],[14.062,-15.097],[3.537,-4.525],[0.833,-1.147],[0.174,-0.248]],"o":[[0,0],[-9.72,14.298],[0,0],[0,0],[-0.174,-0.248],[-0.833,-1.147],[-3.537,-4.526],[-14.065,-15.095],[-24.205,-14.66],[-26.133,-1.241],[-39,24.584],[-2.842,23.686],[8.953,18.897],[12.754,14.904],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[15.404,7.617],[70.493,-28.883],[0,0],[0,0],[0,0],[0,0],[0.963,-0.65],[0,0],[9.816,-11.334],[7.559,-17.67],[-6.389,-20.135],[-39.894,-25.144],[-27.225,1.292],[-24.13,14.616],[-6.938,7.449],[-1.764,2.258],[-0.416,0.573],[0,0]],"v":[[29.061,-74.194],[17.278,-61.862],[-29.905,-61.861],[-41.669,-74.164],[-41.853,-74.428],[-42.74,-75.667],[-46.646,-80.834],[-62.444,-99.268],[-120.489,-141.205],[-198.035,-166.759],[-297.085,-136.73],[-353.067,-64.732],[-336.583,16.603],[-303.748,66.096],[-269.329,102.211],[-252.475,116.248],[-240.443,125.812],[-227.567,136.022],[-205.541,151.552],[-168.605,177.09],[-23.256,264.883],[12.72,264.883],[190.665,154.105],[222.071,131.442],[240.963,115.909],[256.762,102.345],[276.083,82.681],[289.951,69.552],[316.239,40.334],[345.188,-4.33],[349.569,-66.739],[284.459,-136.729],[185.397,-166.759],[107.853,-141.206],[49.812,-99.269],[34.017,-80.835],[30.111,-75.668],[29.225,-74.429]],"c":true}]},{"t":24,"s":[{"i":[[0,0],[0,0],[9.287,18.318],[0,0],[0,0],[0.398,0.734],[1.686,2.893],[6.63,9.544],[23.055,18.726],[26.012,1.656],[38.106,-32.213],[2.601,-29.08],[-15.501,-30.58],[-17.271,-19.574],[-5.308,-5.191],[-1.369,-1.263],[-0.306,-0.275],[0,0],[0,0],[0,0],[0,0],[-9.529,9.397],[0,0],[0,0],[0,0],[0,0],[0,0],[-1.87,1.828],[-5.996,7.099],[-9.069,22.999],[6.143,25.967],[39.224,33.159],[24.971,-1.59],[23.126,-18.782],[13.435,-19.34],[3.378,-5.799],[0.795,-1.47],[0.166,-0.318]],"o":[[0,0],[-9.286,18.318],[0,0],[0,0],[-0.166,-0.318],[-0.796,-1.469],[-3.379,-5.799],[-13.437,-19.34],[-23.124,-18.782],[-24.966,-1.59],[-37.259,31.498],[-2.715,30.347],[15.414,30.409],[8.553,9.694],[2.649,2.592],[0.684,0.631],[0,0],[0,0],[0,0],[0,0],[9.529,9.397],[0,0],[0,0],[0,0],[0,0],[0,0],[0.92,-0.833],[3.759,-3.666],[12.163,-14.394],[8.967,-22.744],[-6.103,-25.797],[-38.113,-32.214],[-26.009,1.656],[-23.053,18.726],[-6.629,9.544],[-1.686,2.893],[-0.397,0.734],[0,0]],"v":[[27.765,-160.404],[16.508,-138.198],[-28.568,-138.197],[-39.807,-160.366],[-39.983,-160.704],[-40.829,-162.292],[-44.561,-168.912],[-59.654,-192.529],[-115.107,-253.946],[-189.191,-286.686],[-283.819,-248.212],[-337.301,-155.968],[-315.553,-63.293],[-262.184,13.571],[-240.802,36.139],[-234.701,41.952],[-233.206,43.315],[-232.905,43.584],[-232.862,43.622],[-232.076,44.311],[-23.216,250.321],[11.154,250.321],[270.655,-5.637],[271.658,-6.485],[271.707,-6.527],[271.8,-6.609],[272.759,-7.461],[277.008,-11.469],[292.122,-27.763],[327.279,-84.988],[333.964,-158.54],[271.761,-248.211],[177.122,-286.686],[103.039,-253.947],[47.59,-192.53],[32.5,-168.913],[28.769,-162.293],[27.922,-160.706]],"c":true}]}],"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.19,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":5,"s":[{"i":[[15.537,10.804],[0,0],[0,0],[0,0],[0,0],[24.175,34.947],[-4.877,38.506],[-56.821,33.922],[-53.848,-2.421],[-33.941,-19.469],[-16.983,-16.073],[-28.203,16.177],[-52.681,2.369],[-55.881,-33.356],[-11.642,-34.748],[13.993,-26.374],[0,0],[0,0],[1.764,-1.123],[0,0],[204.541,-93.271],[15.378,6.376]],"o":[[-15.537,-10.805],[-0.604,-0.383],[0,0],[0,0],[0,0],[-20.785,-30.046],[5.004,-39.505],[55.876,-33.358],[52.68,2.368],[28.203,16.177],[16.981,-16.073],[33.941,-19.469],[53.844,-2.421],[54.635,32.613],[11.597,34.614],[-31.498,59.367],[0,0],[0,0],[-0.694,0.444],[0,0],[-11.329,3.018],[-202.799,-88.104]],"v":[[-303.824,211.323],[-330.653,190.152],[-350.982,173.525],[-368.486,159.303],[-397.687,131.331],[-435.015,80.555],[-465.623,-46.906],[-371.81,-163.249],[-205.928,-207.579],[-75.101,-168.51],[-7.027,-117.542],[61.045,-168.51],[191.873,-207.579],[357.756,-163.25],[454.403,-61.346],[449.552,41.575],[348.551,159.808],[313.936,186.669],[294.309,201.001],[271.896,217.15],[30.646,357.295],[-51.197,357.295]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0.819,0.913],[2.814,3.325],[8.731,11.953],[16.875,40.213],[-3.836,51.798],[-44.687,45.632],[-42.348,-3.257],[-26.693,-26.189],[-13.356,-21.621],[-22.18,21.761],[-41.431,3.186],[-43.948,-44.871],[-9.156,-46.742],[11.481,-35.165],[13.512,-19.323],[4.56,-5.377],[1.387,-1.51],[0.382,-0.406],[0,0],[8.36,9.959]],"o":[[0,0],[-0.475,-0.516],[-1.637,-1.825],[-5.62,-6.641],[-17.318,-23.709],[-16.798,-40.031],[3.935,-53.142],[43.943,-44.873],[41.43,3.186],[22.18,21.761],[13.355,-21.621],[26.693,-26.189],[42.345,-3.257],[42.968,43.87],[9.121,46.563],[-11.393,34.896],[-6.828,9.764],[-2.285,2.694],[-0.545,0.597],[0,0],[-8.361,9.959],[0,0]],"v":[[-249.674,103.832],[-249.717,103.786],[-251.667,101.638],[-258.414,93.88],[-280.502,65.729],[-336.618,-32.269],[-362.443,-172.769],[-292.613,-323.585],[-162.156,-383.217],[-59.268,-330.662],[-5.731,-262.1],[47.804,-330.662],[150.693,-383.217],[281.151,-323.586],[357.159,-186.507],[348.519,-61.958],[306.813,20.634],[289.241,43.499],[283.676,49.825],[282.28,51.33],[9.348,376.514],[-20.807,376.514]],"c":true}]},{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0},"t":17,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":20,"s":[{"i":[[14.574,11.501],[0,0],[0,0],[0,0],[0,0],[22.678,37.202],[-4.575,40.99],[-53.302,36.11],[-50.513,-2.577],[-31.839,-20.725],[-15.931,-17.11],[-26.456,17.221],[-49.418,2.521],[-52.421,-35.508],[-10.921,-36.989],[13.127,-28.076],[0,0],[0,0],[1.654,-1.195],[0,0],[191.873,-99.288],[14.425,6.788]],"o":[[-14.574,-11.502],[-0.567,-0.408],[0,0],[0,0],[0,0],[-19.497,-31.985],[4.694,-42.054],[52.415,-35.51],[49.418,2.521],[26.456,17.221],[15.93,-17.11],[31.839,-20.725],[50.509,-2.577],[51.252,34.716],[10.879,36.847],[-29.547,63.196],[0,0],[0,0],[-0.651,0.473],[0,0],[-10.627,3.212],[-190.239,-93.788]],"v":[[-285.147,201.501],[-310.314,178.965],[-329.384,161.265],[-345.804,146.126],[-373.197,116.349],[-408.213,62.298],[-436.925,-73.386],[-348.922,-197.233],[-193.314,-244.423],[-70.589,-202.834],[-6.731,-148.578],[57.125,-202.834],[179.85,-244.423],[335.46,-197.234],[426.121,-88.757],[421.571,20.804],[326.825,146.664],[294.354,175.257],[275.942,190.513],[254.917,207.705],[21.255,356.575],[-42.714,356.575]],"c":true}]},{"t":24,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.4,0.4,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":61,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Like Afterglow","parent":5,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[45.556]},{"t":20,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.854]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0]},"t":9,"s":[100,100,100]},{"i":{"x":[0.999,0.999,0.999],"y":[1,1,1]},"o":{"x":[0.6,0.6,0.6],"y":[0,0,0]},"t":13,"s":[115.222,115.222,100]},{"t":20,"s":[168,168,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.5,"y":1},"o":{"x":0.19,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":5,"s":[{"i":[[15.537,10.805],[0,0],[0,0],[0,0],[0,0],[24.175,34.947],[-4.877,38.506],[-56.821,33.922],[-53.848,-2.421],[-33.941,-19.469],[-16.983,-16.073],[-28.203,16.177],[-52.681,2.369],[-55.881,-33.356],[-11.642,-34.748],[13.993,-26.374],[0,0],[0,0],[1.764,-1.123],[0,0],[204.541,-93.271],[15.378,6.376]],"o":[[-15.537,-10.805],[-0.604,-0.383],[0,0],[0,0],[0,0],[-20.785,-30.046],[5.004,-39.505],[55.876,-33.358],[52.68,2.368],[28.203,16.177],[16.981,-16.073],[33.941,-19.469],[53.844,-2.421],[54.635,32.613],[11.597,34.614],[-31.498,59.367],[0,0],[0,0],[-0.694,0.444],[0,0],[-11.329,3.018],[-202.799,-88.104]],"v":[[-303.824,211.323],[-330.653,190.152],[-350.982,173.525],[-368.486,159.303],[-397.687,131.331],[-435.015,80.555],[-465.623,-46.906],[-371.81,-163.249],[-205.928,-207.579],[-75.101,-168.51],[-7.027,-117.542],[61.045,-168.51],[191.873,-207.579],[357.756,-163.25],[454.403,-61.346],[449.552,41.575],[348.551,159.808],[313.936,186.669],[294.309,201.001],[271.896,217.15],[12.146,357.199],[-26.197,357.199]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":12,"s":[{"i":[[0,0],[0,0],[0.819,0.913],[2.814,3.325],[8.731,11.953],[16.875,40.213],[-3.836,51.798],[-44.687,45.632],[-42.348,-3.257],[-26.693,-26.189],[-13.356,-21.621],[-22.18,21.761],[-41.431,3.186],[-43.948,-44.871],[-9.156,-46.742],[11.481,-35.165],[13.512,-19.323],[4.56,-5.377],[1.387,-1.51],[0.382,-0.406],[0,0],[8.36,9.959]],"o":[[0,0],[-0.475,-0.516],[-1.637,-1.825],[-5.62,-6.641],[-17.318,-23.709],[-16.798,-40.031],[3.935,-53.142],[43.943,-44.873],[41.43,3.186],[22.18,21.761],[13.355,-21.621],[26.693,-26.189],[42.345,-3.257],[42.968,43.87],[9.121,46.563],[-11.393,34.896],[-6.828,9.764],[-2.285,2.694],[-0.545,0.597],[0,0],[-8.361,9.959],[0,0]],"v":[[-249.674,103.832],[-249.717,103.786],[-251.667,101.638],[-258.414,93.88],[-280.502,65.729],[-336.618,-32.269],[-362.443,-172.769],[-292.613,-323.585],[-162.156,-383.217],[-59.268,-330.662],[-5.731,-262.1],[47.804,-330.662],[150.693,-383.217],[281.151,-323.586],[357.159,-186.507],[348.519,-61.958],[306.813,20.634],[289.241,43.499],[283.676,49.825],[282.28,51.33],[9.348,376.514],[-20.807,376.514]],"c":true}]},{"i":{"x":0.5,"y":1},"o":{"x":0.167,"y":0},"t":17,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":20,"s":[{"i":[[14.574,11.501],[0,0],[0,0],[0,0],[0,0],[22.678,37.202],[-4.575,40.99],[-53.302,36.11],[-50.513,-2.577],[-31.839,-20.725],[-15.931,-17.11],[-26.456,17.221],[-49.418,2.521],[-52.421,-35.508],[-10.921,-36.989],[13.127,-28.076],[0,0],[0,0],[1.654,-1.195],[0,0],[191.873,-99.288],[14.425,6.788]],"o":[[-14.574,-11.502],[-0.567,-0.408],[0,0],[0,0],[0,0],[-19.497,-31.985],[4.694,-42.054],[52.415,-35.51],[49.418,2.521],[26.456,17.221],[15.93,-17.11],[31.839,-20.725],[50.509,-2.577],[51.252,34.716],[10.879,36.847],[-29.547,63.196],[0,0],[0,0],[-0.651,0.473],[0,0],[-10.627,3.212],[-190.239,-93.788]],"v":[[-285.147,201.501],[-310.314,178.965],[-329.384,161.265],[-345.804,146.126],[-373.197,116.349],[-408.213,62.298],[-436.925,-73.386],[-348.922,-197.233],[-193.314,-244.423],[-70.589,-202.834],[-6.731,-148.578],[57.125,-202.834],[179.85,-244.423],[335.46,-197.234],[426.121,-88.757],[421.571,20.804],[326.825,146.664],[294.354,175.257],[275.942,190.513],[254.917,207.705],[21.255,356.575],[-42.714,356.575]],"c":true}]},{"t":24,"s":[{"i":[[0,0],[0,0],[0.934,0.862],[3.208,3.137],[9.951,11.279],[19.234,37.944],[-4.372,48.876],[-50.933,43.057],[-48.268,-3.073],[-30.424,-24.711],[-15.223,-20.401],[-25.28,20.533],[-47.222,3.006],[-50.09,-42.34],[-10.435,-44.105],[13.083,-33.182],[15.403,-18.231],[5.198,-5.073],[1.581,-1.425],[0.436,-0.383],[0,0],[9.529,9.397]],"o":[[0,0],[-0.542,-0.487],[-1.866,-1.722],[-6.406,-6.266],[-19.739,-22.371],[-19.146,-37.773],[4.485,-50.144],[50.086,-42.341],[47.221,3.006],[25.28,20.534],[15.222,-20.401],[30.424,-24.711],[48.264,-3.073],[48.974,41.395],[10.396,43.936],[-12.985,32.927],[-7.782,9.213],[-2.604,2.542],[-0.622,0.563],[0,0],[-9.529,9.397],[0,0]],"v":[[-284.573,97.974],[-284.622,97.93],[-286.845,95.904],[-294.535,88.584],[-319.71,62.021],[-383.67,-30.448],[-413.106,-163.021],[-333.514,-305.328],[-184.822,-361.596],[-67.552,-312.007],[-6.532,-247.313],[54.486,-312.006],[171.757,-361.596],[320.45,-305.329],[407.082,-175.984],[397.234,-58.463],[349.699,19.47],[329.671,41.044],[323.328,47.014],[321.737,48.434],[10.655,355.271],[-23.716,355.271]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.607843137255,0.913524373372,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":12,"op":62,"st":1,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/src/assets/lottie/zap_md.json b/src/assets/lottie/zap_md.json new file mode 100644 index 0000000..917ce01 --- /dev/null +++ b/src/assets/lottie/zap_md.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.4.5","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":31,"w":1125,"h":300,"nm":"Zap Medium","ddd":0,"assets":[{"id":"image_0","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2bub5DjuM03gz5vQuJfEDYzZOaItMCfmAC6fQOj1RBtVJ3D5BCqdQOgTZMGKDkfMpsETDHiCLtCz8M7gCZpYdITaJvPfiypKoARQAPEp8veLUEgqZGX+C8QGD98PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgvZERQAABT5JREFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuzP8CfMIcL2tPJNsAAAAASUVORK5CYII=","e":1},{"id":"image_1","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2buf3LiuLE/Av/vEBHJm1grMnjWQaentIKNWkJHDQsPFiBVU1ApMr6DoFTzSRqKGzVyBQyuokJwF5KyoFZQ4yy5L7/QgwrJkiRJFBv/J3zcxQb6495ISBcTP554DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8P/bgwMCAAAAACH9X90RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXaipjKuReVtAAAAABJRU5ErkJggg==","e":1},{"id":"image_2","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2bu73DjOLE3A7xdSGXU14qzAvCzAZSl6BZ2zgmJdFoyCkiswd1CcFTS9giBdGMxlsVdQqR0kXd1A3w21ghHnatAjxpmLSNGSRckklfx/HsAWqUxGfPxL4Hv1nXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4P+3BwckAAAAAIL+v25HoAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADcBc0kmcTVjB6BAAAAAElFTkSuQmCC","e":1},{"id":"image_3","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2bu35Dau9A7g/9NUMvMUMSsY5G2qPJI6KzC8AiOPqdRYwAqCWcHAKwi9AoB2Tflx4BUEWsGA8kxV3kztgMzTlCP2yQNaF5oXURRvon6/KhdNsvvgiEUJ3V9/FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALjzym1vAAAAAK5bnbfbabplumZVJuvZbe8HkqS57Q0AAADA9et2kmY7qdO6+2Rd55+1t70jEJQBAADgXqvftaOUMkqXYVKG6TJIebCq80fj294bnzblSwAAwLWo87ZNsp1kv0zW+7e8HT5Rdd4OUrJOfTkqk7+ukqT+ebCd/92epqvTpEzLZL243V3yqRKU4ZNU522brQxzlGFKHSZ5mFJepOuWaZqDdEf7ydYg6ZI0+0lWLiQAAN6tztth0k1Typcnvlnqs3TNMsmiTNYHN7457p06b8dpunGSpMuyTJ7vnDzm8SrJukyeT085v03qKlvdtHz14+KatwsnCMrwyajzdpAms3R1mJLfvP8C5YsyWa+ufmcAAPdD3W13Uut/XujgUn9I1yzKZL285m1xD22u7esyNU+Of6P8a5ms12+OezxNyjQp7VmBwE0gsS6TMhAs5KY9uO0NwA0apOv2k2acrWynyyadtuvaNNkkxaS0KXl46tlNFkkGN7RXAICPRp2320m3TK2fX/yk8mVK/bLOn7xIyqvsmfU7z+OTtpmglGlq/WPqqYdsv3XsIKXOUo9GZfLXM4MtZbJe1fnjdZq6SDK68k3DOWTKfAQ2b3Jpkwz7yEHSNP3/dklykDQrb2Ifrr+gGCdldmpwpimT8pV6UwDg/ujLjYYnZ4B06b+2n01PmNUZ5x/PWNiUKM1eHd+vP0pTRqnvyFaueZGUVZJlNuXjshZ4rc7bUVIXZz5ETZJaJq/6w9R5u0y6gzJ5Pr7A2oOU+tPb58NNEJS54zZj2h6szv2H5/XBZS/JWHDmatR5O07qzrGffS3flMn6RC0qAMDHps7bQVKXKb8o/zj3pPpDUpdl8uOizgfbyT9NU8o0ycMkh9nqxuX3P55ZjtQ3/h0nGaXUd5eTl7KXLqsk6yRr17mfpr4NwU5qPemyNs0AACAASURBVNmn6MTB5esyWc8uU5JUd9tFan2appvoL8NNEZS5w+q37Thdnb/fWeUwNUNvWFejz1JapKltujI7LWq+uaDJtp85APCxqPPfDVO2lskFHvyd7TDJw9Qcbm5+m+n7ZLbUedum6QM09QIBmldKeZauWyfNOv+YdfkP12D32YWyY95Wytfl6XpWd5/sp6s7pzX+Pfu1fjtI+dVPSZKm/qF8dfFz4bIEZe6oOm/HKecEZGoOk7LIg5fLvHyQ5GX6FkFtNumlGqZdszpvh2nqzutU3VoOk+yUyXp2qxsDADhH/badpqv/9e4jS3Ja046avTT1IF2zyqbEaPXBe7psgOb1AvVZkv1sNescZW04w/3wXo2jX59UvkiTYVLH5ene4L1f81Vj4JLfpNbdi5Q+wYcQlLmDzg3IlLxI182yvbUs/6bG9rb1WTLjlPrHN19UhwoA3D2bBqndYtNgt7+mzNb+BU9f31R/lzcBmvruHjTnLpS9pOwn3TppVrnBPwMfpi9XWqbWi5fWvT65/iGlzFLL+EMeVNd5u0ipT1PrH94n2wbel6DMHXNuQKbW3Ww3U8GYu6fO22lK/8TpF2P4AABu27FeeaV+0zfivfPXlPVPbZujDFPr+MTo40stmBdJXafJOl2zdM1299R5O0qpi1y+tO4wta7L5Pnwg/ey+3iVWtoy3tt+99FwOYIyV6hvXDZMk+10GabpJyWlSd+gbD/nNCir80fjlOZkQKZkL12ZSsO82+r88SJp1mWyFkkHAO6ETbPTzFLq55sSn25WJn9d3fK2LqXv9TdKMkxTh5fKoqk5fgdU8iIpi/JU+fldcKlypdNslS/K76+irO6zNuXBX1LLF+7FuC6CMh+oTwOdJWW0mU5d19l0h+8nCDZJl+00b9XHbiL0i6RZlMl6f7POGQGZWnaTvFfTNAAAqLvtLMko6Vbpmp1X1533RV9GPkzSpkmbWj+/9GKlPEuXkWvu29FPnF281ySwc5Tx3pXd59Z5u8imZ+fsqtaEtwnKfIDNk4du3Neort71Rrd54+jGb40NTGp5kabbTy0n30T6cW5Xu2sAALif6vftIH/PIDkapNkaJEm6bB6Wdl3SNJuPSdJkmFravLku30syVtJ0s+q8nR3rz3iekhdJXaWWp+cvWv75qgJs/UP4Zd/YekfgjqsmKHML+tTL6Tn/+BymlqlmsQAAcL02I5czTqlfZtOPZJk0S9NMr9dmkml2LtTMt9ZnedDMXpUk1cWTU8aCvX381ZYbbQIzWR7LxiplL1123LPxoQRlblH9vh3k58xS65tIb82L5OWoTP4mQg8AADekL4caJdk0dW267SSDpFknXdLVdbK1+hQyJer80ShNM0vNk80I9LJOd7Qskx8/OFDVVw/spJQvL3D4YWo3LZMfF8fXeLxKOaXS4PUB3b9dxV5PXfq7dph6NMjR1iilfpladstkPb6O1+LTIChzB/RlUNMk66SREgcAAG/pB2qM0nTDdGWQpiRdtyyT59Mb3MN2ku371pvnbZtx5N3Oqa0VNg5T6uIyPYr6UefTYw+kzz3h7N6adf54llLOLnkq5ZvydH3tvxuv+4LW+nWZPJ9d9+txPwnKAAAAd079U9vm526cNKOUfmBGyV5SD9Jlf9Mnpjkok+u/+f4U1PmjUUqzyEVHUdf6rB9csjj3sO/aUbpuek6g57hSXqTL+LTyozc9Pcso5VUvoJy8q605TMqo/2zYf9xOk3YznOV1o6FXH1b979Mqm2m5F35IXuePlyllaGw2lyUoAwAA3An1z+12DjLqMyqe9I1dl2ma5S9HHNf541mSYZk8H97GXu+DOm+3s3U0Sm1mlxoxnvQBkLroM/7336z9aJSm2XmvdWv5Oqc00+2b7e70DX4PU+rync1+P8SmZGuVLqt39Raq83aQUn9KPfriYx03z+0SlAEAAG5V389lmlLHSR6mlmdJZuc1a63fPRrlZTNLjqb59YP98u/3t6zoqvVBjmnqW1NhU7JJO/kApT5LaZapGb3XiPJN1s30tMlXdd6OUuoiJQcp3SxHW8syWR/U3cerC2fffJjD1LJMskpe7p8WeKm7jxfp6pX03OHTIygDAADciremkm6CA6U8S3d+MOYX5y9S+h4lNS+yVXZylIUejWer88fTpJml1IuVKV3rZnKYrTIrX613Tnxr3m6nZJ5av0jqrEyeHzum7j6epZ7TV+Y61ewldZ2tZpWjrJK/J+VXP6WWiWlMvC9BGQAA4MbVP7VtXtZlX95ymKbOylfPT9ycv3Od7387yM+/niYZpdbNWrWMjbQ+rs7bcVJnKZcsU7pqpfzQ9445pZFv26bJMslBuoxOaypc5+04pc5vYqvvVLOXZJCSh6nlX+5zM2iunqAMAACcoc4/a8vkbydKKvgw9dt2nK6/oa5lL/m/8VX8nOv37SA/d7PU8jS1fKMJcD8hKM1dCsac2cg3Seq8naXUP6bUb8rTs6dr1Xk7TKn/fclNHKZ266RZver3myZJ6Q5y1KyTrJO02eraHDVtmjq8cG+cc4JNcBpBGQAAOENdPKn9TeRMWcLVeD1GONlMU+oOh2Wyf6U3sJsb9ixTu2WZPB9f5dofizpvh2nqTmqe3PZeeoepZSenNPJNXk1WqjspGWSrjMvvL9hg90LKYUpWKUfLHG2tLpPJ0vc9GqbJIOm2k7TpSvt6CtSxg3OYlFmZnCzLgl8SlAEAgDPU+ZN1Sn9TW7OXlOlF+51w0vEMmewlZXhdGQWbZrZ1ldR1efrpBGbq/HfD5MEs5axGu1fQ0Pd91bqb/Dwrk//ZP/blTU+hUZpunFo+Ty0/JBfPMqmLJ2f/QUrZS9etkmZ5nX9n6/e/HeTv/zDcjOkuXx7/Zt3tGxjLmuFMgjIfkTr/rE2aQbbKIEeNBmYAANesfvtonK453reilm+ymQzkWuw91HnbptS/bD653oDMW6/ZB2bKujxdj6/ztW7bJtMk5wRjLqmUF+m6VZpmP123+VqT7XRpU0qbnJIpkqSfoLVMjjde7vc5PlYSVMteHmT2ruyYEy8xf3JwLFOl1h+SZpVkeRt9XU4tqSrZS3f9v+t8vARlbkn9rh3lZTdKSpumHqQrg6Rsp+lW6ZpVNnWMSTJIuuEm8pqHqXmRku3UMpVCCwBw/eruk/WJEpBNUGF82gjf+6TPZGiTDDf/1e03mUPlMJtr1lU2N8Fn/iz6gMwqycO+tKO9qZvmTWAmq5TslK/u3/VzX1Yzez2F6koWzWFSdrIJqOxfYA/Dtz49+H/27ie5rezME/bvXCpdnnQnewWJb+YIO6VbKzC8gqSHFY4sASswvQIjV2B6BQAzw9FDUyswtIIGla6ImplaQZP1TVy2dE8PLkSJEv+AJEBS0vMMbJIALg4oJu7Fe94/F4y2btOcNnbulfo8TTMp394sk2X52gdJ8lAy2OrsSV2O+J4k3SSl/DK1PivjFzv3vTYeJkGZO9S/EXWjdBkkzTw/zUH5t7dvcsuT3jB9rWKbLum7TmWereYorzMv48VR3X88T9fMy3gxuftXAQDweVn2rljkvIyApvzuvHG+H7M6bdskozQZptbV+5GUvExXZnnvg3ydtrspdZI3v79afn3Xk5H6oFDm+SLD8ptPI5BWpz8bJD+ZpJQ1BmPKy2T9/ZP6tf50cTqG+xMuBaz7jw/6zJjD7eSdoFm6ozJ+MbnPtfEwCcpsWP8fYTfrI6RlP31jq1udCOr+43nSzMvTzzco805UfJCmG6Rr0mcUNbuf+o4VAHD3zmR6fHBjeZ5k52MvT6jTr3fSNJObNYY9p09JLc8/KKWp5bv72ljsX9/WXrrjdt2Nhe9Sn/nT7aWuNRjzPHk1KeO/ztd2zHcPf6Y3U9kv40+3lOx0VHctv/oUg06s36P7XsBnYJKmbKdb47z6NyPbPgPLnZpBkjZN+q9rfXLmpF9LUmqSktR6sLz/g9JnQf19+/3mZgDAx6GMF4vlZttBSjkbaCj1l0k5qtN252P9EFanj2cp5Wl/iVVOUrtZHnUH5du3H9KXm2JtmgzT1eHph+z+1g8P+n5AppTnZXR/m4pl/ONBnT5u03w5T1+S9VFZBmN2U7ObWs7v43JdpT5P120sGJOcjrh+8ub5yuhwtKnnegjKeDGr+092UzNJXwUBl5Ips2F12h4nGaxz56R+3+6mdjvpmo9+R+Zdy1rUNunaNBmklhs1KSujw3v/u67Tts1W2tRumJQ2qYt0zeQ+Go4BAOtVp48nKeX3599Yv/vYShTqtN1Lqb9NkpT6LF2z0vSbZZBqlKaMzvQJOU8pz9KtPlVnk+r+41m65GMZlb1scbCbUndzUVPdax+073my6SBi/XO7neN61PfGLCf5adp32zd8qk77GHWZ3HWpHh+fe//w+imr03aYppuUpy+Gaz7udlLnSTkq48VH1zCqTtvtPEqbV90wTQbpmvY0er4G9xGUWe4cDZNuJynD0y7wpewv34yP7npNAMDmnJYonKfU5+n+a+djKJE58zpqGd+0l8hpH5pkeOa6rtbn2WpmD6nB7ulEpq4sHnIZzdtgTHaTusbMmM0HY96o+49np2VWH2HA8jbqtN1+CEFIHj5BmQ16M5aujBfDDRy7bzhX/7t9yCUxbzv2d8MkbZqmTa2X76Tc0l0FZfoR5V+8Gee3vPgoSepJatlL3z/IGzEAfKIuDcz002sedDlTnbbbKTlK6pe3Cch8jJaZDIt03eyhBQpOgzF9dsyaMmPKfn7690n5t7v73HBmPHT/38NaqwfgU6GnzGYNNnXgfgpTO0vz050kV3b8r9N2Z/m4jaXPndYZv6k1Th28DcAs4yTnlBuvVcnLTR6+n6CVUVJ3+jTd+u5rOknp9tI1gjEA8Bko48WsTttF0u192GcmXyb1L3X/8R+X1wZH97PKSzTZS61fpunG5d9/nN33cu5SGS+O6/TnOylfzOu0HTyEjJm3PWPWWqa0vyxTOlrL8VZ92j4baXZ6ndyUWXnq+hjOIyizSU03SC2bayLWZZ5kkkuCMvX7r0epzSS1fpVa/nVdT12ng+3kfwzTlDZphunSnonkXxh82WRUpiTp1j55aRlsGiV1lFK/Ovcl1PrHpJmU0aGTDQB8RpZTH4f1+3aUmskHGcG1/Dal/rZO22fpR0U/iP4SddoOUuvT1PrHzy0g80YZ/8dimc0xr/tPFunKzn0Ez95mxtT1NfDtp75OyvjwaC3Hu7Zullr6/xZqTlKv3kSGz5WgzEY1WVv957leHadsPanTdvhuauzpG3tTR+mWTddKeVlGNx8V/aZnSpdu2DRleNrMrS7/50EUwtWka9YWlFmWn+2m1G8uvtN9n/AAgIdg2TNlVqdfj1Kavbyf6dBfT3xT99uX6bKXPkBzj5s53V5qOSzjF7v3t4b7dzpVq3QHSRZ12o7uKnDWN8Fdc8+Y02vT+8vMqtN2dvb6uTzMTDF4IARlNqnLRoMVZfzXeZ22L9N0kyTDPhjTvX1jP5PR0V375FKnX/dNa1N2UvpdnyZl8yVIfV+Wmz741kGZOm1Hac7Z6XpX3yRtd7k7BgCQJCnjH2d12h4kdX52ZPRSrV+l5A9JJv39snfX1xPL7JBhahne5fM+VMvgWJ/t9LrO6rSdpQ9sbCRottzs3M1xHZ0Ohzh/ZVnxmvhB9DOs03aQppulvjsKvZxkhVYL8Dl7EPkNn6o6bSdJ3Snjw42VMJ02mCvlMF0dXPjGXsu/XnXCX2bY7KTpdpYn6QuOlYf7l1PL/3fTSPzbUq9LRjrWvEzK6CE37QMAHoZlxsDTK+/Yb/bM7qLR7rLXxyKl7JV/X/iw/J5lX5dZUgbpXo3K+D/Wl4X9p5+3+ccXuyv9TayknKR2e8n99jOsP/ximFfNKKV8+Lq2yq/Ltw+jZA8eqof60fqTUPcfz9NlvqmO7sso+2SFN/aTMjrcvvA4P7Q76bqd03F1a3GrbJebqTkp44tf54UPm7aj9L/Hy6dC9emgu5r4AgCrWpYznT+h6YM7n2YVzDZV7lGn7V7SDcr4xc4mjv+pqN8/3s3rMsmjMrptUKFO22GabpL6XjPoGx8wL5Myy/1nxgyTbvJBk+vTO3xeE73gpgRlNqTPOqmLpLTrfrOs058N0vxksnIQpZRn5enizIl3OUVoNzU7m+17855an6dpknRJ1xylyVF/Q5d0zfzDB7xKmkfDdHX38vTOJKU+L09fDFdeyvTnbZov9s6mWJ7rJE23+7k2wQMAbqf+0O7kdZ3lOhN1anmW/kP3fG3rmLY7KZmlxmjiFZxmpDdlvOwZdM3Hfz1Kmt1zy9huouRlujJ5CIGOOn28m1L+cP6N5TD551qzjOBTJiizIXX6eJIk68yS6aPs2U29pPHsuQ+s+2X8YrTsOTNKmlFKXc/J4X2lvOwnIDWLNFnkVRY32emp03b73YuFZWnVQcolAZRavivjxWSVYy97xvz2yoX0J78dvWMAgNuo07Zd9pm53mbY8oN4koPbBFLqtG1T6jy1G5Xxj/deTrK8tluW+L9K8uj4IV5vnWY6lfLH8nRxZVPk0+vtpuym5qu1lP2X+jxd3XsI/25JUn9oh3ld//LhDeVl+kCisji4BkGZDXiTylfGq2dtXH28TC4NSFyl5DB1TVH602OWw3TdUZrTAMx8k7suddpOUurvL75D+dVVu0n1h3aYV3WWcknfmDdKeZ4uO3aSAIB16EvP68ENMydOUutBftpMyr9db8NrmcE9T+qijF+MbvDc13YadGm6YZJBkkG6MljpGix5cx12nH6IwyK52UbfOtT9di+1/vbNRue593kz/bTU3VwnIyrJhWX/pe6na+68EfRllq9zcabsv9bnyd30RIJPkaDMmtVpu5NkN7n9h/m+adaj2wVjbrWAvP0LKXmZ1EW6epBsLe7j5FCnjw9SymXjqf/XZb/zOm33UlbIjumP9ccyvno3BADgOpaNZA9u1V/kGh+ClxnC83Q1SRludAPth3YnrzJM6nBtJTtnnaSWg+T1PNtbB+XXd7dxVvfbeWr9ZWrZL+PF6Mxt08eTpFxdar+KPjPqAYxMP9+Z6/G+3+KDChrBx0hQZo3qfjtJumG65lYBmSubZl1qTQ12+yyYedLMk81mwKyiTtvtlPp/L75DXpbx4eCCx7ZJna18caApGQCwYf1kpjy91XVbzcukzpYBmqNznmMZkEmSbCQgs7xuHSVlZy1BiTMHz+WfVvq+OwfZzsYDNPXP7Xb+K4vU+tWbwMxyM3bvymERVyonKTlI93ADHHU62E6zffAmMJV+ZPjRfa8LPgWCMmtw+qE/5WCVniaXHGeUpu6uvcxoVaU8S/f6INm6Vc3yJtTv21G6evHkgnN2LZIVSp7O3Dknyx2kB3kyBAA+LXX6eJJSVrtOuUqp+2m6Wfn2r/P+2D9vky9m6ecrrDUg80HflPtWc7IMTu1tMlBw2pcn+TKlvEy9RTCm5DCpB+mag4d+7Xn6uks5Xpb2P+j1wsdGUOYWThvGpg7TldFN36CWwZjJrU5qNSfLf81rNo8rz9Nllls2j9u0uv/4IPWS0qWmG787HalO20GabrZyanDJ4W3+DQEAbuJ0ws/aDpjDNHWeWkap5ShrzJC5Xd+UO1LLfn6SvfKbzVzT1enjWco5E1BXauhbTlKzl+3s3WXp1W2c/n3WcpgNZVvB505Q5hbqtD1IuqMyfnHt3iN12m5nKzt5ncmNUx77mtOD9OVFB3X25DirnCBrOUlykPx9Usb/eXTdp102Ht5Nuu00zVFK5jcZE3iN5xuk1L9dfqfyr28CKv24xzpLypcrpQTXHG66xhoA4CJnMjDWqZQ/Lktijm57qPp9u5vXdbL2EqVNqeV5+hKb+doOefMA2klq3Vtm8nw015vLBtFHfXeEYow6bIigzA3V6eNZtpprByNOdxhSb9YMrJZn2co8r3Pw7gm2/tDu5HX989WPr8+Tm/e8qdN2N6X+IbX8Lnm1SB61SbeTpgyWmSbzmxz30ufcbyepl01dykkZH24v17d6M98kKXW/PL2bKQQAABep07ZNk4NblcRc5BYjlev0652k2Vt5atJDU8rzdK8mZdyXdd3UhRkyVz5/3U/X7H6MAY06bYcp9S/ZKr8q367/Gh/oCcrcQF+ju7V3nZHX/QjETFLqTlbKZsnLpJskW/MkwyTH2c78olTHK08UfTBmkqbOytO3DXGXWS+LVU8Udf/JIqnH5enZ1768kNhdlnJNsqZyqPrnwXZOvjzKZb+zvsnbKOlml05nep+ADADwgPSl8XW+sf6C15jsU6ftME03udWUqCsWc2lG80rlQNd5uvJ8mTV0k8DUKKW5XoZMqc+XwZiPtjS+7reTZQ+Z9r7XAp8yQZkbqNPHkzxqFuXbq9/U6/QXw+TRbkpdLVjQlxbtXmf6T50OtlO+PH8yUc1JHpXRm7XW6ZOjpCxSMkypx+nqUZomqfWX/Ym6zrPVvMnEOT77PMtoeS2/uigj5jT4lNp34C/lMMlxuu4oaebXnWq00kmwlv00tb3WBUztxmX8tgcNAMBDsOxZuJdar5+VcR2lPkvXzNNvzs2Xzz1M0qapo3sbPLFpNS/TlIN0Obgsw7tO2+08yjCvMrxWFnaS1PK7Ml7s3Xap963PkirDm7RqAFYnKHMDddoelPFi54r7jJYlSh+e0D6M/J90tRw0fXbJDaL3y5KiD27oM0jeDa7068pxcjwv46OzQZc/tW1eZSddRin1q9T6LFvNQV6nj/A39SCpR+9nyVyyrjaPXg/yaqtN07Wp5Ztsvf7Vm6kAqx3jydHq6bIrjgM38hoAeOD6kdkbDsysxYrXXw9VKc+TLumaeZpuO0mbNIMbl5HV+rsyfvHRB2SSt1O2PpXXAw+VoMwN1P12Vp6eO355kKbbTS2jrFyiVCbZzsFtOrDX/SdHZyc3lZPU62XbfHDM6dejpDkTVKo1J+UGI6OXx5qk5KsyOlz5b+5GqaKXO0l9vXPbmmIAgLuwlslM6y4D4mI1SVOfr7qB+ZDVaTvY5Hhx4K1H972Aj02dtjvpcvDBz5qMUus3qVee9U5S68Gy+/qta0zrtB2dieTXHCb/HJXxf9zq2MvSnlmdtm2S7TxKyqvVe8+ctbVIqdv92q71uNEad15OUsuwjP/60db1AgCflzJezOq0TUrdy00nM60UkLnjbJdSn6dLkiZpuvRf99+ma5LU9qOZ8vRGLeMkO6n5pk7b0cealV2nX4/SbE3S/fPSqgBgfcTNr6lOH++V8Yvd06yYlJ2zWSoXPTCHSdnLmhrgnh52v12k1j6bpdb95GF2d6/77STpBqs21q3Tdjulnt8n57pKeZnunzu3DVQBANyHfmR25kn9eAIVfVPhRZJFknmS4+tnW7eDJIM0GSbdICnDla6771op35Wni8mZEdJflsFtMuHv2rL1wiQlXyn1h7v1yQRl6vTxPE3m6Zrj9G/+137jv/o52kFS52nK8Wkg5NIH5GVSD5JmtonO63X6i2HK1l/SZ4FMHnJDsWX39uNV11in7U7KCiO+r1LKfro8yEAVAMCq6v9uB/lHDla6Br0fJ6l1njQHSeabKn2p/7sd5O8Zpul2Uq8xdXNTanlexovh6bfft7vp6h9S63dl/GJyfwtbTf2+HaVmssy8P0ktt2qBAFzfJxOUSZa7CEmbdG3StCn1l+lPEIs0zXHSLdI1R3mUo7zK0Sonizpt22xlmJrRaoGY+jxp5sk/DzadmdF35+9my3F7R5t8rtuq++3BcgzhfKX7XzXi+2onqd2ojH+8duNkAICHaOMjs2+i1udJnSVba80GX+mpp+12kp003Whzo7vfOKfEq+Yk+e+2jP/z6MyPZ0+OU3NcxoeDza7p5uq0bdPU2enfUi3Pk3/uyiyHu/dJBWXO04/269o0adM1bcp7gZV+DPRR/02zrGXt+q9TB5dO/ik5TFcOkhzlJ/9clN94E7tInT2p12vye97UpRXrnft/l52HHqgCALiJcycz3XVD31qe51Em5dvVNtw2bbk5u3unE6tK/a48/TAb5vTfZ6v8unx7/cmqm/a2HC5J7Q7yqJtdZzoqsF6ffFDmPH2gJsM+WFPaFXvCvExTj5LM09VF8v9/MFKai10nKFP/1Lb5Z/0/N3ui+scyfrF7o8cCAHwk6rSdpNTf3/0T52UeldFDCca8r2830O2lbLi0qeYkKYPzsoNOp2aV8sfydPHgrkvr/uNZuuaojBeT+14L8JlOX1qW0Mzf/VmdtoM8yiCvPrj7dhk/vAj3x6hO23al3jr/yOja4cJaTpKMyvjQvxUA8Mkr48WkTr8+SmluNzL7OmrZT7Jbvn24vfqWmdI7dfqLYbI1uzTr/eZOkjK6uFzr7/PkX5LUnSQPLiiTLoM03eC+lwH0PstMGe5OnbbDZb3qV9nqfl2+vbrHS522Ryl19RNoLYdJlCsBAJ+d+kM7zOscbHwy00c6kedWfQprDpM6z1azyOscJa+SPFppmMjp9Wwt/7qugR/1T22bf2R71R6NF6/tyXFSZmX88LJ44HP0WWbKcDfqtB2m1L+kKydJxisGZNprBmT+6IQCAHyuyreLeX/NlXmSzQRmPtKATJKU8YtRnT5OH5hZsT9hLd8lmd1qw6/JYtkiYZQbZsvU6c/bNF+M0mWYUp/knzUpSd1//DxdM7rJ+pZlb1+mRnY5PBAyZdiYOm0HKfVvKfV5umbnqo78fYO2Ok9Z4YKinqaNOqEAAJ+9fhJRnafcdDLTBQGLjzgg8666/3iWekXGTD9F9UbBjg8ONW13U+ofLus9c8lj22VfnMsnSvXlZAfJq+PkUS7LoOl77WQvpX6TWvbLeDFadT3AZgnKsFF1v12k1id9+ufJ8KLmyMuGaHtZZYenlMN0ypUAAN7Vj8zuZqlranLbdOPy7z/O1nKsA4R7ggAAFGdJREFUB+DSUqZavltn49vTzckkKeW78nS1Y5/bwLmfFruXNH0Z1FYGed0NU8pOPrx2PkmtizTNUbruqJ8sm+FpgEeWOTw4gjJsVJ222yn1KMmXqfVZGb/YOec+y5NPObmyHtqJBADgUueOzL72QT7NbIq63+6l1t++/UFeJq9HZbz+kdB12i5S6pMkJ6lleFlvmT7TKbOUejagVut3Zfzh2O13HjdIXg+TrUHStUmznWR7+bzL11eOkm6RNHs2NeHhEZRh486UJb3p2j9eHC/TKGcp9Zcp9XmSeWq5aLTjSapyJQCAVdTvH++mK3+40YNLfVaefriR9qmo05+3yRfDJPN1NeE9/3mWo7F7J/miDMtvPny+/lo5s9NASvJmsuilgRzg0yAow53oG5U9OkjNV6k5SVOOUuuTpJykdntl/GJSp08W59ZB1/IsySVjBwEAeN+1ysPfKHmZrrSuu9ajTh8fpLxTTvZOE+H6wy+G6ZpJ6nu9Y64o+wc+LYIy3Kk6bUdpujZdtpd1sQdlvDiq058NUv7lb+/d/SS1G5Xx1VObAAD40D+mbftFyXzlkdlrHOHMmz4/dZ66YgPmWveTZldQDD4fgjI8CKfjs09/UJ8tu987IQEA3MKylHx25WSmmsMyPmzvaFmflWUPxd1clLXUZyjtKtWHz4+gDA/CclrAQbocL5uQze97TQAAn4qVRmZfY0oQ17ds5jtM0i7/P8sGvHPBGPh8CcoAAMBn4tLJTEqXPhvLgRuDJEd3NZFp+ZyjdY4eh0+BoAwAAHxG6v7jSWqze6bPTCkvy9PF4P5WxV3oS9m6ydnmw/VZGd/NtK26//ggaQbpsmM8N/QEZQAA4DNTp+0gTbeXrmnT5ChdZmW8mN33utiMOv3ZIPnJJKVckCVVvyvjF5MPH9duJ6/a/OTR8XnjvK+/jnaQUv+W5CS1GPkNEZQBAAD4JPV9G7OXekHJ2lsnqWWQvt9Nm3T912U5rrvW52X8YriWNe0/PkhXvkkRmIEkeXTfCwAAAGB9lv1bdlPqKPWciU+1HObR60lebbWnU6FK/b9v7/DO3n3NSdLM1ra4ppml1m+SfJl0kyR3UjoFD5WgDAAAwC3VadtmK21eZ3DmhqZLuiZJlzRJmmZevl3/pNH6Qzvsum7YdGUnpV42Zetlaobl2x+PkxzUabuXrezkdXZS6jBnx3afJGvOZnmVxWnMp8nx2o4LHynlSwAAANdwOt66SZuuG56W+azuJLUc5FEOyrerjcOu03bYf/V6O81Wm65LmmaYrm5fOur8XaXup2smlzXZrdOft8kXuyl1J1+8Gpbf/Mday4vq9GeDlH/5W5Kkqb8r//5ib53Hh4+NoAwAAMAlllkww7zu2qQZJBmk1K/W9wTlMMlxn1Xz5odNUup1gz0XHf9ZkslD6N9Sp+1OSv1z/035VRmvP2sIPibKl9io+v3Xo9QySJfjpJmV8UKKIgAAD9YyC6ZNnwkzTE2b1C/TJSklSV31UCcpZZF0SS1tck5vlzfelBvV8nbbvHTP0zW/S3I2kPIoyaskeT1IUwbLtW4nTdJlkHRHaZqky1GSeZL5Axs/PbzvBcBDIijDxtTpL4bpmmmSNyeXSZ227QM7KQAAwHJMeCZnJhXVnKSW3eS/52X8n0fv3X87yU7S7STNdpLj9EGQxXnZH3XaDrKVndQ6Sr2i3KiW/TI6HN32NT1MXftOwUab/ncGny3lS2xM3W8nqfX3Z38oRREAgIejD650u0mzm1LfZrPU+ixpRpvI9K7Ttk3T7aaWnZzJoCknqZmU8eKT7LNSp+0gpf7tgxtKOUzXHadZft81i6Rr+4yfrm8I3DWL9IGvA5u8fEpkyrA5XY6E/QAA7kadfr3TN4BNP+WnW0776ctakuQ4j7LIqyweUkl5nf5skPx0sPz2zta2zIwZpdbdpHx5WpZU8zIpkzI+nG3quZe9XUbLdSzLj5LPYPPy/PHXtT5JKW8rw0r9ZVKSWnP681K/Wd76hzp98jIpe0m0R+Cj5yMzG3NuJLzW78r4xeR+VgQA8Omr03aQvBokj4bLUpFhynv9TEo5TJdZ7vFD7TJbZJJavvnwxhwmpW98myRd5kmzt4611j+1bf6RUfrSmZyOqu6ySOq8jH9caRoS11enTxYrT4qq9VmSRU7TZ5L0pU7DpNtOyk6S7aTu+XzBx0xQho2q08ezlPJuXe7LpOyW8Wqj/64+fjvImyZsqW26MnoIXeUBAB6aOm2H2cogrzNMebdvSt1PLh+TvOZ19OVCpfz+6nu/UU5SMyvjxe7mVsam1dmTt12Sa958Gj1JKfN03SJpjpIcZcWMqTr9xTDN1iwpSZfRZ5BpxCdIUIaNurhuNC/TlXmSvesEUeq03c6jDPOq20lThqn5anm8w3RlR30pAMDVlk1qd1Pe6f93B8GZ+n07yutMVh4nvSwlSt9HZG0ZPXX6i+Gyk8OxDb27c7phW3OSlFn6TK1b//7rtB2m6UbpmiTZVdLEx0RQho2r03Zy5oT/wR1ymNSDpDlOXi2SR+dGxuu0HSV1LyVfpuRlUo76Wulmnv+ZvfJrb74AANfR91Xp9s6UENWyn2RtwZk6bdtsZXg6dajW58tSpIPl7e+MoO7adGWQkkFq3Uv+a6+Mj1zjfSJOJ1D9j8w2ce3+ZiJWGS9m6z42bIqgDHei7j+epb5TxnS1eWr5tSg3AMDm1Wm7kyZ7qe9ksNwiONOXmHejNGV0mtmc6C8I8B5BGe5MnbbDpBumeadZV/fuF03S15Ae5Q477wMAkNTpYDvZnqTU3565oZT9dKsFZ+q03V4Gd85uxvVlSHp+ALxHUAYAADhVp1/vJM3sg4lNV2TO1Onj3ZQySd5/XH2WNCMbbgAfEpQBAADO6DNeuoPU8ssPbix1P10ze5P1Uqdfj9I0kzNlSklSy0n6pquzO1gywEdJUAYAADhXnba7KfUPF9x8klqOz52k1E/a3DHZCOBygjIAAMCF+vHRWwcflDNd+ICcJGWgXAngas3VdwEAAD5XZfzXeVLa1HJ45oZ60SM6/WMAViQoAwAAXKpv7ns87Jv2vvnhOXesdb+Mfzy4s4UBfOSULwEAACur08ezlPL0wxtymJShLBmA1cmUAQAAVlbGL0ap3bjvHfPmh+W5gAzA9cmUAQAArq1O2+08etXm1aOjvrwJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP5fe3BAAgAAACDo/+t2BCoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsBMqmhMjBZshSgAAAABJRU5ErkJggg==","e":1},{"id":"image_4","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2bub5LbOKw3A73fJdmUm9gqMzFIVW7xZgdkrMDPsSiUCViBmBWZWEHoFF0wq49ArCLSChpzuqsxC7oCs6kE6Ee/pAWDaUvQfUiDF5xmJwMXlUYEkcF983zkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz/7cEhAQAAAICg/6/9YAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmALPbBhk1OHpGAAAAAElFTkSuQmCC","e":1},{"id":"image_5","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2buX5Diu7AzA/03Sds8IrYDwzBGywOwVsHoFQg8dDjWrViD0ClhagaAVZKEVHR4SvQKBK3BBao8NrqABjzo6yDweVBGk+ARBPPj4vggEojKzbt4CqoDMc889FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD/twcHJAAAAACC/r9uR6ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwENCA6V0fLp8FAAAAAElFTkSuQmCC","e":1},{"id":"image_6","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2bu75Diu6w7g/9tg4uSJyAo4fnOVLaKzAo5X4NFjKiVhZgVCViB4BYZW0AOlXH4UvAKBK8hQqlTlTeAKTObJjoU+eZgRPyRR4scAQxK/XxWLg57+uCDA6dvnnnsuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb4W26wYAAACwGzV8MEv2+iQXSc7bYnWx2xbBzSIoAxs19NN0WWbMeVus5rtuDwAAXIUa+v1040mqzZLcfv7Nup9b3Un7aHW2m9bBzSIoA0lq6E/S6pOnG/IwaWdtsTraYbMAALaqhn4/uZwme4/aYnW+6/Zw/WroZ0mWaXU7aUnVw6SdJ+NFuiRj9pNuli7n7dBAJVw1QRluvBruLpNuP924n2r3nn+z/VIKJwDwLltnA4/TjG2WLvtp43H7+OvlrtvF9VoH5HKSVofrDXmYjMdt8eO/C/V5f5TLnLfFanWNzYQbR1AGnlGnBxep3HmyodVpO/xqvrsWAQDvuhr6PhmP02U/Y5ckq+/+XMUDbw39NEmfZJpkmla309r9jJcnbfG1KSlXrIZ+knUmSp/kdloeZqyLp3t0q3Tjo2d+F87bYvXoatv0q0m6fzpL1UGSpLXPMub4565bpwerjG161e2Dm+zWrhsAb5WxHaXVMt/Nra12WEO/lN4LALyO+qLfz6M6T2u3U0laJcmTzNxaHiSt7ifdecZXe0Cv4dd90vaTW9N04yRjJmntXlLrHVoeJm2Zf/zbSfu3/7nY+jf3Cmr4dZ9u7yhjt59cnr0oO+M9MUvSp9oyyaO0JF0lY5KuS8Zxs9u4n66dZGwXWQfQrkQNfZ+uvkzVftIepzJv85esF9PaMuvvZ3lV7YObTqYMfE8NfZ9W53la9Oxxqk2MEAAAr6pO+5PUM3XrXkZr9zNmmfVqOH2S/XWWzdiv3+/6pG6/4NiHGcezpFu+LdNOatkPSc2f35gHSZu/LW3cpu9qFbb5g5d61qqhP0tyfEVZU5OkVmm5vfk3n73K1PwafjNNbk3bYnW87bYBazJldqSGvs+ty0n7SArp961vHpfTZG+apE/bpFk+2WFdhDf5+ZTL1zA+tuAAACAASURBVNEWq9XmBnaeloMkt5M6r6F/pZsYAHCz1Z/6Sf72igGZJKm6l5bv1blL0tozXzz33sN0dZaxW7b52xXkWNfu29QweVbLQSpnSSbX3aZrsErWfdqX7DueZB182/7PrhuXqXY71R4keY1pSB4X4ar5X7Yjm0j4alMBf/aep3D+rHX67d4sXZut57p22XQ4Hqfqfjal4NMlSbuX1CepzOvz/rh9vDrZdns2N6x+2+cFAG6Qv47Lp4GULas8Tmr5NmXEfF8N/fRJUdkf0+pODXeP2+Kr4+tr1bW42Pw9eeb1C7XF6rxO7y6z5SlCNfSzVN1L8jivFZDJ+mnx2/FndwNen6DMNVsXXhvnSXexnliaeVq3nxs4T3OzHN8sqVnadzVckk0Q5iz58Wrv3wWykr2TjPWHGu7Okm4uiwUAeFvU8Ot+Xd9l2yeuPye1fEcK9k7S6n7GPEqySrrzJH0yTpKuT1eTpH1aQ3/2tgaW3tDLB0HGTDZZ2dv7uXbjPNWSaievnV3+bbIZFQWuiKDMdesyTbXDTQ5qnmSD3CDrwFQt0+rpKkfVHibjSdKdtcWDi586fnNTWdbQn6XqJK0dpmpVp/1Jxrz+TQcAYGv25j/YVO00uTzLrb1H64fdJMkkGfukmz3XN3re41Qtk+7k5/pJ2/J0Ge30SZtspnQnlQdt8eClsonbYrXMDwcez5+5xn6So/WAZY7euNFvjbFPtYevFmiqZdb92+nWAlTVpuuMqrx+VvmtJGPNkhxvpU3ADyj0e83q8/4oY/3huY2t7rfDr6a7adH1q9ODVSoHz9SGeaO02xo+mCfdySbb5nGqzpI6S/aufHlBAIAfU8PB6mkgo51mXQvv4qeP6afJOF0X9U2f5FH2uvNcZnn1Syb3ffbGaS4z+0GGT8vDjO0iXU1SuZOq329zytEr1F55J9Rpv8yYtMVq/krHrfu0x5sCyOdv1IbhN9O0vS/T6vft8M1+VrU8qNxu/9I+1K+GqyAoc81q6PfT6iJPV/ZJWvusHa7eo9GBn1bLg0qrz9rhV1v7ntcjLeNRujZP5ekoU8vDjHWWdFdSFBgA4Mes+zvtfsYcvc1Tc2ro50kdPQkgrVedPEtynvx91Rb/vXq67+ZB38qUP6mGg4ukHW8yhV7x2H6SdXbR8lWP3xw7TzJJapYuFxnb69WSee68d5dJ65M3PxfwQ4IyO1JD3yeZJbl4nQ/sd9lm2b++LVaTKzp/n4yzJNNnRnoet/mD/au4HgDAszbTciZvfTCmq+PNYNYm07hb/lyGRg13l2ntMF1btI9vVh/2ZdXyoFLtt2+S7VKnB6uM7ehlz7EuqpyzpG6n5UFSFxm7+TaCKJvBz5OkzZK2zBtmuQPPE5Th2tXQz9Lqi/xD+9f271f7gb6+VpZJ3b6O6wEAvK1q6Pezl1nqmWBMa69Uk6+GX03SfvFNqv7cFl/NrrjJ75wa+klafZNqH75J0d76Uz/J/+U8Y2Y/FwBZB01qlZY7ae1hO7yigc8/9ZP8NbN04yxjm6zLBXRnbzrVCm46QRl2YjOC8FlbXM20rRom+8nt9c0pSVqdtsOv5ldxLQCAt816Kss4TzJdb2mTp/2i9iDt8iSXe2evk0lRQ79Kq4M2f+BZ4kdsq5+7WVL8LN141D7+evni/e6eJG2etNl1BUjqi34//5ujVH2a1v6cMVvJyoGbyPpm7Ea1++lqenUX2D9Ky51UnabGDwVkAICbooZ+nlbfJG2eLhfZ65bJ5Tx1+dtU+2U7XPXt469fv3hwl7P1dX4z3WKz3x+t3U9Xb5xF1Bar81Sb5XJvXqcHFzV88IJztnny8lOdtqF9uHrUDlfH6doiVb9Lcr6Ztge8IktisxtdHqVy7+d3fF01T5K2EIwBuGnq8/4olzl7n1ZzgZdVQ3+cVp+m8iBp03b4YPvZC2NW63x7jxLJpp7hrW/3k1v7+TZ9xjxKy536vJ+/ad2dTaBlWp/387Tuixr6xbP1KDc/79upvPZUqTdq38erZQ19n1afpNpx3qulzeF6+CRlN8ZxldZ+dxWn3szlvbPujABw41xmP62+qaH/LOtliKXU817bLCDRJzlO6k6qTq90YGrvcj+jhPunxpNc7t1Lal0covIgrd3P5eXWrrAOfnyQtG6o07t9uvEs33bztDrcTJXa5efccarN0uqTGno1ZuAVCcqwI92jpFJD32+9evutbye53EvSTrZ6XgDeFSdJjtLqk7TM6o/9TKF33jc19MfpapbKQVKbje1h9tqiffxgeaUXv9ybplWSCHgmSbqL1Ji2+Gp6lVdpi6+XNfQXaXWUsTtOukfZy4fto9cvKLyddq0e1dAfJxnSjcd5UscIeBmCMuzKd53jyTOvt+PbbropYX2x1fMC8E5YPyDcPUlrn6ZyJ3+v/6qh/4+2WAnWv8M29SrmWfcbVjc5A6qGfn8zRSlJHqfaWZKzN1nt5xWuPdlkZzy0LPIT52ltqKGfXPW0yU0WyvlVXuM1naVykrR79ce+FwiHlyfvkJ3YFC57mK6Ot18UbDx/2T1r6Pdr6Kc19LMaPphvXk+22x4ArltbfHWcysOnG+oPNdxViPIdVMNvpjXcXabVX9LqD2n1ZVr9pU7vntfQT3fdvh1ZF3xteZBqk7ZYza8jILM2Hm9eHP/ETjfKX58GSaY7bMZOrYOktf4d/FZdGXgVgjJcifrPflZDf1zDB/MX7nTr8midcpvzzVzoLXmSAPaT59wEX843nbsv0rph8/qbOj24qNO7y3WwRgce4N3U5s9/2e6l1YUVY94NNfTzOj1Ype19mdYOf7hDu5eWL2s4WNXQz6+/hbtRw68m6XKUyuOMbXrtGUOtHabq/rPFZm+6f16sLtLag3SZ7Lotu7UJylTeeOUpuEkEZdi6Gvp5LuuLtPo0rRteNIrVPvr6LDUu0uogqeXWgh97390Qxxeerz7/YJ6W1fraP7ZD7qTa4TpYU3+poT+voT/abvAIgKu0zsqsP39v8+20vS9r6E1legvV0O/X6d3jGg4epdWwGbz5qSOSloO0GmroL+rz9zs4s+6H/GKVqoPcarMdTuE639F1317jeJ5x3HUrdqotvj5L5XFSt2voBWbgJQnK8EQN/aRO++M3GUHczDMevrf5hedri6+X68BMDpJx+f/s3U1SJNmZN/r/cWh1D+7toldQaCYzqUjvFVRoBYWGbW0lIlYgegVFraCpFQSoTPYOi1qBIlfQQUnXrGciV9Dw3jvQKyV+7sAdkswkM/kIIIDfz6ysSIgPh4Dw4895Pm76vG8fxNnzNZfWstZpO07XTJP62ZUfs9Qvh5Tp/6r7L47qtN2r3zvZACy/ZtxfJLyj1N/V/XauZHU51Okv1s9LlGr5JiVXP0efKfXzdHVapy+O+/XMU3xtu92UfJZSfixfP+SEm0YW8XuaY5dWyXm2TDrrZLgi7xz0wZh+IfSXdPWblJU/DnXa1z/hrgwBkb7G+Tf9x/WjGSZ9YKa+TJPFnOC7uplSXl1WW12n7fiSoNH11HyeUrdyWn/oF34bB0M/mme5QKn77d7Qp2H9oY8F4F1lMj/O6jtlTGdqfZFSn1Xpy7Kp01+N6n57kPKPf7m0ROkmSj5Lrd/0Y9E3Dp7Ujn3TrCc5SZfxgx1Drd8Oo49HD3YMS6lbS041t11t9pIkpWw917UxXJegzDNWp21bp20fjDlbCJWzL5Yvk3r9wMxp1wdfurJdJvODlLKf5LPhsS4NzNRpO0opX6Zrbt2grs/UyWe5ZPLSQgIy7yr5LLV8NfSj+Z9h8fdsAjR1urGbWrfSJP2FzYujut8eKPMClkn5en5wSRnTmc/60peNxZXR8kl9v5iNWcrKH1PrV3f2RKV8lVJ/qNMXR3W6sfuYz091urGTWj9PLTsPOXmqb6JdXyb1oO8faFOm17TJyuyhj+Khla/nszdN1jsNf+EKyqdvwlPT7xh12ynly0/fuH5XJj998g11WMiOUupeks9Sy7+cLRjqfrubWn/X37D8mIsjsJuMUuuXKeXHsjW/9U5WnbZtSv2v4bl+fjaWsO5v7KSWb277+Nc7mPpjn8L5/x6UydGTG9s5jOM8Si3zMpmP+s/9apSsrqfpxmXrp9GDHiDABfWH9bWcfHaUfKQsppZXSTaN+b0bdbq+lvzfm2lW+uDCQynlVZKDdH/fK5P/51G81ufrm1oOy2S+FIGlfpjDyk5K/Tw1r9KUebrMs5LjnL6eJ6vJStqcZi1N1yZN2weV6o9l8tPTyV4a1P32YBFr2afgzUZoOUnN+nMeXw9XISjzTPS7GN12UjZTcr2F0IXgxluf3m+30tX/6PvBvHX7/TKZj995/lHSjVPKZi4uiGtOknKQZHtRb9h12p418D1JqbtJs55aF5MSfeODqj9mpTnIaQ6eyompTtvtlPqfqWXy7gSGYaEWkxmAZVK/bzdzWn/45A2b8h/lt3ONgBek37jptpNmO+Ua/dzuQ8mrpB6ka2YfGik9bDgcXbYWug/9JkiOkvpZavnXZQsaDtlHo/6/uv7euvD8huVlSv0ytXxXJvMnlUFRp79sk6Ytkz/tPfSxLIu6/+KoL/lfzMYrPGWCMk9YnbZrWclmajfuy5Fu+kDl5VkmxIXHHnZscpKmztPlOMk8qUefOiENWTVt/ilH5d8Wv8DpA1D14IOLglsrSeot7l5fpuQgp6ezx7JDd5k6fTFPyXoZH16a7l/3N/bS/e/tp5glBDxedbqxm1J+9/FblaTmZfqsGe9hN1Sn7Xqabid1Qb1ibu0T5+9aTpLMktODZGV2MQhTp+0oK12b0yZJjpPMbhKkGUp9ttPUzXRlLU23W7Z+2vnoffY3dlPL7x57MKNOfzXqx5vXbz/1PT82dfrFWEDmbXX6xWZK0wfBV8pvyteXBz0BQZknpw94nG72GTFlcTXatfy6TOZnPWa2k7o99FN5L0tiGZyX1nwsTX0Z9AvAg/SjJW+0wHsIw5Stv3ysvK1+326m60Zl69PlbwD3aQgqXyVwf5JaNsvkIafcPD512o7SZPtOe8Xch1IO03WzrDYHFycd1Wm7npXTUU5X1pKsZTXz/F+Zld98PIBX99ud1NqXUpccpquzpBmnyTzd5QHAOv3Feso//qXv0VHaxxwkvLB2eHLlS3XabpfJ08uuG1oerCfN7CYZWnW6cdD3dcqrsnW4vvgjhKdBUOYJ6DNiTjdTy2bqAgIxNe//Zgxvpm8tZC/JoFkGd58pc4dKDpM6S9ccLPNFQN+cuf7xLFj34dttHCTN+DEvIoGnZzhPzK88dvmRZyjcl36KVTe+Us+6hbll9urVn+cktZslzUHe2USp07bNSkY5TZIu717ADuVbeynlq9RymPx9fJYpW6e/WE/zjwepWU/py6iS10fJarL6Ouma7dTyVWr5zYfKqx6T88BUKftl6+1S98fsKQZl3uoJef7J+jLJPGmOspp5XidJ5h9a550H4pKklkmSo6y+Tl6vJqtJXr9O/8HpelLW0yR99n03z+pq+sc/u03XpmnWki7p+hu+mVnTraVJ++bzSZoLt+mSNMP9miRdN9y16T/+oKa/35vneec+zVAp0CXpZmXy59lHHgw+SFDmkarTX6wnP9tMyvjegg+l7J/3ZumbIS7djk3fu6YeXHmhvexK/bFfoOVGOxR3pU7bzZT6QxkffvQ9pE7b7fQn69n9HBnA1dTvfzXK6cofr36HHCZlvEzvxctgKMcZp8n4QZv33reaV2nOgiiZXVwP9f1F/mFoxnt6PDTDfZFaPlgSV6dfbKZZ6bMSLpacl/IyJXvlt8uXlXxTwxpiL7XMk4wfS5bwh9Q/tG3+ls0yme889LEswltBxIW4r8DpPaj15RCfmQ3Bnlk+EpSCqxKUeUTq9FejNM1m0oxS64NngXzqgvy+3cnI62XSLwBnKXWW05UHbRhcp+1Bmtp+KhW1Ttu1NN2OEiZgGZ03LL/yHcpJkp2ntiN+E0NZw3ihpdKPWSkv+wu012/tlr8p36j7Zeun8YMd35LpmwPXWZLjrJX2U6Vfy6zfgDo9KpM/Pf5Mpj7IejAMzHh+al4l9ShNM0/XHSfNPH0PKYEX7tRSXVTTG94Q15OMkm49TWlTl6wUp9b9MlmOxUV/4Z/dB5+wdN/6Uqcf0nQvy9d3my554XcyWc1aTusPV+2mX6ftbvL6QEonsIzqdGMv5ZqNaPsL8Ee/w39d9Q+/bPN6ZTtd2Vy6jNQ+YLaXnM6SleMk/VCBpmvTlQ9PBHrLAnf0S/kxXZJSv3pqpTqL8qYUennWlDdRpxuzpNl+7Fl0/euRg2TJJqQt1klKGQIumWelHuV05SjJg01Xg0RQ5kHV79tRXp+uJaVNmjZNt3arKUlXsoAFxxLV1tdp26ape0sXtLpvNSdJnWWlmeV0ceVCQ2PnvZR3mjX2o8zbq5zAhsfYTZNR0h0Nqd7zp1AbDzwN12j8e9FJmrLz1EdnD+OOx2nqZmqWszyp1m+TZvdTO9l9iXM3jG8ubco9fj+lvkwyG0Zvz+7teZdc3XtRU+rLsvXT6KGP5WOGtcwoyVry+ihrq/Pym/nxWSCjjOeXTqJ8LOp0YyelfPPQx3Fj/UZl//ffDdktfQ+ZoedLjh970IynTVDmgQz1mjtJGd15T5hSDpPuOF1zlHRHWWmOc5r50DhrLU23ma6Mrrw4ucYF+V3qy5Wy+8Qj+jdXhwVgn3o5u0naZZ22eyl1K7XsJ9m+Tepmf8Jvts9fr1oOk4ykgwIPrT8n1/mNLtL7PiFPKmumH2WdrXR1cq+Bi+s5SSkH6f66Uyb/fXSTB3hzod2N0pTRvW7wvJm+NE+/UfEsLxgfQ1Cm/r7dzmndeSs7rJbDrGQ3p3U3TdktW4+zn8xSD8co5VW/mZfjNE3/99H1AZahWbCSIp4MQZklMJSGjNJklK62H31jrDlMyXpK3UvXHOdCk/Gs5CinQ8f+JNfZiRkWJrMr15DW+rJMHuYEevNypSfUaOwqLk7Rqkma8irp5hcyVWaffIjpi+Okzhf5Wg+7MdtJPkst3z6VxnjA41anbZtSZ8mNynJOUsuj7zUzZJKMr13OdZ9qeZWc7iSL761Wf2jX8v9llNcPEKRJ+gBf083T1XmycvQcMmr6oEz5dlmDGuebU6Xup2t2ymR+1P+dZCepbVL3kmbnMQYHhp5aO7nZe97ilPoyaY6HgMs8fSnRswxS8nwJyiypIUjSDrPgktTjs/GJd/qcpR7lqm/OpX5btn7auctjetcwXWnvTnbuSl6lK22ZzI/Pf/6rWcvrtGm69STrqaXNQ5+8FqnmMKnz5DxQc3GE52ZK/SG1m5TJn/YW+rRndeQpJ6kZvXvyHX7+O8tSJgc8D0Ng5r9u/gDlMH1W4WxhB3XH+vfb081kZXupm3v2GZt79/mzPd80S7f5YA2N+/P0UZqcbao8qd4XyxyUqdN2L8lm+r/pvYc9msUZShL37vTvvZZXaXLUj6/O0DD3fAz1ZrqapGw+pd9luA1BGd5y7QVpLf96X9Hsur+xk3oH9a6l/pg6LLZqXiVl51Mn3+GEtpamG6XLWtK0KWmfRClVX/Y0T8pmkpTJxycs3fhppu1RSv08/Q7zeTlcP8Wg7iT14DE3/gMepzr9YpzS3G6S3yMoaeqnJ2UzZYmb5Je8Slf3rtIv5j7UabuZJpvp6sM3Oq71ZdIcJTlKMssjDdbUvRc1tb7MarOb15kl2UyT7XTZfchASJ1ubCfNTvL30V1vit6XIdN8O7Veby1dy49JDtL/nh0n6ce9r+bN3nHvSr+DQwuHg/6xmu3H+HsLiyYow3vq7ze205WrjQgt5VX+OXc6yrBO29HQzHex2TElh+lOt8vkz7O63+6m1t9d+OpJapllaA6WvJ4nq5882Vw6lruWw6XefbyK80BNnScrC6l97wOAmSX1s6FJ417S7aUMza7vMeAHcNGl7+U3Uep+um5vGabPnfdP6fvIPXxQ4WP66VZ7y5ydcLuR4HdYTl0uBGu65Q/W1Gk7T6kvUsqr1LqWs2zkmpMyOXyQ5rl12q6nZJ76enMZ/nYXoQ8o1t3rraVLUjO5q7/DOm3HSd1NUw7SZWeZf0/hrgnKcKm63x6k1qstNO6ov8xZCUvKW8GSRbh0YkadfrGZrOwO2RsfOKhy0kf3m7dSqIfMmd2U+mZ6Vr/zs1O+7m93Pla6z6654qjzJe6D0+8Ez9IHruY3OZnW79vNnNYf+ubRyflFQimHZWveLuxYAa6p7m/spS6ot0opL9NkN69zfF/lN8M5p02TNulGdz/d8dZOUupBur/duHHvQxjWKptp6vZST4LsS+vOJ9Gkz7A5GtoQJq+v14twYYfVr592zqc8lrKfLmsp9asyPnyQ65Q63dhLclQm91uifxf694Fu99rBw36ox52XbfXZO91uatlKLXcWAHrvOfuMrPEwFfQg//TXefm3x/O+w9MjKMOlhjeso5QrluPU+l2Z/LSw/h91+sU4aXYXvpNX637yv7fL5OiDmT31+3YzyYu87n6dpuk/2dW19xow96VOR0ldf6vHzTV6CrxVLlbLftId9wvoZj31I8Gh5XSSUubDztyVAjV1v925NI22KZPy2+XdIQWeh/Mmnx91w+B5P33nOE3OGlwOmrOL5qsa9XfLWrq0aeraUgcH3lXKq3Td7rDZ8eAlSrcxNEreOc/4pM/c6ZqkH1E8T2mOUzIfApSXZsPW/XYnXUZlMh/d67HmvL/i/6S+/tfHXrZU9zd20pXta6+la93PPzU75d/uL3PlvGz0DrOk67Rt02Scro7T5ChdeVT9v3jaBGX4oPp9O8pp/ePV73C7CPewWzJOqeMsupluKYfpbt98sU43tlM+UNo1TIS4blPcs3rqy7KNhp/JepI2Tdema9YfWSnUSWqdp8msH8meo+Hzo6SOL23YXMqrdGkf++IceBoWmjFzJ5Y4o/Jj+ov13TKZHzz0oSzCkJm0cx7EK+W7dBlfeXPrueozkOdJc9w3M85Rmm40ZE78x31PNBsmEv3nQ2XpLMJQ9r97reBsyauUupvT/733sY3LuzSUje6mlvcGQFzzcc4GdSQraXOaNk0dpebzoQHxN2Vrvr/AQ4dbe7RvONyPa5UxJdfuAzJk5IzT1PEd7eydpKk75bc/LeykXqcbe2+NC63lx+T04KYTivrJAzksW4dXLtepf2jb/G0I1iRtmrr+qHZGP6aWX9u5AJbF0BxzlvqoAuLLqeYkqQf3vQt/194aLdw34N0uk/l8aGi6naaMF94Xb2GWPKhXy2Ga7jjJLF3ST4t8nav0+bvR003bo6Qel0m/JqvTdv2x9Dp5LzB4FaW8Snf9DcW7Un/fjnOa3aFVwPZ1Nuj6LKf8z6W/z0v2fcK7BGX4qBssRk/yD2VU/v3DgZnzWs5+6sPdjZgsdT/d9d7Qr+LNuPLF1F/XvRf92aOWf7ntsb7JrOnaJKOkrF+ajbIwC17MlbpftkxcApZLfy6ss7sPfi/5BfJ11LxZZda8SpZnitIivbVR85HMjjptx2nqzp0EZy7+rJ+jkldJPUqSPiu3myfN/LprtDptRyn1j6llv0zm44Uf5x0Z+rJsX7tUqdbvkmZn2f4mh3X2dpK2TOab17jPXkr9asiOP0rTzdOdD6g4ustjhtt6zm/hj16dfrGZptlNyjzd6UGyclAm8+PhwrxNspl0a0kzK5P5zs2f5xfrKf84z5VLispJajbfaYS7lpxuJit3G4hJ+jr9pmyfNdhddnXaHqTUr+5qEXAhiNQOwZr1pax375vKrS/b4gAguc/AzBNSy36Sg6dSovSu84BMf/66UslFH5zJziPsG/cBSx5ILHmVrsz70qjTo2Tl6LJgzVt/34+kn8yQGTNOqdu5Xtn/SWrZXOas5L4Eq9spWx8fJNL3ccp6mrRDb64D60geI0GZJVf3N3ZSyzfDwmb3PB22yXZq3U6tO0lzPIxlbNO/KZ+k1Hm6Zp6ma1NLm3q7i93zBlzXulN9meQ4adbemkp0d05S606ZLK5U6T680+z33uqn67Rtu2TUlHrWI+cki+7lc60DKr95qgt34Gnog9x19l7j9yftmhfdfVbMk2jc+zEXAjKHSdm87k78nWbOPIS+NG1oUt3M0yRD4/+LzkuOhg3Es5HX60m3nv7iev3eJoWdNSFuMkuymVpfDNOfdu+q2extDYGYfrR9vcE49j6LZLTsf5t1urGdJpuXBWXqtF1P0+30fYfq/pDtc3T/RwmLIyjzCAzd/MdJ2TxPS+zHEW9/6qQxdJE/SqmzsvXTlVIAP/JYB9fKcnk7dfluf9v6k+jCS5XuQ522myn1h5su7G733GeLyj5Lp7/geN0mq6Oka9M067fvo3CFBX2tP5bJ7X4/Ae5Df1FU5wufDvjWk+TxrdBK/XFo3Dt76EO5a+dN//vz9q0ucOu0HSd1525LjReoD7rNkhz1JUP1qEz+PFv400zb9eS0TVbaNBml1rONx/tVy6ukO+r/0czTT5e8NNvmzg5h+sVmsjJKMrrVsIdS9vPP2S6/Wf618nkp2YVpnOdlTaV+k0eQ7QPX8dhO+dzA0M18ett+HcOb4TxliVJuFzRV6SHV/XaWWr9MLT+/34DMkKFTk+Tjz12nvxolTdv/l3ahE6BqXiUn7UN1+we4ruH9c5aHzC5cBjUnacpeur/ulsl/Hz304dyHCxnMh8niMg7q9Itx0lwSnFmC8qBSfhyyXg4eMiPhTZbIUJJd7yUL+8NKeZV0875sppknfz9aRNnTEJAaJWWUUjaziPeZmsOz5sWPRZ22Ryn185TyMl2SMgTmFvy3B8tAUOaZqPvtXmrdSi3f3q6/zBC5fniPslTpMv1I7LwadtuO7u15p+1eSt1KLT9etZHaO/dv+12sMgRqbpBu3AfVxsuaJgzwIXXatmnqh2TDlQAAHL9JREFUwZMpP7mOYZLJWS+7hz6c+zBMUtrts0vrfpncTVP6Jek5c5JaDpIcJJkt82t8oY9iO5TsP3zPvJLDpA4To5okQxnXavrBUe8bpR8tNUpKu/AsvJLDdLfL6HoIw9/cXspQptWPT999ig3DQVDmGblwEX6r3h112u6m1N8t8tiudwB1/7pj8pZZ3d84uFAXfJJSZ+kyu+uAU51uzFLKl4vs5VKnbZuVjFK79XRNm9TLFxd9U8Td9H2SnsTrCDw/9Yd2LcePscfMDbMv+h3r3efU/6v+r3Y9f81mmrqdLmtJNy6TP9359/8APWdOUspBusffmPmtQE269kLPxeV2N2X/J6lXa0INPBxBmWdmKGXaTS3tbbIy6n47v32vkWvqF4M7j7lU6TLnjZu7tGnq+vlkj1q/K5Oftu/uec+CMqe/vot68Lefq22zmrWzHaKn9hoCz1vdb3dS6zcPfRx3ptYfh93p2UMfylXUabubpmv78cjXDzIMO/TjNM04tb7oBxc0e7nnyS5vRgPX6406vtaT5NWwSfKkGzMnZ6XYq0nSpslaum5t+Djpyvqj6etzHfc4QAK4OUGZZ6hON/bSNG3Zmt+4trRO2+28mdpzt2peZaXsnDX6eurOmzMnn6V2kzL5097dPM/Gbkr53X33sgF4iuof2jZ/y96ne259IktlmZr8PsLJJvX37ThdfXta5BWHIyRJnf6yTfmHWWqSJrvpjncfuufZECTaTsrigjP9qOidMnkea6vreGcjqU26tTRN/3GXtTRdlqJM6lNqeVkm89FDHwbwacty2uee1f0X83Tl4Kb9ZfpGd812Uu9y+sRJUnfL5KedO3uOJXU+kSnJsEN3pcXktZ5jf2OWWr4s40PvAwALUqcb233D1js8P961UvfTPa5gzJm6/2Kemhepp79OXh8l/zROqdvpG4ROPhaEOO+b13//S1cmXafra8na9vn3cyPlJE23U377+HvyLYt+Suq5UdIlTZN03aj/f5Jyz02J+zLxW2XFA/fHxdgz9WbyTvnXm1zs1/2NnWQ44dykwesnn6B+N+zOLdWC6D7VP/yyzet/2EmtX6WWwzK5eWbTe489/WWbsjpLKcdla76+qMcFYJie0nS7F/qFPQ6l7A9lwke3faih9KbvxXJWlts3HN25q54lb9Y2bzfiHcaYH6TkxYcCM3XarqfUeWo9uKsmvovypuz5mmVNfRna+DmvrR7aMEFqPcmF0qkuSTcbSquSdKMkt1tfK1uCR0VQ5hmr03YvydoNJ+/sJDlKMkupf1nYQZXyMt1fx89ltOan1P2NvdSylVJflq2fRrd+vIv16UmSMn7sDf0AllWdfrGZNLtL36uiL+8ZL2pXvU7bzTR1NzWf99memQ0ZA9sp9Txj5WKGwW371fSBijpLzYuslN+Ur98+t51/vct6mRyuvX//F/M0Sdl6PGODz4Mz9ZOZMyepT+d8369l/r6+iPHTy65+/8VmurKZrtm8cvbdgjfygLsnKPOMnafp1vIv1901qfsbe+mavTKZz86nOt3OSZoqnfYdde9F33jgBq/Re4/V7xTOkxxnpdvJ6fMZZQrwUPoJTdlOWcJGwDWHST1Isr6I7JB+THi3m65ZS7KXd5rHnmdppgy9c965yLxCQ+H+XHY6SlbW0wyfvJi1W3L4ocBKX3pdvnm3bLdON3ZSyjc3zR5+aOcbLpeVNdUcJmXzKZSx1Gm7mWQnTV1LV8aPpfH0ItRpu5aVbOY0bZLRB3tXlRymez1+DgEreEoEZZ65uveivpkq8Pf5Vd7E3w3mDCm/N8+W6dOZn8SCYdHOgjKL6PtS99udJGPlSgD3byhp2rtyg9C7bfh7klq2h2yV/hx+i3KHPuOl206T4zTdXvn6wxP9+p9Dxum69KUbTdJ0SZc2ZSj3arpJ+e37Te6HIQM7ST4b+s71Gw3JsHap84+Nq67Tdicl35TxvFz43FnJ07ePvYfdhWmOQ0bS4/+ekrPvqztI1yR5XiPZP6QPxJ2O0qyMkmym1s9Tyrdl62a9IoGHJSjzzPW7Dt32+Q5TzUmaepCuuXSEZJ3+apSycpBSD8rWhXrtYffp+gfwNBYMd+VCpsytJyQNr/XmstfKAzxlb5X2PMgBlG+zlt3ymz6D5UKPuZMymb9X1vPBhzkbG52y3QdHmu0FnKfW3/R++T8/v1jKXKcbeylla2hguptcfypSH5Sp36R2vymTPx0M3/ssJUfpyuipZI8OmTNrT2Gzq07bNsksTXYFHICnSlCGJOcn8FGajJI66icX5FWacpQk5ztatXyZWl+Wydv9Tep0fS3ls6NcdRpAP4rxWaWe3kSdbsxSypcf2jW8yeO9+9oBcL8ulJvcX0lTLYfp+8a8lxFb/9cv1vO3f5yl63bK5NPnmiG4sZ1ajtKPmp4t7DCnX4xTmmlq+fXZ49b9di+1bg3fw42DJ/30os9mKVlPLfOktkmOkpPRQ4+95n3nQbMhq+uhjwfgrgjKcKlhwdhmJW1qt9anF2foEP+3vcsa8Z4vpD6l1B/T6f5/FXXa7qbU36XW78rkp+0FPN5B+kW5nz3AA6vTX6yn+dnVS5pu5iRN2Sm//XhpUp1uzNI0KVvz0Ydv064ldTZMMfq2TBabuTA04533DYLLz5McJ91eSvkqteyXyXy8mOfIdrrTo6zWo7xenTsnLp/z34VSdspvBWSAp01QhoWq++089QPNx/qU4yfT/f8+1Gm7mVJ/SMmrsnW4fuvH22930mUmQwlgefQlTdlNrYstaao5TK7W9HPo1/Kf75YNXfj6WpJZUteGxrELbyRa99ud1PpNSjlMl3lK3UzyWZr6HwYBPC91urGXZF4mXnfg6Ws+fRO4hi7jSz9fyndJWReQuaa1zJIkNZ/XaTu+9eN13ZX7BQBwP8pkfpB/Tptavl3Yg9a6n5TR1aewHO/1QZyf7V365aY7SHKUlPbOJhR1OUqS1PoipW6llIPU8nMBmeelzyArIwEZ4LmQKcPC1d9/MU4t49TyZUp9ma7ZfowjJpdF3d/YTS2/S5L+51l3k5XZtceYv6nN3pQpA7Cc+gvSf9pLrTcvabphH7KhZGSW7rxx73G/IVB3krqnMT/3oU7b7eT0+Cr9jQCeAkEZeATeCsxcVMph0h2fjxTtk9+O0nXHSdq+D1CSplnrdx7Lftm6fU0+AHern5iXvZR6tQb6vZNFBN77QEw3GprJHSfN7lOY5MPjoNQaeG4EZeCRqNN2PU3GSTdKV9qUT0y6qjlM6pBN08yTHFjgADweQx+XnZT6flD+vRvnpC9XkpnK49YHBV8flcmfZw99LAD3QVAGAGCJ1WnbJnUvJZc30u8b427KZuGq6rRdW9apU3W6sZOcHly9HxLA4yYoAwDwCJxPJ3rrkzkZGukv5QX2XanTL8ZJGSXNUXJ6pP/I1fWTjZqjRY80X4Q+ANlp8gs8K6YvAQA8AmVrvpNafp5av0stL1PKy6Fk6ZkFZDZ2U5ppStlKqd+kNNO6/+KoTr/YfOhjexya3ZS6/dBH8QFrWXnoQwC4XzJlAAB4NPopUTm4dEJVLd8l2XlugarrqtP2KPnrqEz+++ihj+WiOm3Xk26nTH4aP/BxjB6qD1+dtptp0qY7nZfJnw4e4hiA+yVTBgCAR6NM5sdlaz5K7Sbvf7H+LsmsL4Phg5puL83Pxg99GJc4TrL2UE9ep+1a3W8PUuof696LWvc39vpA0X089xfjuv/iKKX+kFq/SWl+qNONvaHhN/CEyZQBAOBRqvvtbuoHplOVsp/udJasHMiceduQbTTPP6ctv7m/n80QLLsQZHidZDVJ1pO0KRmnZlwm83vPEBmO7SClfv7+F8t+33x4sZkrfcCl205Txql5/3l7J6llL4nR9PBECcoAAPBo1f12nlovn0zVO8nK6Wb52ojli+r+xk66Zr1M5uNP3nbajtJklO6vezcpearTdnOYIPbZB29Uysus/n27/Pv9T12q043tlPKfV7pxKS+TzNOdzpOV2U0CJfX7dpTXGafUrevdsbxMslcm873rPiewvARlAAB49Oq0HSXdKMmoL9BvjtLlKEmymln5+mF6hCyzOm3nabqjdM1emcwPhmyRNn3mypk2pX41fHySWq6VyVKn7TilTvt/5CRN2UuXefL6qL/FapIcPVQWSN3f2Est1wuOvPUA5VXS7SXN7scysuq0XU/TbSdl8yNZMcONc5KSz1Lz4au1Wl8mmWW1med1jh+qBw5we4IyAADwDNXp+lqatcubJr91w5wk5SClbvVBiLRXKQnr+7HUeUo+Syk/psv2MpXg1Gm7d+1slQ8+WA6TMi6T+Xx47PUkbZpulK7ZvLQs6m0nqfUgP2t2y7/P50OAbDPpRinl46/PZUoO05WjNJmnyywPGPgCPk5QBgAAnrk6bdeymjavMy+T+XGd/mqUrI6SzJKzz20cpJSvUst3ZTL/5FjtOt2YpZQvU+p+2XrYiUrvqr//YpyumT70caTWH5N6kLWVg4/196l/+GWb06bN6cp60rVJs5Yma58o3bvwAOUkTTdLmnm6zGTWwPIQlAEAYKn0WQav15PVuSa9y6NOfzVKWflj/48y+Vhvkzpt11Lq//T/+D8/X6bx2/X37Thd/XRApuQwXT1ImnmS9TR1nJqrBUE+/Jiv0pVZ+mCXJtSAoAwAAMuhL9nododyjZPUsu6idbnU79tRTutBks8+Fpip03azH++cwzI5XJoR5XXajlJykNSPNB2uL9M122elSO/cfz1Nt3PFPjQnKXXe99Bp5klu1BgYeNoEZXhQQ/O33ZRyNNQZzz5wuzZNdtLVNslxUnaS18MibTUZ0mrv6bABgHfUaTtOMk7T5UMXtJ+4f5tSZ8kwoaeWb8tkvrPo4+T2+lHOmaVkPTWXBs7e6ifziaya+1J/326nqx+estT3zrlSI+M6/dUozeooXffmkyvNcU5fz5PVKA8CrkpQhgdTp+1OSv3mzSdykpT2sh2EuvfiOPnIGMXkrKHZ+LqLQADg9ur+i6PUfD5kGWxeZ7OkTtvtlLculmXJLLk6bdfS1Hm6OiuTy/vF9Fkp9Y8p5buy9ekeNHdhyL4aJ2Uz5SNTj/pGvZsyWZZXP2Et6/1/3VqSNv2otbMspCtPBYNlsvrQB8Cz1i+0al6dpttZnfxp77Ib9bsx76SYlrxKV4+SJE2TdF1SS5vUvfSjHAGA+9SVzay+Xitf/3l2lZsP2Ra7Sd1Meec8X8tHxwvz8Mpkflz3N/ZSyjdJxh+4zazuvUhuuTYbJhmtJ1n/VMZN/3t1upmsjFLqZr+G/PA+dE05KTW7srKWzzCBapzUUUpeJPXCV89e05okXyb5Xd17cZJSdtPF+wePiqAMD+kgtSZp9lYnf/rIG+frNlnpP+yzaXbKeL777q2Gxd3oTo4UAPio62Sq1t9vbKerO7k8C/YkyXvneZZQlyvm3XefvslHDNkrRx/6ev3+V6N0q5tJHfXTiJq8fQF/2Z3yKikHJdmVHbOcymQ+r9P2IKlJKWupFzOdSi55jT9Lrd+kKeM6bbdlzvBYKF9i6dVpu55S/zIEZEbKkwDg8emzHbpxmjJ+++Lq3RvqJfNYnJei1/pd0h1kZXU9p9160s3K5M+zOv1lm7L6Xynlx7I137yzY0iXPhAz/P/sw8v/PU/fi/DoLo6Hu9OXL3U7QyPwTyv1ZX7WjMu/ea1ZboIyPAp1+sVmsnIkIAMAj1Odtnsp9dMTa2r5F6UHj0NfXlJnKZdlPF3IZFiSRr88DXXabifZea/s8dIb29Rl+QnKAABwL+q03U5Ttz+YKVPLfpnMx/d7VNzG0O9llCbrbz7bJV2znuQ4OZ2XD/QNhJvqG01nL7V+9ekbe19huQnKAABwr+q0bdN0m0nZTM2L4dMnqZdPYQS4TJ22m0nd/ehkraZMym9larG8BGUAAHgwQ6P+NsmRgAxwE0Org82kW08pXw5lS/Osnu6Wr/+k4S8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz/7cEBCQAAAICg/6/bEagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwEvh/+iDndezFAAAAABJRU5ErkJggg==","e":1},{"id":"image_7","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2buj5DauKw3A/20qGb+JswLxMVWJ6d6B4BWEeU4lJFZgZgWmVxB6BQ3GCwi1gkA7gJSZqnkbagfi21Qi9pkHQLRkiRIpwgItfV+VqsgGu/uAYgEX5557LgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPD/twcHAgAAAACC/K0XGKECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAVECJ2KTF+vMoAAAAASUVORK5CYII=","e":1},{"id":"image_8","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2bu75CjS7AzA75dgh6+MvIIuX48b5awA9Qpafe2YUdUKrF7BaFbQzAqy1BMTvhz1ClyswCV6HOG7ESuw8JXtQXl8UYWAafEjpFYh8TwRBFRmVuYnJELw8p1zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4P+1B4cEAAAAAIL+v3aDHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACvTjDFAAADVklEQVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIArszhGIiqcWxUAAAAASUVORK5CYII=","e":1},{"id":"image_9","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2YMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVSbs+U0AAAmwSURBVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWkPDkgAAAAABP1/3Y9QAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAlXnQABmyO99QAAAABJRU5ErkJggg==","e":1},{"id":"image_10","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2bub3LjO7AzA73eldHoUcQdmZg10S7pZgSsrMDMMgjZZKwizAtMrCLOCW5QR9LDpFZhaQZfUaSCzUDsQM3IS6Z4MqkSJEkkVKf5Zeh7AsHjr/nwsEhDq1fnOAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/P/twYEAAAAAgCB/6xUGqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI4A9+01LXMbLm4AAAAASUVORK5CYII=","e":1},{"id":"image_11","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2YMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVSbs+U0AAAmwSURBVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWkPDkgAAAAABP1/3Y9QAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAlXnQABmyO99QAAAABJRU5ErkJggg==","e":1},{"id":"image_12","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2buD7CiyLE3A/zPoqlmiHaCa5TkVIVmuIDxXgHLcp0LuKwjlClCsIBQrMFfkqVPDFCtIZwXloqrGJVbQ0LPOBrs1cAckEAohREjA943kZuZmT8YA+M999wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9/e3BIAAAAACDo/2tfmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBDlq+xfmS3l8UAAAAASUVORK5CYII=","e":1},{"id":"image_13","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2YMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVSbs+U0AAAmwSURBVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWkPDkgAAAAABP1/3Y9QAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAlXnQABmyO99QAAAABJRU5ErkJggg==","e":1},{"id":"image_14","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2bub5DayM13A70nRDs/EHRR77Fti1gqEXkGxhg6Hu4AVFL0Cs1ZgegVJVkePzVpBUSswqGpH9OxSK2jyjm60qfx6AFAiRbkkSoT4o+eJYAiZyJ8DIIIU3vjOdwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7/9uCQAAAAAEDQ/9eusAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AjYYfDYAmXIWgAAAABJRU5ErkJggg==","e":1},{"id":"image_15","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2YMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVSbs+U0AAAmwSURBVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWkPDkgAAAAABP1/3Y9QAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAlXnQABmyO99QAAAABJRU5ErkJggg==","e":1},{"id":"image_16","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2bub5DiuKw2g30uye0r0Clgeu0WmV8DyCoQednS4WbUCQytgaQWGV5CAHAoPBa3ApRV0klZH9KzBHYAzt03m7UGVJErin0gChZ9zIhQMZWbluwUiOPjivXsBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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dZsuAODDGScv/7XasyTzTVUCAAAglAF2SHecqrP1ENtMb9UxIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1QhXoAAABkNJREFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4P+3BwckAAAAAIL+v25HoAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsBSWewQxQK7cEAAAAASUVORK5CYII=","e":1},{"id":"image_17","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2YMDAQAAAAAg/9dGUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVSbs+U0AAAmwSURBVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWkPDkgAAAAABP1/3Y9QAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAlXnQABmyO99QAAAABJRU5ErkJggg==","e":1},{"id":"image_18","w":1125,"h":2436,"u":"","p":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGUAAAmECAYAAACsJdO5AAAACXBIWXMAAAABAAAAAQBPJcTWAAAAJHpUWHRDcmVhdG9yAAAImXNMyU9KVXBMK0ktUnBNS0tNLikGAEF6Bs5qehXFAAAgAElEQVR4nOzBAQEAAACAkP6v7ggKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA2buD3LiuKw3A/32UjQwaMHsFrswCJJZeViB6BaGHQeCoagfMCpreAXfwyBhBD7uygpRX4CcnBnpYXkHTs7QjvtMD0rENSx1LIvnI4vcBAlS3qt77wUEVeHjuuQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8U5s7AMBDVUO/n70c5iLrthrP584DAADcLkUZ4MGpoV8kWeRRkhfZttW4vfF7nj0+ydTtJ9M2XZckfap+888XtPbnTFkqzgAAwMPRzR0AYAaLdDnINB2km07qrD+58TtO3Zhu2v7zU3eaztPaUap9mGofZqpFUts6e3xSZ0/GGvrljWcCAABmpVMG4A6ood9PV5tUnlwutE/aajyeNxUAAHCTdMoA3AFtNZ5nagepOkurPye5+e4dAAAAAG5fDX0/dwYAAHjIHs0dAIDbVUN/kK5OM2VMcjh3HgAAAGAH1ND3NfTruXPcVTX0yzp9UjX0R3NnAQCAh85MGWC3dDlJl+3cMe6iGvqjtDpJN63aajSzBgAAZmb7ErAzaugPk+xnyvHcWe6SGvpFMp2k5SDVDtrv/zrOnQkAAFCUAXZEDf1+Wp1mujhsq7+dz53ntlwepZ2jZErSJdOUpDtIl2//v59WT9LyWd5N3347bmeMCwAAfI+iDLAbupwmddqWf9vMHeV2nSfTv22++zjvkmSbTIt0XTJdbFN727Z8vpkrIQAAALCjaujXNTzZzp0DAADgdeiUAXbBNmk7eZpQDf1+ktN0tWjPnvdz5wEAAK6Pogxw77XVuJMFmSun6arP1A7nDgIAAFwvRRmAO6rOHp9kykGm1reVAb0AALBr2twBAPixGvo+rT7PO+3X7XejI6wBAGAHdXMHAOClDpN8rSADAAC7y/YlgDuk/tT3+SbHafWb7E0fzZ0HAAC4OYoyAHfJNzlPpjHVbdrHf13PHec+qqE/SHKQ5KStxvN50wAAwKuZKQNwjWrol+lymKkO0tUmU7fJu//YtN99OV4+/8s+eWc/j5K8yHlb2Z503WroF2k1ptp5kmVbjZu5MwEAwMsoygC8pRr6/XTTcaotUznP3nSci70xl90afTIt0trTH76pPku6I0WZm1FDv0im07T2NK19kknXDAAAd4+iDMBbqrPHx0m3zJTjJGu//N8d9emvDjJ1R5lan7R1HmXdPtY5AwDA3aAoA/CWauj3FWLuthr6/eTiMNk7TKvfpNrP22rczp0LAAAAAAAAAAAAAMnby8IAABk6SURBVAAAAAAAAAAAAAAA7oUa+sXlMdk/XJsnDQAAXHL6EgA7q/6zX+TvWabVf6TaV2n1flp7nqonqfZJktMkcRITAABzUJQBYKfU0C/TZZFMB6n2NC1fZWpHbTWuX/LaRVqNqbZwrDkAALdNUQaAnVBDv59knVZ9Wm2SbsyUdVuN479435hHOWofj5tbCQoAAFcezR0AAN7WZUGmNpcP2qItn79G18t0mhfdMsnmBqIBAMArdXMHAOB21dDv19Af1J9+2c+d5TrUpx8cpmWbtDFpB6+/Dak7TavDGn6xuIl8AADwKjplAB6IGvo+qXVavZ/K1/nmnTHJwdy53lrt7aculm311x/NjPkp2mo8r+HxOnn3KMnRNacDAIBX0ikD8ADU0Pdp2SS1SbVft9Xz/V35Bmi/H0/ftCDznYuTdO3wehIBAAAA5LIgU8OT8xr65Q/XH2/mSXQ31emTqqFfzJ0DAICHY0f+TgrAq02HSVu21Xj67cpl8cFXwA+0fJVHWcwdAwCAh8NMGYBd97PutP123P5w8cUi6TYzpLmTavjFIpX3HYsNAAAA3LjLY6TvlhrmORGqhscndda/5VwaAAB4PXrXAR6o1z86+uZcHtP9+DTt0ec1PD6+9QBd12fKya3fFwCAB832JYAddzW8dnH56MXV6qPxrhRlLjt2apPWnqTqs6S7/eLIlPO2snUJAIDbpSgDsIOutiYdJXWUVu9998zet69IDf2Hd6MQ8Y9FsrdOdcu2ej7OFOJ0pvsCAPCAtbkDAPBmauj3003HmbKfR926fTyur9b7pNZpeT+Vr9K100xZt9U4fu+966QOkra4Kx0zAADw0OiUAbiHLrck1SbV3k9LclHPaui/TpcxVU+TJK0+SXUn7dlLiy7LJNvs5TC6RAAAYBYG/QLcR3vTYdJOUu3fU+2jVDtL6jxVT9Pqs+y1D9uzL45f1QVzud5OcjEtbzk5AABwRacMwH10kcMkh1dFl/XVv9e1TmtH1xsMAAD4qXTKANxHXZck+29zibYax7RsryUPAADw2hRlAO6jKUnebutRDf0iU22vIw4AAPD6FGUA7qVpk9YdXR19/WYevVgkbfH9pfpT379VLAAA4CdzJDbAPVVDv0mmTVt9cfyG718kGdPqvSRfJ3kvSdLaJ+3Z+EbXBAAAfjpFGWCn1ND3yXSSLsmUsa2+2NlBtjX8sk8ebZK2eNUpS//6Gv1+kj55kcvZ7xeLpDtJ6nSXf3YAAADADalP+4M6fVJX3SA7q86ebOusP7nWaw4fLGt4Ml7nNQEAgB8zUwbYSe3jcZNqZ0mWc2e5UVPbJNNbncL0Y3vrdPVGnTcAAMBP92juAAA3Zi9jLq67YHHHdNmmdddaQLnaCnVwndcEAAB+TFEG2F0XWScXu12UmbK5nAcDAADcN4oywM5qq3E7d4ab9/dt8rO5QwAAAAAAAAAAAAAAAAAAAAB3R5s7AMBNqaFfJklbjaeveH4/SZ93/3HefvfleIvR/l819H1abVKtfxhzcQAA4GHq5g4AcHOmRV5xtHMNHyzT6n/S6i8X37zT32qsf+0o1U4UZAAAYLcpygA7rLZJHfxgZegXNfTrpDtJtT+k/vfnj17RSTOjTVqOaujvWrEIAAC4RooywA7b26bl/W+LGzX0+2k1Xn7ytYO2Gk/a6r+3s0Z8ibYaT1M5SavPa3h8MnceAAAAgNdSwwfLOnu8+e5xf1BDfzRjpNdy2dXz5LyGDw7nzgIAAFw/g36BnVVn/TrTNLbVF8dzZ3lTV8OKT5IctNU4yzDiGvplWp2k2mmS47Yaz+fIAQAAu8b2JWAn1Vl/kikHSXc6d5a30Vbjabqs07KpoV/MFGOT5L10pWMHAACukaIMsHPqjx8sM9Uyl90l25njvLX2bFympnW6aab5Mi8WSZLpxaEuGQAAuD6P5g4AcO1qb5nkcK7tPjej22a62N72XS+HJNc61f7QVl/u0M8TAAAAuHY1fDfcd1fU0B/McM/9Onsy1tnj09u+NwAAPAS2LwG7p+tSw68O5o5xndpq3NzEda9OeNrWWf+SLpjpNGlpz75Y3sS9AQDgoVOUAXbQNCbdwcwh7oW2Grdt9XyR5LyG/vjb9fq0P0xrB5fDkgEAgJtgpgywe6Zuk0z93DHulSlHabWpP/bbJPuZ6ij14qCtvjTYFwAAboiiDLCLztPtTiPg1VHYiyTnNzW8uK3GsYZ+man+K0my1z5szwz2BQCAm7Q7v7UAXGmrcZPpxWbuHNemm47T6i9p9XkN/bqGfv8mbtNW4zrVfp1qH7WPb2aGza6poV/Xp7c/hBkAAAC4Rd87Delk7ixcqqHfzHEyFgAAu0GnDMA90VbjeVo7zdSWc2fhSjfZCAwAwBtTlAG4Ty4uzpMYvntndMmLuTMAAHBfKcoA3CddWyZtM3cMrkxzBwAA4D5TlAG4J2roF6n2NMnp3Fm44lsUAIC3YCc8wL0xHafyWVs937zs2atTmfrvLY1tNdrqdJOmnOfyuHIAAHhtijIA90Vrz1Lto5c9VUO/SDKmq/OkbTNNSWtP6+zJV0nbZMq6rcb17QZ+ENbpsozuJQAA3oCiDMB98X/t3U1yHNeVBeDzUowOzVxeQdfQAwtIr8ClFbg07gijagflFQi9g/IKsmBPeiZqB+AKnGJ74FnDOwA9cjjIvD0A5PAPJdMiiUShvm8EZOHnBAKBwcF791b773TZJ3lLuTJdpsvzdvFy83efMvR9uqyTqa+hX7TteHiQrKfjOtO0mTsEAADHSSkDcDyukyze/lJbZWrrf3q6Hcck40dNdcLadrypq/5ffyAAALyFEYUAx+M2qX8qXmrol2lZ3BcwPLTJ1SUAAH4YpQzAkWjbccyU1NDv/+6Fbtqk6jBPKlwJAwDgh3J9CeCotF267OvqfJVp2iefLJLaJM0dGgAAAICPra76yxrOb+twXvWbzzZz5zlV91uvAAAAgFNSQ7+ooV/NneNU1fDZuob+VjEDAMAP1eYOAADHpoafLNM+HVOv1237++u58wAAcJwM+gWAf9unu9S0V8gAAPA+DPoFgH9DfdUv8iqbVLeaOwsAAMdNKQPwHWro+yTrdEmmPG/bcZw70/uooV8kNSZ1aNuXl299vZt2qfZlKq+StrPu+S3+lH1axrY57t8HAADmZ6YMcPRq6Pt0WbeL8fIDfK1DWl389UFrLzLdv7kdV+/79edWQ9+n1XWqnrfty823z6Zu2nTp1plqkbR9kn3bjrfzpn18ajg7JG2dtL5tx5u58wAAcNyUMsDRq6uzQ9LdtotxN3eWY1BDv0xXzzO1pNX53cN6kXT7th2fzxzv0aqh36XlMpXVsZ+aAgDgcXB9CXgCulWm15uZQxyN+xMefQ39KtWS5LZtv1EyvAuFDAAAANyp3/arujq/uZ//AgAAcDSclAGO2+skaQenFwAAgGPTzR0A4AO4mTsAx6mGfuGUFQAAczHoF4CTdLe1qw6pnKe1P2bKykYlAAAekutLAJyc+s35V5lqnUrStV/lzesxeWYFOAAAD0opA8DpeVM/Trovkjdpv/xfa8ABAJiF60sAnIQa+kWSTZI+Sd+2o1kyAADMykkZAJ60GvpFuuxS2aXlJpluM3WbuXMBAICTMgA8STX0y2S6TGsXqbxK1w7tYtzNnQsAAL7lpAzwKNTQH5JpmXTrth0NXOW91NBfptWXad2LPMvP2n+N49yZAADgHyllgMdiTLrbdHVdw3LVtjeKGX6QGs4u09UmU/uibUZDfAEAAOBd1HB2qOHseu4cHKca+mUNvStKAAAcBTNlgEflbihrXWdq67Ydb+bOAwAAAAAAAAAAH1cNfV/DZ5u5cwAAAHws3dwBAL7DIl1bzh0CAADgY1HKAI/XNHcAAACAj0cpAzxenT9RAAAAAA+urqzGBgAAni7/hgYer6lbzx3hMamhX9fh/LaGfjN3FgAAAICTUUN/Wb/tV3PnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgBnU0G/q6vymhrPnc2cBAICH0s0dAIDTVkO/SKshUx2SbjN3HgAAAOBE1NCvaugXc+eYSw39poZ+N3cOAAB4aG3uAACnrK7ODklbZWp92463c+cBAAAezrO5AwCcqhr6VaZaJ22lkAEAgNPzydwBAE5RfdUv8pf6n1Tbt+1ouC0AAJwgJ2UA5vCnaZ+pu2nbcT93lIdUw09X6Z7tUvWLVPtCIQUAwClTygBPVg39Mt10yNTt2nYc587zrRr6Zaoukvxs7iwfUw39KknadryuoV8m0z6t/SJTrpI3n7ft769nDQgAADNTygBP25TbtPpdXfUvkuk6U7effX5Ll11SX7fNN4+mKPpQ7rZITbu0tksqaTXW4fznSSXVfZ3Kj2f/+QMAwCNh+xLw5N2vm94ntUpri1T6th1vZs6zmDPDx3B3MqYO6dptplz+7dWkGvo+yY1CBgAAAE5UDWeHuuoPc+d4amroN3U4r7rqL+fOAgAAx6KbOwDAw+oOmWpdV2eXd3NO+CBa9qn2ebsYL+eOAgAAx0IpA5yelh+l2pdp9X911d/cX615JzX0y/vrR/ytyrJtx+u5YwAAwDExUwY4Wd9uB0py+33bme5KmDer5JN1Wl0keZXKbbp2kymHth0PDxAXAAB4YpQyAG9xt04716n6z78+bO3F/QDb6xp+ukqerdNl2S7GdQ3nt0k9T/5y2bZ/uJktOAAAcDSUMgDfoYZ+cbe+On2mWrXtN995bamGnyzT/cdlql2k1a/bxcvdO36PPskiyfjYNhPdX9PaJNMi6ZbJtEy63fedKgIAAN6dUgbgA6ur/jLTtEq6y++bs1JD36fV75Ikrb5uFy/XDxTxndTQb9JquH/3VaqtzY0BAIAP59ncAQCenCn7POuu8zo3/+IDd6nuRZJd23zzCE+f/Pk69ennihgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHh//w/fpuY7+s/s+wAAAABJRU5ErkJggg==","e":1}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"0.ai","cl":"ai","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":0,"op":0.5,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"1.ai","cl":"ai","refId":"image_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":0.5,"op":1,"st":0.5,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"2.ai","cl":"ai","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":1,"op":1.5,"st":1,"bm":0},{"ddd":0,"ind":4,"ty":2,"nm":"3.ai","cl":"ai","refId":"image_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":1.5,"op":2,"st":1.5,"bm":0},{"ddd":0,"ind":5,"ty":2,"nm":"4.ai","cl":"ai","refId":"image_4","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":2,"op":2.5,"st":2,"bm":0},{"ddd":0,"ind":6,"ty":2,"nm":"5.ai","cl":"ai","refId":"image_5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":2.5,"op":3,"st":2.5,"bm":0},{"ddd":0,"ind":7,"ty":2,"nm":"6.ai","cl":"ai","refId":"image_6","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":3,"op":3.5,"st":3,"bm":0},{"ddd":0,"ind":8,"ty":2,"nm":"7.ai","cl":"ai","refId":"image_7","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":3.5,"op":4,"st":3.5,"bm":0},{"ddd":0,"ind":9,"ty":2,"nm":"8.ai","cl":"ai","refId":"image_8","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":4,"op":4.5,"st":4,"bm":0},{"ddd":0,"ind":10,"ty":2,"nm":"9.ai","cl":"ai","refId":"image_9","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":4.5,"op":5,"st":4.5,"bm":0},{"ddd":0,"ind":11,"ty":2,"nm":"10.ai","cl":"ai","refId":"image_10","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":6,"op":6.5,"st":6,"bm":0},{"ddd":0,"ind":12,"ty":2,"nm":"11.ai","cl":"ai","refId":"image_11","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":7.5,"op":8,"st":7.5,"bm":0},{"ddd":0,"ind":13,"ty":2,"nm":"12.ai","cl":"ai","refId":"image_12","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":9,"op":9.5,"st":9,"bm":0},{"ddd":0,"ind":14,"ty":2,"nm":"13.ai","cl":"ai","refId":"image_13","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":10.5,"op":11,"st":10.5,"bm":0},{"ddd":0,"ind":15,"ty":2,"nm":"14.ai","cl":"ai","refId":"image_14","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":12,"op":12.5,"st":12,"bm":0},{"ddd":0,"ind":16,"ty":2,"nm":"15.ai","cl":"ai","refId":"image_15","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":13.5,"op":14,"st":13.5,"bm":0},{"ddd":0,"ind":17,"ty":2,"nm":"16.ai","cl":"ai","refId":"image_16","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":15,"op":15.5,"st":15,"bm":0},{"ddd":0,"ind":18,"ty":2,"nm":"17.ai","cl":"ai","refId":"image_17","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":16.5,"op":17,"st":16.5,"bm":0},{"ddd":0,"ind":19,"ty":2,"nm":"18.ai","cl":"ai","refId":"image_18","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[562.5,-372,0],"ix":2},"a":{"a":0,"k":[562.5,1218,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":0,"k":255,"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":31,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"ip":18,"op":18.5,"st":18,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"Star Dash In","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[370.25,142.75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[6.1,6.1,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[255]},{"t":27,"s":[0]}],"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":23,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,21.291],[-21.288,0],[0,0],[0,-21.286],[21.288,0],[0,0]],"o":[[0,-21.286],[0,0],[21.288,0],[0,21.291],[0,0],[-21.288,0]],"v":[[-399.582,214.731],[-361.038,176.187],[-173.825,176.187],[-135.281,214.731],[-173.825,253.274],[-361.038,253.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":7,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":8,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":11,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":17,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[1,1,1,1]},{"t":19,"s":[1,0.627451002598,0.184313729405,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-21.288],[-21.288,0],[0,0],[0,21.288],[21.288,0]],"o":[[-21.288,0],[0,21.288],[0,0],[21.288,0],[0,-21.288],[0,0]],"v":[[-405.088,-44.063],[-443.632,-5.519],[-405.088,33.025],[-305.975,33.025],[-267.432,-5.519],[-305.975,-44.063]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":7,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":8,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":11,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":17,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[1,1,1,1]},{"t":19,"s":[1,0.627451002598,0.184313729405,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,21.288],[-21.288,0],[0,0],[0,-21.288],[21.288,0],[0,0]],"o":[[0,-21.288],[0,0],[21.288,0],[0,21.288],[0,0],[-21.288,0]],"v":[[-355.532,-225.769],[-316.988,-264.313],[-151.8,-264.313],[-113.256,-225.769],[-151.8,-187.225],[-316.988,-187.225]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":7,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":8,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":11,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":17,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[1,1,1,1]},{"t":19,"s":[1,0.627451002598,0.184313729405,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":55,"st":0,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"Zap In","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[370.25,142.75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[6.1,6.1,100],"ix":6}},"ao":0,"ef":[{"ty":25,"nm":"Drop Shadow","np":8,"mn":"ADBE Drop Shadow","ix":1,"en":1,"ef":[{"ty":2,"nm":"Shadow Color","mn":"ADBE Drop Shadow-0001","ix":1,"v":{"a":0,"k":[1,0.74027967453,0.431372523308,1],"ix":1}},{"ty":0,"nm":"Opacity","mn":"ADBE Drop Shadow-0002","ix":2,"v":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[255]},{"t":27,"s":[0]}],"ix":2}},{"ty":0,"nm":"Direction","mn":"ADBE Drop Shadow-0003","ix":3,"v":{"a":0,"k":135,"ix":3}},{"ty":0,"nm":"Distance","mn":"ADBE Drop Shadow-0004","ix":4,"v":{"a":0,"k":1,"ix":4}},{"ty":0,"nm":"Softness","mn":"ADBE Drop Shadow-0005","ix":5,"v":{"a":0,"k":27,"ix":5}},{"ty":7,"nm":"Shadow Only","mn":"ADBE Drop Shadow-0006","ix":6,"v":{"a":0,"k":0,"ix":6}}]}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[10.401,-14.029],[0,0],[-8.245,44.5],[0,0],[0,0],[-10.998,13.954],[0,0],[8.972,-44.074],[0,0]],"o":[[17.889,0],[0,0],[-27.254,36.782],[0,0],[0,0],[-18.182,0],[0,0],[28.182,-35.766],[0,0],[0,0]],"v":[[415.337,-136.678],[433.231,-103.159],[43.647,422.569],[-35.441,390.471],[18.236,100.739],[-201.349,100.739],[-218.863,66.723],[167.472,-423.584],[245.656,-389.786],[194.166,-136.678]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":4,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":5,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":7,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":8,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":11,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":17,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[1,1,1,1]},{"t":19,"s":[1,0.627451002598,0.184313729405,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":4,"op":51,"st":-4,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":"Zap Out","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[370.25,142.75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[6.1,6.1,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[101.138,-61.986],[143.265,-269.065],[-90.054,27.047],[110.668,27.047],[66.549,265.193],[309.001,-61.986]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[10.401,-14.029],[0,0],[-8.245,44.5],[0,0],[0,0],[-10.998,13.954],[0,0],[8.972,-44.074],[0,0]],"o":[[17.889,0],[0,0],[-27.254,36.782],[0,0],[0,0],[-18.182,0],[0,0],[28.182,-35.766],[0,0],[0,0]],"v":[[415.337,-136.678],[433.231,-103.159],[43.647,422.569],[-35.441,390.471],[18.236,100.739],[-201.349,100.739],[-218.863,66.723],[167.472,-423.584],[245.656,-389.786],[194.166,-136.678]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.4,0.4,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":4,"st":0,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":"Star Dash Out","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[370.25,142.75,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[6.1,6.1,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,21.291],[-21.288,0],[0,0],[0,-21.286],[21.288,0],[0,0]],"o":[[0,-21.286],[0,0],[21.288,0],[0,21.291],[0,0],[-21.288,0]],"v":[[-399.582,214.731],[-361.038,176.187],[-173.825,176.187],[-135.281,214.731],[-173.825,253.274],[-361.038,253.274]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.4,0.4,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-21.288],[-21.288,0],[0,0],[0,21.288],[21.288,0]],"o":[[-21.288,0],[0,21.288],[0,0],[21.288,0],[0,-21.288],[0,0]],"v":[[-405.088,-44.063],[-443.632,-5.519],[-405.088,33.025],[-305.975,33.025],[-267.432,-5.519],[-305.975,-44.063]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.4,0.4,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,21.288],[-21.288,0],[0,0],[0,-21.288],[21.288,0],[0,0]],"o":[[0,-21.288],[0,0],[21.288,0],[0,21.288],[0,0],[-21.288,0]],"v":[[-355.532,-225.769],[-316.988,-264.313],[-151.8,-264.313],[-113.256,-225.769],[-151.8,-187.225],[-316.988,-187.225]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.4,0.4,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":4,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/src/assets/lottie/zap_sm.json b/src/assets/lottie/zap_sm.json new file mode 100644 index 0000000..da745d4 --- /dev/null +++ b/src/assets/lottie/zap_sm.json @@ -0,0 +1 @@ +{"v":"4.8.0","meta":{"g":"LottieFiles AE 3.4.3","a":"","k":"","d":"","tc":""},"fr":30,"ip":0,"op":44,"w":1600,"h":1600,"nm":"Icon - Zap","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":3,"ty":4,"nm":"Spark 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[0]},{"t":22,"s":[-12]}],"ix":10},"p":{"a":0,"k":[814,1190,0],"ix":2},"a":{"a":0,"k":[14,390,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.355,6.986],[251,27.5]],"o":[[0,0],[-37.108,-191.324],[-40.756,-4.465]],"v":[[-5,380.5],[-8.892,354.324],[-421,14.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-355]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"t":18,"s":[1,0.627451002598,0.184313729405,1]}],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-30,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[6.11,3.647],[221,-82.5]],"o":[[0,0],[-173.108,-103.324],[-38.411,14.339]],"v":[[-12,395.5],[-18.892,388.324],[-519,368.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-355]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"t":18,"s":[1,0.627451002598,0.184313729405,1]}],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-30,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[7.072,-0.791],[83,-132.5]],"o":[[0,0],[-149.108,16.676],[-21.765,34.746]],"v":[[-12,434.5],[-29.892,436.324],[-321,662.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-355]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"t":18,"s":[1,0.627451002598,0.184313729405,1]}],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-30,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-6.569,-2.735],[-21,-138.5]],"o":[[0,0],[68.892,28.676],[6.146,40.537]],"v":[[66,444.5],[80.108,450.324],[261,718.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-355]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"t":18,"s":[1,0.627451002598,0.184313729405,1]}],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.478,-20.587],[12.253,-27.582]],"o":[[0,0],[1.054,45.342],[-16.645,37.47]],"v":[[10.212,468.795],[9.733,490.862],[-46.462,797.667]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-355]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"t":18,"s":[1,0.627451002598,0.184313729405,1]}],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-12.773,16.152],[-209,-22.5]],"o":[[0,0],[99.892,-126.324],[40.764,4.388]],"v":[[160,273.5],[164.109,264.324],[645,164.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-355]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"t":18,"s":[1,0.627451002598,0.184313729405,1]}],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-19.903,5.284],[-183,-132.5]],"o":[[0,0],[151.892,-40.324],[33.209,24.045]],"v":[[21,430.5],[72.108,360.324],[631,480.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-355]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"t":18,"s":[1,0.627451002598,0.184313729405,1]}],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":15,"op":59,"st":-2,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Spark","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[0]},{"t":22,"s":[-12]}],"ix":10},"p":{"a":0,"k":[814,1190,0],"ix":2},"a":{"a":0,"k":[14,390,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.355,6.986],[251,27.5]],"o":[[0,0],[-37.108,-191.324],[-40.756,-4.465]],"v":[[-5,380.5],[-8.892,354.324],[-421,14.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-336]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-30,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 6","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[6.11,3.647],[221,-82.5]],"o":[[0,0],[-173.108,-103.324],[-38.411,14.339]],"v":[[-12,395.5],[-18.892,388.324],[-519,368.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-336]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-30,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 5","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[7.072,-0.791],[83,-132.5]],"o":[[0,0],[-149.108,16.676],[-21.765,34.746]],"v":[[-12,434.5],[-29.892,436.324],[-321,662.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-336]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-30,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-6.569,-2.735],[-21,-138.5]],"o":[[0,0],[68.892,28.676],[6.146,40.537]],"v":[[66,444.5],[80.108,450.324],[261,718.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-336]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.478,-20.587],[12.253,-27.582]],"o":[[0,0],[1.054,45.342],[-16.645,37.47]],"v":[[10.212,468.795],[9.733,490.862],[-46.462,797.667]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-336]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 7","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-12.773,16.152],[-209,-22.5]],"o":[[0,0],[99.892,-126.324],[40.764,4.388]],"v":[[160,273.5],[164.109,264.324],[645,164.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-336]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-19.903,5.284],[-183,-132.5]],"o":[[0,0],[151.892,-40.324],[33.209,24.045]],"v":[[21,430.5],[72.108,360.324],[631,480.5]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":1},"e":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[5]},{"t":20,"s":[1]}],"ix":2},"o":{"a":1,"k":[{"i":{"x":[0.4],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":12,"s":[-336]},{"t":21,"s":[-47]}],"ix":3},"m":1,"ix":2,"nm":"Trim Paths 1","mn":"ADBE Vector Filter - Trim","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":12,"s":[0]},{"t":13,"s":[100]}],"ix":4},"w":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":13,"s":[3]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[43]},{"t":22,"s":[0]}],"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":15,"op":59,"st":-2,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Star Dash In","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800,800,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0.167},"t":25,"s":[{"i":[[0,2.35],[-2.35,0],[0,0],[0,-2.349],[2.35,0],[0,0]],"o":[[0,-2.349],[0,0],[2.35,0],[0,2.35],[0,0],[-2.35,0]],"v":[[-363.863,214.731],[-359.609,210.476],[-359.254,210.476],[-355,214.731],[-359.254,218.985],[-359.609,218.985]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0},"t":28,"s":[{"i":[[0,21.291],[-21.288,0],[0,0],[0,-21.286],[21.288,0],[0,0]],"o":[[0,-21.286],[0,0],[21.288,0],[0,21.291],[0,0],[-21.288,0]],"v":[[-399.582,214.731],[-361.038,176.187],[-357.825,176.187],[-319.281,214.731],[-357.825,253.274],[-361.038,253.274]],"c":true}]},{"t":33,"s":[{"i":[[0,21.291],[-21.288,0],[0,0],[0,-21.286],[21.288,0],[0,0]],"o":[[0,-21.286],[0,0],[21.288,0],[0,21.291],[0,0],[-21.288,0]],"v":[[-399.582,214.731],[-361.038,176.187],[-173.825,176.187],[-135.281,214.731],[-173.825,253.274],[-361.038,253.274]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.62744140625,0.184295654297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":24,"s":[-60,0],"to":[10,0],"ti":[-10,0]},{"t":33,"s":[0,0]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":24,"s":[0]},{"t":25,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0.167},"t":24,"s":[{"i":[[0,0],[0,-2.475],[-2.475,0],[0,0],[0,2.475],[2.475,0]],"o":[[-2.475,0],[0,2.475],[0,0],[2.475,0],[0,-2.475],[0,0]],"v":[[-405.48,-10],[-409.961,-5.519],[-405.48,-1.038],[-405.583,-1.038],[-401.102,-5.519],[-405.583,-10]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0},"t":27,"s":[{"i":[[0,0],[0,-21.288],[-21.288,0],[0,0],[0,21.288],[21.288,0]],"o":[[-21.288,0],[0,21.288],[0,0],[21.288,0],[0,-21.288],[0,0]],"v":[[-405.088,-44.063],[-443.632,-5.519],[-405.088,33.025],[-405.975,33.025],[-367.432,-5.519],[-405.975,-44.063]],"c":true}]},{"t":32,"s":[{"i":[[0,0],[0,-21.288],[-21.288,0],[0,0],[0,21.288],[21.288,0]],"o":[[-21.288,0],[0,21.288],[0,0],[21.288,0],[0,-21.288],[0,0]],"v":[[-405.088,-44.063],[-443.632,-5.519],[-405.088,33.025],[-305.975,33.025],[-267.432,-5.519],[-305.975,-44.063]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.62744140625,0.184295654297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":23,"s":[-60,0],"to":[10,0],"ti":[-10,0]},{"t":32,"s":[0,0]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":23,"s":[0]},{"t":24,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0.167},"t":23,"s":[{"i":[[0,2.889],[-2.889,0],[0,0],[0,-2.889],[2.889,0],[0,0]],"o":[[0,-2.889],[0,0],[2.889,0],[0,2.889],[0,0],[-2.889,0]],"v":[[-321.705,-225.769],[-316.475,-231],[-316.313,-231],[-311.083,-225.769],[-316.313,-220.539],[-316.475,-220.539]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0},"t":26,"s":[{"i":[[0,21.288],[-21.288,0],[0,0],[0,-21.288],[21.288,0],[0,0]],"o":[[0,-21.288],[0,0],[21.288,0],[0,21.288],[0,0],[-21.288,0]],"v":[[-355.532,-225.769],[-316.988,-264.313],[-315.8,-264.313],[-277.256,-225.769],[-315.8,-187.225],[-316.988,-187.225]],"c":true}]},{"t":31,"s":[{"i":[[0,21.288],[-21.288,0],[0,0],[0,-21.288],[21.288,0],[0,0]],"o":[[0,-21.288],[0,0],[21.288,0],[0,21.288],[0,0],[-21.288,0]],"v":[[-355.532,-225.769],[-316.988,-264.313],[-151.8,-264.313],[-113.256,-225.769],[-151.8,-187.225],[-316.988,-187.225]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.62744140625,0.184295654297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":22,"s":[-60,0],"to":[10,0],"ti":[-10,0]},{"t":31,"s":[0,0]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":22,"s":[0]},{"t":23,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":22,"op":71,"st":16,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Star Dash In 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800,800,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0.167},"t":24,"s":[{"i":[[0,2.35],[-2.35,0],[0,0],[0,-2.349],[2.35,0],[0,0]],"o":[[0,-2.349],[0,0],[2.35,0],[0,2.35],[0,0],[-2.35,0]],"v":[[-363.863,214.731],[-359.609,210.476],[-359.254,210.476],[-355,214.731],[-359.254,218.985],[-359.609,218.985]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0},"t":27,"s":[{"i":[[0,21.291],[-21.288,0],[0,0],[0,-21.286],[21.288,0],[0,0]],"o":[[0,-21.286],[0,0],[21.288,0],[0,21.291],[0,0],[-21.288,0]],"v":[[-399.582,214.731],[-361.038,176.187],[-357.825,176.187],[-319.281,214.731],[-357.825,253.274],[-361.038,253.274]],"c":true}]},{"t":32,"s":[{"i":[[0,21.291],[-21.288,0],[0,0],[0,-21.286],[21.288,0],[0,0]],"o":[[0,-21.286],[0,0],[21.288,0],[0,21.291],[0,0],[-21.288,0]],"v":[[-399.582,214.731],[-361.038,176.187],[-173.825,176.187],[-135.281,214.731],[-173.825,253.274],[-361.038,253.274]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":23,"s":[-60,0],"to":[10,0],"ti":[-10,0]},{"t":32,"s":[0,0]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":23,"s":[0]},{"t":24,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0.167},"t":23,"s":[{"i":[[0,0],[0,-2.475],[-2.475,0],[0,0],[0,2.475],[2.475,0]],"o":[[-2.475,0],[0,2.475],[0,0],[2.475,0],[0,-2.475],[0,0]],"v":[[-405.48,-10],[-409.961,-5.519],[-405.48,-1.038],[-405.583,-1.038],[-401.102,-5.519],[-405.583,-10]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0},"t":26,"s":[{"i":[[0,0],[0,-21.288],[-21.288,0],[0,0],[0,21.288],[21.288,0]],"o":[[-21.288,0],[0,21.288],[0,0],[21.288,0],[0,-21.288],[0,0]],"v":[[-405.088,-44.063],[-443.632,-5.519],[-405.088,33.025],[-405.975,33.025],[-367.432,-5.519],[-405.975,-44.063]],"c":true}]},{"t":31,"s":[{"i":[[0,0],[0,-21.288],[-21.288,0],[0,0],[0,21.288],[21.288,0]],"o":[[-21.288,0],[0,21.288],[0,0],[21.288,0],[0,-21.288],[0,0]],"v":[[-405.088,-44.063],[-443.632,-5.519],[-405.088,33.025],[-305.975,33.025],[-267.432,-5.519],[-305.975,-44.063]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":22,"s":[-60,0],"to":[10,0],"ti":[-10,0]},{"t":31,"s":[0,0]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":22,"s":[0]},{"t":23,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0.167},"t":22,"s":[{"i":[[0,2.889],[-2.889,0],[0,0],[0,-2.889],[2.889,0],[0,0]],"o":[[0,-2.889],[0,0],[2.889,0],[0,2.889],[0,0],[-2.889,0]],"v":[[-321.705,-225.769],[-316.475,-231],[-316.313,-231],[-311.083,-225.769],[-316.313,-220.539],[-316.475,-220.539]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0},"t":25,"s":[{"i":[[0,21.288],[-21.288,0],[0,0],[0,-21.288],[21.288,0],[0,0]],"o":[[0,-21.288],[0,0],[21.288,0],[0,21.288],[0,0],[-21.288,0]],"v":[[-355.532,-225.769],[-316.988,-264.313],[-315.8,-264.313],[-277.256,-225.769],[-315.8,-187.225],[-316.988,-187.225]],"c":true}]},{"t":30,"s":[{"i":[[0,21.288],[-21.288,0],[0,0],[0,-21.288],[21.288,0],[0,0]],"o":[[0,-21.288],[0,0],[21.288,0],[0,21.288],[0,0],[-21.288,0]],"v":[[-355.532,-225.769],[-316.988,-264.313],[-151.8,-264.313],[-113.256,-225.769],[-151.8,-187.225],[-316.988,-187.225]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.2,"y":1},"o":{"x":0.8,"y":0},"t":21,"s":[-60,0],"to":[10,0],"ti":[-10,0]},{"t":30,"s":[0,0]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":21,"s":[0]},{"t":22,"s":[100]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":21,"op":34,"st":15,"bm":0},{"ddd":0,"ind":7,"ty":1,"nm":"Zap In Mask","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800,-250,0],"ix":2},"a":{"a":0,"k":[1000,1000,0],"ix":1},"s":{"a":0,"k":[154.819,50,100],"ix":6}},"ao":0,"sw":2000,"sh":2000,"sc":"#b25151","ip":6,"op":61,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Zap In","tt":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.712],"y":[1]},"o":{"x":[0.422],"y":[0]},"t":11,"s":[45]},{"t":14,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.998,"y":1},"o":{"x":0.326,"y":0},"t":11,"s":[1400,-66,0],"to":[-320,140.333,0],"ti":[90,-388.333,0]},{"t":14,"s":[800,800,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.001,"y":0},"t":14,"s":[{"i":[[0,0],[11.854,-24.747],[0,0],[-8.245,44.5],[0,0],[0,0],[-6.137,21.277],[-109.472,85.584],[8.971,-44.074],[0,0]],"o":[[17.889,0],[-153.304,171.934],[-27.254,36.782],[0,0],[0,0],[-18.182,0],[44.863,-150.723],[28.39,-29.304],[0,0],[0,0]],"v":[[381.019,-179.626],[398.913,-146.107],[31.329,415.621],[-47.759,383.523],[42.236,108.739],[-79.349,158.739],[-96.863,124.723],[217.472,-397.584],[293.656,-369.786],[218.166,-128.678]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0},"t":16,"s":[{"i":[[-74.337,29.678],[2.769,-23.841],[42.415,-34.984],[4.441,20.529],[18.764,41.261],[30.349,19.261],[-16.137,25.277],[-18.528,32.416],[-7.656,-56.214],[0,0]],"o":[[24.663,-8.322],[-33.231,203.16],[-28.647,6.432],[0,0],[-20.236,-0.739],[-20.651,-11.738],[78.863,-66.723],[18.528,-32.416],[10.344,75.786],[0,0]],"v":[[333.337,-17.678],[373.231,16.841],[43.647,438.568],[-36.441,425.471],[-21.764,194.739],[-203.349,156.738],[-218.863,98.723],[83.472,-237.584],[161.656,-203.786],[110.166,23.322]],"c":true}]},{"i":{"x":0.4,"y":1},"o":{"x":0.167,"y":0},"t":17,"s":[{"i":[[-74.337,29.678],[2.769,-23.841],[46.227,-29.766],[-2.559,47.529],[18.764,41.261],[30.349,19.261],[-16.137,25.277],[-18.528,32.416],[-7.656,-56.214],[0,0]],"o":[[24.663,-8.322],[-33.231,203.16],[-44.647,0.432],[0,0],[-20.236,-0.739],[-20.651,-11.739],[78.863,-66.723],[18.528,-32.416],[10.344,75.786],[0,0]],"v":[[303.337,57.322],[343.231,91.841],[40.647,438.568],[-37.441,402.471],[-39.764,242.739],[-221.349,204.738],[-236.863,146.723],[43.472,-126.584],[121.656,-92.786],[80.166,98.322]],"c":true}]},{"t":19,"s":[{"i":[[0,0],[10.401,-14.029],[0,0],[-8.245,44.5],[0,0],[0,0],[-10.998,13.954],[0,0],[8.972,-44.074],[0,0]],"o":[[17.889,0],[0,0],[-27.254,36.782],[0,0],[0,0],[-18.182,0],[0,0],[28.182,-35.766],[0,0],[0,0]],"v":[[415.337,-136.678],[433.231,-103.159],[43.647,422.569],[-35.441,390.471],[18.236,100.739],[-201.349,100.739],[-218.863,66.723],[167.472,-423.584],[245.656,-389.786],[194.166,-136.678]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":17,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":19,"s":[1,0.627451002598,0.184313729405,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[1,1,1,1]},{"t":21,"s":[1,0.627451002598,0.184313729405,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":6,"op":61,"st":6,"bm":0},{"ddd":0,"ind":9,"ty":1,"nm":"Zap Out Mask","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800,1774,0],"ix":2},"a":{"a":0,"k":[1000,1000,0],"ix":1},"s":{"a":0,"k":[100,51.6,100],"ix":6}},"ao":0,"sw":2000,"sh":2000,"sc":"#b25151","ip":0,"op":61,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Zap Out","tt":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.6],"y":[0]},"t":6,"s":[0]},{"t":12,"s":[-12.1]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[800,800,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.999,"y":1},"o":{"x":0.6,"y":0},"t":6,"s":[850,702,0],"to":[0,0,0],"ti":[61.667,-551,0]},{"t":12,"s":[328,1762,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"s","pt":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[101.138,-61.986],[143.265,-269.065],[-90.054,27.047],[110.668,27.047],[66.549,265.193],[309.001,-61.986]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.6,"y":0},"t":6,"s":[{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[134.138,-96.986],[152.265,-236.065],[-46.054,-38.953],[184.668,-64.953],[137.549,156.193],[329.001,-122.986]],"c":true}]},{"t":9,"s":[{"i":[[0,0],[-1.641,24.148],[0,0],[0,0],[0,0],[-104.081,129.05]],"o":[[0,0],[-78.547,99.038],[0,0],[0,0],[0,0],[-27.838,4.667]],"v":[[101.138,-61.986],[143.265,-269.065],[-36.054,49.047],[110.668,27.047],[66.549,265.193],[287.001,-97.986]],"c":true}]}],"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"Mask 1"}],"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,0],[10.401,-14.029],[0,0],[-8.245,44.5],[0,0],[0,0],[-10.998,13.954],[0,0],[8.972,-44.074],[0,0]],"o":[[17.889,0],[0,0],[-27.254,36.782],[0,0],[0,0],[-18.182,0],[0,0],[28.182,-35.766],[0,0],[0,0]],"v":[[415.337,-136.678],[433.231,-103.159],[43.647,422.569],[-35.441,390.471],[18.236,100.739],[-201.349,100.739],[-218.863,66.723],[167.472,-423.584],[245.656,-389.786],[194.166,-136.678]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.6,"y":0},"t":6,"s":[{"i":[[0,0],[10.401,-14.029],[0,0],[-8.245,44.5],[0,0],[0,0],[-10.998,13.954],[0,0],[8.972,-44.074],[0,0]],"o":[[17.889,0],[0,0],[-27.254,36.782],[0,0],[0,0],[-18.182,0],[0,0],[28.182,-35.766],[0,0],[0,0]],"v":[[435.337,-197.678],[453.231,-164.159],[114.647,313.569],[35.559,281.471],[92.236,8.739],[-157.349,34.739],[-174.863,0.722],[176.472,-390.584],[254.656,-356.786],[227.166,-171.678]],"c":true}]},{"t":9,"s":[{"i":[[0,0],[11.854,-24.747],[0,0],[-8.245,44.5],[0,0],[0,0],[-10.998,13.954],[-86.31,83.162],[8.972,-44.074],[0,0]],"o":[[17.889,0],[-153.304,171.933],[-27.254,36.782],[0,0],[0,0],[-18.182,0],[0,0],[28.39,-29.304],[0,0],[0,0]],"v":[[393.337,-172.678],[411.231,-139.159],[43.647,422.569],[-35.441,390.471],[18.236,100.739],[-147.349,122.739],[-164.863,88.723],[167.472,-423.584],[245.656,-389.786],[194.166,-136.678]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":6,"s":[0.4,0.4,0.4,1]},{"t":11,"s":[1,1,1,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":61,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"Star Dash Out","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[800,800,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":2,"s":[{"i":[[0,21.291],[-21.288,0],[0,0],[0,-21.286],[21.288,0],[0,0]],"o":[[0,-21.286],[0,0],[21.288,0],[0,21.291],[0,0],[-21.288,0]],"v":[[-399.582,214.731],[-361.038,176.187],[-173.825,176.187],[-135.281,214.731],[-173.825,253.274],[-361.038,253.274]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":7,"s":[{"i":[[0,21.291],[-21.288,0],[0,0],[0,-21.286],[21.288,0],[0,0]],"o":[[0,-21.286],[0,0],[21.288,0],[0,21.291],[0,0],[-21.288,0]],"v":[[-219.582,214.01],[-181.038,175.466],[-173.825,176.187],[-135.281,214.731],[-173.825,253.274],[-181.038,252.554]],"c":true}]},{"t":9,"s":[{"i":[[0,3.754],[-3.753,0],[0,0],[0,-3.753],[3.753,0],[0,0]],"o":[[0,-3.753],[0,0],[3.753,0],[0,3.754],[0,0],[-3.753,0]],"v":[[-184.863,214.307],[-178.067,207.511],[-176.796,207.638],[-170,214.434],[-176.796,221.23],[-178.067,221.103]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.4,0.4,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":9,"s":[100]},{"t":10,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 4","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":1,"s":[{"i":[[0,0],[0,-21.288],[-21.288,0],[0,0],[0,21.288],[21.288,0]],"o":[[-21.288,0],[0,21.288],[0,0],[21.288,0],[0,-21.288],[0,0]],"v":[[-405.088,-44.063],[-443.632,-5.519],[-405.088,33.025],[-305.975,33.025],[-267.432,-5.519],[-305.975,-44.063]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":6,"s":[{"i":[[0,0],[0,-21.288],[-21.288,0],[0,0],[0,21.288],[21.288,0]],"o":[[-21.288,0],[0,21.288],[0,0],[21.288,0],[0,-21.288],[0,0]],"v":[[-313.088,-43.582],[-351.632,-5.038],[-313.088,33.506],[-305.975,33.025],[-267.432,-5.519],[-305.975,-44.063]],"c":true}]},{"t":8,"s":[{"i":[[0,0],[0,-3.689],[-3.689,0],[0,0],[0,3.689],[3.689,0]],"o":[[-3.689,0],[0,3.689],[0,0],[3.689,0],[0,-3.689],[0,0]],"v":[[-310.148,-11.917],[-316.828,-5.237],[-310.148,1.443],[-308.915,1.359],[-302.236,-5.32],[-308.915,-12]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.4,0.4,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":8,"s":[100]},{"t":9,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 3","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.4,"y":1},"o":{"x":0.6,"y":0},"t":0,"s":[{"i":[[0,21.288],[-21.288,0],[0,0],[0,-21.288],[21.288,0],[0,0]],"o":[[0,-21.288],[0,0],[21.288,0],[0,21.288],[0,0],[-21.288,0]],"v":[[-355.532,-225.769],[-316.988,-264.313],[-151.8,-264.313],[-113.256,-225.769],[-151.8,-187.225],[-316.988,-187.225]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":5,"s":[{"i":[[0,21.288],[-21.288,0],[0,0],[0,-21.288],[21.288,0],[0,0]],"o":[[0,-21.288],[0,0],[21.288,0],[0,21.288],[0,0],[-21.288,0]],"v":[[-199.532,-226.495],[-160.988,-265.039],[-151.8,-264.313],[-113.256,-225.769],[-151.8,-187.225],[-160.988,-187.951]],"c":true}]},{"t":7,"s":[{"i":[[0,3.155],[-3.155,0],[0,0],[0,-3.155],[3.155,0],[0,0]],"o":[[0,-3.155],[0,0],[3.155,0],[0,3.155],[0,0],[-3.155,0]],"v":[[-162.788,-226.186],[-157.075,-231.899],[-155.713,-231.791],[-150,-226.078],[-155.713,-220.365],[-157.075,-220.473]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.4,0.4,0.4,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":7,"s":[100]},{"t":8,"s":[0]}],"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape 2","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":40,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/src/components/Avatar/Avatar.module.scss b/src/components/Avatar/Avatar.module.scss new file mode 100644 index 0000000..d41e87e --- /dev/null +++ b/src/components/Avatar/Avatar.module.scss @@ -0,0 +1,282 @@ +@mixin avatar { + position: relative; + background-color: var(--background-site); + border-radius: 50%; + + img { + border-radius: 50%; + width: 100%; + height: 100%; + object-fit: cover; + vertical-align: top; + } +} + +.verifiedIcon { + position: absolute; + top: 0px; + right: 0px; + width: 15px; + height: 15px; + display: inline-block; + margin: 0px 0px; + background-color: var(--accent-2); + -webkit-mask: url(../../assets/icons/verified.svg) no-repeat 0px / 15px; + mask: url(../../assets/icons/verified.svg) no-repeat 0px / 15px; +} + +@mixin iconBackground { + position: absolute; + right: 0px; + bottom: 0px; + width: 15px; + height: 15px; + background-color: var(--background-site); + border-radius: 50%; +} + +.xxsAvatar { + @include avatar; + width: 28px; + height: 28px; + + .missingBack { + width: 28px; + height: 28px; + } + + .iconBackground { + @include iconBackground; + bottom: -6px; + right: -6px; + } +} + +.xssAvatar { + @include avatar; + width: 26px; + height: 26px; + + .missingBack { + width: 26px; + height: 26px; + } + + .iconBackground { + @include iconBackground; + bottom: -6px; + right: -6px; + } +} + +.xsAvatar { + @include avatar; + width: 32px; + height: 32px; + + .missingBack { + width: 32px; + height: 32px; + } + + .iconBackground { + @include iconBackground; + bottom: -6px; + right: -6px; + } +} + +.vsAvatar { + @include avatar; + width: 42px; + height: 42px; + + .missingBack { + width: 42px; + height: 42px; + } + + .iconBackground { + @include iconBackground; + bottom: 0px; + right: 0px; + } +} + +.smallAvatar { + @include avatar; + width: 48px; + height: 48px; + + .missingBack { + width: 44px; + height: 44px; + } + + .iconBackground { + @include iconBackground; + bottom: 0px; + right: 0px; + } +} + +.midAvatar { + @include avatar; + width: 52px; + height: 52px; + + .missingBack { + width: 52px; + height: 52px; + } + + .iconBackground { + @include iconBackground; + bottom: 0px; + right: 0px; + } +} + +.largeAvatar { + @include avatar; + width: 72px; + height: 72px; + + .missingBack { + width: 72px; + height: 72px; + } + + .iconBackground { + @include iconBackground; + bottom: 3px; + right: 3px; + } +} + +.extraLargeAvatar { + @include avatar; + width: 80px; + height: 80px; + + .missingBack { + width: 80px; + height: 80px; + } + + .iconBackground { + @include iconBackground; + bottom: 4px; + right: 4px; + } +} + +.xxlAvatar { + @include avatar; + width: 142px; + height: 142px; + + .missingBack { + width: 142px; + height: 142px; + } + + .iconBackground { + @include iconBackground; + bottom: 4px; + right: 4px; + } +} + +.missingBack { + background-color: var(--background-site); + border-radius: 50%; +} + +@mixin missing { + display: grid; + place-items: center; + color: var(--missing-avatar-text); + background-color: var(--subtile-devider); + border-radius: 50%; + mask-image: url(../../assets/icons/default_nostrich.svg); + mask-repeat: no-repeat; + -webkit-mask-image: url(../../assets/icons/default_nostrich.svg); + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + mask-size: contain; +} + +.xxsMissing { + @include missing; + width: 28px; + height: 28px; + font-size: 10px; +} + +.xssMissing { + @include missing; + width: 26px; + height: 26px; + font-size: 10px; +} + +.xsMissing { + @include missing; + width: 32px; + height: 32px; + font-size: 10px; +} + +.vsMissing { + @include missing; + width: 42px; + height: 42px; + font-size: 10px; +} + +.smallMissing { + @include missing; + width: 44px; + height: 44px; + font-size: 12px; +} + +.midMissing { + @include missing; + width: 48px; + height: 48px; + font-size: 16px; +} + +.largeMissing { + @include missing; + width: 68px; + height: 68px; + font-size: 18px; +} + +.extraLargeMissing { + @include missing; + width: 76px; + height: 76px; + font-size: 20px; +} + +.xxlMissing { + @include missing; + width: 142px; + height: 142px; + font-size: 20px; +} + +.highlightBorder { + background: var(--brand-gradient); + padding: 2px; +} + +.cacheFlag { + img { + filter: sepia(100%) saturate(300%) brightness(70%) hue-rotate(300deg) blur(0.1rem); + } +} diff --git a/src/components/Avatar/Avatar.tsx b/src/components/Avatar/Avatar.tsx new file mode 100644 index 0000000..df526b2 --- /dev/null +++ b/src/components/Avatar/Avatar.tsx @@ -0,0 +1,121 @@ +import { Component, createMemo, createSignal, Show } from 'solid-js'; +import defaultAvatar from '../../assets/icons/default_nostrich.svg'; +import { useMediaContext } from '../../contexts/MediaContext'; +import { getMediaUrl } from '../../lib/media'; +import { MediaSize } from '../../types/primal'; + +import styles from './Avatar.module.scss'; + +const Avatar: Component<{ + src: string | undefined, + size?: "xxs" | "xss" | "xs" | "vs" | "sm" | "md" | "lg" | "xl" | "xxl", + verified?: string, + highlightBorder?: boolean, +}> = (props) => { + + const media = useMediaContext(); + + const [isCached, setIsCached] = createSignal(false); + + const selectedSize = props.size || 'sm'; + + const avatarClass = { + xxs: styles.xxsAvatar, + xss: styles.xssAvatar, + xs: styles.xsAvatar, + vs: styles.vsAvatar, + sm: styles.smallAvatar, + md: styles.midAvatar, + lg: styles.largeAvatar, + xl: styles.extraLargeAvatar, + xxl: styles.xxlAvatar, + }; + + const missingClass = { + xxs: styles.xxsMissing, + xss: styles.xssMissing, + xs: styles.xsMissing, + vs: styles.vsMissing, + sm: styles.smallMissing, + md: styles.midMissing, + lg: styles.largeMissing, + xl: styles.extraLargeMissing, + xxl: styles.xxlMissing, + }; + + const imgError = (event: any) => { + const image = event.target; + image.onerror = ""; + image.src = defaultAvatar; + return true; + } + + const highlightClass = () => { + if (props.highlightBorder) { + return styles.highlightBorder; + } + + return ''; + }; + + + const imageSrc = createMemo(() => { + let size: MediaSize = 'm'; + + switch (selectedSize) { + case 'xxs': + case 'xss': + case 'xs': + case 'vs': + case 'sm': + case 'md': + case 'lg': + size = 's'; + break; + default: + size = 'm'; + break; + }; + + const url = media?.actions.getMediaUrl(props.src, size, true); + + setIsCached(!!url); + + return url ?? props.src; + }); + + const notCachedFlag = () => { + const dev = JSON.parse(localStorage.getItem('devMode') || 'false'); + + // @ts-ignore + if (isCached() || !dev) { + return ''; + } + + return styles.cacheFlag; + } + + return ( +
+ +
+
+ } + > +
+ avatar +
+ + +
+
+
+
+ + ) +} + +export default Avatar; diff --git a/src/components/Branding/Branding.module.scss b/src/components/Branding/Branding.module.scss new file mode 100644 index 0000000..2b2aec0 --- /dev/null +++ b/src/components/Branding/Branding.module.scss @@ -0,0 +1,53 @@ +.branding { + display: flex; + align-items: center; + .logo { + background-image: var(--logo); + background-size: contain; + margin-right: 12px; + width: 40px; + height: 40px; + } + + span { + // margin-right: 12px; + font-weight: 700; + font-size: 30px; + line-height: 30px; + color: var(--brand-text); + text-transform: lowercase; + } +} + +.brandingSmall { + .logo { + background-image: var(--logo); + background-size: contain; + margin-right: 0px; + width: 36px; + height: 36px; + } +} + +@media only screen and (max-width: 1300px) { + .branding { + .logo { + margin-right: 0px; + width: 32px; + height: 32px; + } + + span { + display: none; + } + } +} + +.logoLink { + text-decoration: none; + border: none; + border-radius: 0px; + margin: 0px; + padding: 0px; + background: unset; +} diff --git a/src/components/Branding/Branding.tsx b/src/components/Branding/Branding.tsx new file mode 100644 index 0000000..15e24ad --- /dev/null +++ b/src/components/Branding/Branding.tsx @@ -0,0 +1,45 @@ +import { Component, Show } from 'solid-js'; + +import styles from './Branding.module.scss'; +import { useNavigate } from '@solidjs/router'; +import { useIntl } from '@cookbook/solid-intl'; +import { branding } from '../../translations'; + +const Branding: Component<{ small: boolean, isHome?: boolean }> = (props) => { + const navigate = useNavigate(); + const intl = useIntl(); + + const onClick = () => { + if (props.isHome) { + window.scrollTo({ top: 0, left: 0, behavior: 'smooth' }); + return; + } + + navigate('/home'); + } + + return ( + + ) +} + +export default Branding; diff --git a/src/components/Checkbox/Checkbox.module.scss b/src/components/Checkbox/Checkbox.module.scss new file mode 100644 index 0000000..66cf765 --- /dev/null +++ b/src/components/Checkbox/Checkbox.module.scss @@ -0,0 +1,19 @@ +.checkbox { + input { + display: inline-block; + vertical-align: middle; + } + + img { + height: 20px; + margin-right: 12px; + } + + label { + display: inline-block; + font-weight: 400; + font-size: 14px; + line-height: 32px; + color: var(--text-secondary); + } +} diff --git a/src/components/Checkbox/Checkbox.tsx b/src/components/Checkbox/Checkbox.tsx new file mode 100644 index 0000000..22b6427 --- /dev/null +++ b/src/components/Checkbox/Checkbox.tsx @@ -0,0 +1,29 @@ +import { Component, Show } from 'solid-js'; + +import styles from './Checkbox.module.scss'; + +const Checkbox: Component<{ + id: string, + onChange: (e: Event) => void, + checked?: boolean, + label: string, + icon?: string, +}> = (props) => { + + return ( +
+ + + + + +
+ ) +} + +export default Checkbox; diff --git a/src/components/CustomZap/CustomZap.module.scss b/src/components/CustomZap/CustomZap.module.scss new file mode 100644 index 0000000..a5d0ad0 --- /dev/null +++ b/src/components/CustomZap/CustomZap.module.scss @@ -0,0 +1,142 @@ +.customZap { + position: fixed; + width: 420px; + height: 285px; + color: var(--text-secondary); + background-color: var(--background-site); + background: linear-gradient(var(--background-site), var(--background-site)) padding-box, + var(--brand-gradient) border-box; + border: 1px solid transparent; + border-radius: 6px; + + display: flex; + flex-direction: column; + padding: 22px; + + .header { + display: flex; + flex-direction: row; + justify-content: space-between; + + .title { + display: flex; + justify-content: flex-start; + align-items: flex-start; + + .caption { + font-weight: 800; + font-size: 18px; + line-height: 18px; + color: var(--text-secondary); + text-transform: uppercase; + + .amount { + color: var(--text-primary); + } + + .units { + font-weight: 800; + font-size: 12px; + line-height: 20px; + } + } + } + + .close { + border: none; + outline: none; + padding: 0; + margin: 0; + box-shadow: none; + width: 20px; + height: 20px; + display: inline-block; + margin: 0px 0px; + background-color: var(--text-secondary); + -webkit-mask: url(../../assets/icons/close.svg) no-repeat center; + mask: url(../../assets/icons/close.svg) no-repeat center; + + &:hover { + background-color: var(--text-primary); + } + } + } + + .options { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + grid-column-gap: 12px; + grid-row-gap: 16px; + margin-top: 24px; + + .zapOption { + height: 40px; + border-radius: 20px; + border: none; + outline: none; + padding: 0; + margin: 0; + box-shadow: none; + background-color: var(--background-input); + color: var(--text-primary); + text-transform: uppercase; + + &.selected, &:hover { + background-color: var(--text-primary); + color: var(--background-site); + } + + } + } + + .comment { + width: 100%; + height: 32px; + border: 2px solid var(--background-input); + border-radius: 6px; + background-color: var(--background-site); + color: var(--text-secondary); + padding-block: 6px; + padding-inline: 13px; + font-weight: 400; + font-size: 14px; + line-height: 20px; + margin-top: 16px; + + &::placeholder { + color: var(--subtile-devider); + opacity: 1; + font-weight: 400; + font-size: 14px; + line-height: 20px; + } + } + + .action { + width: 100%; + height: 32px; + background: var(--brand-gradient-vertical); + border: none; + outline: none; + padding: 0; + margin: 0; + box-shadow: none; + .caption { + font-weight: 700; + font-size: 14px; + line-height: 20px; + color: white; + } + } + +} + +.zapIcon { + width: 22px; + height: 22px; + display: inline-block; + margin-right: 9px; + background: var(--sidebar-section-icon-gradient); + -webkit-mask: url(../../assets/icons/explore/zaps_hollow.svg) no-repeat 2px 0 / 19px 22px; + mask: url(../../assets/icons/explore/zaps_hollow.svg) no-repeat 2px 0 / 19px 22px; +} diff --git a/src/components/CustomZap/CustomZap.tsx b/src/components/CustomZap/CustomZap.tsx new file mode 100644 index 0000000..2ad9858 --- /dev/null +++ b/src/components/CustomZap/CustomZap.tsx @@ -0,0 +1,156 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { Component, createEffect, createSignal, For } from 'solid-js'; +import { useAccountContext } from '../../contexts/AccountContext'; +import { useSettingsContext } from '../../contexts/SettingsContext'; +import { zapNote } from '../../lib/zap'; +import { userName } from '../../stores/profile'; +import { toastZapFail, zapCustomOption } from '../../translations'; +import { PrimalNote } from '../../types/primal'; +import { debounce } from '../../utils'; +import Modal from '../Modal/Modal'; +import { useToastContext } from '../Toaster/Toaster'; + +import styles from './CustomZap.module.scss'; + +const CustomZap: Component<{ + open?: boolean, + note: PrimalNote, + onConfirm: (amount?: number) => void, + onSuccess: (amount?: number) => void, + onFail: (amount?: number) => void +}> = (props) => { + + const toast = useToastContext(); + const account = useAccountContext(); + const intl = useIntl(); + const settings = useSettingsContext(); + + const [selectedValue, setSelectedValue] = createSignal(settings?.availableZapOptions[0] || 10); + + createEffect(() => { + setSelectedValue(settings?.availableZapOptions[0] || 10) + }); + + const isSelected = (value: number) => value === selectedValue(); + + let comment = ''; + + const setComment = (e: InputEvent) => { + debounce(() => { + const target = e.target as HTMLInputElement; + comment = target.value; + }, 500); + }; + + const truncateNumber = (amount: number) => { + const t = 1000; + + if (amount < t) { + return `${amount}`; + } + + if (amount < Math.pow(t, 2)) { + return (amount % t === 0) ? + `${Math.floor(amount / t)}K` : + intl.formatNumber(amount); + } + + if (amount < Math.pow(t, 3)) { + return (amount % t === 0) ? + `${Math.floor(amount / Math.pow(t, 2))}M` : + intl.formatNumber(amount); + } + + if (amount < Math.pow(t, 4)) { + return (amount % t === 0) ? + `${Math.floor(amount / Math.pow(t, 3))}B` : + intl.formatNumber(amount); + } + + if (amount < Math.pow(t, 5)) { + return (amount % t === 0) ? + `${Math.floor(amount / Math.pow(t, 3))}T` : + intl.formatNumber(amount); + } + + return intl.formatNumber(amount); + }; + + const submit = async () => { + if (account?.hasPublicKey()) { + props.onConfirm(selectedValue()); + const success = await zapNote(props.note, account.publicKey, selectedValue(), comment, account.relays); + + if (success) { + props.onSuccess(selectedValue()); + return; + } + + toast?.sendWarning( + intl.formatMessage(toastZapFail), + ); + + props.onFail(selectedValue()) + } + }; + + return ( + +
+
+
+
+
+ {intl.formatMessage(zapCustomOption,{ + user: userName(props.note.user), + })} + + {truncateNumber(selectedValue())} + sats +
+
+ +
+ +
+ + {(value) => + + } + +
+ + + + + +
+
+ ); +} + +export default CustomZap; diff --git a/src/components/EmbeddedNote/EmbeddedNote.module.scss b/src/components/EmbeddedNote/EmbeddedNote.module.scss new file mode 100644 index 0000000..8de8fbe --- /dev/null +++ b/src/components/EmbeddedNote/EmbeddedNote.module.scss @@ -0,0 +1,113 @@ + +.mentionedNote { + border: solid 1px var(--border-embedded-card); + border-radius: 8px; + background-color: var(--background-embedded_card); + margin-block: 6px; + padding: 18px; + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 32px 1fr; + grid-row-gap: 8px; + text-decoration: none; + color: unset; + line-height: 20px; + + &:hover { + text-decoration: none !important; + } + + .mentionedNoteHeader { + display: flex; + justify-content: flex-start; + align-items: center; + color: var(--text-tertiary-2); + + .postInfo { + display: flex; + justify-content: flex-start; + margin-left: 11px; + + .userInfo { + font-size: 16px; + line-height: 16px; + font-weight: 400; + display: flex; + align-items: center; + width: auto; + .userName { + font-size: 16px; + line-height: 16px; + font-weight: 700; + color: var(--text-primary); + max-width: 150px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + .verifiedBy { + max-width: 220px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + } + + .time{ + margin: 0px 2px; + min-width: 40px; + font-size: 14px; + line-height: 16px; + font-weight: 400; + &::before { + content: "|"; + padding: 0px 2px; + } + } + + .contextMenu { + min-width: 5px; + display: inline-block; + text-align: center; + font-weight: bold; + } + } + } +} + +.verifiedIcon { + width: 15px; + height: 15px; + display: inline-block; + margin: 0px 2px; + background-color: var(--text-tertiary-2); + -webkit-mask: url(../../assets/icons/verified.svg) no-repeat 0 / 100%; + mask: url(../../assets/icons/verified.svg) no-repeat 0 / 100%; +} + +@media only screen and (max-width: 720px) { + .mentionedNoteHeader { + width: calc(100vw - 160px); + .postInfo { + width: calc(100vw - 110px); + .userInfo { + max-width: calc(100vw - 100px); + overflow: hidden; + .userName { + max-width: calc(100vw - 180px); + } + } + .verification { + max-width: 220px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + + } + } + } +} + +.noteContent { + overflow: hidden; +} diff --git a/src/components/EmbeddedNote/EmbeddedNote.tsx b/src/components/EmbeddedNote/EmbeddedNote.tsx new file mode 100644 index 0000000..d2d6a88 --- /dev/null +++ b/src/components/EmbeddedNote/EmbeddedNote.tsx @@ -0,0 +1,187 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { A } from '@solidjs/router'; +import { nip19 } from 'nostr-tools'; +import { Component, createMemo, JSXElement, Show } from 'solid-js'; +import { useThreadContext } from '../../contexts/ThreadContext'; +import { date } from '../../lib/dates'; +import { parseNote2 } from '../../lib/notes'; +import { trimVerification } from '../../lib/profile'; +import { nip05Verification, userName } from '../../stores/profile'; +import { note as t } from '../../translations'; +import { PrimalNote, PrimalUser } from '../../types/primal'; +import Avatar from '../Avatar/Avatar'; +import { parseNoteLinks, parseNpubLinks } from '../ParsedNote/ParsedNote'; + +import styles from './EmbeddedNote.module.scss'; + +const EmbeddedNote: Component<{ note: PrimalNote, mentionedUsers?: Record, includeEmbeds?: boolean}> = (props) => { + + const threadContext = useThreadContext(); + const intl = useIntl(); + + const noteId = () => nip19.noteEncode(props.note.post.id); + + const navToThread = () => { + threadContext?.actions.setPrimaryNote(props.note); + }; + + const verification = createMemo(() => { + return trimVerification(props.note.user?.nip05); + }); + + const parsedContent = (text: string) => { + const regex = /\#\[([0-9]*)\]/g; + let parsed = text; + + let refs = []; + let match; + + while((match = regex.exec(text)) !== null) { + refs.push(match[1]); + } + + if (refs.length > 0) { + for(let i =0; i < refs.length; i++) { + let r = parseInt(refs[i]); + + const tag = props.note.post.tags[r]; + if ( + tag[0] === 'e' && + props.note.mentionedNotes && + props.note.mentionedNotes[tag[1]] + ) { + const embeded = ( + + {intl.formatMessage( + t.mentionIndication, + { name: userName(props.note.user) }, + )} + + ); + + // @ts-ignore + parsed = parsed.replace(`#[${r}]`, embeded.outerHTML); + } + + if (tag[0] === 'p' && props.mentionedUsers && props.mentionedUsers[tag[1]]) { + const user = props.mentionedUsers[tag[1]]; + + const link = ( + + @{userName(user)} + + ); + + + // @ts-ignore + parsed = parsed.replace(`#[${r}]`, link.outerHTML); + } + } + } + + return parsed; + + }; + + const highlightHashtags = (text: string) => { + const regex = /(?:\s|^)#[^\s!@#$%^&*(),.?":{}|<>]+/ig; + + return text.replace(regex, (token) => { + const [space, term] = token.split('#'); + const embeded = ( + + {space} + #{term} + + ); + + // @ts-ignore + return embeded.outerHTML; + }); + } + + const wrapper = (children: JSXElement) => { + if (props.includeEmbeds) { + return ( +
+ {children} +
+ ); + } + + return ( +
navToThread()} + data-event={props.note.post.id} + data-event-bech32={noteId()} + > + {children} + + ); + }; + + return wrapper( + <> +
+ + + + + {userName(props.note.user)} + + } + > + + {verification()[0]} + + + + {nip05Verification(props.note.user)} + + + + + + {date(props.note.post.created_at || 0).label} + + +
+
+
+ + ); +} + +export default EmbeddedNote; diff --git a/src/components/ExploreMenuItem/ExploreMenuItem.module.scss b/src/components/ExploreMenuItem/ExploreMenuItem.module.scss new file mode 100644 index 0000000..a6daa33 --- /dev/null +++ b/src/components/ExploreMenuItem/ExploreMenuItem.module.scss @@ -0,0 +1,170 @@ +.exploreMenuItem { + display: flex; + width: 100%; + height: 100px; + background-color: var(--background-card); + justify-content: space-between; + padding-left: 24px; + margin-bottom: 16px; + border-radius: 4px; + + .itemInfo { + display: flex; + justify-content: flex-start; + align-items: center; + + .itemData { + display: flex; + flex-direction: column; + + .header { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: baseline; + + .itemCaption { + font-size: 18px; + line-height: 24px; + font-weight: 700; + color: var(--text-primary); + margin-right: 12px; + } + + .itemStat { + font-size: 24px; + line-height: 28px; + font-weight: 300; + color: var(--text-primary); + + } + } + .footer { + display: flex; + + .itemDescription { + font-size: 12px; + line-height: 16px; + font-weight: 300; + color: var(--text-secondary); + } + } + } + + } + + .itemOptions { + display: flex; + flex-direction: row; + margin: 0px; + + .option { + width: 72px; + height: 92px; + border: none; + margin: 4px; + padding: 0px; + outline: none; + text-decoration: none; + background-color: unset; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + cursor: pointer; + + >div { + width: 20px; + height: 20px; + background-color: var(--text-secondary-2); + margin-bottom: 6px; + } + >span { + font-size: 12px; + line-height: 16px; + font-weight: 400; + color: var(--text-secondary-2); + } + + &:hover { + outline: none; + text-decoration: none; + border: solid 1px var(--subtile-devider); + border-radius: 4px; + background-color: var(--background-input); + >div { + background: var(--highlight-gradient); + } + } + } + } +} + +.flameIcon { + width: 20px; + height: 20px; + display: inline-block; + margin: 0px; + -webkit-mask: url(../../assets/icons/explore/flame.svg) no-repeat 0px / 20px; + mask: url(../../assets/icons/explore/flame.svg) no-repeat 0px / 20px; +} + +.zapsIcon { + width: 20px; + height: 20px; + display: inline-block; + margin: 0px; + -webkit-mask: url(../../assets/icons/explore/zaps.svg) no-repeat 0px / 20px; + mask: url(../../assets/icons/explore/zaps.svg) no-repeat 0px / 20px; +} + +.likesIcon { + width: 20px; + height: 20px; + display: inline-block; + margin: 0px; + -webkit-mask: url(../../assets/icons/explore/likes.svg) no-repeat 0px / 20px; + mask: url(../../assets/icons/explore/likes.svg) no-repeat 0px / 20px; +} + +.clockIcon { + width: 20px; + height: 20px; + display: inline-block; + margin: 0px; + -webkit-mask: url(../../assets/icons/explore/clock.svg) no-repeat 0px / 20px; + mask: url(../../assets/icons/explore/clock.svg) no-repeat 0px / 20px; +} + + +@mixin itemIcon { + width: 36px; + height: 36px; + margin-right: 16px; + display: block; + background-color: var(--text-secondary-2); +} + +.followsIcon { + @include itemIcon(); + -webkit-mask: url(../../assets/icons/explore/follows.svg) no-repeat 0px / 36px; + mask: url(../../assets/icons/explore/follows.svg) no-repeat 0px / 36px; +} + +.tribeIcon { + @include itemIcon(); + -webkit-mask: url(../../assets/icons/explore/tribe.svg) no-repeat 0px / 36px; + mask: url(../../assets/icons/explore/tribe.svg) no-repeat 0px / 36px; +} + +.networkIcon { + @include itemIcon(); + -webkit-mask: url(../../assets/icons/explore/network.svg) no-repeat 0px / 36px; + mask: url(../../assets/icons/explore/network.svg) no-repeat 0px / 36px; +} + +.globalIcon { + @include itemIcon(); + -webkit-mask: url(../../assets/icons/explore/global.svg) no-repeat 0px / 36px; + mask: url(../../assets/icons/explore/global.svg) no-repeat 0px / 36px; +} diff --git a/src/components/ExploreMenuItem/ExploreMenuItem.tsx b/src/components/ExploreMenuItem/ExploreMenuItem.tsx new file mode 100644 index 0000000..fbff8e6 --- /dev/null +++ b/src/components/ExploreMenuItem/ExploreMenuItem.tsx @@ -0,0 +1,85 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { A } from '@solidjs/router'; +import type { Component } from 'solid-js'; +import { scopeDescriptors, timeframeDescriptors } from '../../translations'; +import { ScopeDescriptor } from '../../types/primal'; + +import styles from './ExploreMenuItem.module.scss'; + + +const itemInfo: Record = { + follows: { + ...scopeDescriptors.follows, + icon: styles.followsIcon, + }, + tribe: { + ...scopeDescriptors.tribe, + icon: styles.tribeIcon, + }, + network: { + ...scopeDescriptors.network, + icon: styles.networkIcon, + }, + global: { + ...scopeDescriptors.global, + icon: styles.globalIcon, + }, +}; + +const timeframeIcons: Record = { + trending: styles.flameIcon, + mostzapped: styles.zapsIcon, + popular: styles.likesIcon, + latest: styles.clockIcon, +} + +const ExploreMenuItem: Component<{ scope: string, stat: number }> = (props) => { + + const intl = useIntl(); + + const item = () => itemInfo[props.scope]; + + const timeframeOption = (timeframe: string) => { + return ( + +
+ {intl.formatMessage(timeframeDescriptors[timeframe])} +
+ ); + } + + return ( +
+
+
+ +
+
+
+ {intl.formatMessage(item().caption)} +
+
+ {props.stat.toLocaleString()} +
+
+
+
+ {intl.formatMessage(item().description)} +
+
+
+
+
+ {timeframeOption('trending')} + {timeframeOption('mostzapped')} + {timeframeOption('popular')} + {timeframeOption('latest')} +
+
+ ) +} + +export default ExploreMenuItem; diff --git a/src/components/ExploreSidebar/ExploreSidebar.module.scss b/src/components/ExploreSidebar/ExploreSidebar.module.scss new file mode 100644 index 0000000..a1a58fe --- /dev/null +++ b/src/components/ExploreSidebar/ExploreSidebar.module.scss @@ -0,0 +1,43 @@ +.trendingUsers { + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + + .user { + width: 75px; + height: 85px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-decoration: none; + opacity: 0.7; + transition: opacity 0.5s; + + &:hover { + opacity: 1; + transition: opacity 0.5s; + } + + .name { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + text-align: center; + margin-top: 10px; + width: 72px; + font-size: 12px; + line-height: 12px; + font-weight: 400; + color: var(--text-primary); + } + } +} + +.trendingUsersCaption { + margin-bottom: 24px; + font-weight: 800; + font-size: 18px; + line-height: 20px; + text-transform: uppercase; + color: var(--text-secondary); +} diff --git a/src/components/ExploreSidebar/ExploreSidebar.tsx b/src/components/ExploreSidebar/ExploreSidebar.tsx new file mode 100644 index 0000000..c835f51 --- /dev/null +++ b/src/components/ExploreSidebar/ExploreSidebar.tsx @@ -0,0 +1,144 @@ +import { A, useResolvedPath } from '@solidjs/router'; +import { Component, createEffect, createMemo, For, onCleanup } from 'solid-js'; +import { createStore } from 'solid-js/store'; +import { Kind } from '../../constants'; +import { APP_ID } from '../../App'; +import { getExploreFeed } from '../../lib/feed'; +import { isConnected, refreshSocketListeners, removeSocketListeners, socket } from '../../sockets'; +import { sortingPlan, convertToNotes } from '../../stores/note'; +import { convertToUser, emptyUser, truncateNpub } from '../../stores/profile'; +import { FeedPage, NostrEOSE, NostrEvent, NostrEventContent, NostrUserContent, PrimalNote, PrimalUser } from '../../types/primal'; +import Avatar from '../Avatar/Avatar'; + +import styles from './ExploreSidebar.module.scss'; +import { useIntl } from '@cookbook/solid-intl'; +import { getTrendingUsers } from '../../lib/profile'; +import { hexToNpub } from '../../lib/keys'; +import { exploreSidebarCaption } from '../../translations'; + +const ExploreSidebar: Component = () => { + + const intl = useIntl(); + + const [store, setStore] = createStore<{ users: Record, scores: Record }>({ + users: {}, + scores: {}, + }); + + const [trendingUsers, setTrendingUsers] = createStore([]); + + const authorName = (user: PrimalUser) => { + return user.displayName || + user.name || + truncateNpub(user.npub); + } + +// ACTIONS ------------------------------------- + + const processUsers = (type: string, content: NostrEventContent | undefined) => { + + if (type === 'EOSE') { + const sortedKeys = Object.keys(store.scores).sort( + (a, b) => store.scores[b] - store.scores[a]); + + const users = sortedKeys.map(key => { + if (!store.users[key]) { + return emptyUser(key); + } + + return convertToUser(store.users[key]); + }); + + setTrendingUsers(() => [...users]); + return; + } + + if (type === 'EVENT') { + if (content && content.kind === Kind.Metadata) { + setStore('users', (users) => ({ ...users, [content.pubkey]: content})); + return; + } + if (content && content.kind === Kind.UserScore) { + const scores = JSON.parse(content.content); + + setStore('scores', () => ({ ...scores })); + return; + } + } + }; + + +// SOCKET HANDLERS ------------------------------ + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + webSocket.removeEventListener('message', onMessage); + webSocket.removeEventListener('close', onSocketClose); + }; + + const onMessage = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + const [type, subId, content] = message; + + if (subId === `explore_sidebar_${APP_ID}`) { + processUsers(type, content); + return; + } + }; + +// EFFECTS -------------------------------------- + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + }); + + + createEffect(() => { + if (isConnected()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + + setStore(() => ({ + users: {}, + scores: {}, + })); + + getTrendingUsers(`explore_sidebar_${APP_ID}`); + } + }); + +// RENDER --------------------------------------- + + return ( + <> +
+ {intl.formatMessage(exploreSidebarCaption)} +
+
+ + { + user => ( + + +
{authorName(user)}
+
+ ) + } +
+
+ + ) +} + +export default ExploreSidebar; diff --git a/src/components/FeedSelect/FeedSelect.tsx b/src/components/FeedSelect/FeedSelect.tsx new file mode 100644 index 0000000..f090925 --- /dev/null +++ b/src/components/FeedSelect/FeedSelect.tsx @@ -0,0 +1,91 @@ +import { Component } from 'solid-js'; +import { useHomeContext } from '../../contexts/HomeContext'; +import { useSettingsContext } from '../../contexts/SettingsContext'; +import { FeedOption } from '../../types/primal'; +import SelectBox from '../SelectBox/SelectBox'; + +const FeedSelect: Component<{ isPhone?: boolean}> = (props) => { + + const home = useHomeContext(); + const settings = useSettingsContext(); + + const selectFeed = (option: FeedOption) => { + const hex = option.value; + const selector = document.getElementById('defocus'); + + selector?.focus(); + selector?.blur(); + + if (hex) { + const feed = settings?.availableFeeds.find(p => p.hex === hex); + + if (hex !== initialValue()?.value) { + home?.actions.clearNotes(); + home?.actions.selectFeed(feed); + } + return; + } + + }; + + const isSelected = (option: FeedOption) => { + const selected = home?.selectedFeed; + + if (selected?.hex) { + return selected.hex === option.value; + } + + return false; + } + + const options:() => FeedOption[] = () => { + if (settings?.availableFeeds === undefined) { + return []; + } + + return settings.availableFeeds.map(feed => { + return ({ + label: feed.name, + value: feed.hex, + }); + }); + }; + + const initialValue = () => { + const selected = home?.selectedFeed; + + if (!selected) { + return { + label: '', + value: undefined, + }; + } + + const feed = settings?.availableFeeds.find(f => + f.hex === selected.hex + ); + + if (feed) { + const [scope, timeframe] = feed.hex?.split(';') || []; + + const value = scope && timeframe ? `${scope};${timeframe}` : feed.hex; + + return { + label: feed.name, + value, + }; + } + } + + return ( + + ); +} + +export default FeedSelect; diff --git a/src/components/FeedSorter/FeedSorter.module.scss b/src/components/FeedSorter/FeedSorter.module.scss new file mode 100644 index 0000000..5fb7441 --- /dev/null +++ b/src/components/FeedSorter/FeedSorter.module.scss @@ -0,0 +1,148 @@ +@mixin controlButton { + margin: 0; + padding: 0; + border: none; + background-color: unset; + + opacity: 0.7; + transition: opacity 0.4s; + + &:hover { + opacity: 1; + transition: opacity 0.4s; + } + + &:focus { + box-shadow: none; + } +} + +.feedItem { + width: 100%; + height: 40px; + background-color: var(--background-site); + color: var(--text-tertiary); + font-size: 16px; + line-height: 14px; + font-weight: 400; + padding-inline: 12px; + margin-block: 8px; + + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + cursor: grab; + + .sortControls { + margin-right: 5px; + .sortButton { + @include controlButton(); + width: 16px; + height: 16px; + font-size: 16px; + line-height: 16px; + } + } + + .manageControls { + display: flex; + .mngButton { + @include controlButton(); + width: 32px; + height: 32px; + } + + .deleteButton { + width: 16px; + height: 16px; + display: inline-block; + margin: 0px 0px; + background-color: var(--text-secondary); + -webkit-mask: url(../../assets/icons/delete.svg) no-repeat 0px / 16px; + mask: url(../../assets/icons/delete.svg) no-repeat 0px / 16px; + } + + .editButton { + width: 16px; + height: 16px; + display: inline-block; + margin: 0px 0px; + background-color: var(--text-secondary); + -webkit-mask: url(../../assets/icons/edit.svg) no-repeat 0px / 16px; + mask: url(../../assets/icons/edit.svg) no-repeat 0px / 16px; + } + } + + .feedEdit { + position: relative; + width: 100%; + .feedNameInput { + height: 32px; + background-color: var(--background-site); + color: var(--text-tertiary); + font-size: 16px; + line-height: 14px; + font-weight: 400; + margin: 0; + } + .feedEditControl { + position: absolute; + top: 2px; + right: 0; + height: 32px; + display: flex; + justify-content: flex-end; + align-items: center; + + >button { + @include controlButton(); + width: 32px; + height: 32px; + } + } + + } +} + +.dragIcon { + width: 20px; + height: 20px; + display: inline-block; + margin: 0px 0px; + background-color: var(--text-secondary); + -webkit-mask: url(../../assets/icons/drag_handle.svg) no-repeat center; + mask: url(../../assets/icons/drag_handle.svg) no-repeat center; +} + +.closeIcon { + width: 20px; + height: 20px; + display: inline-block; + margin: 0px 0px; + background-color: var(--text-secondary); + -webkit-mask: url(../../assets/icons/close.svg) no-repeat center; + mask: url(../../assets/icons/close.svg) no-repeat center; +} + +.checkIcon { + width: 20px; + height: 20px; + display: inline-block; + margin: 0px 0px; + background-color: var(--text-secondary); + -webkit-mask: url(../../assets/icons/check.svg) no-repeat 0 / 100%; + mask: url(../../assets/icons/check.svg) no-repeat 0 / 100%; +} + +.draggedBefore { + border-top: solid 1px var(--subtile-devider); +} + +.draggedAfter { + border-bottom: solid 1px var(--subtile-devider); +} + +.draggedItem { + opacity: 0.6; +} diff --git a/src/components/FeedSorter/FeedSorter.tsx b/src/components/FeedSorter/FeedSorter.tsx new file mode 100644 index 0000000..7be3269 --- /dev/null +++ b/src/components/FeedSorter/FeedSorter.tsx @@ -0,0 +1,179 @@ +import { Component, createEffect, createSignal, For, Show } from 'solid-js'; +import { useAccountContext } from '../../contexts/AccountContext'; +import { useSettingsContext } from '../../contexts/SettingsContext'; +import { PrimalFeed } from '../../types/primal'; + +import styles from './FeedSorter.module.scss'; + + +const FeedSorter: Component = () => { + + let sorter: any; + + const settings = useSettingsContext(); + const account = useAccountContext(); + + const [editMode, setEditMode] = createSignal(''); + + const [newName, setNewName] = createSignal(''); + + const availableFeeds = () => { + return settings?.availableFeeds || []; + }; + + const removeFeed = (feed: PrimalFeed) => { + settings?.actions.removeAvailableFeed(feed); + }; + + const editFeed = (feed: PrimalFeed) => { + setEditMode(() => feed.hex || ''); + setNewName(() => feed.name); + const input = document.getElementById(`input_${feed.hex}`); + input && input.focus(); + }; + + const updateFeedName = (feed: PrimalFeed) => { + settings?.actions.renameAvailableFeed(feed, newName()); + setEditMode(''); + } + + const sortList = (target: any) => { + // Get all items + let items = target.getElementsByClassName(styles.feedItem); + // init current item + let current: any = null; + + // (Make items draggable and sortable + for (let i of items) { + i.draggable = true; + + i.ondragstart = (e: DragEvent) => { + current = i; + for (let it of items) { + if (it === current) { + it.classList.add(styles.draggedItem); + } + } + }; + + i.ondragenter = (e: DragEvent) => { + const oldIndex = current.getAttribute('data-index'); + const newIndex = i.getAttribute('data-index'); + + if (oldIndex > newIndex) { + i.classList.add(styles.draggedBefore); + i.classList.remove(styles.draggedAfter); + } + if (oldIndex < newIndex) { + i.classList.add(styles.draggedAfter); + i.classList.remove(styles.draggedBefore); + } + }; + + i.ondragleave = () => { + i.classList.remove(styles.draggedBefore); + i.classList.remove(styles.draggedAfter); + } + + i.ondragend = () => { for (let it of items) { + it.classList.remove(styles.draggedItem); + i.classList.remove(styles.draggedBefore); + i.classList.remove(styles.draggedAfter); + }}; + + // Prevent default "drop", so we can do our own + i.ondragover = (e: DragEvent) => e.preventDefault(); + + i.ondrop = (e: DragEvent) => { + e.preventDefault(); + if (i != current) { + const oldIndex = current.getAttribute('data-index'); + const newIndex = i.getAttribute('data-index'); + + settings?.actions.moveAvailableFeed(oldIndex, newIndex); + + for (let it of items) { + it.classList.remove(styles.draggedBefore); + it.classList.remove(styles.draggedBefore); + it.classList.remove(styles.draggeditem); + } + } + }; + } + } + + createEffect(() => { + if (sorter && availableFeeds().length > 0) { + sortList(sorter); + } + }); + + return ( +
+ 0}> + + {(feed, index) => ( +
+ + +
+
+
+
+ + +
+
+
{feed.name}
+ + } + > +
+ setNewName(() => e.target?.value)} + onKeyUp={(e: KeyboardEvent) => { + if (e.code === 'Enter') { + updateFeedName(feed); + } + + if (e.code === 'Escape') { + setEditMode(''); + } + }} + /> +
+ + +
+
+
+
+ )} +
+
+
+ ) +} + +export default FeedSorter; diff --git a/src/components/FloatingNewPostButton/FloatingNewPostButton.module.scss b/src/components/FloatingNewPostButton/FloatingNewPostButton.module.scss new file mode 100644 index 0000000..619176d --- /dev/null +++ b/src/components/FloatingNewPostButton/FloatingNewPostButton.module.scss @@ -0,0 +1,34 @@ +.newPostButton { + width: 48px; + height: 48px; + padding: 0px; + background: var(--brand-gradient); + border-radius: 50%; +} + +.postIcon { + display: inline-block; + width: 24px; + height: 24px; + vertical-align: middle; + margin-top: -3px; + + background-color: var(--missing-avatar-text); + -webkit-mask: url(../../assets/icons/post.svg) no-repeat center; + mask: url(../../assets/icons/post.svg) no-repeat center; +} + + +@media only screen and (max-width: 1300px) { + .newPostButton { + width: 32px; + height: 32px; + } + + .postIcon { + width: 16px; + height: 16px; + -webkit-mask: url(../../assets/icons/post.svg) no-repeat 0px / 16px; + mask: url(../../assets/icons/post.svg) no-repeat 0px / 16px; + } +} diff --git a/src/components/FloatingNewPostButton/FloatingNewPostButton.tsx b/src/components/FloatingNewPostButton/FloatingNewPostButton.tsx new file mode 100644 index 0000000..5e41ed2 --- /dev/null +++ b/src/components/FloatingNewPostButton/FloatingNewPostButton.tsx @@ -0,0 +1,21 @@ +import { useAccountContext } from "../../contexts/AccountContext"; + +import styles from "./FloatingNewPostButton.module.scss"; + +export default function FloatingNewPostButton() { + const account = useAccountContext(); + + const showNewNoteForm = () => { + account?.actions?.showNewNoteForm(); + }; + + + return ( + + ) +} diff --git a/src/components/FollowButton/FollowButton.module.scss b/src/components/FollowButton/FollowButton.module.scss new file mode 100644 index 0000000..e351027 --- /dev/null +++ b/src/components/FollowButton/FollowButton.module.scss @@ -0,0 +1,57 @@ + + @mixin followButton { + grid-area: follow; + align-items: center; + display: flex; + align-items: center; + button { + background: var(--brand-gradient-vertical); + border-radius: 6px; + padding: 0px; + font-size: 12px; + line-height: 16px; + font-weight: 700; + margin: 0px; + } + } + + .primaryButton { + width: 90px; + height: 40px; + } + + .follow { + @include followButton; + button { + border: none; + } + } + + .unfollow { + @include followButton; + button { + color: var(--text-secondary); + background-color: var(--background-card); + background: linear-gradient(var(--background-card), var(--background-card)) padding-box, + var(--brand-gradient) border-box; + border: 1px solid transparent; + } + } + + .large { + button { + width: 90px; + height: 40px; + margin: 0px 8px; + font-size: 16px; + line-height: 20px; + } + + } + + .small { + button { + width: 64px; + height: 40px; + } + } diff --git a/src/components/FollowButton/FollowButton.tsx b/src/components/FollowButton/FollowButton.tsx new file mode 100644 index 0000000..3573b28 --- /dev/null +++ b/src/components/FollowButton/FollowButton.tsx @@ -0,0 +1,57 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { Component, Show } from 'solid-js'; +import { useAccountContext } from '../../contexts/AccountContext'; +import { account as t } from '../../translations'; +import { PrimalUser } from '../../types/primal'; +import { useToastContext } from '../Toaster/Toaster'; + +import styles from './FollowButton.module.scss'; + + +const FollowButton: Component<{ person: PrimalUser | undefined, large?: boolean }> = (props) => { + + const toast = useToastContext() + const account = useAccountContext(); + const intl = useIntl(); + + const isFollowed = () => { + return props.person && + account?.publicKey && + account?.following.includes(props.person.pubkey); + } + + const onFollow = (e: MouseEvent) => { + e.preventDefault(); + if (!account || !account.hasPublicKey() || !props.person) { + toast?.sendWarning(intl.formatMessage(t.needToLogin)) + return; + } + + const action = isFollowed() ? + account.actions.removeFollow : + account.actions.addFollow; + + action(props.person.pubkey); + } + + const klass = () => { + return `${isFollowed() ? styles.unfollow : styles.follow} ${props.large ? styles.large : styles.small}`; + } + + return ( + +
+ +
+
+ ) +} + +export default FollowButton; diff --git a/src/components/HomeHeader/HomeHeader.module.scss b/src/components/HomeHeader/HomeHeader.module.scss new file mode 100644 index 0000000..14f4e0a --- /dev/null +++ b/src/components/HomeHeader/HomeHeader.module.scss @@ -0,0 +1,168 @@ +.fullHeader { + display: grid; + height: 120px; + padding-top: 26px; +} + +.smallHeader { + display: grid; + height: 32px; + grid-template-rows: 1fr 4px; +} + +.smallHeaderMain { + display: flex; + flex-direction: row; + justify-content: stretch; + align-items: flex-end; + background-color: var(--background-site); +} + +.smallHeaderBottomBorder { + width: 100%; + height: 4px; + display: flex; + justify-content: space-between; + // background-color: red; + + .rightCorner { + display: inline-block; + width: 4px; + height: 4px; + + background-color: var(--background-site); + -webkit-mask: url(../../assets/icons/corner_right.svg) no-repeat center; + mask: url(../../assets/icons/corner_right.svg) no-repeat center; + } + .leftCorner { + display: inline-block; + width: 4px; + height: 4px; + + background-color: var(--background-site); + -webkit-mask: url(../../assets/icons/corner_left.svg) no-repeat center; + mask: url(../../assets/icons/corner_left.svg) no-repeat center; + } +} + +.smallLeft { + width: 100%; + flex-grow: 20; + flex-shrink: 1; + visibility: hidden; +} + +.smallRight { + max-width: 50%; + flex-grow: 1; + margin-bottom: 4px; + // margin: auto; +} + +.fixedSelector { + position:fixed; + top: 0px; + width: 640px; + height: 48px; + // align-items: center; + // background-color: var(--background-site); + z-index: var(--z-index-header); + transition: 0.3s; + transform: translateY(0px); + + .smallHeaderMain { + align-items: center; + } + + .smallLeft { + visibility: visible; + } + + .smallRight { + margin-bottom: 0; + } +} + +.hiddenSelector { + transition: 0.3s; + transform: translateY(-48px); +} + +.instaHide { + top: -48px; +} + +.callToAction { + display: grid; + height: 72px; + grid-template-columns: 72px 1fr; + grid-column-gap: 17px; + align-items: center; + background-color: unset; + margin: 0px; + padding: 0px; + border: none; + outline: none; + + p { + font-size: 34px; + line-height: 34px; + padding: 0px; + margin: 0px; + } + + .border { + height: 36px; + padding: 1px; + background: var(--brand-gradient); + border-radius: 6px; + margin-left: 10px + } + + .input { + height: 34px; + font-size: 18px; + line-height: 20px; + margin: 0px; + border-radius: 6px; + border: none; + color: var(--text-tertiary); + background-color: var(--background-site); + display: flex; + align-items: center; + padding-left: 12px; + } +} + +.welcomeMessage { + display: grid; + align-content: center; + height: 72px; + font-weight: 300; + font-size: 32px; + line-height: 34px; + color: var(--brand-text); + text-transform: lowercase; +} + +.welcomeMessageSmall { + display: grid; + align-content: center; + font-weight: 300; + font-size: 24px; + line-height: 28px; + color: var(--brand-text); + text-transform: lowercase; +} + +@media only screen and (max-width: 720px) { + .fullHeader { + width: 100%; + } + .smallHeader { + width: 100%; + } + .fixedSelector { + width: 100%; + } +} diff --git a/src/components/HomeHeader/HomeHeader.tsx b/src/components/HomeHeader/HomeHeader.tsx new file mode 100644 index 0000000..178a571 --- /dev/null +++ b/src/components/HomeHeader/HomeHeader.tsx @@ -0,0 +1,131 @@ +import { Component, onCleanup, onMount, Show } from 'solid-js'; +import Avatar from '../Avatar/Avatar'; + +import styles from './HomeHeader.module.scss'; +import FeedSelect from '../FeedSelect/FeedSelect'; +import { useAccountContext } from '../../contexts/AccountContext'; +import SmallCallToAction from '../SmallCallToAction/SmallCallToAction'; +import { useHomeContext } from '../../contexts/HomeContext'; +import { useIntl } from '@cookbook/solid-intl'; +import { useSettingsContext } from '../../contexts/SettingsContext'; +import { placeholders as t } from '../../translations'; + +const HomeHeader: Component = () => { + + const account = useAccountContext(); + const home = useHomeContext(); + const settings = useSettingsContext(); + const intl = useIntl(); + + let lastScrollTop = document.body.scrollTop || document.documentElement.scrollTop; + + const onScroll = () => { + const scrollTop = document.body.scrollTop || document.documentElement.scrollTop; + const smallHeader = document.getElementById('small_header'); + const border = document.getElementById('small_bottom_border'); + + home?.actions.updateScrollTop(scrollTop); + + const isScrollingDown = scrollTop > lastScrollTop; + lastScrollTop = scrollTop; + + if (scrollTop < 117) { + if (border) { + border.style.display = 'none'; + } + smallHeader?.classList.remove(styles.hiddenSelector); + smallHeader?.classList.remove(styles.fixedSelector); + return; + } + + if (lastScrollTop < 117) { + smallHeader?.classList.add(styles.instaHide); + return; + } + + if (border) { + border.style.display = 'flex'; + } + + smallHeader?.classList.remove(styles.instaHide); + + if (!isScrollingDown) { + smallHeader?.classList.add(styles.fixedSelector); + smallHeader?.classList.remove(styles.hiddenSelector); + return; + } + + smallHeader?.classList.add(styles.hiddenSelector); + } + + const onShowNewNoteinput = () => { + account?.actions?.showNewNoteForm(); + }; + + onMount(() => { + window.addEventListener('scroll', onScroll); + }); + + onCleanup(() => { + window.removeEventListener('scroll', onScroll); + }); + + const activeUser = () => account?.activeUser; + + return ( +
+ + {intl.formatMessage(t.guestUserGreeting)} +
} + > + + + +
+
+ +
+ {intl.formatMessage(t.welcomeMessage)} +
+
} + > +
+ +
+ + + 0 && home?.selectedFeed}> +
+ +
+
+
+
+
+
+
+ + + ); +} + +export default HomeHeader; diff --git a/src/components/HomeHeaderPhone/HomeHeaderPhone.module.scss b/src/components/HomeHeaderPhone/HomeHeaderPhone.module.scss new file mode 100644 index 0000000..ed87ab3 --- /dev/null +++ b/src/components/HomeHeaderPhone/HomeHeaderPhone.module.scss @@ -0,0 +1,109 @@ +.fullHeader { + display: grid; + width: 100%; + grid-template-columns: 1fr; + grid-template-rows: 48px 4px; + grid-template-areas: "phone_header" "phone_border"; +} +.phoneHeader { + grid-area: phone_header; + display: flex; + flex-direction: row; + position: relative; + width: 100%; + height: 48px; + align-items: center; + justify-content: space-between; + padding-inline: 16px; + padding-top: 4px; +} + +.logo { + width: 36px; + margin-right: 16px; +} + + +.smallHeader { + display: grid; + height: 32px; + grid-template-rows: 1fr 4px; +} + +.smallHeaderMain { + display: flex; + flex-direction: row; + justify-content: stretch; + align-items: flex-end; + background-color: var(--background-site); +} + +.smallHeaderBottomBorder { + grid-area: phone_border; + width: 100%; + height: 4px; + display: flex; + justify-content: space-between; + // background-color: red; + + .rightCorner { + display: inline-block; + width: 4px; + height: 4px; + + background-color: var(--background-site); + -webkit-mask: url(../../assets/icons/corner_right.svg) no-repeat center; + mask: url(../../assets/icons/corner_right.svg) no-repeat center; + } + .leftCorner { + display: inline-block; + width: 4px; + height: 4px; + + background-color: var(--background-site); + -webkit-mask: url(../../assets/icons/corner_left.svg) no-repeat center; + mask: url(../../assets/icons/corner_left.svg) no-repeat center; + } +} + +.smallLeft { + width: 100%; + flex-grow: 20; + flex-shrink: 1; + visibility: hidden; +} + +.smallRight { + max-width: 50%; + flex-grow: 1; + // margin: auto; +} + +.fixedSelector { + position:fixed; + top: 0px; + width: 100%; + height: 48px; + // align-items: center; + background-color: var(--background-site); + z-index: var(--z-index-header); + transition: 0.3s; + transform: translateY(0px); + + .smallHeaderMain { + align-items: center; + } + + .smallLeft { + visibility: visible; + } +} + +.hiddenSelector { + transition: 0.3s; + transform: translateY(-48px); +} + +.instaHide { + top: -48px; +} diff --git a/src/components/HomeHeaderPhone/HomeHeaderPhone.tsx b/src/components/HomeHeaderPhone/HomeHeaderPhone.tsx new file mode 100644 index 0000000..ba1a513 --- /dev/null +++ b/src/components/HomeHeaderPhone/HomeHeaderPhone.tsx @@ -0,0 +1,81 @@ +import { Component, onCleanup, onMount, Show } from 'solid-js'; + +import styles from './HomeHeaderPhone.module.scss'; +import FeedSelect from '../FeedSelect/FeedSelect'; +import Branding from '../Branding/Branding'; +import { useHomeContext } from '../../contexts/HomeContext'; + +const HomeHeaderPhone: Component = () => { + + const home = useHomeContext(); + + let lastScrollTop = document.body.scrollTop || document.documentElement.scrollTop; + + const onScroll = () => { + const scrollTop = document.body.scrollTop || document.documentElement.scrollTop; + const smallHeader = document.getElementById('phone_header'); + const border = document.getElementById('small_bottom_border'); + + home?.actions?.updateScrollTop(scrollTop); + + const isScrollingDown = scrollTop > lastScrollTop; + lastScrollTop = scrollTop; + + if (scrollTop < 117) { + if (border) { + border.style.display = 'none'; + } + smallHeader?.classList.remove(styles.hiddenSelector); + smallHeader?.classList.remove(styles.fixedSelector); + return; + } + + if (lastScrollTop < 117) { + smallHeader?.classList.add(styles.instaHide); + return; + } + + if (border) { + border.style.display = 'flex'; + } + smallHeader?.classList.remove(styles.instaHide); + + if (!isScrollingDown) { + smallHeader?.classList.add(styles.fixedSelector); + smallHeader?.classList.remove(styles.hiddenSelector); + return; + } + + smallHeader?.classList.add(styles.hiddenSelector); + } + + onMount(() => { + window.addEventListener('scroll', onScroll); + }); + + onCleanup(() => { + window.removeEventListener('scroll', onScroll); + }); + + return ( +
+
+
+ +
+ + + +
+
+
+
+
+
+ ); +} + +export default HomeHeaderPhone; diff --git a/src/components/HomeSidebar/HomeSidebar.module.scss b/src/components/HomeSidebar/HomeSidebar.module.scss new file mode 100644 index 0000000..c4c8346 --- /dev/null +++ b/src/components/HomeSidebar/HomeSidebar.module.scss @@ -0,0 +1,59 @@ +@mixin heading { + position: -webkit-sticky; + position: sticky; + top: 0px; + width: 100%; + height: 44px; + // background-color: var(--background-site); + background: var(--fade-gradient-vertical); + z-index: 5; + padding-bottom: 22px; + display:flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + font-size: 18px; + font-weight: 800; + line-height: 22px; + color: var(--text-secondary-2); + text-transform: uppercase; + >div{ + display: flex; + height: 22px; + >span { + color: var(--text-tertiary-2); + text-transform: lowercase; + margin-left: 6px; + } + } +} + +.flameIcon { + width: 22px; + height: 22px; + display: inline-block; + margin-right: 9px; + background: var(--sidebar-section-icon-gradient); + -webkit-mask: url(../../assets/icons/explore/flame.svg) no-repeat 1px 0 / 20px 22px; + mask: url(../../assets/icons/explore/flame.svg) no-repeat 1px 0 / 20px 22px; +} + +.zapIcon { + width: 22px; + height: 22px; + display: inline-block; + margin-right: 9px; + background: var(--sidebar-section-icon-gradient); + -webkit-mask: url(../../assets/icons/explore/zaps_hollow.svg) no-repeat 2px 0 / 19px 22px; + mask: url(../../assets/icons/explore/zaps_hollow.svg) no-repeat 2px 0 / 19px 22px; +} + +.headingTrending { + @include heading(); +} + +.headingZapped { + @include heading(); + margin-top: 34px; + z-index: 10px; +} diff --git a/src/components/HomeSidebar/HomeSidebar.tsx b/src/components/HomeSidebar/HomeSidebar.tsx new file mode 100644 index 0000000..1f21151 --- /dev/null +++ b/src/components/HomeSidebar/HomeSidebar.tsx @@ -0,0 +1,208 @@ +import { Component, createEffect, createSignal, For, onCleanup } from 'solid-js'; +import { createStore } from 'solid-js/store'; +import { APP_ID } from '../../App'; +import { getMostZapped4h, getTrending24h } from '../../lib/feed'; +import { humanizeNumber } from '../../lib/stats'; +import { convertToNotes, sortingPlan } from '../../stores/note'; +import { Kind } from '../../constants'; +import { + isConnected, + refreshSocketListeners, + removeSocketListeners, + socket +} from '../../sockets'; +import { + FeedPage, + NostrEOSE, + NostrEvent, + NostrEventContent, + NostrMentionContent, + PrimalNote +} from '../../types/primal'; + +import styles from './HomeSidebar.module.scss'; +import SmallNote from '../SmallNote/SmallNote'; +import { useIntl } from '@cookbook/solid-intl'; +import { hourNarrow } from '../../formats'; + +const [init, setInit] = createSignal(false); + +const [data, setData] = createStore>({ + trending: { + messages: [], + users: {}, + postStats: {}, + notes: [], + mentions: {}, + }, + mostzapped: { + messages: [], + users: {}, + postStats: {}, + notes: [], + mentions: {}, + }, +}); + +const HomeSidebar: Component = () => { + + const intl = useIntl(); + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + }); + + + createEffect(() => { + if (isConnected() && !init()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + + setData(() => ({ + trending: { + messages: [], + users: {}, + postStats: {}, + notes: [], + mentions: {}, + }, + mostzapped: { + messages: [], + users: {}, + postStats: {}, + notes: [], + mentions: {}, + }, + })); + + getTrending24h(`sidebar_trending_${APP_ID}`); + getMostZapped4h(`sidebar_zapped_${APP_ID}`); + } + }); + + const processNotes = (type: string, key: string, content: NostrEventContent | undefined) => { + + const sort = sortingPlan(key); + + if (type === 'EOSE') { + const newPosts = sort(convertToNotes({ + users: data[key].users, + messages: data[key].messages, + postStats: data[key].postStats, + mentions: data[key].mentions, + })); + + setData(key, 'notes', () => [ ...newPosts ]); + + setInit(true); + return; + } + + if (type === 'EVENT') { + if (content && content.kind === Kind.Metadata) { + setData(key, 'users', (users) => ({ ...users, [content.pubkey]: content})) + } + if (content && (content.kind === Kind.Text || content.kind === Kind.Repost)) { + setData(key, 'messages', (msgs) => [ ...msgs, content]); + } + if (content && content.kind === Kind.NoteStats) { + const stat = JSON.parse(content.content); + setData(key, 'postStats', (stats) => ({ ...stats, [stat.event_id]: stat })) + } + if (content && content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + setData(key, 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + } + }; + +// SOCKET HANDLERS ------------------------------ + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + webSocket.removeEventListener('message', onMessage); + webSocket.removeEventListener('close', onSocketClose); + }; + + const onMessage = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + const [type, subId, content] = message; + + if (subId === `sidebar_trending_${APP_ID}`) { + processNotes(type, 'trending', content); + return; + } + if (subId === `sidebar_zapped_${APP_ID}`) { + processNotes(type, 'mostzapped', content); + return; + } + }; + + return ( +
+
+
+
+ {intl.formatMessage({ + id: 'home.sidebar.caption.trending', + defaultMessage: 'Trending', + description: 'Caption for the home page sidebar showing a list of trending notes', + })} + + {intl.formatNumber(24, hourNarrow)} + +
+
+ + + {(note) => } + + +
+
+
+ {intl.formatMessage({ + id: 'home.sidebar.caption.mostzapped', + defaultMessage: 'Most Zapped', + description: 'Caption for the home page sidebar showing a list of most zapped notes', + })} + + {intl.formatNumber(4, hourNarrow)} + +
+
+ + { + (note) => + + {intl.formatMessage({ + id: 'home.sidebar.note.zaps', + defaultMessage: '{zaps} zaps, {sats} sats', + description: 'Zaps data for a small note on home sidebar', + }, + { + zaps: humanizeNumber(note.post.zaps, true), + sats: humanizeNumber(note.post.satszapped, true), + })} + + } + +
+ ); +} + +export default HomeSidebar; diff --git a/src/components/Layout/Layout.module.scss b/src/components/Layout/Layout.module.scss new file mode 100644 index 0000000..9c6727d --- /dev/null +++ b/src/components/Layout/Layout.module.scss @@ -0,0 +1,202 @@ +.container { + width: 1240px; + // height: 100vh; + margin: 0px auto; + + display: grid; + grid-template-columns: 176px 640px 300px; + grid-column-gap: 32px; +} + +.leftColumn { + + >div { + position: fixed; + width: 176px; + display: grid; + grid-template-rows: 128px 1fr 82px; + height: 100%; + } + + .leftHeader { + height: 128px; + display: grid; + align-items: center; + justify-content: right; + } + + .leftContent { + display: grid; + height: 100%; + justify-content: right; + } + + .leftFooter { + height: 82px; + display: flex; + justify-content: flex-end; + } +} + + +.centerColumn { + display: grid; + grid-template-rows: 128px 1fr; + position: relative; +} + +.centerHeader { + width: 640px; +} + +.centerContent { + width: 640px; + .headerFloater { + position: fixed; + opacity: 0; + pointer-events: none; + width: 640px; + z-index: var(--z-index-floater); + + &.animatedShow { + opacity: 1; + transition: opacity 0.5s ease; + pointer-events: all; + } + } +} + +.rightColumn { + display: grid; + width: 300px; + grid-template-rows: 128px 1fr; + grid-row-gap: 28px; +} + +.rightHeader { + height: 128px; + display: grid; + align-items: center; + justify-content: left; + position: fixed; + // background-color: var(--background-site); + z-index: var(--z-index-header); +} + +.rightContent { + margin-top: 128px; +} + +.modal { + position: fixed; + z-index: 1200; +} + +.preload { + width: 0px; + height: 0px; + position: absolute; + top:0; + left:0; +} + +@media only screen and (max-width: 1300px) { + .container { + width: 1032px; + grid-template-columns: 48px 640px 300px; + } + + .leftColumn { + >div { + position: fixed; + width: 48px; + } + } + + .rightColumn { + width: 300px; + } +} + +@media only screen and (max-width: 1087px) { + .container { + width: 720px; + grid-template-columns: 48px 640px; + } + + .rightColumn { + display: none; + } +} + +@media only screen and (max-width: 720px) { + .container { + width: 100%; + // height: 100vh; + grid-template-columns: 1fr; + grid-template-rows: 1fr 48px; + grid-template-areas: "content" "footer"; + } + + .centerColumn { + grid-area: content; + width: 100%; + } + + .centerHeader { + width: 100%; + } + + .centerContent { + width: 100%; + + .headerFloater { + width: 100%; + } + } + + .leftColumn { + position: fixed; + left: 0px; + bottom: 0px; + width: 100%; + grid-area: footer; + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + z-index: 20; + background-color: var(--background-site); + + >div { + position: relative; + height: 48px; + } + + .leftHeader { + display: none; + } + + .leftContent { + display: flex; + width: 100%; + } + + .leftFooter { + display: none; + } + + >div { + position: relative; + width: 100%; + } + } + + .rightColumn { + display: none; + } + + // body { + // overflow-x: hidden; + // } +} diff --git a/src/components/Layout/Layout.tsx b/src/components/Layout/Layout.tsx new file mode 100644 index 0000000..a93b027 --- /dev/null +++ b/src/components/Layout/Layout.tsx @@ -0,0 +1,112 @@ +import { Component, createEffect, onCleanup, onMount } from 'solid-js'; + +import styles from './Layout.module.scss'; + +import { Outlet } from '@solidjs/router'; +import NavMenu from '../NavMenu/NavMenu'; +import ProfileWidget from '../ProfileWidget/ProfileWidget'; +import NewNote from '../NewNote/NewNote'; +import { useAccountContext } from '../../contexts/AccountContext'; +import zapSM from '../../assets/lottie/zap_sm.json'; +import zapMD from '../../assets/lottie/zap_md.json'; + + +const Layout: Component = () => { + + const account = useAccountContext(); + + let container: HTMLDivElement | undefined; + + createEffect(() => { + const newNote = document.getElementById('new_note_input'); + const newNoteTextArea = document.getElementById('new_note_text_area') as HTMLTextAreaElement; + + if (account?.showNewNoteForm) { + newNote?.classList.add(styles.animatedShow); + newNoteTextArea?.focus(); + } + else { + newNote?.classList.remove(styles.animatedShow); + newNoteTextArea.value = ''; + } + }); + + const onResize = () => { + container?.style.setProperty('height', `${window.innerHeight}px`); + }; + + onMount(() => { + window.addEventListener('resize', onResize); + }); + + onCleanup(() => { + window.removeEventListener('resize', onResize); + }); + + return ( + <> +
+
+
+
+
+
+
+ + + + +
+ +
+
+
+
+
+ +
+ +
+ +
+ +
+
+
+ + +
+
+
+ +
+ +
+ +
+
+
+ + +
+
+
+
+
+
+ +
+
+
+ + ) +} + +export default Layout; diff --git a/src/components/LinkPreview/LinkPreview.module.scss b/src/components/LinkPreview/LinkPreview.module.scss new file mode 100644 index 0000000..da1f7b7 --- /dev/null +++ b/src/components/LinkPreview/LinkPreview.module.scss @@ -0,0 +1,23 @@ +.linkPreview { + width: 100%; + text-decoration: none; + color: var(--text-tertiary-2); + font-size: 16px; + font-weight: 400; + line-height: 22px; + text-align: left; +} + +.previewInfo { + padding-inline: 14px; + padding-block: 9px; +} + +.previewImage { + overflow: hidden; + max-height: 250px; +} + +.previewTitle { + color: var(--text-primary); +} diff --git a/src/components/LinkPreview/LinkPreview.tsx b/src/components/LinkPreview/LinkPreview.tsx new file mode 100644 index 0000000..14c8202 --- /dev/null +++ b/src/components/LinkPreview/LinkPreview.tsx @@ -0,0 +1,36 @@ +import { A, useLocation, useNavigate } from '@solidjs/router'; +import { Component, Show } from 'solid-js'; + +import styles from './LinkPreview.module.scss'; + +const LinkPreview: Component<{ preview: any }> = (props) => { + + return ( + + +
+ +
+
+ +
+ +
{props.preview.url}
+
+ + +
{props.preview.title}
+
+ + +
{props.preview.description}
+
+
+
+ ); +} + +export default LinkPreview; diff --git a/src/components/Loader/Loader.module.scss b/src/components/Loader/Loader.module.scss new file mode 100644 index 0000000..e0a9d54 --- /dev/null +++ b/src/components/Loader/Loader.module.scss @@ -0,0 +1,51 @@ +.loader { + height: 32px; + width: 32px; +} +.loader span { + display: block; + position: absolute; + top: 0; left: 0; + bottom: 0; right: 0; + margin: auto; + height: 32px; + width: 32px; +} + +.loader span::before, +.loader span::after { + content: ""; + display: block; + position: absolute; + top: 0; left: 0; + bottom: 0; right: 0; + margin: auto; + height: 32px; + width: 32px; + border: 2px solid var(--brand-1); + border-radius: 50%; + opacity: 0; + -webkit-animation: loader-1 1.5s cubic-bezier(0.075, 0.820, 0.165, 1.000) infinite; + animation: loader-1 1.5s cubic-bezier(0.075, 0.820, 0.165, 1.000) infinite; +} +@-webkit-keyframes loader-1 { + 0% { -webkit-transform: translate3d(0, 0, 0) scale(0); opacity: 1; } + 100% { -webkit-transform: translate3d(0, 0, 0) scale(1.5); opacity: 0; } +} +@keyframes loader-1 { + 0% { transform: translate3d(0, 0, 0) scale(0); opacity: 1; } + 100% { transform: translate3d(0, 0, 0) scale(1.5); opacity: 0; } +} + +// .loader span::after { +// -webkit-animation: loader-2 1.5s cubic-bezier(0.075, 0.820, 0.165, 1.000) .25s infinite; +// animation: loader-2 1.5s cubic-bezier(0.075, 0.820, 0.165, 1.000) .25s infinite; +// } +// @-webkit-keyframes loader-2 { +// 0% { -webkit-transform: translate3d(0, 0, 0) scale(0); opacity: 1; } +// 100% { -webkit-transform: translate3d(0, 0, 0) scale(1); opacity: 0; } +// } +// @keyframes loader-2 { +// 0% { transform: translate3d(0, 0, 0) scale(0); opacity: 1; } +// 100% { transform: translate3d(0, 0, 0) scale(1); opacity: 0; } +// } diff --git a/src/components/Loader/Loader.tsx b/src/components/Loader/Loader.tsx new file mode 100644 index 0000000..7741ae9 --- /dev/null +++ b/src/components/Loader/Loader.tsx @@ -0,0 +1,12 @@ +import { Component } from 'solid-js'; + +import styles from './Loader.module.scss'; + +const Loader: Component = () => { + + return ( +
+ ); +} + +export default Loader; diff --git a/src/components/MissingPage/MissingPage.module.scss b/src/components/MissingPage/MissingPage.module.scss new file mode 100644 index 0000000..74d8360 --- /dev/null +++ b/src/components/MissingPage/MissingPage.module.scss @@ -0,0 +1,21 @@ +.fullHeader { + display: grid; + height: 120px; + align-items: center; + justify-content: left; + + >div { + font-weight: 300; + font-size: 32px; + line-height: 34px; + color: var(--brand-text); + text-transform: lowercase; + } +} + +.comingSoon { + font-weight: 300; + font-size: 18px; + line-height: 34px; + color: var(--text-secondary); +} diff --git a/src/components/MissingPage/MissingPage.tsx b/src/components/MissingPage/MissingPage.tsx new file mode 100644 index 0000000..5b488a5 --- /dev/null +++ b/src/components/MissingPage/MissingPage.tsx @@ -0,0 +1,51 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { Component, JSXElement, Show } from 'solid-js'; +import { placeholders as t } from '../../translations'; +import Branding from '../Branding/Branding'; +import Search from '../Search/Search'; +import Wormhole from '../Wormhole/Wormhole'; +import styles from './MissingPage.module.scss'; + + +const MissingPage: Component<{ title: string, children?: JSXElement }> = (props) => { + + const intl = useIntl(); + + return ( + <> + + + + + + + + +
+
+ {intl.formatMessage( + t.pageWIPTitle, + { title: props.title }, + )} +
+
+ + + {intl.formatMessage(t.comingSoon)} + + } + > +
+ {props.children} +
+
+ + ) +} + +export default MissingPage; diff --git a/src/components/Modal/Modal.module.scss b/src/components/Modal/Modal.module.scss new file mode 100644 index 0000000..f5e6042 --- /dev/null +++ b/src/components/Modal/Modal.module.scss @@ -0,0 +1,8 @@ +.modal { + background-color: var(--background-modal); + width: 100vw; + height:100vh; + display: flex; + align-items: center; + justify-content: center; +} diff --git a/src/components/Modal/Modal.tsx b/src/components/Modal/Modal.tsx new file mode 100644 index 0000000..7374fbd --- /dev/null +++ b/src/components/Modal/Modal.tsx @@ -0,0 +1,19 @@ +import { Component, JSXElement, Show } from 'solid-js'; +import { Portal } from 'solid-js/web'; + +import styles from './Modal.module.scss'; + +const Modal: Component<{ children: JSXElement, open?: boolean}> = (props) => { + + return ( + + +
+ {props.children} +
+
+
+ ); +} + +export default Modal; diff --git a/src/components/NavLink/NavLink.module.scss b/src/components/NavLink/NavLink.module.scss new file mode 100644 index 0000000..a2185a0 --- /dev/null +++ b/src/components/NavLink/NavLink.module.scss @@ -0,0 +1,148 @@ +@mixin iconNav { + width: 32px; + height: 32px; + background-color: var(--text-secondary); +} + +.navLink { + position: relative; + text-align: right; + margin: 0px 0px 28px 0px; + padding: 0px; + background: none; + border: none; + border-radius: 0px; + + div { + display: inline; + } + + p { + display: inline; + text-transform: uppercase; + font-size: 18px; + line-height: 20px; + font-weight: 800; + } +} + +.homeIcon { + @include iconNav; + -webkit-mask: url(../../assets/icons/home.svg) no-repeat center; + mask: url(../../assets/icons/home.svg) no-repeat center; +} + +.exploreIcon { + @include iconNav; + -webkit-mask: url(../../assets/icons/explore.svg) no-repeat center; + mask: url(../../assets/icons/explore.svg) no-repeat center; +} +.messagesIcon { + @include iconNav; + -webkit-mask: url(../../assets/icons/messages.svg) no-repeat center; + mask: url(../../assets/icons/messages.svg) no-repeat center; +} +.notificationsIcon { + @include iconNav; + -webkit-mask: url(../../assets/icons/notifications.svg) no-repeat center; + mask: url(../../assets/icons/notifications.svg) no-repeat center; +} +.downloadIcon { + @include iconNav; + -webkit-mask: url(../../assets/icons/download.svg) no-repeat center; + mask: url(../../assets/icons/download.svg) no-repeat center; +} +.settingsIcon { + @include iconNav; + -webkit-mask: url(../../assets/icons/settings.svg) no-repeat center; + mask: url(../../assets/icons/settings.svg) no-repeat center; +} +.helpIcon { + @include iconNav; + -webkit-mask: url(../../assets/icons/help.svg) no-repeat center; + mask: url(../../assets/icons/help.svg) no-repeat center; +} + +.active { + p { + color: var(--active-link); + text-decoration: underline; + } + div { + background-color: var(--active-link); + } + + .homeIcon { + background-color: var(--text-primary); + } + .exploreIcon { + background-color: var(--text-primary); + } + .messagesIcon { + background-color: var(--text-primary); + } + .notificationsIcon { + background-color: var(--text-primary); + } + .downloadIcon { + background-color: var(--text-primary); + } + .settingsIcon { + background-color: var(--text-primary); + } + .helpIcon { + background-color: var(--text-primary); + } +} + +.inactive { + p { + color: var(--inactive-link); + } + div { + background-color: var(--inactive-link); + } +} + +@media only screen and (max-width: 1300px) { + .navLink { + margin-bottom: 22px; + + width: fit-content; + div { + display: inline-block; + } + + p { + display: none; + } + } +} + +.bubble { + position: absolute; + text-align: center; + padding-top: 2px; + padding-inline: 4px; + top: 0; + right: -18px; + min-width: 18px; + min-height: 18px; + border-radius: 8px; + font-weight: 500; + font-size: 12px; + line-height: 12px; + + background: var(--brand-gradient); + border: 1px solid var(--background-site); + + color: white; + text-shadow: 0.5px 0.5px 0px black; + + &.doubleSize { + right: -24px; + } + &.tripleSize { + right: -30px; + } +} diff --git a/src/components/NavLink/NavLink.tsx b/src/components/NavLink/NavLink.tsx new file mode 100644 index 0000000..0bc005d --- /dev/null +++ b/src/components/NavLink/NavLink.tsx @@ -0,0 +1,51 @@ +import { A, useLocation, useNavigate } from '@solidjs/router'; +import { Component, Show } from 'solid-js'; + +import styles from './NavLink.module.scss'; + +const NavLink: Component<{ to: string, label: string, icon: string, bubble?: () => number}> = (props) => { + + const navigate = useNavigate(); + const location = useLocation(); + + const shouldScroll = () => props.to === location.pathname; + + const onClick = (e: Event) => { + if (shouldScroll()) { + e.preventDefault(); + + window.scrollTo({ top: 0, left: 0, behavior: 'smooth' }); + return; + } + + navigate('/home'); + } + + const bubbleClass = () => { + if (!props.bubble || props.bubble() < 10) { + return ''; + } + + if (props.bubble() < 100) { + return styles.doubleSize; + } + + return styles.tripleSize; + } + + return ( + + ) +} + +export default NavLink; diff --git a/src/components/NavMenu/NavMenu.module.scss b/src/components/NavMenu/NavMenu.module.scss new file mode 100644 index 0000000..c1dd630 --- /dev/null +++ b/src/components/NavMenu/NavMenu.module.scss @@ -0,0 +1,43 @@ +.sideNav { + display: flex; + flex-direction: column; + + > div { + margin-bottom: 28px; + } +} + +.callToAction { + display: grid; + justify-content: right; + margin-top: 15px; +} + +@media only screen and (max-width: 720px) { + .navMenu { + width: 100%; + } + + .sideNav { + display: flex; + flex-direction: row; + justify-content: space-around; + align-items: flex-end; + width: 100%; + height: 48px; + + > button { + margin-bottom: 0px; + } + + button:nth-child(n+5) { + display: none; + } + } + + .callToAction { + position: fixed; + bottom: 56px; + right: 24px; + } +} diff --git a/src/components/NavMenu/NavMenu.tsx b/src/components/NavMenu/NavMenu.tsx new file mode 100644 index 0000000..66d2043 --- /dev/null +++ b/src/components/NavMenu/NavMenu.tsx @@ -0,0 +1,79 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { useLocation } from '@solidjs/router'; +import { Component, For, Show } from 'solid-js'; +import { useAccountContext } from '../../contexts/AccountContext'; +import { useMessagesContext } from '../../contexts/MessagesContext'; +import { useNotificationsContext } from '../../contexts/NotificationsContext'; +import { navBar as t } from '../../translations'; +import NavLink from '../NavLink/NavLink'; +import FloatingNewPostButton from '../FloatingNewPostButton/FloatingNewPostButton'; + +import styles from './NavMenu.module.scss'; + +const NavMenu: Component = () => { + const account = useAccountContext(); + const notifications = useNotificationsContext(); + const messages = useMessagesContext(); + const intl = useIntl(); + const loc = useLocation(); + + const links = [ + { + to: '/home', + label: intl.formatMessage(t.home), + icon: 'homeIcon', + }, + { + to: '/explore', + label: intl.formatMessage(t.explore), + icon: 'exploreIcon', + }, + { + to: '/messages', + label: intl.formatMessage(t.messages), + icon: 'messagesIcon', + bubble: () => messages?.messageCount || 0, + }, + { + to: '/notifications', + label: intl.formatMessage(t.notifications), + icon: 'notificationsIcon', + bubble: () => notifications?.notificationCount || 0, + }, + { + to: '/downloads', + label: intl.formatMessage(t.downloads), + icon: 'downloadIcon', + }, + { + to: '/settings', + label: intl.formatMessage(t.settings), + icon: 'settingsIcon', + }, + { + to: '/help', + label: intl.formatMessage(t.help), + icon: 'helpIcon', + }, + ]; + + return ( +
+ + +
+ +
+
+
+ ) +} + +export default NavMenu; diff --git a/src/components/NewNote/EditBox/EditBox.module.scss b/src/components/NewNote/EditBox/EditBox.module.scss new file mode 100644 index 0000000..9f48742 --- /dev/null +++ b/src/components/NewNote/EditBox/EditBox.module.scss @@ -0,0 +1,320 @@ +.noteEditBox { + position: relative; +} + +.newNoteHolder { + min-height: 100px; + max-height: 100vh; + background-color: var(--background-site); + padding-top: 10px; +} + +.holderBottomBorder { + width: 100%; + height: 4px; + display: flex; + justify-content: space-between; + + .rightCorner { + display: inline-block; + width: 4px; + height: 4px; + + background-color: var(--background-site); + -webkit-mask: url(../../assets/icons/corner_right.svg) no-repeat center; + mask: url(../../assets/icons/corner_right.svg) no-repeat center; + } + .leftCorner { + display: inline-block; + width: 4px; + height: 4px; + + background-color: var(--background-site); + -webkit-mask: url(../../assets/icons/corner_left.svg) no-repeat center; + mask: url(../../assets/icons/corner_left.svg) no-repeat center; + } +} + +.newNoteBorder { + width: 100%; + height: 100%; + padding: 1px; + background: var(--brand-gradient); + border-radius: 6px; + display: block; + position: relative; +} + +.newNote { + width: 100%; + height: 100%; + min-height: 122px; + font-size: 18px; + line-height: 20px; + margin: 0px; + border-radius: 6px; + border: none; + color: var(--text-tertiary); + background-color: var(--background-site); + padding-bottom: 11px; + display: grid; + grid-template-columns: 92px 1fr; + + .leftSide { + padding: 20px; + } + +} + +.controls { + position: absolute; + bottom: 4px; + right: 15px; + display: flex; + align-items: center; + justify-content: flex-end; + width: calc(100% - 16px); + // border: solid 1px red; + padding-top: 8px; + background-color: var(--background-site); + >button { + width: 80px; + height: 28px; + min-width: 80px; + margin: 0px 0px 11px 8px; + } + .editorOptions { + width: 100%; + // padding-left: 80px; + + .attachIcon { + width: 26px; + height: 21px; + display: inline-block; + margin-right: 9px; + background-color: var(--text-tertiary); + cursor: pointer; + + &:hover { + background-color: var(--text-secondary); + } + } + + } + +} + +.primaryButton { + border: none; + border-radius: 6px; + margin: 0px 8px; + padding: 0px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: white; + >span { + opacity: 0.75; + } +} + + +.secondaryButton { + border: none; + border-radius: 6px; + padding: 1px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: var(--text-tertiary-2); + >div { + width: 100%; + height: 100%; + vertical-align: middle; + border-radius: 6px; + background-color: var(--background-card); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } +} + +.searchSuggestions { + width: 300px; + background-color: var(--background-site); + border: 1px solid var(--text-tertiary-2); + // box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.8); + border-radius: 4px; + + position: absolute; + top: 0px; + left: 0px; + z-index: var(--z-index-floater); +} + +.highlight { + color: var(--accent-1); +} + +.userReference { + color: var(--accent-1); + &:hover { + text-decoration: underline; + } +} + +textarea { + width: calc(100% - 18px); + max-height: calc(100vh / 3); + margin: 18px 18px 36px 0px; + padding: 0px; + box-sizing: padding-box; + border: none; + border-radius: 0px; + background-color: unset; + font-size: 16px; + line-height: 20px; + font-weight: 400; + color: var(--text-primary); + resize: none; + scrollbar-width: none; /* Firefox */ + + &:focus { + border: none; + outline: none; + } +} + +textarea::-webkit-scrollbar{ + display: none; /* Safari and Chrome */ + } + +.error { + color: var(--brand-1); +} + +.editorWrap { + display: flex; + flex-direction: column; + flex: 1; + cursor: text; + // max-height: calc(100vh - 7px); +} + +.previewCaption { + color: var(--subtile-devider); + font-weight: 400; + font-size: 10px; + line-height: 16px; + text-transform: uppercase; +} + +.editorScroll { + min-height: 60px; + max-height: calc(60vh - 70px); + overflow-y: scroll; + margin-bottom: 48px; + + scrollbar-width: none; /* Firefox */ + +} + +.editorScroll::-webkit-scrollbar { + display: none; /* Safari and Chrome */ +} + +.editor { + max-width: calc(100% - 14px); + min-height: 60px; + outline: 0px solid transparent; + word-wrap: break-word; + word-break: break-all; + font-size: 16px; + line-height: 20px; + font-weight: 400; + color: var(--text-primary); + margin: 0px 14px 32px 0px; + padding: 0px; + background-color: var(--background-card); + border-radius: 4px; + padding: 12px; +} + + +.emojiSuggestions { + position: absolute; + display: grid; + grid-template-columns: 50px 50px 50px 50px 50px 50px; + width: 322px; + max-height: 200px; + overflow-y: scroll; + padding: 4px; + background-color: var(--background-site); + border: 1px solid var(--text-tertiary-2); + // box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.8); + border-radius: 8px; + + top: 0px; + left: 0px; + z-index: var(--z-index-floater); + + .emojiOption { + margin-bottom: 5px; + padding: 2px; + background: none; + font-size: 16px; + line-height: 20px; + font-weight: 400; + border: none; + display: flex; + justify-content: center; + align-items: center; + + &:hover, &.highlight { + background-color: var(--text-tertiary-2); + } + + &:focus { + outline: none; + border: none; + } + } +} + +.uploadLoader { + position: absolute; + pointer-events: none; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--background-site); + opacity: 0.8; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: var(--text-secondary); + > div { + position: relative; + min-height: 48px; + } +} + +.dropOverlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: var(--background-site); + opacity: 0.8; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: var(--text-secondary); +} diff --git a/src/components/NewNote/EditBox/EditBox.tsx b/src/components/NewNote/EditBox/EditBox.tsx new file mode 100644 index 0000000..ac20bdb --- /dev/null +++ b/src/components/NewNote/EditBox/EditBox.tsx @@ -0,0 +1,1163 @@ +import { useIntl } from "@cookbook/solid-intl"; +import { Router, useLocation } from "@solidjs/router"; +import { nip19 } from "nostr-tools"; +import { Component, createEffect, createSignal, For, onCleanup, onMount, Show } from "solid-js"; +import { createStore } from "solid-js/store"; +import { noteRegex, profileRegex, Kind, editMentionRegex, emojiSearchLimit } from "../../../constants"; +import { useAccountContext } from "../../../contexts/AccountContext"; +import { useSearchContext } from "../../../contexts/SearchContext"; +import { TranslatorProvider } from "../../../contexts/TranslatorContext"; +import { getEvents } from "../../../lib/feed"; +import { parseNote1, sanitize, sendNote, replaceLinkPreviews } from "../../../lib/notes"; +import { getUserProfiles } from "../../../lib/profile"; +import { subscribeTo } from "../../../sockets"; +import { subscribeTo as uploadSub } from "../../../uploadSocket"; +import { convertToNotes, referencesToTags } from "../../../stores/note"; +import { convertToUser, nip05Verification, truncateNpub, userName } from "../../../stores/profile"; +import { EmojiOption, FeedPage, NostrMediaUploaded, NostrMentionContent, NostrNoteContent, NostrStatsContent, NostrUserContent, PrimalNote, PrimalUser } from "../../../types/primal"; +import { debounce, isVisibleInContainer, uuidv4 } from "../../../utils"; +import Avatar from "../../Avatar/Avatar"; +import EmbeddedNote from "../../EmbeddedNote/EmbeddedNote"; +import MentionedUserLink from "../../Note/MentionedUserLink/MentionedUserLink"; +import SearchOption from "../../Search/SearchOption"; +import { useToastContext } from "../../Toaster/Toaster"; +import styles from './EditBox.module.scss'; +import emojiSearch from '@jukben/emoji-search'; +import { getCaretCoordinates } from "../../../lib/textArea"; +import { uploadMedia } from "../../../lib/media"; +import { APP_ID } from "../../../App"; +import Loader from "../../Loader/Loader"; +import { + toast as tToast, + feedback as tFeedback, + note as tNote, + search as tSearch, + actions as tActions, +} from "../../../translations"; + +type AutoSizedTextArea = HTMLTextAreaElement & { _baseScrollHeight: number }; + + +const EditBox: Component<{ replyToNote?: PrimalNote, onClose?: () => void, idPrefix?: string } > = (props) => { + + const intl = useIntl(); + + const instanceId = uuidv4(); + + const search = useSearchContext(); + const account = useAccountContext(); + const toast = useToastContext(); + + let textArea: HTMLTextAreaElement | undefined; + let textPreview: HTMLDivElement | undefined; + let mentionOptions: HTMLDivElement | undefined; + let emojiOptions: HTMLDivElement | undefined; + let editWrap: HTMLDivElement | undefined; + let fileUpload: HTMLInputElement | undefined; + + let mentionCursorPosition = { top: 0, left: 0, height: 0 }; + let emojiCursorPosition = { top: 0, left: 0, height: 0 }; + + const [isMentioning, setMentioning] = createSignal(false); + const [preQuery, setPreQuery] = createSignal(''); + const [query, setQuery] = createSignal(''); + + const [message, setMessage] = createSignal(''); + const [parsedMessage, setParsedMessage] = createSignal(''); + + const [isEmojiInput, setEmojiInput] = createSignal(false); + const [emojiQuery, setEmojiQuery] = createSignal(''); + const [emojiResults, setEmojiResults] = createStore([]); + + const [userRefs, setUserRefs] = createStore>({}); + const [noteRefs, setNoteRefs] = createStore>({}); + + const [highlightedUser, setHighlightedUser] = createSignal(0); + const [highlightedEmoji, setHighlightedEmoji] = createSignal(0); + const [referencedNotes, setReferencedNotes] = createStore>(); + + const location = useLocation(); + + let currentPath = location.pathname; + + const getScrollHeight = (elm: AutoSizedTextArea) => { + var savedValue = elm.value + elm.value = '' + elm._baseScrollHeight = elm.scrollHeight + elm.value = savedValue + } + + const onExpandableTextareaInput: (event: InputEvent) => void = (event) => { + const maxHeight = document.documentElement.clientHeight || window.innerHeight || 0; + + const elm = textArea as AutoSizedTextArea; + const preview = textPreview; + + if(elm.nodeName !== 'TEXTAREA' || elm.id !== `${prefix()}new_note_text_area` || !preview) { + return; + } + + const minRows = parseInt(elm.getAttribute('data-min-rows') || '0'); + + !elm._baseScrollHeight && getScrollHeight(elm); + + + if (elm.scrollHeight >= (maxHeight / 3)) { + return; + } + + elm.rows = minRows; + const rows = Math.ceil((elm.scrollHeight - elm._baseScrollHeight) / 20); + elm.rows = minRows + rows; + + const rect = elm.getBoundingClientRect(); + + preview.style.maxHeight = `${maxHeight - rect.height - 120}px`; + } + + createEffect(() => { + if (emojiQuery().length > emojiSearchLimit) { + setEmojiResults(() => emojiSearch(emojiQuery())); + } + }); + + + createEffect(() => { + if (isEmojiInput() && emojiQuery().length > emojiSearchLimit) { + emojiPositionOptions(); + } + }); + + const onKeyDown = (e: KeyboardEvent) => { + if (!textArea) { + return false; + } + + if (isUploading()) { + return; + } + + const mentionSeparators = ['Enter', 'Space', 'Comma']; + + if (e.code === 'Enter' && e.metaKey) { + e.preventDefault(); + postNote(); + return false; + } + + if (!isMentioning() && !isEmojiInput() && e.key === ':') { + emojiCursorPosition = getCaretCoordinates(textArea, textArea.selectionStart); + setEmojiInput(true); + return false; + } + + if (isEmojiInput()) { + + if (e.code === 'ArrowDown') { + e.preventDefault(); + setHighlightedEmoji(i => { + if (emojiResults.length === 0) { + return 0; + } + + return i < emojiResults.length - 7 ? i + 6 : 0; + }); + + const emojiHolder = document.getElementById(`${instanceId}-${highlightedEmoji()}`); + + if (emojiHolder && emojiOptions && !isVisibleInContainer(emojiHolder, emojiOptions)) { + emojiHolder.scrollIntoView({ block: 'end', behavior: 'smooth' }); + } + + return false; + } + + if (e.code === 'ArrowUp') { + e.preventDefault(); + setHighlightedEmoji(i => { + if (emojiResults.length === 0) { + return 0; + } + + return i >= 6 ? i - 6 : emojiResults.length - 1; + }); + + const emojiHolder = document.getElementById(`${instanceId}-${highlightedEmoji()}`); + + if (emojiHolder && emojiOptions && !isVisibleInContainer(emojiHolder, emojiOptions)) { + emojiHolder.scrollIntoView({ block: 'start', behavior: 'smooth' }); + } + + return false; + } + + if (e.code === 'ArrowRight') { + e.preventDefault(); + setHighlightedEmoji(i => { + if (emojiResults.length === 0) { + return 0; + } + + return i < emojiResults.length - 1 ? i + 1 : 0; + }); + + const emojiHolder = document.getElementById(`${instanceId}-${highlightedEmoji()}`); + + if (emojiHolder && emojiOptions && !isVisibleInContainer(emojiHolder, emojiOptions)) { + emojiHolder.scrollIntoView({ block: 'end', behavior: 'smooth' }); + } + + return false; + } + + if (e.code === 'ArrowLeft') { + e.preventDefault(); + setHighlightedEmoji(i => { + if (emojiResults.length === 0) { + return 0; + } + + return i > 0 ? i - 1 : emojiResults.length - 1; + }); + + const emojiHolder = document.getElementById(`${instanceId}-${highlightedEmoji()}`); + + if (emojiHolder && emojiOptions && !isVisibleInContainer(emojiHolder, emojiOptions)) { + emojiHolder.scrollIntoView({ block: 'start', behavior: 'smooth' }); + } + + return false; + } + + if (mentionSeparators.includes(e.code)) { + if (emojiQuery().trim().length === 0) { + setEmojiInput(false); + return false; + } + e.preventDefault(); + selectEmoji(emojiResults[highlightedEmoji()]); + setHighlightedEmoji(0); + return false; + } + + const cursor = textArea.selectionStart; + const lastEmojiTrigger = textArea.value.slice(0, cursor).lastIndexOf(':'); + + if (e.code === 'Backspace') { + setEmojiQuery(emojiQuery().slice(0, -1)); + + if (lastEmojiTrigger < 0 || cursor - lastEmojiTrigger <= 1) { + setEmojiInput(false); + return false; + } + } else { + setEmojiQuery(q => q + e.key); + return false; + } + + return false; + } + + if (!isMentioning() && e.key === '@') { + mentionCursorPosition = getCaretCoordinates(textArea, textArea.selectionStart); + setPreQuery(''); + setQuery(''); + setMentioning(true); + return false; + } + + if (!isMentioning() && e.code === 'Backspace' && textArea) { + let cursor = textArea.selectionStart; + const textSoFar = textArea.value.slice(0, cursor); + const lastWord = textSoFar.split(/[\s,;\n\r]/).pop(); + + if (lastWord?.startsWith('@`')) { + const index = textSoFar.lastIndexOf(lastWord); + + const newText = textSoFar.slice(0, index) + textArea.value.slice(cursor); + + setMessage(newText); + textArea.value = newText; + + textArea.selectionEnd = index; + } + } + + if (isMentioning()) { + + if (e.code === 'ArrowDown') { + e.preventDefault(); + setHighlightedUser(i => { + if (!search?.users || search.users.length === 0) { + return 0; + } + + return i < search.users.length - 1 ? i + 1 : 0; + }); + return false; + } + + if (e.code === 'ArrowUp') { + e.preventDefault(); + setHighlightedUser(i => { + if (!search?.users || search.users.length === 0) { + return 0; + } + + return i > 0 ? i - 1 : search.users.length - 1; + }); + return false; + } + + if (mentionSeparators.includes(e.code)) { + if (preQuery() === ' ') { + setMentioning(false); + return false; + } + e.preventDefault(); + search?.users && selectUser(search.users[highlightedUser()]) + setMentioning(false); + return false; + } + + const cursor = textArea.selectionStart; + const lastMentionTrigger = textArea.value.slice(0, cursor).lastIndexOf('@'); + + if (e.code === 'Backspace') { + setPreQuery(preQuery().slice(0, -1)); + + if (lastMentionTrigger < 0 || cursor - lastMentionTrigger <= 1) { + setMentioning(false); + return false; + } + } else { + setPreQuery(q => q + e.key); + return false + } + + return false; + } + + return true; + }; + + const [isDroppable, setIsDroppable] = createSignal(false); + + const onDrop = (e: DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + + setIsDroppable(false); + + let draggedData = e.dataTransfer; + let file = draggedData?.files[0]; + + + file && isSupportedFileType(file) && uploadFile(file); + + }; + + const onDragOver = (e: DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + + setIsDroppable(true); + } + + const onDragLeave = (e: DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + + if (!editWrap) { + return; + } + + const rect = editWrap.getBoundingClientRect(); + + const isWider = e.clientX < rect.x || e.clientX > rect.x + rect.width; + const isTaller = e.clientY < rect.y || e.clientY > rect.y + rect.height; + + (isWider || isTaller) && setIsDroppable(false); + } + + const onPaste = (e:ClipboardEvent) => { + if (e.clipboardData?.files && e.clipboardData.files.length > 0) { + e.preventDefault(); + const file = e.clipboardData.files[0]; + file && isSupportedFileType(file) && uploadFile(file); + return false; + } + } + + onMount(() => { + // @ts-expect-error TODO: fix types here + editWrap?.addEventListener('input', onExpandableTextareaInput); + editWrap?.addEventListener('keydown', onKeyDown); + // editWrap?.addEventListener('drop', onDrop, false); + }); + + onCleanup(() => { + // @ts-expect-error TODO: fix types here + editWrap?.removeEventListener('input', onExpandableTextareaInput); + editWrap?.removeEventListener('keydown', onKeyDown); + // editWrap?.removeEventListener('drop', onDrop, false); + }); + + createEffect(() => { + editWrap?.removeEventListener('keyup', onEscape); + editWrap?.addEventListener('keyup', onEscape); + }); + + createEffect(() => { + if (location.pathname !== currentPath) { + closeEditor(); + } + }) + + createEffect(() => { + const preQ = preQuery(); + + debounce(() => { + setQuery(() => preQ) + }, 500); + }) + + const onEscape = (e: KeyboardEvent) => { + if (e.code === 'Escape') { + !isMentioning() && !isEmojiInput() ? + closeEditor() : + closeEmojiAndMentions(); + } + }; + + const closeEditor = () => { + setUserRefs({}); + setMessage(''); + setParsedMessage(''); + setQuery(''); + setMentioning(false); + setEmojiInput(false); + setEmojiQuery('') + setEmojiResults(() => []); + props.onClose && props.onClose(); + }; + + const closeEmojiAndMentions = () => { + setMentioning(false); + setEmojiInput(false); + setEmojiQuery('') + setEmojiResults(() => []); + }; + + const postNote = async () => { + if (!account || !account.hasPublicKey() || isUploading() || isInputting()) { + return; + } + + if (Object.keys(account.relaySettings).length === 0) { + toast?.sendWarning( + intl.formatMessage(tToast.noRelays), + ); + return; + } + + if (account.relays.length === 0) { + toast?.sendWarning( + intl.formatMessage(tToast.noRelaysConnected), + ); + return; + } + + const value = message(); + + if (value.trim() === '') { + return; + } + + const messageToSend = value.replace(editMentionRegex, (url) => { + + const [_, name] = url.split('\`'); + const user = userRefs[name]; + + // @ts-ignore + return ` nostr:${user.npub}`; + }) + + if (account) { + const tags = referencesToTags(messageToSend); + + if (props.replyToNote) { + tags.push(['e', props.replyToNote.post.id, '', 'reply']); + tags.push(['p', props.replyToNote.post.pubkey]); + } + + const success = await sendNote(messageToSend, account.relays, tags); + + if (success) { + toast?.sendSuccess('Message posted successfully'); + } + else { + toast?.sendWarning('Failed to send message'); + } + } + + closeEditor(); + }; + + const mentionPositionOptions = () => { + if (!textArea || !mentionOptions || !editWrap) { + return; + } + + const taRect = textArea.getBoundingClientRect(); + const wRect = editWrap.getBoundingClientRect(); + + let newTop = taRect.top - wRect.top + mentionCursorPosition.top + 22; + let newLeft = mentionCursorPosition.left + 16; + + if (newTop > document.documentElement.clientHeight - 200) { + newTop = taRect.top - 400; + } + + mentionOptions.style.top = `${newTop}px`; + mentionOptions.style.left = `${newLeft}px`; + }; + + const emojiPositionOptions = () => { + if (!textArea || !emojiOptions || !editWrap) { + return; + } + + const taRect = textArea.getBoundingClientRect(); + const wRect = editWrap.getBoundingClientRect(); + + let newTop = taRect.top - wRect.top + emojiCursorPosition.top + 22; + let newLeft = emojiCursorPosition.left; + + if (newTop > document.documentElement.clientHeight - 200) { + newTop = taRect.top - 400; + } + + emojiOptions.style.top = `${newTop}px`; + emojiOptions.style.left = `${newLeft}px`; + }; + + const highlightHashtags = (text: string) => { + const regex = /(?:\s|^)#[^\s!@#$%^&*(),.?":{}|<>]+/ig; + + return text.replace(regex, (token) => { + const [space, term] = token.split('#'); + const embeded = ( + + {space} + + #{term} + + + ); + + // @ts-ignore + return embeded.outerHTML; + }); + } + + const parseUserMentions = (text: string) => { + return text.replace(editMentionRegex, (url) => { + const [_, name] = url.split('\`'); + const user = Object.values(userRefs).find(ref => userName(ref) === name); + + const link = user ? + MentionedUserLink({ user, openInNewTab: true}) : + @{name}; + + // @ts-ignore + return link.outerHTML || ` @${name}`; + }); + }; + + + const subUserRef = (userId: string) => { + + const parsed = parsedMessage().replace(profileRegex, (url) => { + const [_, id] = url.split(':'); + + if (!id) { + return url; + } + + try { + // const profileId = nip19.decode(id).data as string | nip19.ProfilePointer; + + // const hex = typeof profileId === 'string' ? profileId : profileId.pubkey; + // const npub = hexToNpub(hex); + + const user = userRefs[userId]; + + const link = user ? + @{userName(user)} : + @{truncateNpub(id)}; + + // @ts-ignore + return link.outerHTML || url; + } catch (e) { + return `${url}`; + } + }); + + setParsedMessage(parsed); + + }; + + const parseNpubLinks = (text: string) => { + let refs = []; + let match; + + while((match = profileRegex.exec(text)) !== null) { + refs.push(match[1]); + } + + refs.forEach(id => { + if (userRefs[id]) { + setTimeout(() => { + subUserRef(id); + }, 0); + return; + } + + const eventId = nip19.decode(id).data as string | nip19.ProfilePointer; + const hex = typeof eventId === 'string' ? eventId : eventId.pubkey; + + // setReferencedNotes(`nn_${id}`, { messages: [], users: {}, postStats: {}, mentions: {} }) + + const unsub = subscribeTo(`nu_${id}`, (type, subId, content) =>{ + if (type === 'EOSE') { + // // const newNote = convertToNotes(referencedNotes[subId])[0]; + + // // setNoteRefs((refs) => ({ + // // ...refs, + // // [newNote.post.noteId]: newNote + // // })); + + subUserRef(hex); + + unsub(); + return; + } + + if (type === 'EVENT') { + if (!content) { + return; + } + + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + const u = convertToUser(user) + + setUserRefs(() => ({ [u.pubkey]: u })); + + // setReferencedNotes(subId, 'users', (usrs) => ({ ...usrs, [user.pubkey]: { ...user } })); + return; + } + } + }); + + + getUserProfiles([hex], `nu_${id}`); + + }); + + } + + const parseNoteLinks = (text: string) => { + let refs = []; + let match; + + while((match = noteRegex.exec(text)) !== null) { + refs.push(match[1]); + } + + refs.forEach(id => { + if (noteRefs[id]) { + setTimeout(() => { + subNoteRef(id); + }, 0); + return; + } + + const eventId = nip19.decode(id).data as string | nip19.EventPointer; + const hex = typeof eventId === 'string' ? eventId : eventId.id; + + setReferencedNotes(`nn_${id}`, { messages: [], users: {}, postStats: {}, mentions: {} }) + + const unsub = subscribeTo(`nn_${id}`, (type, subId, content) =>{ + if (type === 'EOSE') { + const newNote = convertToNotes(referencedNotes[subId])[0]; + + setNoteRefs((refs) => ({ + ...refs, + [newNote.post.noteId]: newNote + })); + + subNoteRef(newNote.post.noteId); + + unsub(); + return; + } + + if (type === 'EVENT') { + if (!content) { + return; + } + + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + setReferencedNotes(subId, 'users', (usrs) => ({ ...usrs, [user.pubkey]: { ...user } })); + return; + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + + setReferencedNotes(subId, 'messages', + (msgs) => [ ...msgs, { ...message }] + ); + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + setReferencedNotes(subId, 'postStats', + (stats) => ({ ...stats, [stat.event_id]: { ...stat } }) + ); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + setReferencedNotes(subId, 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + } + }); + + + getEvents(account?.publicKey, [hex], `nn_${id}`, true); + + }); + + }; + + const subNoteRef = (noteId: string) => { + + const parsed = parsedMessage().replace(noteRegex, (url) => { + const [_, id] = url.split(':'); + + if (!id || id !== noteId) { + return url; + } + try { + const note = noteRefs[id] + + const link = note ? +
+ + + + + +
: + {url}; + + // @ts-ignore + return link.outerHTML || url; + } catch (e) { + console.log('ERROR: ', e); + return `${url}`; + } + + }); + + setParsedMessage(parsed); + + }; + + + const parseForReferece = (value: string) => { + const content = replaceLinkPreviews(parseUserMentions(highlightHashtags(parseNote1(value)))); + + parseNpubLinks(content); + parseNoteLinks(content); + + return content; + }; + + const [isInputting, setIsInputting] = createSignal(false); + + const onInput = (e: InputEvent) => { + if (isUploading()) { + e.preventDefault(); + return false; + } + setIsInputting(true); + + // debounce(() => { + setIsInputting(false); + textArea && setMessage(textArea.value) + // }, 500) + }; + + let delayForMedia = 0; + + createEffect(() => { + if (delayForMedia) { + window.clearTimeout(delayForMedia); + } + const msg = sanitize(message()); + + delayForMedia = setTimeout(() => { + const p = parseForReferece(msg); + setParsedMessage(p); + }, 500); + + + }) + + createEffect(() => { + if (query().length === 0) { + search?.actions.getRecomendedUsers(); + return; + } + + search?.actions.findUsers(query()); + }); + + createEffect(() => { + if (isMentioning()) { + + mentionPositionOptions(); + + if (search?.users && search.users.length > 0) { + setHighlightedUser(0); + } + } + }); + + createEffect(() => { + if (isEmojiInput()) { + emojiPositionOptions(); + + if (emojiResults.length > 0) { + setHighlightedEmoji(0); + } + } + }); + + const selectEmoji = (emoji: EmojiOption) => { + if (!textArea) { + return; + } + + const msg = message(); + + // Get cursor position to determine insertion point + let cursor = textArea.selectionStart; + + // Get index of the token and insert emoji character + const index = msg.slice(0, cursor).lastIndexOf(':'); + const value = msg.slice(0, index) + emoji.char + msg.slice(cursor); + + // Reset query, update message and text area value + setMessage(value); + textArea.value = message(); + + // Calculate new cursor position + textArea.selectionEnd = index + 1; + textArea.focus(); + + setEmojiInput(false); + setEmojiQuery(''); + setEmojiResults(() => []); + + // Dispatch input event to recalculate UI position + // const e = new Event('input', { bubbles: true, cancelable: true}); + // textArea.dispatchEvent(e); + }; + + const selectUser = (user: PrimalUser | undefined) => { + if (!textArea || !user) { + return; + } + + setMentioning(false); + + const name = userName(user); + + setUserRefs((refs) => ({ + ...refs, + [name]: user, + })); + + const msg = message(); + + // Get cursor position to determine insertion point + let cursor = textArea.selectionStart; + + // Get index of the token and inster user's handle + const index = msg.slice(0, cursor).lastIndexOf('@'); + const value = msg.slice(0, index) + `@\`${name}\`` + msg.slice(cursor); + + // Reset query, update message and text area value + setQuery(''); + setMessage(value); + textArea.value = message(); + + textArea.focus(); + + // Calculate new cursor position + cursor = value.slice(0, cursor).lastIndexOf('@') + name.length + 3; + textArea.selectionEnd = cursor; + + + // Dispatch input event to recalculate UI position + const e = new Event('input', { bubbles: true, cancelable: true}); + textArea.dispatchEvent(e); + }; + + const focusInput = () => { + textArea && textArea.focus(); + }; + + const prefix = () => props.idPrefix ?? ''; + + const insertAtCursor = (text: string) => { + if (!textArea) { + return; + } + + const msg = message(); + + const cursor = textArea.selectionStart; + + const value = msg.slice(0, cursor) + `${text}` + msg.slice(cursor); + + setMessage(() => value); + textArea.value = value; + + textArea.focus(); + }; + + const [isUploading, setIsUploading] = createSignal(false); + + const isSupportedFileType = (file: File) => { + if (!file.type.startsWith('image/') && !file.type.startsWith('video/')) { + toast?.sendWarning(intl.formatMessage(tToast.fileTypeUpsupported)); + return false; + } + + return true; + + } + + const onUpload = () => { + if (!fileUpload) { + return; + } + + const file = fileUpload.files ? fileUpload.files[0] : null; + + // @ts-ignore fileUpload.value assignment + file && isSupportedFileType(file) && uploadFile(file, () => fileUpload.value = null); + + } + + const uploadFile = (file: File, callback?: () => void) => { + setIsUploading(true); + + const reader = new FileReader(); + + reader.onload = (e) => { + if (!e.target?.result) { + return; + } + + const subid = `upload_${APP_ID}`; + + const data = e.target?.result as string; + + const unsub = uploadSub(subid, (type, subId, content) => { + + if (type === 'EVENT') { + if (!content) { + return; + } + + if (content.kind === Kind.Uploaded) { + const uploaded = content as NostrMediaUploaded; + + insertAtCursor(uploaded.content); + return; + } + } + + if (type === 'NOTICE') { + setIsUploading(false); + unsub(); + return; + } + + if (type === 'EOSE') { + setIsUploading(false); + unsub(); + return; + } + }); + + uploadMedia(account?.publicKey, subid, data); + } + + reader.readAsDataURL(file); + + callback && callback(); + } + + return ( +
+ +
+ {intl.formatMessage(tFeedback.dropzone)} +
+
+ + +
+
+ +
+
{intl.formatMessage(tFeedback.uploading)}
+
+
+ +
+
+ +
+ {intl.formatMessage(tNote.newPreview)} +
+
+
+
+
+
+ + +
+ + {(user, index) => ( + } + statNumber={search?.scores[user.pubkey]} + statLabel={intl.formatMessage(tSearch.followers)} + onClick={() => selectUser(user)} + highlighted={highlightedUser() === index()} + /> + )} + +
+
+ + emojiSearchLimit}> +
+ + {(emoji, index) => ( + + )} + +
+
+ +
+
+ + +
+ + +
+
+ ) +} + +export default EditBox; diff --git a/src/components/NewNote/NewNote.module.scss b/src/components/NewNote/NewNote.module.scss new file mode 100644 index 0000000..57a2ed5 --- /dev/null +++ b/src/components/NewNote/NewNote.module.scss @@ -0,0 +1,146 @@ +.newNoteHolder { + min-height: 100px; + background-color: var(--background-site); + padding-top: 10px; +} + +.holderBottomBorder { + width: 100%; + height: 4px; + display: flex; + justify-content: space-between; + + .rightCorner { + display: inline-block; + width: 4px; + height: 4px; + + background-color: var(--background-site); + -webkit-mask: url(../../assets/icons/corner_right.svg) no-repeat center; + mask: url(../../assets/icons/corner_right.svg) no-repeat center; + } + .leftCorner { + display: inline-block; + width: 4px; + height: 4px; + + background-color: var(--background-site); + -webkit-mask: url(../../assets/icons/corner_left.svg) no-repeat center; + mask: url(../../assets/icons/corner_left.svg) no-repeat center; + } +} + +.newNoteBorder { + width: 100%; + height: 100%; + padding: 1px; + background: var(--brand-gradient); + border-radius: 6px; + display: block; + position: relative; +} + +.newNote { + width: 100%; + height: 100%; + min-height: 122px; + font-size: 18px; + line-height: 20px; + margin: 0px; + border-radius: 6px; + border: none; + color: var(--text-tertiary); + background-color: var(--background-site); + padding-bottom: 11px; + display: grid; + grid-template-columns: 92px 1fr; + + .leftSide { + padding: 20px; + } + + + // textarea { + // width: calc(100% - 36px); + // margin: 18px 18px 36px 18px; + // padding: 0px; + // box-sizing: padding-box; + // border: none; + // border-radius: 0px; + // background-color: unset; + // font-size: 16px; + // line-height: 20px; + // font-weight: 400; + // color: var(--text-primary); + // resize: none; + + // &:focus { + // border: none; + // outline: none; + // } + // } +} + +.controls { + position: absolute; + bottom: 0px; + right: 15px; + display: flex; + align-items: center; + >button { + width: 80px; + height: 28px; + margin: 0px 0px 11px 8px; + } +} + +.primaryButton { + border: none; + border-radius: 6px; + margin: 0px 8px; + padding: 0px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: var(--text-primary); + >span { + opacity: 0.75; + } +} + + +.secondaryButton { + border: none; + border-radius: 6px; + padding: 1px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: var(--text-tertiary-2); + >div { + width: 100%; + height: 100%; + vertical-align: middle; + border-radius: 6px; + background-color: var(--background-card); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } +} + +.searchSuggestions { + width: 300px; + background-color: var(--background-site); + border: 1px solid var(--text-tertiary-2); + // box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.8); + border-radius: 4px; + + position: absolute; + top: 0px; + left: 0px; + z-index: 50; +} diff --git a/src/components/NewNote/NewNote.tsx b/src/components/NewNote/NewNote.tsx new file mode 100644 index 0000000..81e9c75 --- /dev/null +++ b/src/components/NewNote/NewNote.tsx @@ -0,0 +1,41 @@ +import { Component } from "solid-js"; +import { useAccountContext } from "../../contexts/AccountContext"; +import Avatar from "../Avatar/Avatar"; +import EditBox from "./EditBox/EditBox"; +import styles from "./NewNote.module.scss"; + +const NewNote: Component = () => { + + const account = useAccountContext(); + + const activeUser = () => account?.activeUser; + + return ( + <> +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+ + ) +} + +export default NewNote; diff --git a/src/components/NostrStats/NostrStats.module.scss b/src/components/NostrStats/NostrStats.module.scss new file mode 100644 index 0000000..d0d93e2 --- /dev/null +++ b/src/components/NostrStats/NostrStats.module.scss @@ -0,0 +1,33 @@ + +.statsCaption { + margin-bottom: 32px; + font-weight: 800; + font-size: 18px; + line-height: 20px; + text-transform: uppercase; + color: var(--text-secondary); +} +.netstats { + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + grid-template-rows: 1fr 1fr; + grid-column-gap: 24px; + grid-row-gap: 24px; + + .netstat { + .number { + font-size: 24px; + line-height: 28px; + font-weight: 300; + color: var(--text-primary); + } + + .label { + font-size: 16px; + line-height: 20px; + font-weight: 300; + color: var(--text-tertiary); + text-transform: lowercase; + } + } +} diff --git a/src/components/NostrStats/NostrStats.tsx b/src/components/NostrStats/NostrStats.tsx new file mode 100644 index 0000000..00dfd85 --- /dev/null +++ b/src/components/NostrStats/NostrStats.tsx @@ -0,0 +1,45 @@ +import { useIntl } from "@cookbook/solid-intl"; +import { Component } from "solid-js"; +import { PrimalNetStats } from "../../types/primal"; +import styles from "./NostrStats.module.scss"; +import { explore as t } from '../../translations'; + +const NostrStats: Component<{ stats: PrimalNetStats }> = (props) => { + + const intl = useIntl(); + + const statDisplay = ( + stat: number | string | undefined, + key: string, + ) => { + // @ts-ignore Record find entry by key + const label = t.statDisplay[key] || ''; + + return ( +
+
+ {stat?.toLocaleString()} +
+
+ {intl.formatMessage(label)} +
+
+ ); + }; + + + return ( +
+ {statDisplay(props.stats.users, 'users')} + {statDisplay(props.stats.pubkeys, 'pubkeys')} + {statDisplay(props.stats.zaps, 'users')} + {statDisplay((props.stats.satszapped /100000000).toFixed(8), 'btcZapped')} + {statDisplay(props.stats.pubnotes, 'pubnotes')} + {statDisplay(props.stats.reposts, 'reposts')} + {statDisplay(props.stats.reactions, 'reactions')} + {statDisplay(props.stats.any, 'any')} +
+ ) +} + +export default NostrStats; diff --git a/src/components/Note/MentionedUserLink/MentionedUserLink.module.scss b/src/components/Note/MentionedUserLink/MentionedUserLink.module.scss new file mode 100644 index 0000000..8208ede --- /dev/null +++ b/src/components/Note/MentionedUserLink/MentionedUserLink.module.scss @@ -0,0 +1,39 @@ +.userMention { + position: relative; + .userPreview { + display: none; + } + + &:hover { + .userPreview { + position: absolute; + left: 0; + width: 220px; + z-index: var(--z-index-floater); + background-color: var(--background-input); + display: flex; + padding: 4px; + border: 1px solid var(--text-tertiary-2); + border-radius: 8px; + color: var(--text-secondary-2); + font-size: 14px; + line-height: 16px; + font-weight: 400; + margin-top: 1px; + > div { + display: flex; + flex-direction: column; + justify-content: center; + margin-left: 4px; + + > div { + &.userName { + font-weight: 800; + color: var(--text-primary); + } + padding-block: 2px; + } + } + } + } +} diff --git a/src/components/Note/MentionedUserLink/MentionedUserLink.tsx b/src/components/Note/MentionedUserLink/MentionedUserLink.tsx new file mode 100644 index 0000000..f9c56b8 --- /dev/null +++ b/src/components/Note/MentionedUserLink/MentionedUserLink.tsx @@ -0,0 +1,26 @@ +import { A } from "@solidjs/router"; +import { Component, JSXElement } from "solid-js"; +import { userName, nip05Verification } from "../../../stores/profile"; +import { PrimalUser } from "../../../types/primal"; +import Avatar from "../../Avatar/Avatar"; +import styles from "./MentionedUserLink.module.scss"; + +const MentionedUserLink: Component<{ + user: PrimalUser, + openInNewTab?: boolean, +}> = (props) => { + + const LinkComponent: Component<{ children: JSXElement }> = (p) => { + return props.openInNewTab ? + {p.children} : + {p.children}; + }; + + return ( + + @{userName(props.user)} + + ); +} + +export default MentionedUserLink; diff --git a/src/components/Note/Note.module.scss b/src/components/Note/Note.module.scss new file mode 100644 index 0000000..4d801ae --- /dev/null +++ b/src/components/Note/Note.module.scss @@ -0,0 +1,117 @@ +.post { + background-color: var(--background-card); + display: flex; + flex-direction: column; + // grid-template-columns: 60px 1fr; + // grid-template-rows: 1fr; + // grid-template-areas: "avatar content"; + padding: 0px; + border-radius: 8px; + // pointer-events: none; + + .content { + grid-area: content; + display: flex; + flex-direction: column; + margin-top: 21px; + margin-left: 60px; + // grid-template-columns: 1fr; + // grid-template-rows: 48px 1fr 28px; + // grid-row-gap: 16px; + // grid-template-areas: "header" "message" "footer"; + + + .message { + position: relative; + grid-area: message; + color: var(--text-primary); + word-break: break-word; + font-size: 16px; + line-height: 24px; + width: 100%; + // max-height: 650px; + // overflow: hidden; + margin-bottom: 17px; + + a:hover { + text-decoration: underline; + } + + .messageFade { + position: absolute; + z-index: 1; + top: 610px; + left: 0; + pointer-events: none; + background-image: var(--fade-note-vertical); + width: 100%; + height: 40px; + } + + } + } +} + + +.postLink { + text-decoration: none; + color: unset; + margin: 0px; + padding: 16px 20px; + // background: var(--brand-gradient-vertical); + background-color: var(--background-card); + border-radius: 8px; + display: block; + transition: 0.2s padding; + margin-top: 8px; + >div { + border-radius: 4px; + transition: 0.2s border-radius ease-out; + } + + // &:hover { + // padding-left: 4px; + // transition: 0.2s padding; + // border-radius: 4px; + // >div { + // border-radius: 0px 4px 4px 0px; + // transition: 0.2s border-radius ease-out; + // } + // } +} + +.repostedBy { + padding-bottom: 16px; + display: flex; + >span { + >a { + margin-inline: 5px; + } + color: var(--text-tertiary); + font-size: 16px; + line-height: 16px; + font-weight: 400; + >span { + text-transform: lowercase; + } + } +} + + +@media only screen and (max-width: 720px) { + .postLink { + width: 100vw; + .post { + width: 100%; + // grid-template-columns: 62px 1fr; + margin-left: 0px; + margin-right: 0px; + padding-right: 0px; + .content { + margin-left: 0; + } + } + + } + +} diff --git a/src/components/Note/Note.tsx b/src/components/Note/Note.tsx new file mode 100644 index 0000000..6ee064c --- /dev/null +++ b/src/components/Note/Note.tsx @@ -0,0 +1,71 @@ +import { A } from '@solidjs/router'; +import { Component, Show } from 'solid-js'; +import { PrimalNote } from '../../types/primal'; +import ParsedNote from '../ParsedNote/ParsedNote'; +import NoteFooter from './NoteFooter/NoteFooter'; +import NoteHeader from './NoteHeader/NoteHeader'; + +import styles from './Note.module.scss'; +import { useThreadContext } from '../../contexts/ThreadContext'; +import { useIntl } from '@cookbook/solid-intl'; +import { truncateNpub } from '../../stores/profile'; +import { note as t } from '../../translations'; + +const Note: Component<{ note: PrimalNote }> = (props) => { + + const threadContext = useThreadContext(); + const intl = useIntl(); + + const repost = () => props.note.repost; + + const navToThread = (note: PrimalNote) => { + threadContext?.actions.setPrimaryNote(note); + }; + + const reposterName = () => { + const r = repost(); + + if (!r) { + return ''; + } + + return r.user?.displayName || + r.user?.name || + truncateNpub(r.user.npub); + } + + return ( + navToThread(props.note)} + data-event={props.note.post.id} + data-event-bech32={props.note.post.noteId} + > + +
+
+ +
+ {reposterName()} + + + {intl.formatMessage(t.reposted)} + + +
+ +
+ +
+
+ +
+ +
+
+ + ) +} + +export default Note; diff --git a/src/components/Note/NoteFooter/NoteFooter.module.scss b/src/components/Note/NoteFooter/NoteFooter.module.scss new file mode 100644 index 0000000..6466d40 --- /dev/null +++ b/src/components/Note/NoteFooter/NoteFooter.module.scss @@ -0,0 +1,155 @@ +@mixin statIcon { + width: 16px; + height: 16px; + background-color: var(--text-tertiary-2); +} + +@mixin typeDiv { + display: flex; + min-width: 64px; + align-items: center; +} + +.footer { + display: flex; + position: relative; + + .stat { + // display: grid; + // grid-template-columns: 18px 1fr; + // grid-template-rows: 1fr; + // grid-column-gap: 5px; + font-weight: 400; + font-size: 18px; + line-height: 16px; + align-items: center; + margin: 0px; + padding: 0px; + margin-right: 60px; + border: none; + background-color: unset; + width: auto; + min-width: 64px; + position: relative; + + .likeType { + @include typeDiv; + .icon { + @include statIcon; + -webkit-mask: url(../../../assets/icons/feed_like.svg) no-repeat 0 / 100%; + mask: url(../../../assets/icons/feed_like.svg) no-repeat 0 / 100%; + } + } + + .replyType { + @include typeDiv; + .icon { + @include statIcon; + -webkit-mask: url(../../../assets/icons/feed_reply.svg) no-repeat 0 / 100%; + mask: url(../../../assets/icons/feed_reply.svg) no-repeat 0 / 100%; + } + } + + .repostType { + @include typeDiv; + .icon { + @include statIcon; + -webkit-mask: url(../../../assets/icons/feed_repost.svg) no-repeat 0 / 100%; + mask: url(../../../assets/icons/feed_repost.svg) no-repeat 0 / 100%; + } + } + + .zapType { + @include typeDiv; + .icon { + @include statIcon; + -webkit-mask: url(../../../assets/icons/feed_zap.svg) no-repeat 0 / 100%; + mask: url(../../../assets/icons/feed_zap.svg) no-repeat 0 / 100%; + } + } + + &:hover, &.highlighted { + .zapType { + .statNumber { + color: #FF9F2F; + } + .icon { + background-color: #FF9F2F; + -webkit-mask: url(../../../assets/icons/feed_zap_fill.svg) no-repeat 0 / 100%; + mask: url(../../../assets/icons/feed_zap_fill.svg) no-repeat 0 / 100%; + } + } + + .likeType { + .statNumber { + color: #BC1870; + } + .icon { + background-color: #BC1870; + -webkit-mask: url(../../../assets/icons/feed_like_fill.svg) no-repeat 0 / 100%; + mask: url(../../../assets/icons/feed_like_fill.svg) no-repeat 0 / 100%; + } + } + + .replyType { + .statNumber { + color: #CCCCCC; + } + .icon { + background-color: #CCCCCC; + -webkit-mask: url(../../../assets/icons/feed_reply_fill.svg) no-repeat 0 / 100%; + mask: url(../../../assets/icons/feed_reply_fill.svg) no-repeat 0 / 100%; + } + } + + .repostType { + .statNumber { + color: #66E205; + } + .icon { + background-color: #66E205; + -webkit-mask: url(../../../assets/icons/feed_repost_fill.svg) no-repeat 0 / 100%; + mask: url(../../../assets/icons/feed_repost_fill.svg) no-repeat 0 / 100%; + } + } + } + &:focus { + box-shadow: none; + } + + .statNumber { + text-align: left; + color: var(--text-secondary); + margin-left: 7px; + } + } +} + +.smallZapLottie { + width: 32px; + height: 32px; + position: absolute; + z-index: 20; +} + +.mediumZapLottie { + width: 341px; + height: 91px; + position: absolute; + z-index: 20; +} + + +@media only screen and (max-width: 720px) { + .footer { + width: auto; + display: flex; + align-items: center; + justify-content: space-between; + + .stat{ + min-width: 0px; + margin-right: 0; + } + } +} diff --git a/src/components/Note/NoteFooter/NoteFooter.tsx b/src/components/Note/NoteFooter/NoteFooter.tsx new file mode 100644 index 0000000..dd4f460 --- /dev/null +++ b/src/components/Note/NoteFooter/NoteFooter.tsx @@ -0,0 +1,430 @@ +import { Component, createEffect, createSignal, onMount, Show } from 'solid-js'; +import { PrimalNote } from '../../../types/primal'; +import { sendRepost } from '../../../lib/notes'; + +import styles from './NoteFooter.module.scss'; +import { useAccountContext } from '../../../contexts/AccountContext'; +import { useToastContext } from '../../Toaster/Toaster'; +import { useIntl } from '@cookbook/solid-intl'; + +import { truncateNumber } from '../../../lib/notifications'; +import { canUserReceiveZaps, zapNote } from '../../../lib/zap'; +import CustomZap from '../../CustomZap/CustomZap'; +import { useSettingsContext } from '../../../contexts/SettingsContext'; + +import zapSM from '../../../assets/lottie/zap_sm.json'; +import zapMD from '../../../assets/lottie/zap_md.json'; +import { medZapLimit } from '../../../constants'; +import { toast as t } from '../../../translations'; + +const NoteFooter: Component<{ note: PrimalNote}> = (props) => { + + const account = useAccountContext(); + const toast = useToastContext(); + const intl = useIntl(); + const settings = useSettingsContext(); + + let smallZapAnimation: HTMLElement | undefined; + let medZapAnimation: HTMLElement | undefined; + + const [liked, setLiked] = createSignal(props.note.post.noteActions.liked); + const [zapped, setZapped] = createSignal(props.note.post.noteActions.zapped); + const [replied, setReplied] = createSignal(props.note.post.noteActions.replied); + const [reposted, setReposted] = createSignal(props.note.post.noteActions.reposted); + + const [likes, setLikes] = createSignal(props.note.post.likes); + const [reposts, setReposts] = createSignal(props.note.post.reposts); + const [replies, setReplies] = createSignal(props.note.post.replies); + const [zaps, setZaps] = createSignal(props.note.post.satszapped); + + let footerDiv: HTMLDivElement | undefined; + + const doRepost = async (e: MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + + if (!account) { + return; + } + + if (Object.keys(account.relaySettings).length === 0) { + toast?.sendWarning( + intl.formatMessage(t.noRelays), + ); + return; + } + + if (account.relays.length === 0) { + toast?.sendWarning( + intl.formatMessage(t.noRelaysConnected), + ); + return; + } + + const success = await sendRepost(props.note, account.relays); + + if (success) { + setReposts(reposts() + 1); + setReposted(true); + toast?.sendSuccess( + intl.formatMessage(t.repostSuccess), + ); + } + else { + toast?.sendWarning( + intl.formatMessage(t.repostFailed), + ); + } + }; + + const doReply = () => {}; + + const doLike = async (e: MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + + if (!account) { + return; + } + + if (Object.keys(account.relaySettings).length === 0) { + toast?.sendWarning( + intl.formatMessage(noRelaysMessage), + ); + return; + } + + if (account.relays.length === 0) { + toast?.sendWarning( + intl.formatMessage(noRelayConnectedMessage), + ); + return; + } + + const success = await account.actions.addLike(props.note); + + if (success) { + setLikes(likes() + 1); + setLiked(true); + } + }; + + let quickZapDelay = 0; + const [isCustomZap, setIsCustomZap] = createSignal(false); + const [isZapping, setIsZapping] = createSignal(false); + + const startZap = (e: MouseEvent | TouchEvent) => { + e.preventDefault(); + e.stopPropagation(); + + if (!account?.hasPublicKey()) { + toast?.sendWarning( + intl.formatMessage(t.zapAsGuest), + ); + setIsZapping(false); + return; + } + + if (Object.keys(account.relaySettings).length === 0) { + toast?.sendWarning( + intl.formatMessage(noRelaysMessage), + ); + return; + } + + if (account.relays.length === 0) { + toast?.sendWarning( + intl.formatMessage(noRelayConnectedMessage), + ); + return; + } + + if (!canUserReceiveZaps(props.note.user)) { + toast?.sendWarning( + intl.formatMessage(t.zapUnavailable), + ); + setIsZapping(false); + return; + } + + quickZapDelay = setTimeout(() => { + setIsCustomZap(true); + setIsZapping(true); + }, 500); + }; + + const commitZap = (e: MouseEvent | TouchEvent) => { + e.preventDefault(); + e.stopPropagation(); + + clearTimeout(quickZapDelay); + + if (!account?.hasPublicKey() || account.relays.length === 0 || !canUserReceiveZaps(props.note.user)) { + return; + } + + if (!isCustomZap()) { + doQuickZap(); + } + }; + + const [zappedNow, setZappedNow] = createSignal(false); + const [zappedAmount, setZappedAmount] = createSignal(0); + + const animateSmallZap = () => { + setTimeout(() => { + setHideZapIcon(true); + + if (!smallZapAnimation) { + return; + } + + const newLeft = 116; + const newTop = -8; + + smallZapAnimation.style.left = `${newLeft}px`; + smallZapAnimation.style.top = `${newTop}px`; + + const onAnimDone = () => { + // setIsZapping(true); + setShowSmallZapAnim(false); + setHideZapIcon(false); + smallZapAnimation?.removeEventListener('complete', onAnimDone); + } + + smallZapAnimation.addEventListener('complete', onAnimDone); + + try { + // @ts-ignore + smallZapAnimation.seek(0); + // @ts-ignore + smallZapAnimation.play(); + } catch (e) { + console.warn('Failed to animte zap:', e); + onAnimDone(); + } + }, 10); + }; + + const animateMedZap = () => { + setTimeout(() => { + setHideZapIcon(true); + + if (!medZapAnimation) { + return; + } + + const newLeft = 20; + const newTop = -35; + + medZapAnimation.style.left = `${newLeft}px`; + medZapAnimation.style.top = `${newTop}px`; + + const onAnimDone = () => { + // setIsZapping(true); + setShowMedZapAnim(false); + setHideZapIcon(false); + medZapAnimation?.removeEventListener('complete', onAnimDone); + } + + medZapAnimation.addEventListener('complete', onAnimDone); + + try { + // @ts-ignore + medZapAnimation.seek(0); + // @ts-ignore + medZapAnimation.play(); + } catch (e) { + console.warn('Failed to animte zap:', e); + onAnimDone(); + } + }, 10); + }; + + + const animateZap = () => { + if (zappedAmount() > medZapLimit) { + setShowMedZapAnim(true); + animateMedZap(); + } + else { + setShowSmallZapAnim(true); + animateSmallZap(); + } + + } + + const doQuickZap = async () => { + + if (account?.hasPublicKey()) { + setZappedAmount(() => settings?.defaultZapAmount || 0); + setZappedNow(true); + animateZap(); + const success = await zapNote(props.note, account.publicKey, settings?.defaultZapAmount || 10, '', account.relays); + setIsZapping(false); + + if (success) { + return; + } + + setZappedAmount(() => -(settings?.defaultZapAmount || 0)); + setZappedNow(true); + setZapped(props.note.post.noteActions.zapped); + } + } + + const buttonTypeClasses: Record = { + zap: styles.zapType, + like: styles.likeType, + reply: styles.replyType, + repost: styles.repostType, + }; + + const actionButton = (opts: { + type: 'zap' | 'like' | 'reply' | 'repost', + disabled?: boolean, + highlighted?: boolean, + onClick?: (e: MouseEvent) => void, + onMouseDown?: (e: MouseEvent) => void, + onMouseUp?: (e: MouseEvent) => void, + onTouchStart?: (e: TouchEvent) => void, + onTouchEnd?: (e: TouchEvent) => void, + label: string | number, + hidden?: boolean, + title?: string, + }) => { + + return ( + + ); + }; + + createEffect(() => { + + if (zappedNow()) { + setZaps((z) => z + zappedAmount()); + setZapped(true); + setZappedNow(false); + } + + }) + + const [showSmallZapAnim, setShowSmallZapAnim] = createSignal(false); + const [showMedZapAnim, setShowMedZapAnim] = createSignal(false); + const [hideZapIcon, setHideZapIcon] = createSignal(false); + + return ( +
+ + + + + + + + + {actionButton({ + onClick: doReply, + type: 'reply', + highlighted: replied(), + label: replies() === 0 ? '' : truncateNumber(replies(), 2), + title: replies().toLocaleString(), + })} + + {actionButton({ + onClick: (e: MouseEvent) => e.preventDefault(), + onMouseDown: startZap, + onMouseUp: commitZap, + onTouchStart: startZap, + onTouchEnd: commitZap, + type: 'zap', + highlighted: zapped() || isZapping(), + label: zaps() === 0 ? '' : truncateNumber(zaps(), 2), + hidden: hideZapIcon(), + title: zaps().toLocaleString(), + })} + + {actionButton({ + onClick: doLike, + type: 'like', + highlighted: liked(), + label: likes() === 0 ? '' : truncateNumber(likes(), 2), + title: likes().toLocaleString(), + })} + + {actionButton({ + onClick: doRepost, + type: 'repost', + highlighted: reposted(), + label: reposts() === 0 ? '' : truncateNumber(reposts(), 2), + title: reposts().toLocaleString(), + })} + + { + setIsCustomZap(false); + setZappedAmount(() => amount || 0); + setZappedNow(true); + setZapped(true); + animateZap(); + }} + onSuccess={(amount) => { + setIsCustomZap(false); + setIsZapping(false); + // setZappedAmount(() => amount || 0); + setZappedNow(false); + // animateZap(); + setShowMedZapAnim(false); + setShowSmallZapAnim(false); + setHideZapIcon(false); + setZapped(true); + }} + onFail={(amount) => { + setZappedAmount(() => -(amount || 0)); + setZappedNow(true); + setIsCustomZap(false); + setIsZapping(false); + setShowMedZapAnim(false); + setShowSmallZapAnim(false); + setHideZapIcon(false); + setZapped(props.note.post.noteActions.zapped); + }} + /> + +
+ ) +} + +export default NoteFooter; diff --git a/src/components/Note/NoteHeader/NoteHeader.module.scss b/src/components/Note/NoteHeader/NoteHeader.module.scss new file mode 100644 index 0000000..150e059 --- /dev/null +++ b/src/components/Note/NoteHeader/NoteHeader.module.scss @@ -0,0 +1,157 @@ +.header { + grid-area: header; + align-items: center; + color: var(--text-tertiary-2); + display: flex; + justify-content: space-between; + width: 100%; + height: 48px; + + .headerInfo { + display: flex; + flex-direction: row; + justify-content: flex-start; + } + + .avatar { + margin-right: 12px; + + >a { + text-decoration: none; + } + + .avatarImg { + width: 52px; + height: 52px; + border-radius: 50%; + } + } + .postInfo { + display: flex; + flex-direction: column; + font-size: 14px; + line-height: 16px; + font-weight: 400; + height: 48px; + justify-content: space-around; + + .verification { + max-width: 470px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + + } + .userInfo { + display: flex; + justify-content: flex-start; + overflow: hidden; + display: flex; + align-items: center; + justify-content: flex-start; + .userName { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + max-width: 360px; + color: var(--text-primary); + } + .time{ + margin: 0px 2px; + min-width: 80px; + &::before { + content: "|"; + padding: 0px 2px; + } + } + } + + } + + + .contextMenu { + position: relative; + width: 16px; + height: 16px; + display: flex; + align-items: center; + text-align: center; + font-weight: bold; + + .contextButton { + height: 16px; + padding: 0; + margin: 0; + background: none; + border: none; + outline: none; + + &:focus { + outline: none; + box-shadow: none; + } + } + } + +} + +.contextIcon { + width: 16px; + height: 16px; + background-color: var(--text-secondary-2); + -webkit-mask: url(../../../assets/icons/context.svg) no-repeat 0 / 100%; + mask: url(../../../assets/icons/context.svg) no-repeat 0 / 100%; + + &:hover { + background-color: var(--text-primary); + } +} + +.contextMenuOptions { + position: absolute; + top: 16px; + right: 0px; + min-width: 160px; + background-color: var(--background-site); + border: solid 1px var(--text-tertiary-2); + border-radius: 4px; + z-index: 20; +} + +.contextOption { + background-color: var(--background-site); + border: none; + font-weight: 400; + font-size: 14px; + line-height: 16px; + color: var(--text-secondary-2); + padding: 10px; + margin: 0px; + + &:hover, &:focus { + background-color: var(--background-input); + } +} + +@media only screen and (max-width: 720px) { + .header { + width: calc(100vw - 160px); + .postInfo { + width: calc(100vw - 110px); + .userInfo { + max-width: calc(100vw - 100px); + overflow: hidden; + .userName { + max-width: calc(100vw - 180px); + } + } + .verification { + max-width: 220px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + + } + } + } +} diff --git a/src/components/Note/NoteHeader/NoteHeader.tsx b/src/components/Note/NoteHeader/NoteHeader.tsx new file mode 100644 index 0000000..26e2a3c --- /dev/null +++ b/src/components/Note/NoteHeader/NoteHeader.tsx @@ -0,0 +1,145 @@ +import { Component, createEffect, createSignal, Show } from 'solid-js'; +import { PrimalNote } from '../../../types/primal'; + +import styles from './NoteHeader.module.scss'; +import { date } from '../../../lib/dates'; +import { nip05Verification, truncateNpub } from '../../../stores/profile'; +import { useIntl } from '@cookbook/solid-intl'; +import { useToastContext } from '../../Toaster/Toaster'; +import VerificationCheck from '../../VerificationCheck/VerificationCheck'; +import Avatar from '../../Avatar/Avatar'; +import { A } from '@solidjs/router'; +import { toast as tToast, actions as tActions } from '../../../translations'; + +const NoteHeader: Component<{ note: PrimalNote}> = (props) => { + + const intl = useIntl(); + const toaster = useToastContext(); + + const [showContext, setContext] = createSignal(false); + + const authorName = () => { + return props.note.user?.displayName || + props.note.user?.name || + truncateNpub(props.note.user.npub); + }; + + const openContextMenu = (e: MouseEvent) => { + e.preventDefault(); + setContext(true); + }; + + const copyNostrLink = (e: MouseEvent) => { + e.preventDefault(); + navigator.clipboard.writeText(`nostr:${props.note.post.noteId}`); + setContext(false); + toaster?.sendSuccess(intl.formatMessage(tToast.noteNostrLinkCoppied)); + }; + + const copyPrimalLink = (e: MouseEvent) => { + e.preventDefault(); + navigator.clipboard.writeText(`${window.location.origin}/thread/${props.note.post.noteId}`); + setContext(false); + toaster?.sendSuccess(intl.formatMessage(tToast.notePrimalLinkCoppied)); + }; + + const onClickOutside = (e: MouseEvent) => { + if ( + !document?.getElementById(`note_context_${props.note.post.id}`)?.contains(e.target as Node) + ) { + setContext(false); + } + } + + createEffect(() => { + if (showContext()) { + document.addEventListener('click', onClickOutside); + } + else { + document.removeEventListener('click', onClickOutside); + } + }); + + const isVerifiedByPrimal = () => { + return !!props.note.user.nip05 && + props.note.user.nip05.endsWith('primal.net'); + } + + return ( +
+
+
+ + + +
+
+
+ + + {authorName()} + + + + + + {date(props.note.post?.created_at).label} + +
+ + + + {nip05Verification(props.note.user)} + + +
+
+
+ + +
+ + +
+
+
+
+ ) +} + +export default NoteHeader; diff --git a/src/components/Note/NotePrimary/NotePrimary.module.scss b/src/components/Note/NotePrimary/NotePrimary.module.scss new file mode 100644 index 0000000..d94512f --- /dev/null +++ b/src/components/Note/NotePrimary/NotePrimary.module.scss @@ -0,0 +1,110 @@ +.border { + background: var(--brand-gradient-vertical); + border-radius: 4px 0px 0px 4px; + width: 4px; + position: absolute; + top: 0; + left: 0; + height: 100%; +} + +.post { + position: relative; + background-color: var(--background-card); + margin-top: 0px; + display: flex; + flex-direction: column; + padding: 16px 20px; + // grid-template-columns: 122px 1fr; + // grid-template-rows: 1fr; + // grid-template-areas: "avatar content"; + // padding: 16px 16px 16px 20px; + border-radius: 0px 4px 4px 0px; + + // .avatar { + // grid-area: avatar; + // display: grid; + // grid-template-columns: 1fr; + // grid-template-rows: 80px 1fr; + // grid-row-gap: 6px; + // justify-items: center; + + // >a { + // text-decoration: none; + // } + + // .avatarName { + // width: 100%; + // padding: 0px 6px; + // text-align: center; + // display: inline-block; + // font-size: 16px; + // line-height: 12px; + // font-weight: 400; + // color: var(--text-primary); + // align-self: flex-start; + // text-overflow: ellipsis; + // white-space: nowrap; + // overflow: hidden; + // } + // } + + .content { + // grid-area: content; + // display: grid; + // grid-template-columns: 1fr; + // grid-template-rows: 48px 1fr 28px; + // grid-row-gap: 16px; + // grid-template-areas: "header" "message" "footer"; + grid-area: content; + display: flex; + flex-direction: column; + margin-top: 21px; + margin-left: 60px; + + + .message { + position: relative; + grid-area: message; + color: var(--text-primary); + word-break: break-word; + font-size: 16px; + line-height: 24px; + width: 100%; + // max-height: 650px; + // overflow: hidden; + margin-bottom: 17px; + + a:hover { + text-decoration: underline; + } + + .messageFade { + position: absolute; + z-index: 1; + top: 610px; + left: 0; + pointer-events: none; + background-image: var(--fade-note-vertical); + width: 100%; + height: 40px; + } + + } + } +} + + +@media only screen and (max-width: 720px) { + .post { + width: 100vw; + // grid-template-columns: 62px 1fr; + margin-left: 0px; + margin-right: 0px; + padding-right: 12px; + .content { + margin-left: 0px; + } + } + +} diff --git a/src/components/Note/NotePrimary/NotePrimary.tsx b/src/components/Note/NotePrimary/NotePrimary.tsx new file mode 100644 index 0000000..49577d5 --- /dev/null +++ b/src/components/Note/NotePrimary/NotePrimary.tsx @@ -0,0 +1,33 @@ +import { Component } from 'solid-js'; +import { truncateNpub } from '../../../stores/profile'; +import { PrimalNote } from '../../../types/primal'; +import ParsedNote from '../../ParsedNote/ParsedNote'; +import NoteFooter from '../NoteFooter/NoteFooter'; +import NoteHeader from '../NoteHeader/NoteHeader'; + +import styles from './NotePrimary.module.scss'; + + +const NotePrimary: Component<{ note: PrimalNote }> = (props) => { + + return ( +
+
+ +
+ +
+ +
+ + +
+
+ ) +} + +export default NotePrimary; diff --git a/src/components/Note/NotificationNote/NotificationNote.module.scss b/src/components/Note/NotificationNote/NotificationNote.module.scss new file mode 100644 index 0000000..e5c5c8c --- /dev/null +++ b/src/components/Note/NotificationNote/NotificationNote.module.scss @@ -0,0 +1,101 @@ +.post { + background-color: var(--background-site); + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 1fr; + grid-template-areas: "content"; + padding: 0px 16px 16px 0px; + border-radius: 4px; + // width: 640px; + // pointer-events: none; + + .content { + grid-area: content; + display: flex; + flex-direction: column; + + + .message { + grid-area: message; + color: var(--text-primary); + word-break: break-word; + font-size: 16px; + line-height: 24px; + width: 100%; + + a:hover { + text-decoration: underline; + } + } + + .footer { + margin-top: 12px; + } + } +} + + +.postLink { + text-decoration: none; + color: unset; + margin: 0px; + padding: 0px; + // background: var(--brand-gradient-vertical); + background-color: var(--background-card); + border-radius: 6px; + display: block; + transition: 0.2s padding; + margin-top: 6px; + >div { + border-radius: 4px; + transition: 0.2s border-radius ease-out; + } + + // &:hover { + // padding-left: 4px; + // transition: 0.2s padding; + // border-radius: 4px; + // >div { + // border-radius: 0px 4px 4px 0px; + // transition: 0.2s border-radius ease-out; + // } + // } +} + +.repostedBy { + margin-left: 22px; + padding-top: 16px; + display: flex; + >span { + >a { + margin-inline: 5px; + } + color: var(--text-tertiary); + font-size: 16px; + line-height: 16px; + font-weight: 400; + >span { + text-transform: lowercase; + } + } +} + + +@media only screen and (max-width: 720px) { + .post { + width: calc(100vw - (100vw - 100%)); + grid-template-columns: 62px 1fr; + margin-left: 0px; + margin-right: 0px; + padding-right: 0px; + .content { + .message { + width: 80% !important; + } + } + } + + .postLink { + width: 100% !important; + } +} diff --git a/src/components/Note/NotificationNote/NotificationNote.tsx b/src/components/Note/NotificationNote/NotificationNote.tsx new file mode 100644 index 0000000..9c4c85d --- /dev/null +++ b/src/components/Note/NotificationNote/NotificationNote.tsx @@ -0,0 +1,41 @@ +import { A } from '@solidjs/router'; +import { Component } from 'solid-js'; +import { PrimalNote } from '../../../types/primal'; +import ParsedNote from '../../ParsedNote/ParsedNote'; +import NoteFooter from '../NoteFooter/NoteFooter'; + +import styles from './NotificationNote.module.scss'; +import { useThreadContext } from '../../../contexts/ThreadContext'; + +const Note: Component<{ note: PrimalNote }> = (props) => { + + const threadContext = useThreadContext(); + + const navToThread = (note: PrimalNote) => { + threadContext?.actions.setPrimaryNote(note); + }; + + return ( + navToThread(props.note)} + data-event={props.note.post.id} + data-event-bech32={props.note.post.noteId} + > +
+
+
+ +
+ +
+ +
+
+
+
+ ) +} + +export default Note; diff --git a/src/components/NotificationAvatar/NotificationAvatar.module.scss b/src/components/NotificationAvatar/NotificationAvatar.module.scss new file mode 100644 index 0000000..e8a9913 --- /dev/null +++ b/src/components/NotificationAvatar/NotificationAvatar.module.scss @@ -0,0 +1,165 @@ +@mixin avatar { + position: relative; + + background-color: var(--subtile-devider); + border-radius: 50%; + border: 2px solid var(--text-primary); + color: var(--text-primary); + font-weight: 500; + font-size: 12px; + line-height: 18px; + display: flex; + align-items: center; + justify-content: center; +} + +.verifiedIcon { + position: absolute; + top: 0px; + right: 0px; + width: 15px; + height: 15px; + display: inline-block; + margin: 0px 0px; + background-color: var(--accent-2); + -webkit-mask: url(../../assets/icons/verified.svg) no-repeat 0px / 15px; + mask: url(../../assets/icons/verified.svg) no-repeat 0px / 15px; +} + +@mixin iconBackground { + position: absolute; + right: 0px; + bottom: 0px; + width: 15px; + height: 15px; + background-color: var(--background-site); + border-radius: 50%; +} + +.xxsAvatar { + @include avatar; + width: 24px; + height: 24px; +} + +.xsAvatar { + @include avatar; + width: 36px; + height: 36px; +} + +.vsAvatar { + @include avatar; + width: 42px; + height: 42px; +} + +.smallAvatar { + @include avatar; + width: 48px; + height: 48px; +} + +.midAvatar { + @include avatar; + width: 52px; + height: 52px; +} + +.largeAvatar { + @include avatar; + width: 72px; + height: 72px; +} + +.extraLargeAvatar { + @include avatar; + width: 80px; + height: 80px; +} + +.xxlAvatar { + @include avatar; + width: 142px; + height: 142px; +} + +@mixin missing { + display: grid; + place-items: center; + color: var(--missing-avatar-text); + background-color: var(--subtile-devider); + border-radius: 50%; +} + +.xxsMissing { + @include missing; + width: 24px; + height: 24px; + font-size: 10px; + -webkit-mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 24px; + mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 24px; +} + +.xsMissing { + @include missing; + width: 32px; + height: 32px; + font-size: 10px; + -webkit-mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 32px; + mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 32px; +} + +.vsMissing { + @include missing; + width: 42px; + height: 42px; + font-size: 10px; + -webkit-mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 42px; + mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 42px; +} + +.smallMissing { + @include missing; + width: 48px; + height: 48px; + font-size: 12px; + -webkit-mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 48px; + mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 48px; +} + +.midMissing { + @include missing; + width: 52px; + height: 52px; + font-size: 16px; + -webkit-mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 52px; + mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 52px; +} + +.largeMissing { + @include missing; + width: 72px; + height: 72px; + font-size: 18px; + -webkit-mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 72px; + mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 72px; +} + +.extraLargeMissing { + @include missing; + width: 80px; + height: 80px; + font-size: 20px; + -webkit-mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 80px; + mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 80px; +} + +.xxlMissing { + @include missing; + width: 142px; + height: 142px; + font-size: 20px; + -webkit-mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 142px; + mask: url(../../assets/icons/default_nostrich.svg) no-repeat 0px / 142px; +} diff --git a/src/components/NotificationAvatar/NotificationAvatar.tsx b/src/components/NotificationAvatar/NotificationAvatar.tsx new file mode 100644 index 0000000..e7323ac --- /dev/null +++ b/src/components/NotificationAvatar/NotificationAvatar.tsx @@ -0,0 +1,62 @@ +import { Component, Show } from 'solid-js'; +import defaultAvatar from '../../assets/icons/default_nostrich.svg'; + +import styles from './NotificationAvatar.module.scss'; + +const NotificationAvatar: Component<{ + number: number | undefined, + size?: "xxs" | "xs" | "vs" | "sm" | "md" | "lg" | "xl" | "xxl", + verified?: string +}> = (props) => { + + const selectedSize = props.size || 'sm'; + + const avatarClass = { + xxs: styles.xxsAvatar, + xs: styles.xsAvatar, + vs: styles.vsAvatar, + sm: styles.smallAvatar, + md: styles.midAvatar, + lg: styles.largeAvatar, + xl: styles.extraLargeAvatar, + xxl: styles.xxlAvatar, + }; + + const missingClass = { + xxs: styles.xxsMissing, + xs: styles.xsMissing, + vs: styles.vsMissing, + sm: styles.smallMissing, + md: styles.midMissing, + lg: styles.largeMissing, + xl: styles.extraLargeMissing, + xxl: styles.xxlMissing, + }; + + const imgError = (event: any) => { + const image = event.target; + image.onerror = ""; + image.src = defaultAvatar; + return true; + } + + return ( +
+
+ } + > + +{props.number} + + +
+
+
+
+ + ) +} + +export default NotificationAvatar; diff --git a/src/components/Notifications/NotificationItem.module.scss b/src/components/Notifications/NotificationItem.module.scss new file mode 100644 index 0000000..3481231 --- /dev/null +++ b/src/components/Notifications/NotificationItem.module.scss @@ -0,0 +1,93 @@ +.notifItem { + display: grid; + grid-template-columns: 44px 1fr; + + padding-top: 12px; + padding-bottom: 17px; + border-bottom: 1px solid var(--subtile-devider); + + .notifType { + display: flex; + flex-direction: column; + align-items: center; + justify-content: flex-start; + padding-block: 6px; + } + + .iconInfo { + color: #FFA02F; + font-size: 14px; + line-height: 16px; + font-weight: 700; + margin-top: 6px; + } + + .notifContent { + display: flex; + flex-direction: column; + + .avatars { + display: flex; + padding-bottom: 8px; + .avatar { + border: solid 2px var(--text-primary); + border-radius: 50%; + width: 36px; + transition: margin-right 0.2s; + margin-right: -16px; + + &:hover { + transition: margin-right 0.2s; + margin-right: 5px; + } + } + } + + .description { + display: flex; + align-items: baseline; + padding-bottom: 8px; + .firstUser { + display: flex; + align-items: center; + font-weight: 800; + font-size: 16px; + line-height: 18px; + color: var(--text-secondary); + } + + .restUsers { + margin-left: 4px; + font-weight: 400; + font-size: 16px; + line-height: 18px; + color: var(--text-secondary); + } + } + + .reference { + font-weight: 400; + font-size: 16px; + line-height: 22px; + color: var(--text-tertiary); + } + } +} + +.firstUserName { + max-width: 200px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.verifiedIcon { + width: 14px; + height: 14px; + min-width: 14px; + display: inline-block; + margin-left: 2px; + background-color: var(--text-tertiary-2); + -webkit-mask: url(../../assets/icons/verified.svg) no-repeat 0 / 14px; + mask: url(../../../assets/icons/verified.svg) no-repeat 0 / 14px; +} diff --git a/src/components/Notifications/NotificationItem.tsx b/src/components/Notifications/NotificationItem.tsx new file mode 100644 index 0000000..2f61e20 --- /dev/null +++ b/src/components/Notifications/NotificationItem.tsx @@ -0,0 +1,195 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { A } from '@solidjs/router'; +import { Component, createEffect, createMemo, createSignal, For, Show } from 'solid-js'; +import { NotificationType } from '../../constants'; +import { trimVerification } from '../../lib/profile'; +import { truncateNpub, userName } from '../../stores/profile'; +import { PrimalNote, PrimalNotifUser } from '../../types/primal'; +import Avatar from '../Avatar/Avatar'; + +import styles from './NotificationItem.module.scss'; + +import userFollow from '../../assets/icons/notifications/user_followed.svg'; +import userUnFollow from '../../assets/icons/notifications/user_unfollowed.svg'; + +import postZapped from '../../assets/icons/notifications/post_zapped.svg'; +import postLiked from '../../assets/icons/notifications/post_liked.svg'; +import postReposted from '../../assets/icons/notifications/post_reposted.svg'; +import postReplied from '../../assets/icons/notifications/post_replied.svg'; + +import mention from '../../assets/icons/notifications/mention.svg'; +import mentionedPost from '../../assets/icons/notifications/mentioned_post.svg'; + +import mentionZapped from '../../assets/icons/notifications/mention_zapped.svg'; +import mentionLiked from '../../assets/icons/notifications/mention_liked.svg'; +import mentionReposted from '../../assets/icons/notifications/mention_reposted.svg'; +import mentionReplied from '../../assets/icons/notifications/mention_replied.svg'; + +import mentionedPostZapped from '../../assets/icons/notifications/mentioned_post_zapped.svg'; +import mentionedPostLiked from '../../assets/icons/notifications/mentioned_post_liked.svg'; +import mentionedPostReposted from '../../assets/icons/notifications/mentioned_post_reposted.svg'; +import mentionedPostReplied from '../../assets/icons/notifications/mentioned_post_replied.svg'; +import NotificationNote from '../Note/NotificationNote/NotificationNote'; +import NotificationAvatar from '../NotificationAvatar/NotificationAvatar'; +import { notificationsNew as t } from '../../translations'; + +const typeIcons: Record = { + [NotificationType.NEW_USER_FOLLOWED_YOU]: userFollow, + [NotificationType.USER_UNFOLLOWED_YOU]: userUnFollow, + + [NotificationType.YOUR_POST_WAS_ZAPPED]: postZapped, + [NotificationType.YOUR_POST_WAS_LIKED]: postLiked, + [NotificationType.YOUR_POST_WAS_REPOSTED]: postReposted, + [NotificationType.YOUR_POST_WAS_REPLIED_TO]: postReplied, + + [NotificationType.YOU_WERE_MENTIONED_IN_POST]: mention, + [NotificationType.YOUR_POST_WAS_MENTIONED_IN_POST]: mentionedPost, + + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED]: mentionZapped, + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_LIKED]: mentionLiked, + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPOSTED]: mentionReposted, + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO]: mentionReplied, + + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED]: mentionedPostZapped, + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_LIKED]: mentionedPostLiked, + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPOSTED]:mentionedPostReposted, + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO]: mentionedPostReplied, + +} + +type NotificationItemProps = { + type: NotificationType, + users?: PrimalNotifUser[], + note?: PrimalNote, + iconInfo?: string, + iconTooltip?: string, +}; + +const uniqueifyUsers = (users: PrimalNotifUser[]) => { + return users.reduce((acc, u) => { + const found = acc.find(a => a.id === u.id); + return found ? acc : [...acc, u]; + }, []); +} + +const avatarDisplayLimit = 12; + +const NotificationItem: Component = (props) => { + + const intl = useIntl(); + + const [typeIcon, setTypeIcon] = createSignal(''); + + const sortedUsers = createMemo(() => { + if (!props.users || props.users.length === 0) { + return []; + } + + const users = uniqueifyUsers(props.users); + + return users.sort((a, b) => b.followers_count - a.followers_count); + }); + + const displayedUsers = createMemo(() => { + const limited = sortedUsers().slice(0, avatarDisplayLimit); + + return limited; + }); + + const numberOfUsers = createMemo(() => sortedUsers().length); + + const remainingUsers = createMemo(() => { + const remainder = numberOfUsers() - displayedUsers().length; + + return remainder > 99 ? 99 : remainder; + }); + + + const firstUserName = createMemo(() => { + const firstUser = sortedUsers()[0]; + + if (!firstUser) { + return ''; + } + + return firstUser.displayName || + firstUser.name || + truncateNpub(firstUser.npub); + }); + + const firstUserVerification = createMemo(() => { + const firstUser = sortedUsers()[0]; + + if (!firstUser || !firstUser.nip05) { + return null; + } + + return trimVerification(firstUser.nip05); + + }); + + const typeDescription = () => { + + return intl.formatMessage(t[props.type], { + number: numberOfUsers() - 1, + }); + + } + + createEffect(() => { + setTypeIcon(typeIcons[props.type]) + }); + + return ( +
+
+ notification icon +
+ {props.iconInfo} +
+
+
+
+ 0}> + + {(user) => ( + + + + )} + + + avatarDisplayLimit - 1}> + + +
+
+
+ {firstUserName()} + + + +
+
{typeDescription()}
+
+ +
+ + + +
+
+
+
+ ); +} + +export default NotificationItem; diff --git a/src/components/Notifications/NotificationItem2.tsx b/src/components/Notifications/NotificationItem2.tsx new file mode 100644 index 0000000..16752e4 --- /dev/null +++ b/src/components/Notifications/NotificationItem2.tsx @@ -0,0 +1,161 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { A } from '@solidjs/router'; +import { Component, createEffect, createSignal, Show } from 'solid-js'; +import { NotificationType, notificationTypeNoteProps, notificationTypeUserProps } from '../../constants'; +import { trimVerification } from '../../lib/profile'; +import { userName } from '../../stores/profile'; +import { PrimalNote, PrimalNotification, PrimalUser } from '../../types/primal'; +import Avatar from '../Avatar/Avatar'; + +import styles from './NotificationItem.module.scss'; + +import userFollow from '../../assets/icons/notifications/user_followed.svg'; +import userUnFollow from '../../assets/icons/notifications/user_unfollowed.svg'; + +import postZapped from '../../assets/icons/notifications/post_zapped.svg'; +import postLiked from '../../assets/icons/notifications/post_liked.svg'; +import postReposted from '../../assets/icons/notifications/post_reposted.svg'; +import postReplied from '../../assets/icons/notifications/post_replied.svg'; + +import mention from '../../assets/icons/notifications/mention.svg'; +import mentionedPost from '../../assets/icons/notifications/mentioned_post.svg'; + +import mentionZapped from '../../assets/icons/notifications/mention_zapped.svg'; +import mentionLiked from '../../assets/icons/notifications/mention_liked.svg'; +import mentionReposted from '../../assets/icons/notifications/mention_reposted.svg'; +import mentionReplied from '../../assets/icons/notifications/mention_replied.svg'; + +import mentionedPostZapped from '../../assets/icons/notifications/mentioned_post_zapped.svg'; +import mentionedPostLiked from '../../assets/icons/notifications/mentioned_post_liked.svg'; +import mentionedPostReposted from '../../assets/icons/notifications/mentioned_post_reposted.svg'; +import mentionedPostReplied from '../../assets/icons/notifications/mentioned_post_replied.svg'; +import NotificationNote from '../Note/NotificationNote/NotificationNote'; +import { truncateNumber } from '../../lib/notifications'; +import { notificationsOld as t } from '../../translations'; + +const typeIcons: Record = { + [NotificationType.NEW_USER_FOLLOWED_YOU]: userFollow, + [NotificationType.USER_UNFOLLOWED_YOU]: userUnFollow, + + [NotificationType.YOUR_POST_WAS_ZAPPED]: postZapped, + [NotificationType.YOUR_POST_WAS_LIKED]: postLiked, + [NotificationType.YOUR_POST_WAS_REPOSTED]: postReposted, + [NotificationType.YOUR_POST_WAS_REPLIED_TO]: postReplied, + + [NotificationType.YOU_WERE_MENTIONED_IN_POST]: mention, + [NotificationType.YOUR_POST_WAS_MENTIONED_IN_POST]: mentionedPost, + + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED]: mentionZapped, + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_LIKED]: mentionLiked, + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPOSTED]: mentionReposted, + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO]: mentionReplied, + + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED]: mentionedPostZapped, + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_LIKED]: mentionedPostLiked, + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPOSTED]:mentionedPostReposted, + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO]: mentionedPostReplied, + +} + +type NotificationItemProps = { + notes: PrimalNote[], + users: Record, + userStats: Record, + notification: PrimalNotification, +}; + +const NotificationItem2: Component = (props) => { + + const intl = useIntl(); + + const [typeIcon, setTypeIcon] = createSignal(''); + + const type = () => props.notification.type + + const note = () => { + const prop = notificationTypeNoteProps[type()]; + // @ts-ignore + const id = props.notification[prop]; + return props.notes.find(n => n.post.id === id) + }; + + const user = () => { + const prop = notificationTypeUserProps[type()]; + // @ts-ignore + const id = props.notification[prop]; + return props.users[`${id}`]; + }; + + const typeDescription = () => { + return intl.formatMessage(t[type()]); + + } + + createEffect(() => { + setTypeIcon(typeIcons[type()]) + }); + + + const isReply = () => { + return [ + NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO, + NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO, + NotificationType.YOUR_POST_WAS_REPLIED_TO, + ].includes(type()) + }; + + const isZapType = () => { + return [ + NotificationType.YOUR_POST_WAS_ZAPPED, + NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED, + NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED, + ].includes(type()) + }; + + + return ( +
+
+ notification icon + +
+ {truncateNumber(props.notification.satszapped || 0)} +
+
+
+
+
+ + + +
+
+
+ {userName(user())} + + + +
+
{typeDescription()}
+
+ +
+ + + +
+
+
+
+ ); +} + +export default NotificationItem2; diff --git a/src/components/NotificatiosSidebar/NotificationsSidebar.module.scss b/src/components/NotificatiosSidebar/NotificationsSidebar.module.scss new file mode 100644 index 0000000..25cdcd0 --- /dev/null +++ b/src/components/NotificatiosSidebar/NotificationsSidebar.module.scss @@ -0,0 +1,90 @@ +.sidebarHeading { + font-size: 18px; + font-weight: 800; + line-height: 22px; + color: var(--text-secondary-2); + text-transform: uppercase; + margin-bottom: 24px; +} + +.sidebarTitle { + font-weight: 800; + font-size: 18px; + line-height: 22px; + color: var(--text-secondary); +} + +.sidebarEmpty { + color: var(--text-secondary); + font-weight: 400; + font-size: 18px; + line-height: 20px; + text-transform: lowercase; +} + +.sidebarItems { + margin-bottom: 20px; + + .sidebarItem { + font-weight: 400; + font-size: 16px; + line-height: 22px; + color: var(--text-secondary); + + .itemAmount { + display: inline-block; + font-weight: 600; + font-size: 16px; + line-height: 22px; + color: var(--text-primary); + margin-right: 4px; + } + } +} + +.category { + display: flex; +} + +.categoryIcon { + display: flex; + padding-top: 3px; + width: 26px; + justify-content: center; +} + +@mixin statIcon { + width: 16px; + height: 16px; + background-color: var(--text-secondary); +} + +.followIcon { + @include statIcon; + -webkit-mask: url(../../assets/icons/notifications/follows.svg) no-repeat 0px / 16px; + mask: url(../../assets/icons/notifications/follows.svg) no-repeat 0px / 16px; +} + +.mentionIcon { + @include statIcon; + -webkit-mask: url(../../assets/icons/notifications/at.svg) no-repeat 0px / 16px; + mask: url(../../assets/icons/notifications/at.svg) no-repeat 0px / 16px; +} + +.zapIcon { + @include statIcon; + -webkit-mask: url(../../assets/icons/zaps_filled.svg) no-repeat 0px / 16px; + mask: url(../../assets/icons/zaps_filled.svg) no-repeat 0px / 16px; +} + +.activityIcon { + @include statIcon; + -webkit-mask: url(../../assets/icons/notifications/post_replied.svg) no-repeat 0px / 18px; + mask: url(../../assets/icons/notifications/post_replied.svg) no-repeat 0px / 18px; +} + +.contextIcon { + @include statIcon; + -webkit-mask: url(../../assets/icons/context.svg) no-repeat center; + mask: url(../../assets/icons/context.svg) no-repeat center; +} diff --git a/src/components/NotificatiosSidebar/NotificationsSidebar.tsx b/src/components/NotificatiosSidebar/NotificationsSidebar.tsx new file mode 100644 index 0000000..59cc8e1 --- /dev/null +++ b/src/components/NotificatiosSidebar/NotificationsSidebar.tsx @@ -0,0 +1,375 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { Component, For, Show } from 'solid-js'; +import { NotificationType } from '../../constants'; +import { truncateNumber } from '../../lib/notifications'; +import { PrimalNotification, PrimalNotifUser, SortedNotifications } from '../../types/primal'; +import { notificationsSidebar as t } from '../../translations'; + +import styles from './NotificationsSidebar.module.scss'; + +const uniqueifyUsers = (users: PrimalNotifUser[]) => { + return users.reduce((acc, u) => { + const found = acc.find(a => a.id === u.id); + return found ? acc : [...acc, u]; + }, []); +} + +const NotificationsSidebar: Component<{ + notifications: SortedNotifications, + getUsers: (notifs: PrimalNotification[], type: NotificationType) => PrimalNotifUser[], +}> = (props) => { + + const intl = useIntl(); + + const follows = () => { + const followNotifs = props.notifications[NotificationType.NEW_USER_FOLLOWED_YOU] || []; + const unffolowNotifs = props.notifications[NotificationType.USER_UNFOLLOWED_YOU] || []; + + const followers = props.getUsers(followNotifs, NotificationType.USER_UNFOLLOWED_YOU); + const lost = props.getUsers(unffolowNotifs, NotificationType.USER_UNFOLLOWED_YOU); + + return [uniqueifyUsers(followers).length, uniqueifyUsers(lost).length]; + + + }; + + const mentions = () => { + const myMentionNotifs = props.notifications[NotificationType.YOU_WERE_MENTIONED_IN_POST] || []; + const myPostMentionNotifs = props.notifications[NotificationType.YOUR_POST_WAS_MENTIONED_IN_POST] || []; + + return [myMentionNotifs.length, myPostMentionNotifs.length]; + }; + + const zaps = () => { + const zapNotifs = props.notifications[NotificationType.YOUR_POST_WAS_ZAPPED] || []; + + const sats = zapNotifs.reduce((acc, n) => { + return n.satszapped ? acc + n.satszapped : acc; + }, 0); + + return [zapNotifs.length, sats]; + }; + + const activity = () => { + const replyNotifs = props.notifications[NotificationType.YOUR_POST_WAS_REPLIED_TO] || []; + const repostNotifs = props.notifications[NotificationType.YOUR_POST_WAS_REPOSTED] || []; + const likeNotifs = props.notifications[NotificationType.YOUR_POST_WAS_LIKED] || []; + + return [replyNotifs.length, repostNotifs.length, likeNotifs.length]; + }; + + const otherNotifications = () => { + const zapedMentionPostNotifs = props.notifications[NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED] || []; + const replyMentionPostNotifs = props.notifications[NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_LIKED] || []; + const repostMentionPostNotifs = props.notifications[NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPOSTED] || []; + const likeMentionPostNotifs = props.notifications[NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO] || []; + + const zapedPostMentionPostNotifs = props.notifications[NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED] || []; + const replyPostMentionPostNotifs = props.notifications[NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_LIKED] || []; + const repostPostMentionPostNotifs = props.notifications[NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPOSTED] || []; + const likePostMentionPostNotifs = props.notifications[NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO] || []; + + return [ + zapedMentionPostNotifs.length, + replyMentionPostNotifs.length, + repostMentionPostNotifs.length, + likeMentionPostNotifs.length, + + zapedPostMentionPostNotifs.length, + replyPostMentionPostNotifs.length, + repostPostMentionPostNotifs.length, + likePostMentionPostNotifs.length, + ]; + }; + + const otherNotifLabels = [ + { + id: 'notifications.sidebar.mentionsPostZap', + defaultMessage: `{number, plural, + =0 {} + one {mention was zapped} + other {mentions were zapped}}`, + description: 'Sidebar "posts you were mentioned in were zapped" stats description on the notification page', + }, + { + id: 'notifications.sidebar.mentionsPostLike', + defaultMessage: `{number, plural, + =0 {} + one {mention was liked} + other {mentions were liked}}`, + description: 'Sidebar "posts you were mentioned in were liked" stats description on the notification page', + }, + { + id: 'notifications.sidebar.mentionsPostReposted', + defaultMessage: `{number, plural, + =0 {} + one {mention was reposted} + other {mentions were reposted}}`, + description: 'Sidebar "posts you were mentioned in were reposted" stats description on the notification page', + }, + { + id: 'notifications.sidebar.mentionsPostReplied', + defaultMessage: `{number, plural, + =0 {} + one {mention was replied to} + other {mentions were replied to}}`, + description: 'Sidebar "posts you were mentioned in were replied to" stats description on the notification page', + }, + + { + id: 'notifications.sidebar.postMentionsPostZaped', + defaultMessage: `{number, plural, + =0 {} + one {post mention was zapped} + other {post mentions were zapped}}`, + description: 'Sidebar "posts your posts were mentioned in were zapped" stats description on the notification page', + }, + { + id: 'notifications.sidebar.postMentionsPostLike', + defaultMessage: `{number, plural, + =0 {} + one {post mention was liked} + other {post mentions were liked}}`, + description: 'Sidebar "posts your posts were mentioned in were liked" stats description on the notification page', + }, + { + id: 'notifications.sidebar.postMentionsPostReposted', + defaultMessage: `{number, plural, + =0 {} + one {post mention was reposted} + other {post mentions were reposted}}`, + description: 'Sidebar "posts your posts were mentioned in were reposted" stats description on the notification page', + }, + { + id: 'notifications.sidebar.postMentionsPostReposted', + defaultMessage: `{number, plural, + =0 {} + one {post mention was replied to} + other {post mentions were replied to}}`, + description: 'Sidebar "posts your posts were mentioned in were replied to" stats description on the notification page', + }, + ]; + + const nothingNew = () => { + return mentions()[0] + mentions()[1] + + follows()[0] + follows()[1] + + zaps()[0] + + activity()[0] + activity()[1] + activity()[2] === 0; + } + + return ( + <> +
+ {intl.formatMessage(t.heading)} +
+ + +
+ {intl.formatMessage(t.empty)} +
+
+ + 0}> +
+
+
+
+
+
+ {intl.formatMessage(t.followers)} +
+
+
+ 0}> +
{truncateNumber(follows()[0])}
+ {intl.formatMessage( + t.gainedFollowers, + { + number: follows()[0], + }, + )} +
+
+
+ 0}> +
{truncateNumber(follows()[1])}
+ {intl.formatMessage( + t.lostFollowers, + { + number: follows()[1], + }, + )} +
+
+
+
+
+
+ + 0}> +
+
+
+
+
+
+ {intl.formatMessage(t.zaps)} +
+
+
+ 0}> +
{truncateNumber(zaps()[0])}
+ {intl.formatMessage( + t.zapNumber, + { + number: zaps()[0], + }, + )} +
+
+
+ 0}> +
{truncateNumber(zaps()[1])}
+ {intl.formatMessage( + t.statsNumber, + { + number: zaps()[1], + }, + )} +
+
+
+
+
+
+ + 0}> +
+
+
+
+
+
+ {intl.formatMessage(t.activities)} +
+
+
+ 0}> +
{truncateNumber(activity()[0])}
+ {intl.formatMessage( + t.replies, + { + number: activity()[0], + } + )} +
+
+
+ 0}> +
{truncateNumber(activity()[1])}
+ {intl.formatMessage( + t.reposts, + { + number: activity()[1], + }, + )} +
+
+
+ 0}> +
{truncateNumber(activity()[2])}
+ {intl.formatMessage( + t.likes, + { + number: activity()[2], + } + )} +
+
+
+
+
+
+ + 0}> +
+
+
+
+
+
+ {intl.formatMessage(t.mentions)} +
+
+
+ 0}> +
{truncateNumber(mentions()[0])}
+ {intl.formatMessage( + t.mentionsYou, + { + number: mentions()[0], + } + )} +
+
+
+ 0}> +
{truncateNumber(mentions()[1])}
+ {intl.formatMessage( + t.mentionsYourPost, + { + number: mentions()[1], + } + )} +
+
+
+
+
+
+ + 0} + > +
+
+
+
+
+
+ {intl.formatMessage(t.other)} +
+
+ + {(stat, index) => ( + 0}> +
+
+ {truncateNumber(stat)} +
+ {intl.formatMessage( + otherNotifLabels[index()], + { + number: stat, + } + )} +
+
+ )} +
+
+
+
+
+ + ) +} + +export default NotificationsSidebar; diff --git a/src/components/PageNav/PageNav.module.scss b/src/components/PageNav/PageNav.module.scss new file mode 100644 index 0000000..d22cb70 --- /dev/null +++ b/src/components/PageNav/PageNav.module.scss @@ -0,0 +1,34 @@ +@mixin navButton { + display: inline-block; + border: none; + box-shadow: none; + background-color: unset; + margin: 0px; + padding: 0px; + width: 12px; + height: 20px; +} + +.backIcon { + @include navButton; + margin-right: 28px; + + background-color: var(--text-primary); + -webkit-mask: url(../../assets/icons/back.svg) no-repeat center; + mask: url(../../assets/icons/back.svg) no-repeat center; +} + +.forwardIcon { + @include navButton; + + background-color: var(--text-primary); + -webkit-mask: url(../../assets/icons/forward.svg) no-repeat center; + mask: url(../../assets/icons/forward.svg) no-repeat center; +} + + +@media only screen and (max-width: 1300px) { + .backIcon { + margin-right: 8px; + } +} diff --git a/src/components/PageNav/PageNav.tsx b/src/components/PageNav/PageNav.tsx new file mode 100644 index 0000000..89a87c2 --- /dev/null +++ b/src/components/PageNav/PageNav.tsx @@ -0,0 +1,25 @@ +import type { Component } from 'solid-js'; + +import styles from './PageNav.module.scss'; + +const PageNav: Component = () => { + + const onBack = () => { + window.history.back(); + } + + const onNext = () => { + window.history.forward(); + } + + return ( + <> + + + + ) +} + +export default PageNav; diff --git a/src/components/PageTitle/PageTitle.tsx b/src/components/PageTitle/PageTitle.tsx new file mode 100644 index 0000000..9d4d518 --- /dev/null +++ b/src/components/PageTitle/PageTitle.tsx @@ -0,0 +1,28 @@ +import { Component, createEffect, onCleanup } from 'solid-js'; + +const titleTag = document.querySelector('title'); +let origTitle = titleTag?.innerText || ''; + +const PageTitle: Component<{ title: string }> = (props) => { + + createEffect(() => { + + if (titleTag) { + titleTag.innerText = props.title; + } + }); + + onCleanup(() => { + if (titleTag) { + titleTag.innerText = origTitle; + } + + }); + + return ( + <> + + ) +} + +export default PageTitle; diff --git a/src/components/Paginator/Paginator.module.scss b/src/components/Paginator/Paginator.module.scss new file mode 100644 index 0000000..092e2a1 --- /dev/null +++ b/src/components/Paginator/Paginator.module.scss @@ -0,0 +1,17 @@ +.paginator { + color: var(--text-tertiary-2); + position: absolute; + bottom: 0px; + width: 100%; + height: 1280px; + pointer-events: none; +} + +.smallPaginator { + color: var(--text-tertiary-2); + position: relative; + top: 0px; + width: 100%; + height: 280px; + pointer-events: none; +} diff --git a/src/components/Paginator/Paginator.tsx b/src/components/Paginator/Paginator.tsx new file mode 100644 index 0000000..52998e0 --- /dev/null +++ b/src/components/Paginator/Paginator.tsx @@ -0,0 +1,34 @@ +import { onCleanup, onMount } from "solid-js"; +import styles from "./Paginator.module.scss"; + +export default function Paginator(props: { + loadNextPage: (() => void) | undefined, + isSmall?: boolean, +}) { + let observer: IntersectionObserver | undefined; + + onMount(() => { + observer = new IntersectionObserver(entries => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + props.loadNextPage && props.loadNextPage(); + } + }); + }); + + const pag = document.getElementById('pagination_trigger'); + + pag && observer?.observe(pag); + }); + + onCleanup(() => { + const pag = document.getElementById('pagination_trigger'); + + pag && observer?.unobserve(pag); + }); + + return ( +
+
+ ) +} diff --git a/src/components/ParsedNote/ParsedNote.module.scss b/src/components/ParsedNote/ParsedNote.module.scss new file mode 100644 index 0000000..e86e200 --- /dev/null +++ b/src/components/ParsedNote/ParsedNote.module.scss @@ -0,0 +1,90 @@ +.mentionedUser { + color: var(--accent-1); + text-decoration: none; +} + +.mentionedNote { + border: solid 1px var(--subtile-devider); + border-radius: 4px; + margin-block: 6px; + padding: 18px; + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 32px 1fr; + grid-row-gap: 8px; + text-decoration: none; + color: unset; + line-height: 20px; + + &:hover { + text-decoration: none !important; + } + + .mentionedNoteHeader { + display: flex; + justify-content: flex-start; + align-items: center; + color: var(--text-tertiary-2); + + .postInfo { + display: flex; + justify-content: flex-start; + margin-left: 11px; + + .userInfo { + font-size: 14px; + line-height: 16px; + font-weight: 400; + display: flex; + align-items: center; + width: auto; + .userName { + max-width: 150px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + } + + .time{ + margin: 0px 2px; + min-width: 40px; + font-size: 14px; + line-height: 16px; + font-weight: 400; + &::before { + content: "|"; + padding: 0px 2px; + } + } + + .contextMenu { + min-width: 5px; + display: inline-block; + text-align: center; + font-weight: bold; + } + } + } +} + +.verifiedIcon { + width: 13px; + height: 12px; + display: inline-block; + margin: 0px 2px; + background-color: var(--text-tertiary-2); + -webkit-mask: url(../../assets/icons/verified.svg) no-repeat center; + mask: url(../../assets/icons/verified.svg) no-repeat center; +} + +.bordered { + border:solid 1px var(--subtile-devider); + border-radius: 8px; + margin-block: 8px; + overflow: hidden; +} + +.error { + color: var(--brand-1); +} diff --git a/src/components/ParsedNote/ParsedNote.tsx b/src/components/ParsedNote/ParsedNote.tsx new file mode 100644 index 0000000..e9a3f43 --- /dev/null +++ b/src/components/ParsedNote/ParsedNote.tsx @@ -0,0 +1,231 @@ +import { A } from '@solidjs/router'; +import { hexToNpub } from '../../lib/keys'; +import { linkPreviews, parseNote1 } from '../../lib/notes'; +import { truncateNpub, userName } from '../../stores/profile'; +import EmbeddedNote from '../EmbeddedNote/EmbeddedNote'; +import { + Component, createEffect, createSignal, +} from 'solid-js'; +import { + PrimalNote, +} from '../../types/primal'; + +import styles from './ParsedNote.module.scss'; +import { nip19 } from 'nostr-tools'; +import LinkPreview from '../LinkPreview/LinkPreview'; +import MentionedUserLink from '../Note/MentionedUserLink/MentionedUserLink'; + + +export const parseNoteLinks = (text: string, note: PrimalNote, highlightOnly = false) => { + + const regex = /\bnostr:((note|nevent)1\w+)\b|#\[(\d+)\]/g; + + return text.replace(regex, (url) => { + const [_, id] = url.split(':'); + + if (!id) { + return url; + } + + try { + const eventId = nip19.decode(id).data as string | nip19.EventPointer; + const hex = typeof eventId === 'string' ? eventId : eventId.id; + const noteId = nip19.noteEncode(hex); + + const path = `/thread/${noteId}`; + + const ment = note.mentionedNotes && note.mentionedNotes[hex]; + + const link = highlightOnly ? + {url} : + ment ? +
+ +
: + {url}; + + // @ts-ignore + return link.outerHTML || url; + } catch (e) { + return `${url}`; + } + + }); + +}; + +export const parseNpubLinks = (text: string, note: PrimalNote, highlightOnly = false) => { + + const regex = /\bnostr:((npub|nprofile)1\w+)\b|#\[(\d+)\]/g; + + return text.replace(regex, (url) => { + const [_, id] = url.split(':'); + + if (!id) { + return url; + } + + try { + const profileId = nip19.decode(id).data as string | nip19.ProfilePointer; + + const hex = typeof profileId === 'string' ? profileId : profileId.pubkey; + const npub = hexToNpub(hex); + + const path = `/profile/${npub}`; + + const user = note.mentionedUsers && note.mentionedUsers[hex]; + + let link = highlightOnly ? + @{truncateNpub(npub)} : + @{truncateNpub(npub)}; + + if (user) { + link = highlightOnly ? + @{userName(user)} : + MentionedUserLink({ user }); + } + + // @ts-ignore + return link.outerHTML || url; + } catch (e) { + return `${url}`; + } + }); + +}; + +const ParsedNote: Component<{ note: PrimalNote, ignoreMentionedNotes?: boolean}> = (props) => { + + const parsedContent = (text: string) => { + const regex = /\#\[([0-9]*)\]/g; + let parsed = text; + + let refs = []; + let match; + + while((match = regex.exec(text)) !== null) { + refs.push(match[1]); + } + + if (refs.length > 0) { + for(let i =0; i < refs.length; i++) { + let r = parseInt(refs[i]); + + const tag = props.note.post.tags[r]; + + if (tag === undefined || tag.length === 0) continue; + + if ( + tag[0] === 'e' && + props.note.mentionedNotes && + props.note.mentionedNotes[tag[1]] + ) { + const embeded = ( +
+ +
+ ); + + + // @ts-ignore + parsed = parsed.replace(`#[${r}]`, embeded.outerHTML); + } + + if (tag[0] === 'p' && props.note.mentionedUsers && props.note.mentionedUsers[tag[1]]) { + const user = props.note.mentionedUsers[tag[1]]; + + const link = MentionedUserLink({ user }); + + // @ts-ignore + parsed = parsed.replace(`#[${r}]`, link.outerHTML); + } + } + } + + return parsed; + + }; + + const highlightHashtags = (text: string) => { + const regex = /(?:\s|^)#[^\s!@#$%^&*(),.?":{}|<>]+/ig; + + return text.replace(regex, (token) => { + const [space, term] = token.split('#'); + const embeded = ( + + {space} + #{term} + + ); + + // @ts-ignore + return embeded.outerHTML; + }); + } + + const replaceLinkPreviews = (text: string, previews: Record) => { + let parsed = text; + + const regex = /__LINK__.*?__LINK__/ig; + + parsed = parsed.replace(regex, (link) => { + const url = link.split('__LINK__')[1]; + + const preview = previews[url]; + + // No preview? That can only mean that we are still waiting. + if (!preview) { + return link; + } + + if (preview.noPreview) { + return `${url}`; + } + + const linkElement = (
); + + // @ts-ignore + return linkElement.outerHTML; + }); + + return parsed; + } + + const content = () => { + return parseNoteLinks( + parseNpubLinks( + parsedContent( + highlightHashtags( + parseNote1(props.note.post.content) + ), + ), + props.note, + ), + props.note, + ); + }; + + const [displayedContent, setDisplayedContent] = createSignal(content()); + + createEffect(() => { + const newContent = replaceLinkPreviews(displayedContent(), { ...linkPreviews }); + + setDisplayedContent(() => newContent); + }); + + + return ( +
+
+ ); +}; + +export default ParsedNote; diff --git a/src/components/PeopleList/PeopleList.module.scss b/src/components/PeopleList/PeopleList.module.scss new file mode 100644 index 0000000..fb90885 --- /dev/null +++ b/src/components/PeopleList/PeopleList.module.scss @@ -0,0 +1,179 @@ +@mixin heading { + position: -webkit-sticky; + position: sticky; + top: 0px; + width: 100%; + height: 44px; + // background-color: var(--background-site); + background: var(--fade-gradient-vertical); + z-index: 5; + padding-bottom: 22px; + display:flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + font-size: 18px; + font-weight: 800; + line-height: 20px; + color: var(--text-secondary-2); + text-transform: uppercase; + >div{ + height: 22px; + >span { + color: var(--text-tertiary-2); + text-transform: lowercase; + margin-left: 6px; + } + } +} + +.trendingSection { + // position: -webkit-sticky; + // position: sticky; + // top: 0px; + padding-top: 44px; + margin-bottom: 228px +} + +.stickyWrapper { + height: 100%; + position: fixed; + height: 100%; + overflow-y: scroll; + + &::-webkit-scrollbar{ + display: none; + } +} + +.heading { + @include heading(); +} + +.peopleList { + margin-bottom: 33px; + display: grid; + grid-template-columns: 52px 156px 64px; + grid-template-rows: 1fr; + grid-template-areas: "avatar content follow"; + grid-column-gap: 14px; + text-decoration: none; + + .avatar { + grid-area: avatar; + display: grid; + justify-items: center; + height: 52px; + + .avatarImg { + width: 52px; + height: 52px; + border-radius: 50%; + } + } + + .content { + grid-area: content; + display: flex; + flex-direction: column; + justify-content: flex-start; + + .name { + color: var(--text-primary); + font-weight: 400; + font-size: 12px; + line-height: 12px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + + .verification { + font-size: 12px; + line-height: 16px; + font-weight: 400; + color: var(--text-tertiary-2); + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + + .verifiedName { + font-size: 12px; + line-height: 16px; + font-weight: 700; + color: var(--text-tertiary-2); + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + + .npub { + font-size: 12px; + line-height: 16px; + font-weight: 300; + color: var(--text-tertiary-2); + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + + &:hover { + .message, .name, .time { + color: var(--text-primary); + text-decoration: underline; + } + + cursor: pointer; + } + } + + @mixin followButton { + grid-area: follow; + align-items: center; + display: flex; + align-items: center; + button { + width: 64px; + height: 40px; + background: var(--brand-gradient); + border-radius: 6px; + padding: 0px; + font-size: 12px; + line-height: 16px; + margin: 0px; + } + + } + + .follow { + @include followButton; + } + + .unfollow { + @include followButton; + button { + background-color: var(--background-card); + background: linear-gradient(var(--background-card), var(--background-card)) padding-box, + var(--brand-gradient) border-box; + border: 1px solid transparent; + } + } + + &:hover { + .name { + text-decoration: underline; + color: var(--text-primary); + } + } +} + +.verifiedIcon { + width:13px; + height: 12px; + display: inline-block; + margin: 0px 2px; + background-color: var(--text-tertiary-2); + -webkit-mask: url(../../assets/icons/verified.svg) no-repeat center; + mask: url(../../assets/icons/verified.svg) no-repeat center; +} diff --git a/src/components/PeopleList/PeopleList.tsx b/src/components/PeopleList/PeopleList.tsx new file mode 100644 index 0000000..cfcbba6 --- /dev/null +++ b/src/components/PeopleList/PeopleList.tsx @@ -0,0 +1,56 @@ +import { A } from '@solidjs/router'; +import { Component, For, Show } from 'solid-js'; +import { authorName, nip05Verification, truncateNpub } from '../../stores/profile'; +import { PrimalUser } from '../../types/primal'; +import Avatar from '../Avatar/Avatar'; +import FollowButton from '../FollowButton/FollowButton'; + +import styles from './PeopleList.module.scss'; + + +const PeopleList: Component<{ people: PrimalUser[], label: string}> = (props) => { + const people = () => props.people; + + return ( + + ); +} + +export default PeopleList; diff --git a/src/components/PostButton/PostButton.module.scss b/src/components/PostButton/PostButton.module.scss new file mode 100644 index 0000000..09d3d42 --- /dev/null +++ b/src/components/PostButton/PostButton.module.scss @@ -0,0 +1,19 @@ +.postButton { + width: 36px; + height: 36px; + padding: 0px; + border-radius: 0px 6px 6px 0px; + margin: 0px; + background: var(--brand-gradient); +} + +.postIcon { + display: inline-block; + width: 24px; + height: 24px; + vertical-align: middle; + + background-color: white; + -webkit-mask: url(../../assets/icons/post.svg) no-repeat center; + mask: url(../../assets/icons/post.svg) no-repeat center; +} diff --git a/src/components/PostButton/PostButton.tsx b/src/components/PostButton/PostButton.tsx new file mode 100644 index 0000000..5d8716f --- /dev/null +++ b/src/components/PostButton/PostButton.tsx @@ -0,0 +1,15 @@ +import styles from "./PostButton.module.scss"; + +export default function PostButton() { + + const showPostForm = () => {}; + + return ( + + ) +} diff --git a/src/components/ProfileSidebar/ProfileSidebar.module.scss b/src/components/ProfileSidebar/ProfileSidebar.module.scss new file mode 100644 index 0000000..498bfdb --- /dev/null +++ b/src/components/ProfileSidebar/ProfileSidebar.module.scss @@ -0,0 +1,38 @@ +@mixin heading { + position: -webkit-sticky; + position: sticky; + top: 0px; + width: 100%; + height: 44px; + // background-color: var(--background-site); + background: var(--fade-gradient-vertical); + z-index: 5; + padding-bottom: 22px; + display:flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + font-size: 18px; + font-weight: 800; + line-height: 22px; + color: var(--text-secondary-2); + text-transform: uppercase; + >div{ + display: flex; + height: 22px; + >span { + color: var(--text-tertiary-2); + text-transform: lowercase; + margin-left: 6px; + } + } +} + +.headingTrending { + @include heading(); +} + +.noNotes { + color: var(--text-tertiary-2); + text-transform: lowercase; +} diff --git a/src/components/ProfileSidebar/ProfileSidebar.tsx b/src/components/ProfileSidebar/ProfileSidebar.tsx new file mode 100644 index 0000000..94fecbb --- /dev/null +++ b/src/components/ProfileSidebar/ProfileSidebar.tsx @@ -0,0 +1,47 @@ +import { Component, For, Show } from 'solid-js'; +import { + PrimalNote, + PrimalUser +} from '../../types/primal'; + +import styles from './ProfileSidebar.module.scss'; +import SmallNote from '../SmallNote/SmallNote'; +import { useIntl } from '@cookbook/solid-intl'; +import { userName } from '../../stores/profile'; +import { profile as t } from '../../translations'; + + +const ProfileSidebar: Component<{ notes: PrimalNote[] | undefined, profile: PrimalUser | undefined }> = (props) => { + + const intl = useIntl(); + + return ( + +
+
+ {intl.formatMessage(t.sidebarCaption)} +
+
+ + 0} + fallback={ +
+ {intl.formatMessage( + t.sidebarNoNotes, + { + name: userName(props.profile), + }, + )} +
+ } + > + + {(note) => } + +
+
+ ); +} + +export default ProfileSidebar; diff --git a/src/components/ProfileWidget/ProfileWidget.module.scss b/src/components/ProfileWidget/ProfileWidget.module.scss new file mode 100644 index 0000000..309e615 --- /dev/null +++ b/src/components/ProfileWidget/ProfileWidget.module.scss @@ -0,0 +1,113 @@ +.userProfile { + display: grid; + width: 146px; + height: 46px; + grid-template-columns: 42px 1fr; + grid-column-gap: 5px; + position: relative; + align-items: center; + text-decoration: none; + + .background { + position: absolute; + top: 0; + left: 0; + width: 146px; + height: 46px; + background-color: var(--background-input); + background: linear-gradient(var(--background-input), var(--background-input)) padding-box, + var(--brand-gradient) border-box; + border-radius: 21px; + border: 1px solid transparent; + opacity: 0.5; + transition: opacity 0.4s; + + } + + &:hover { + .background { + opacity: 1; + transition: opacity 0.4s; + } + } + +} +.avatar { + z-index: 1; + padding: 2px; +} + +.userInfo { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: center; + z-index: 1; + padding: 2px; +} + +.userName { + font-size: 12px; + line-height: 16px; + font-weight: 700; + color: var(--text-primary); + width: 90px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.userVerification { + font-size: 12px; + line-height: 16px; + font-weight: 400; + color: var(--text-tertiary); + width: 92px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.contextMenu { + display: flex; + align-items: center; +} + +.contextIcon { + display: inline-block; + width: 10px; + height: 2px; + vertical-align: middle; + + background-color: var(--text-secondary); + -webkit-mask: url(../../assets/icons/context.svg) no-repeat center; + mask: url(../../assets/icons/context.svg) no-repeat center; +} + +@media only screen and (max-width: 1300px) { + .userProfile { + display: grid; + width: 48px; + grid-template-columns: 48px; + grid-column-gap: 0px; + + .background { + width: 46px; + height: 46px; + } + } + + .userInfo { + display: none; + } + + .contextMenu { + display: none; + } +} + +@media only screen and (max-width: 720px) { + .userProfile { + display: none; + } +} diff --git a/src/components/ProfileWidget/ProfileWidget.tsx b/src/components/ProfileWidget/ProfileWidget.tsx new file mode 100644 index 0000000..2e2ebda --- /dev/null +++ b/src/components/ProfileWidget/ProfileWidget.tsx @@ -0,0 +1,40 @@ +import { Component, Show } from 'solid-js'; +import { A } from '@solidjs/router'; +import Avatar from '../Avatar/Avatar'; +import { useAccountContext } from '../../contexts/AccountContext'; +import { trimVerification } from '../../lib/profile'; +import { hexToNpub } from '../../lib/keys'; + +import styles from './ProfileWidget.module.scss'; + +const ProfileWidget: Component = () => { + + const account = useAccountContext() + + const activeUser = () => account?.activeUser; + + return ( + + ); +} + +export default ProfileWidget; diff --git a/src/components/ReplyToNote/ReplyToNote.module.scss b/src/components/ReplyToNote/ReplyToNote.module.scss new file mode 100644 index 0000000..714a3c6 --- /dev/null +++ b/src/components/ReplyToNote/ReplyToNote.module.scss @@ -0,0 +1,175 @@ +.newNoteBorder { + width: 100%; + min-height: 120px; + padding: 1px; + background: var(--brand-gradient); + border-radius: 6px; + display: block; + position: relative; + margin-block: 5px; +} + +.newNote { + width: 100%; + height: 100%; + min-height: 120px; + font-size: 18px; + line-height: 20px; + margin: 0px; + border-radius: 6px; + border: none; + color: var(--text-tertiary); + background-color: var(--background-site); + display: grid; + grid-template-columns: 92px 1fr; + + .leftSide { + padding: 16px 21px; + } +} + +.controls { + display: flex; + justify-content: flex-end; + align-items: center; + margin: 0px 12px 12px 0px; + >button { + width: 80px; + height: 28px; + margin: 0px 0px 0px 8px; + } +} + +.primaryButton { + border: none; + border-radius: 6px; + margin: 0px 8px; + padding: 0px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: var(--text-primary); + >span { + opacity: 0.75; + } +} + + +.secondaryButton { + border: none; + border-radius: 6px; + margin: 0px 15px 0px 0px; + padding: 1px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: var(--text-tertiary-2); + >div { + width: 100%; + height: 100%; + vertical-align: middle; + border-radius: 6px; + background-color: var(--background-card); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } +} + +.border { + height: 36px; + padding: 1px; + background: var(--brand-gradient); + border-radius: 6px; + + .input { + height: 34px; + width: 100%; + font-size: 18px; + line-height: 20px; + margin: 0px; + border-radius: 6px; + border: none; + color: var(--text-tertiary); + background-color: var(--background-site); + display: flex; + align-items: center; + padding-inline: 12px; + + .userName { + max-width: 408px; + text-overflow: ellipsis; + white-space: nowrap; + word-wrap: break-word; + overflow: hidden; + margin-left: 6px; + } + } +} + +.replyBox { + margin: 4px 0px; + // padding: 30px 22px; + background-color: var(--background-card); + border: none; + outline: none; + display: grid; + grid-template-columns: 72px 1fr; +} + +.leftSideClosed { + // margin-top: -13px; + // margin-left: -1px; + padding-top: 3px; + padding-left: 2px; +} + +.rightSideClosed { + padding-top: 10px; +} + +@media only screen and (max-width: 720px) { + .border { + height: 36px; + padding: 1px; + background: var(--brand-gradient); + border-radius: 6px; + margin-left: 10px; + + .input { + height: 34px; + font-size: 18px; + line-height: 20px; + margin: 0px; + border-radius: 6px; + border: none; + color: var(--text-tertiary); + background-color: var(--background-site); + display: flex; + align-items: center; + padding-left: 12px; + } + } + + .replyBox { + margin-top: 4px; + padding: 30px 12px; + width: calc(100vw - (100vw - 100%)); + background-color: var(--background-card); + } +} + + +.searchSuggestions { + width: 300px; + background-color: var(--background-site); + border: 1px solid var(--text-tertiary-2); + // box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.8); + border-radius: 4px; + + position: absolute; + z-index: 50; +} diff --git a/src/components/ReplyToNote/ReplyToNote.tsx b/src/components/ReplyToNote/ReplyToNote.tsx new file mode 100644 index 0000000..9d794d3 --- /dev/null +++ b/src/components/ReplyToNote/ReplyToNote.tsx @@ -0,0 +1,136 @@ +import { useIntl } from "@cookbook/solid-intl"; +import { Component, createEffect, createSignal, Show } from "solid-js"; +import { useAccountContext } from "../../contexts/AccountContext"; +import { userName } from "../../stores/profile"; +import { actions as t } from "../../translations"; +import { PrimalNote } from "../../types/primal"; +import Avatar from "../Avatar/Avatar"; +import EditBox from "../NewNote/EditBox/EditBox"; +import styles from "./ReplyToNote.module.scss"; + +type AutoSizedTextArea = HTMLTextAreaElement & { _baseScrollHeight: number }; + +const getScrollHeight = (elm: AutoSizedTextArea) => { + var savedValue = elm.value + elm.value = '' + elm._baseScrollHeight = elm.scrollHeight + elm.value = savedValue +} + +const onExpandableTextareaInput: (event: InputEvent) => void = (event) => { + + const maxHeight = document.documentElement.clientHeight || window.innerHeight || 0; + + const elm = event.target as AutoSizedTextArea ; + + if(elm.nodeName !== 'TEXTAREA' || elm.id !== 'reply_to_note_text_area') { + return; + } + + const minRows = parseInt(elm.getAttribute('data-min-rows') || '0'); + + !elm._baseScrollHeight && getScrollHeight(elm); + + if (elm.scrollHeight >= (maxHeight - 70)) { + return; + } + + elm.rows = minRows + const rows = Math.ceil((elm.scrollHeight - elm._baseScrollHeight) / 20) + elm.rows = minRows + rows +} + +const ReplyToNote: Component<{ note: PrimalNote }> = (props) => { + + const intl = useIntl(); + + const [open, setOpen] = createSignal(false); + + const account = useAccountContext(); + + const activeUser = () => account?.activeUser; + + const openReplyBox = () => { + setOpen(true); + }; + + const closeReplyToNote = () => { + setOpen(false); + }; + + createEffect(() => { + if (open()) { + setTimeout(() => { + const newNoteTextArea = document.getElementById('reply_new_note_text_area') as HTMLTextAreaElement | undefined; + + if (!newNoteTextArea) { + return; + } + newNoteTextArea?.focus(); + }, 100); + } + else { + const newNoteTextArea = document.getElementById('reply_new_note_text_area') as HTMLTextAreaElement | undefined; + + if (!newNoteTextArea) { + return; + } + + newNoteTextArea.value = ''; + } + }); + + return ( + +
+ +
+
+
+
+ + {intl.formatMessage( + t.noteReply, + { + name: userName(props.note.user), + }, + )} + +
+
+
+ + } + > +
+
+
+ +
+
+ +
+
+
+
+ ) +} + +export default ReplyToNote; diff --git a/src/components/Search/Search.module.scss b/src/components/Search/Search.module.scss new file mode 100644 index 0000000..ee19a60 --- /dev/null +++ b/src/components/Search/Search.module.scss @@ -0,0 +1,89 @@ +.search { + display: grid; + grid-template-columns: 16px 1fr; + grid-column-gap: 15px; + border-radius: 22px; + background-color: var(--background-input); + width: 300px; + padding-right: 22px; + + &:hover { + input { + color: var(--text-primary); + } + + .searchIcon { + background-color: var(--text-primary); + } + } + + input { + height: 36px; + font-weight: 700; + font-size: 16px; + line-height: 20px; + padding: 0px 12px; + margin-bottom: 0px; + border: none; + background-color: var(--background-input); + color: var(--text-tertiary); + + &:focus { + border: none; + box-shadow: none; + } + + + &::placeholder { + color: var(--text-tertiary); + } + } + + .searchIcon { + display: inline-block; + width: 16px; + height: 16px; + margin-left: 16px; + margin-top: 10px; + + background-color: var(--text-tertiary); + -webkit-mask: url(../../assets/icons/search.svg) 0 0/16px 16px; + mask: url(../../assets/icons/search.svg) 0 0/16px 16px; + } +} + +.searchHolder { + position: relative; + width: 300px; + padding-top: 26px; +} + +.searchSuggestions { + width: 300px; + background-color: var(--background-site); + border: 1px solid var(--text-tertiary-2); + // box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.8); + border-radius: 4px; + + position: absolute; + top: 76px; +} + +.loadingOverlay { + position: absolute; + width: 100%; + height: 100%; + z-index: 10; + background-color: var(--background-site); + opacity: 0.8; +} + +.searchIcon { + display: inline-block; + width: 18px; + height: 18px; + + background-color: var(--text-primary); + -webkit-mask: url(../../assets/icons/search.svg) 0 0/18px 18px; + mask: url(../../assets/icons/search.svg) 0 0/18px 18px; +} diff --git a/src/components/Search/Search.tsx b/src/components/Search/Search.tsx new file mode 100644 index 0000000..96e30bf --- /dev/null +++ b/src/components/Search/Search.tsx @@ -0,0 +1,191 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { useNavigate } from '@solidjs/router'; +import { Component, createEffect, createSignal, For, Show } from 'solid-js'; +import { useSearchContext } from '../../contexts/SearchContext'; +import { nip05Verification, userName } from '../../stores/profile'; +import { PrimalUser } from '../../types/primal'; +import { debounce } from '../../utils'; +import Avatar from '../Avatar/Avatar'; +import Loader from '../Loader/Loader'; +import { useToastContext } from '../Toaster/Toaster'; +import { placeholders, search as t } from '../../translations'; + +import styles from './Search.module.scss'; +import SearchOption from './SearchOption'; + + +const Search: Component<{ + onInputConfirm?: (query: string) => void, + onUserSelect?: (selected: PrimalUser | string) => void, + noLinks?: boolean, + hideDefault?: boolean, + placeholder?: string, +}> = (props) => { + + const toaster = useToastContext(); + const search = useSearchContext(); + const navigate = useNavigate(); + const intl = useIntl(); + + const [query, setQuery] = createSignal(''); + const [isFocused, setIsFocused] = createSignal(false); + + const queryUrl = () => query().replaceAll('#', '%23'); + + let input: HTMLInputElement | undefined; + + const onSearch = (e: SubmitEvent) => { + e.preventDefault(); + + const form = e.target as HTMLFormElement; + + const data = new FormData(form); + + const q = data.get('searchQuery') as string || ''; + + if (q.length > 0) { + if (props.onInputConfirm) { + props.onInputConfirm(q); + } + else { + navigate(`/search/${q.replaceAll('#', '%23')}`); + } + onBlur(); + resetQuery(); + } + else { + toaster?.sendInfo(intl.formatMessage(t.invalid)) + } + return false; + } + + const onInput = (e: InputEvent) => { + setIsFocused(true); + debounce(() => { + // @ts-ignore + const value = e.target?.value; + + if (value.startsWith('npub') || value.startsWith('nprofile')) { + search?.actions.findUserByNupub(value); + return; + } + + setQuery(value || ''); + }, 500); + }; + + const onFocus = (e: FocusEvent) => { + setIsFocused(true); + } + + const onBlur = (e?: FocusEvent) => { + setTimeout(() => { + setIsFocused(false); + }, 200); + } + + const resetQuery = () => { + setQuery(''); + + if (input) { + input.value = ''; + } + }; + + const selectUser = (user: PrimalUser) => { + if (props.onUserSelect) { + props.onUserSelect(user); + } + resetQuery(); + } + + createEffect(() => { + if (!isFocused()) { + return; + } + + if (query().length === 0) { + search?.actions.getRecomendedUsers(); + return; + } + + search?.actions.findUsers(query()); + }); + + return ( +
+
+
+ +
+ + +
+ +
+ +
+
+ + 0} + fallback={ +
} + underline={true} + /> + } + > +
} + underline={true} + onClick={resetQuery} + /> + + + + + {(user) => ( + } + statNumber={search?.scores[user.pubkey]} + statLabel={intl.formatMessage(t.followers)} + onClick={() => selectUser(user)} + /> + )} + + + + + + ) +} + +export default Search; diff --git a/src/components/Search/SearchOption.module.scss b/src/components/Search/SearchOption.module.scss new file mode 100644 index 0000000..b927dd6 --- /dev/null +++ b/src/components/Search/SearchOption.module.scss @@ -0,0 +1,75 @@ + +.userResult { + display: grid; + grid-template-columns: 36px 1fr 60px; + padding: 8px; + margin: 4px; + text-decoration: none; + border-radius: 4px; + cursor: pointer; + + &:hover, &:focus, &.highlight { + background-color: var(--background-input); + } + + .userAvatar { + display: flex; + align-items: center; + justify-content: center; + + .searchIcon { + display: inline-block; + width: 18px; + height: 18px; + + background-color: var(--text-primary); + -webkit-mask: url(../../assets/icons/search.svg) 0 0/18px 18px; + mask: url(../../assets/icons/search.svg) 0 0/18px 18px; + } + } + + .userInfo { + margin-left: 6px; + display: flex; + flex-direction: column; + justify-content: center; + max-width: 172px; + } + + .userName { + font-weight: 700; + font-size: 14px; + line-height: 16px; + color: var(--text-primary); + } + + .verification { + font-weight: 400; + font-size: 14px; + line-height: 16px; + color: var(--text-secondary-2); + } + + .userStats { + display: flex; + flex-direction: column; + align-items: flex-end; + .followerNumber { + font-weight: 700; + font-size: 12px; + line-height: 16px; + color: var(--text-primary) + } + + .followerLabel { + font-weight: 400; + font-size: 12px; + line-height: 14px; + color: var(--text-secondary-2); + } + } +} + +.underline { + border-bottom: 1px solid var(--subtile-devider); +} diff --git a/src/components/Search/SearchOption.tsx b/src/components/Search/SearchOption.tsx new file mode 100644 index 0000000..ef29139 --- /dev/null +++ b/src/components/Search/SearchOption.tsx @@ -0,0 +1,80 @@ +import { A } from '@solidjs/router'; +import { Component, JSXElement, Show } from 'solid-js'; +import { truncateNumber } from '../../lib/notifications'; +import { truncateName, } from '../../stores/profile'; + + +import styles from './SearchOption.module.scss'; + + +const SearchOption: Component<{ + href?: string, + title: string, + description?: string, + icon: JSXElement, + statNumber?: number, + statLabel?: string, + underline?: boolean, + onClick?: (e?: MouseEvent) => void, + highlighted?: boolean, +}> = (props) => { + + const Content: Component<{ children: JSXElement }> = (prp) => { + const klass = () => `${styles.userResult} + ${props.underline ? styles.underline : ''} + ${props.highlighted ? styles.highlight : ''}`; + + return ( + + {prp.children} + + } + > + + {prp.children} + + + ); + }; + + return ( + +
+ {props.icon} +
+
+
+ {props.title} +
+ 0}> +
+ {truncateName(props.description || '')} +
+
+
+ +
+
+ {truncateNumber(props.statNumber || 0)} +
+
+ {props.statLabel} +
+
+
+
+ ); +} + +export default SearchOption; diff --git a/src/components/SearchSidebar/SearchSidebar.tsx b/src/components/SearchSidebar/SearchSidebar.tsx new file mode 100644 index 0000000..4b7caeb --- /dev/null +++ b/src/components/SearchSidebar/SearchSidebar.tsx @@ -0,0 +1,21 @@ +import { Component } from 'solid-js'; +import { PrimalUser } from '../../types/primal'; +import { useIntl } from '@cookbook/solid-intl'; +import { search as t } from '../../translations'; +import PeopleList from '../PeopleList/PeopleList'; + + +const SearchSidebar: Component<{ users: PrimalUser[] }> = (props) => { + + const intl = useIntl(); + + return ( + <> + + + ); +} + +export default SearchSidebar; diff --git a/src/components/SelectBox/SelectBox.scss b/src/components/SelectBox/SelectBox.scss new file mode 100644 index 0000000..f1fdea3 --- /dev/null +++ b/src/components/SelectBox/SelectBox.scss @@ -0,0 +1,240 @@ +.feed_select { + height: 20px; + font-size: 14px; + line-height: 16px; + padding: 0px; + margin: 0px; + width: auto; + border: none; + text-align: right; + background-position: center right !important; + color: var(--text-tertiary-2); + padding-right: 6px; + + .solid-select-container { + position: relative; + } + + .solid-select-control { + margin: 0px 0px 0px 8px; + padding: 0; + cursor: pointer; + pointer-events:painted; + width: calc(100% - 8px); + display: flex; + align-items: center; + + &:after { + content: ''; + display: inline-block; + margin-left: 8px; + width: 18px; + height: 18px; + padding-right: 6px; + + background-color: var(--text-tertiary-2); + -webkit-mask: url(../../assets/icons/feed_picker.svg) no-repeat 0 0/ 14px 14px; + mask: url(../../assets/icons/feed_picker.svg) no-repeat 0 0/ 14px 14px; + } + + &:hover { + color: var(--text-primary); + &:after { + background-color: var(--text-primary); + } + } + } + + .highlighted { + color: var(--text-primary); + &:after { + background-color: var(--text-primary); + } + } + + .solid-select-option { + cursor: pointer; + padding-right: 34px; + } + + .solid-select-option:hover { + background-color: var(--background-card); + } + .solid-select-option[data-focused=true] { + background-color: unset; + + &:hover { + background-color: var(--background-card); + } + } + .solid-select-option[data-disabled=true] { + padding-right: 10px; + color: var(--text-primary); + + &:after { + content: ''; + display: inline-block; + margin-left: 14px; + width: 10px; + height: 10px; + + background-color: var(--text-primary); + -webkit-mask: url(../../assets/icons/check.svg) no-repeat center; + mask: url(../../assets/icons/check.svg) no-repeat center; + } + } + + .solid-select-list { + margin-top: 0; + padding: 8px; + border: solid 1px var(--text-tertiary-2); + border-radius: 4px; + background-color: var(--background-site); + right: 0; + } + + .solid-select-input { + max-height: 0px; + height: 0px; + box-shadow: none; + margin: 0; + padding: 0; + font-size: 16px; + cursor: pointer; + } + + .solid-select-single-value { + caret-color: transparent; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 100%; + } + +} +.selector { + height: 20px; + font-size: 14px; + line-height: 16px; + padding: 0px; + margin: 0px; + width: 179px; + border: none; + text-align: right; + background-position: center right !important; + color: var(--text-secondary); +} + +.phone_feed_select { + position: relative; + height: 20px; + font-size: 18px; + line-height: 18px; + font-weight: 700; + padding: 0px; + margin: 0px; + border: none; + text-align: right; + background-position: center right !important; + color: var(--text-primary); + padding-right: 6px; + width: 100%; + + .solid-select-control { + margin: 0px 0px 0px 8px; + padding: 0; + cursor: pointer; + pointer-events:painted; + width: 100%; + display: flex; + align-items: center; + + &:after { + content: ''; + display: inline-block; + margin-left: 16px; + width: 18px; + height: 18px; + + background-color: var(--text-primary); + -webkit-mask: url(../../assets/icons/feed_picker.svg) no-repeat 0 0/ 14px 14px; + mask: url(../../assets/icons/feed_picker.svg) no-repeat 0 0/ 14px 14px; + } + + &:hover { + color: var(--text-primary); + &:after { + background-color: var(--text-primary); + } + } + } + + .highlighted { + color: var(--text-primary); + &:after { + background-color: var(--text-primary); + } + } + + .solid-select-option { + cursor: pointer; + padding-right: 34px; + color: var(--text-tertiary-2); + padding-block: 24px; + } + + .solid-select-option:hover { + background-color: var(--background-card); + } + .solid-select-option[data-focused=true] { + background-color: unset; + + &:hover { + background-color: var(--background-card); + } + } + .solid-select-option[data-disabled=true] { + padding-right: 10px; + color: var(--text-primary); + + &:after { + content: ''; + display: inline-block; + margin-left: 14px; + width: 10px; + height: 10px; + + background-color: var(--text-primary); + -webkit-mask: url(../../assets/icons/check.svg) no-repeat center; + mask: url(../../assets/icons/check.svg) no-repeat center; + } + } + + .solid-select-list { + margin-top: 0; + padding: 8px; + border: solid 1px var(--text-tertiary-2); + border-radius: 4px; + background-color: var(--background-site); + right: 0; + } + + .solid-select-input { + max-height: 0px; + height: 0px; + box-shadow: none; + margin: 0; + padding: 0; + font-size: 16px; + cursor: pointer; + } + + .solid-select-single-value { + caret-color: transparent; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + display: flex; + max-width: 100%; + } +} diff --git a/src/components/SelectBox/SelectBox.tsx b/src/components/SelectBox/SelectBox.tsx new file mode 100644 index 0000000..f309538 --- /dev/null +++ b/src/components/SelectBox/SelectBox.tsx @@ -0,0 +1,45 @@ +import { useIntl } from "@cookbook/solid-intl"; +import { Select, createOptions } from "@thisbeyond/solid-select"; + +// Import default styles. (All examples use this via a global import) +import "@thisbeyond/solid-select/style.css"; +import { Component } from "solid-js"; +import { placeholders } from "../../translations"; +import { FeedOption } from "../../types/primal"; + +// Apply custom styling. See stylesheet below. +import "./SelectBox.scss"; + +const SelectBox: Component<{ options: () => FeedOption[], onChange: (value: any) => void, initialValue: any, isSelected: (value: any) => boolean, isPhone?: boolean }> = (props) => { + + const intl = useIntl(); + + const opts = createOptions(props.options, { key: 'label', disable: props.isSelected }) + + const onFocus = () => { + const control = document.querySelector('.solid-select-control'); + control?.classList.add('highlighted'); + } + + const onBlur = () => { + const control = document.querySelector('.solid-select-control'); + control?.classList.remove('highlighted'); + } + + return ( + + +
+
+ Set custom zap amount presets: +
+
+ + {(value, index) => + changeZapOptions(e, index())} + /> + } + +
+
+ + ); +} + +export default SettingsZap; diff --git a/src/components/SmallCallToAction/SmallCallToAction.module.scss b/src/components/SmallCallToAction/SmallCallToAction.module.scss new file mode 100644 index 0000000..5825fa7 --- /dev/null +++ b/src/components/SmallCallToAction/SmallCallToAction.module.scss @@ -0,0 +1,42 @@ +.callToAction { + display: grid; + // height: 32px; + min-width: 50%; + grid-template-columns: 32px 1fr; + grid-column-gap: 10px; + align-items: center; + background-color: unset; + margin: 0px; + padding: 0px; + border: none; + outline: none; + + p { + font-size: 34px; + line-height: 34px; + padding: 0px; + margin: 0px; + } + + .border { + height: 28px; + padding: 1px; + background: var(--brand-gradient); + border-radius: 6px; + } + + .input { + height: 26px; + font-size: 14px; + line-height: 20px; + font-weight: 400; + margin: 0px; + border-radius: 6px; + border: none; + color: var(--text-tertiary); + background-color: var(--background-site); + display: flex; + align-items: center; + padding-left: 12px; + } +} diff --git a/src/components/SmallCallToAction/SmallCallToAction.tsx b/src/components/SmallCallToAction/SmallCallToAction.tsx new file mode 100644 index 0000000..faa7675 --- /dev/null +++ b/src/components/SmallCallToAction/SmallCallToAction.tsx @@ -0,0 +1,35 @@ +import { Component } from 'solid-js'; +import Avatar from '../Avatar/Avatar'; + +import styles from './SmallCallToAction.module.scss'; +import { useAccountContext } from '../../contexts/AccountContext'; +import { PrimalUser } from '../../types/primal'; +import { placeholders } from '../../translations'; +import { useIntl } from '@cookbook/solid-intl'; + +const SmallCallToAction: Component<{ activeUser: PrimalUser | undefined }> = (params) => { + + const account = useAccountContext(); + const intl = useIntl(); + + const showNewNoteForm = () => { + account?.actions?.showNewNoteForm(); + }; + + return ( + + ); +} + +export default SmallCallToAction; diff --git a/src/components/SmallNote/SmallNote.module.scss b/src/components/SmallNote/SmallNote.module.scss new file mode 100644 index 0000000..3d7ed28 --- /dev/null +++ b/src/components/SmallNote/SmallNote.module.scss @@ -0,0 +1,85 @@ +.smallNote { + margin-bottom: 18px; + display: grid; + grid-template-columns: 24px 1fr; + grid-template-rows: 1fr; + grid-template-areas: "avatar content"; + grid-column-gap: 12px; + width: 300px; + + .avatar { + grid-area: avatar; + display: grid; + justify-items: center; + + .avatarImg { + width: 24px; + height: 24px; + border-radius: 50%; + } + } + + .content { + grid-area: content; + display: grid; + grid-template-columns: 1fr; + grid-template-rows: 16px 1fr; + grid-row-gap: 2px; + grid-template-areas: "header" "message"; + + .header { + grid-area: header; + font-size: 14px; + line-height: 18px; + display: flex; + align-items: center; + + .name { + color: var(--text-secondary-2); + font-weight: 800; + max-width: 120px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + } + + .time{ + margin: 0px 2px; + color: var(--text-tertiary); + font-weight: 400; + &::before { + content: "|"; + padding: 0px 2px; + } + } + } + + .message { + grid-area: message; + word-break: break-word; + font-size: 14px; + line-height: 18px; + font-weight: 400; + color: var(--text-tertiary); + width: 264px; + + overflow: hidden; + display: -webkit-box; + line-clamp: 2; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -ms-box-orient: vertical; + text-overflow: ellipsis; + } + + &:hover { + .message, .name, .time { + color: var(--text-primary); + text-decoration: underline; + } + + cursor: pointer; + } + } +} diff --git a/src/components/SmallNote/SmallNote.tsx b/src/components/SmallNote/SmallNote.tsx new file mode 100644 index 0000000..0e3e970 --- /dev/null +++ b/src/components/SmallNote/SmallNote.tsx @@ -0,0 +1,107 @@ +import { Component, JSXElement, Show } from 'solid-js'; +import Avatar from '../Avatar/Avatar'; + +import styles from './SmallNote.module.scss'; +import { A } from '@solidjs/router'; +import { PrimalNote } from '../../types/primal'; +import { useThreadContext } from '../../contexts/ThreadContext'; +import { date } from '../../lib/dates'; +import { authorName } from '../../stores/profile'; +import { note as t } from '../../translations'; +import { useIntl } from '@cookbook/solid-intl'; + + +const SmallNote: Component<{ note: PrimalNote, children?: JSXElement }> = (props) => { + + const threadContext = useThreadContext(); + const intl = useIntl(); + + const navToThread = (note: PrimalNote) => { + threadContext?.actions.setPrimaryNote(note); + }; + + const nameOfAuthor = () => { + return authorName(props.note.user || { pubkey: props.note.post.pubkey }); + }; + + const parsedContent = (text: string) => { + const regex = /\#\[([0-9]*)\]/g; + let parsed = text; + + let refs = []; + let match; + + while((match = regex.exec(text)) !== null) { + refs.push(match[1]); + } + + if (refs.length > 0) { + for(let i =0; i < refs.length; i++) { + let r = parseInt(refs[i]); + + const tag = props.note.post.tags[r]; + + if (tag[0] === 'e' && props.note.mentionedNotes && props.note.mentionedNotes[tag[1]]) { + const embeded = ( + {intl.formatMessage( + t.mentionIndication, + { + name: authorName(props.note.user), + }, + )} + ); + + // @ts-ignore + parsed = parsed.replace(`#[${r}]`, embeded.outerHTML); + } + + if (tag[0] === 'p' && props.note.mentionedUsers && props.note.mentionedUsers[tag[1]]) { + const user = props.note.mentionedUsers[tag[1]]; + + const link = (@{authorName(user)}); + + // @ts-ignore + parsed = parsed.replace(`#[${r}]`, link.outerHTML); + } + } + } + + return parsed; + + }; + + return ( + + ); +} + +export default SmallNote; diff --git a/src/components/StickySidebar/StickySidebar.module.scss b/src/components/StickySidebar/StickySidebar.module.scss new file mode 100644 index 0000000..adae438 --- /dev/null +++ b/src/components/StickySidebar/StickySidebar.module.scss @@ -0,0 +1,15 @@ +.trendingSection { + width: 300px; + margin-bottom: 228px; +} + +.stickyWrapper { + position: fixed; + height: 100%; + overflow: hidden; + overflow-y: scroll; + + &::-webkit-scrollbar{ + display: none; + } +} diff --git a/src/components/StickySidebar/StickySidebar.tsx b/src/components/StickySidebar/StickySidebar.tsx new file mode 100644 index 0000000..a742522 --- /dev/null +++ b/src/components/StickySidebar/StickySidebar.tsx @@ -0,0 +1,21 @@ +import { Component, JSXElement } from 'solid-js'; +import Wormhole from '../Wormhole/Wormhole'; + +import styles from './StickySidebar.module.scss'; + +const StickySidebar: Component<{ children: JSXElement }> = (props) => { + + return ( + + + + ); +} + +export default StickySidebar; diff --git a/src/components/ThemeChooser/ThemeChooser.module.scss b/src/components/ThemeChooser/ThemeChooser.module.scss new file mode 100644 index 0000000..53afaf8 --- /dev/null +++ b/src/components/ThemeChooser/ThemeChooser.module.scss @@ -0,0 +1,6 @@ + +.themeChooser { + display: grid; + width: 100%; + grid-template-columns: 1fr 1fr 1fr 1fr; +} diff --git a/src/components/ThemeChooser/ThemeChooser.tsx b/src/components/ThemeChooser/ThemeChooser.tsx new file mode 100644 index 0000000..c025fc8 --- /dev/null +++ b/src/components/ThemeChooser/ThemeChooser.tsx @@ -0,0 +1,31 @@ +import { Component, For } from 'solid-js'; + +import styles from './ThemeChooser.module.scss'; +import ThemeOption from './ThemeOption/ThemeOption'; +import { useSettingsContext } from '../../contexts/SettingsContext'; +import { PrimalTheme } from '../../types/primal'; + +const ThemeChooser: Component = () => { + + const settings = useSettingsContext(); + + const onSelect = (theme: PrimalTheme) => { + settings?.actions?.setTheme(theme); + }; + + return ( +
+ + {(theme) => ( + onSelect(theme)} + /> + )} + +
+ ); +} + +export default ThemeChooser; diff --git a/src/components/ThemeChooser/ThemeOption/ThemeOption.module.scss b/src/components/ThemeChooser/ThemeOption/ThemeOption.module.scss new file mode 100644 index 0000000..3a1ae2d --- /dev/null +++ b/src/components/ThemeChooser/ThemeOption/ThemeOption.module.scss @@ -0,0 +1,98 @@ + +.themeOption { + width: 128px; + >p { + font-size: 14px; + line-height: 16px; + font-weight: 500; + color: var(--text-primary); + margin-top: 8px; + text-align: center; + } +} + + +@mixin themeOptionButton { + position: relative; + width: 100%; + height: 100px; + background-color: unset; + border: none; + margin: 0px; + padding: 0px; + display: grid; + place-content: center; + border-radius: 6px; + + >img { + width: 58px; + height: 58px; + } +} + +.selected { + border: solid 1px var(--brand-1) !important; +} + +.sunset { + @include themeOptionButton(); + background-color: var(--dark-back); +} + +.midnight { + @include themeOptionButton(); + background-color: var(--dark-back); +} + +.sunrise { + @include themeOptionButton(); + background-color: var(--light-back); +} + +.ice { + @include themeOptionButton(); + background-color: var(--light-back); +} + +.themeChecked { + position: absolute; + bottom: 4px; + right: 4px; + width: 20px; + height: 20px; + display: flex; + margin: 0px; + padding: 0px; + align-items: center; + justify-content: center; + background: var(--brand-gradient); + border-radius: 50%; + >img { + width: 10px; + height: 10px; + } +} + +@mixin themeUnchecked { + position: absolute; + bottom: 4px; + right: 4px; + width: 20px; + height: 20px; + display: block; + margin: 0px; + padding: 0px; + align-items: center; + justify-content: center; + border-radius: 50%; +} + +.themeUncheckedDark { + @include themeUnchecked(); + background: var(--dark-input); +} + +.themeUncheckedLight { + @include themeUnchecked(); + background: var(--light-input); +} diff --git a/src/components/ThemeChooser/ThemeOption/ThemeOption.tsx b/src/components/ThemeChooser/ThemeOption/ThemeOption.tsx new file mode 100644 index 0000000..2f13136 --- /dev/null +++ b/src/components/ThemeChooser/ThemeOption/ThemeOption.tsx @@ -0,0 +1,40 @@ +import { Component, Show } from 'solid-js'; +import styles from './ThemeOption.module.scss'; + +import check from '../../../assets/icons/check.svg'; +import { PrimalTheme } from '../../../types/primal'; + +const ThemeOption: Component<{ + theme: PrimalTheme, + isSelected: boolean, + onSelect: (value: PrimalTheme) => void, +}> = (props) => { + + const selectedClass = () => { + return props.isSelected ? styles.selected : ''; + }; + + const uncheckedTheme = () => { + return props.theme.dark ? styles.themeUncheckedDark : styles.themeUncheckedLight; + } + + return ( +
+
} + > +
+ + +

{props.theme.label}

+ + ); +} + +export default ThemeOption; diff --git a/src/components/Toaster/Toaster.module.scss b/src/components/Toaster/Toaster.module.scss new file mode 100644 index 0000000..c695aa0 --- /dev/null +++ b/src/components/Toaster/Toaster.module.scss @@ -0,0 +1,50 @@ +.toastHolder { + position: fixed; + width: 100%; + display: flex; + justify-content: center; + align-items: center; + z-index: 100; +} + +@keyframes fadein { + from { margin-top: -70px;} + to { margin-top: 12px;} +} + +@mixin toastMessage { + min-width: 100px; + min-height: 44px; + margin: 12px; + animation: fadein 0.6s; + color: white; + font-weight: 400; + font-size: 18px; + line-height: 20px; + border-radius: 6px; + display: flex; + justify-content: center; + align-items: center; + padding-inline: 16px; +} + +.toastSuccess { + @include toastMessage(); + background: linear-gradient(0deg, rgba(41, 91, 2, 0.5), rgba(41, 91, 2, 0.5)), #000000; + border-color: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.4); +} + +.toastWarning { + @include toastMessage(); + background: linear-gradient(0deg, rgba(144, 3, 3, 0.5), rgba(144, 3, 3, 0.5)), #000000;; + border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.4); +} + +.toastInfo { + @include toastMessage(); + background-color: #222222; + border: 1px solid rgba(255, 255, 255, 0.1); + box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.4); +} diff --git a/src/components/Toaster/Toaster.tsx b/src/components/Toaster/Toaster.tsx new file mode 100644 index 0000000..7d3ff33 --- /dev/null +++ b/src/components/Toaster/Toaster.tsx @@ -0,0 +1,68 @@ +import styles from "./Toaster.module.scss"; + +import { Component, createContext, JSX, useContext } from "solid-js"; + +type ContextProps = { children: number | boolean | Node | JSX.ArrayElement | JSX.FunctionElement | (string & {}) | null | undefined; }; + +type ToastContextStore = { + sendWarning: (message: string) => void, + sendSuccess: (message: string) => void, + sendInfo: (message: string) => void, + notImplemented: () => void, +} + +const ToastContext = createContext(); + +const Toaster: Component = (props) => { + let toastHolder: HTMLDivElement | undefined = undefined; + + const toastMesage = (message: string, klass: string, duration = 4000) => { + const toaster = document.createElement('div'); + toaster.innerHTML = message; + toaster.classList.add(klass); + setTimeout(() => { + toastHolder?.append(toaster) + }, 0); + + setTimeout(() => { + toastHolder?.removeChild(toaster); + }, duration); + + }; + + const toastData = { + sendWarning: (message: string) => { + toastMesage(message, styles.toastWarning); + }, + sendSuccess: (message: string) => { + toastMesage(message, styles.toastSuccess, 2000); + }, + sendInfo: (message: string) => { + toastMesage(message, styles.toastInfo); + }, + notImplemented: () => { + toastMesage( + 'Feature not available in this preview release. Rest assured, we are working on it. Come back soon!', + styles.toastInfo, + 2000, + ); + }, + }; + + return ( + <> +
+
+ + {props.children} + + + ) +} + +export default Toaster; + +export function useToastContext() { return useContext(ToastContext); } diff --git a/src/components/VerificationCheck/VerificationCheck.module.scss b/src/components/VerificationCheck/VerificationCheck.module.scss new file mode 100644 index 0000000..94a090c --- /dev/null +++ b/src/components/VerificationCheck/VerificationCheck.module.scss @@ -0,0 +1,37 @@ + +.verifiedIcon { + width: 100%; + height: 100%; + display: inline-block; + margin-inline: 2px; + background-color: var(--text-tertiary-2); + -webkit-mask: url(../../assets/icons/verified.svg) no-repeat 0 / 100%; + mask: url(../../assets/icons/verified.svg) no-repeat 0 / 100%; +} + +.verificationIcon { + width: 15px; + height: 15px; + display: inline-block; + position: relative; +} + +.verifiedIconPrimal { + width: 100%; + height: 100%; + display: inline-block; + margin-inline: 2px; + background: var(--brand-gradient); + -webkit-mask: url(../../assets/icons/verified.svg) no-repeat 0 / 100%; + mask: url(../../assets/icons/verified.svg) no-repeat 0 / 100%; +} + +.whiteCheck { + width: 11px; + height: 11px; + position: absolute; + top: 2px; + left: 4px; + border-radius: 50%; + background-color: white; +} diff --git a/src/components/VerificationCheck/VerificationCheck.tsx b/src/components/VerificationCheck/VerificationCheck.tsx new file mode 100644 index 0000000..ab5203a --- /dev/null +++ b/src/components/VerificationCheck/VerificationCheck.tsx @@ -0,0 +1,39 @@ +import styles from "./VerificationCheck.module.scss"; + +import { Component, Match, Switch } from "solid-js"; +import { PrimalUser } from "../../types/primal"; + + +const VerificationCheck: Component<{ user: PrimalUser | undefined }> = (props) => { + + + const isVerifiedByPrimal = () => { + return !!props.user?.nip05 && + props.user?.nip05.endsWith('primal.net'); + } + + const isVerified = () => { + return !!props.user?.nip05 && + !props.user?.nip05.endsWith('primal.net'); + } + + return ( + <> + + +
+ +
+
+ +
+ + +
+
+
+ + ) +} + +export default VerificationCheck; diff --git a/src/components/Wormhole/Wormhole.tsx b/src/components/Wormhole/Wormhole.tsx new file mode 100644 index 0000000..268fea2 --- /dev/null +++ b/src/components/Wormhole/Wormhole.tsx @@ -0,0 +1,24 @@ +import { Component, createSignal, JSXElement, onMount, Show } from 'solid-js'; +import { Portal } from 'solid-js/web'; + +const Wormhole: Component<{children: JSXElement, to: string }> = (props) => { + + const [mounted, setMounted] = createSignal(false); + + onMount(() => { + setTimeout(() => { + // Temporary fix for Portal rendering on initial load. + setMounted(true); + }); + }); + + return ( + + + {props.children} + + + ); +} + +export default Wormhole; diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 0000000..b5c860b --- /dev/null +++ b/src/constants.ts @@ -0,0 +1,251 @@ +import { FeedPage, } from "./types/primal"; +import logoFire from './assets/icons/logo_fire.svg'; +import logoIce from './assets/icons/logo_ice.svg'; +import { MessageDescriptor } from "@cookbook/solid-intl"; + +export const second = 1000; +export const minute = 60 * second; +export const hour = 60 * minute; +export const day = 24 * hour; +export const week = 7 * day; + +export const emptyPage: FeedPage = { + users: {}, + messages: [], + postStats: {}, + noteActions: {}, +} + +export const trendingFeed = { + name: 'Trending, my network', + hex: 'network;trending', + npub: 'trending;network', +}; + +export const themes = [ + { + name: 'sunset', + label: 'sunset wave', + logo: logoFire, + dark: true, + }, + { + name: 'sunrise', + label: 'sunrise wave', + logo: logoFire, + }, + { + name: 'midnight', + label: 'midnight wave', + logo: logoIce, + dark: true, + }, + { + name: 'ice', + label: 'ice wave', + logo: logoIce, + }, +]; + +export const minKnownProfiles: {"names": Record} = { + "names": { + "miljan": "d61f3bc5b3eb4400efdae6169a5c17cabf3246b514361de939ce4a1a0da6ef4a", + "marko": "123afae7d187ba36d6ddcd97dbf4acc59aeffe243f782592ff8f25ed579df306", + "essguess": "0b13870379cf18ae6b6d516d9f0833e0273c7a6758652a698e11f04c9c1a0d29", + "pr": "dd9b989dfe5e0840a92538f3e9f84f674e5f17ab05932efbacb4d8e6c905f302", + "marija": "b8a518a60fab9f3969b62238860f4643003b6437b75d60860dd8de34fb21c931", + "moysie": "2a55ed52ed31f85f8bdef3bdd165aa74265d82c952193d7b76fb4c76cccc4231", + "nikola": "97b988fbf4f8880493f925711e1bd806617b508fd3d28312288507e42f8a3368", + "princfilip": "29c07b40860f06df7c1ada6af2cc6b4c541b76a720542d7ee645c20c9452ffd2", + "highlights": "9a500dccc084a138330a1d1b2be0d5e86394624325d25084d3eca164e7ea698a", + "primal": "532d830dffe09c13e75e8b145c825718fc12b0003f61d61e9077721c7fff93cb", + "andi": "5fd8c6a375c431729a3b78e2080ffff0a1dc63f52e2a868a801151190a31f955", + "rockstar": "91c9a5e1a9744114c6fe2d61ae4de82629eaaa0fb52f48288093c7e7e036f832", + "qa": "88cc134b1a65f54ef48acc1df3665063d3ea45f04eab8af4646e561c5ae99079", + "jack": "82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2", + } +}; + +export const defaultFeeds = [ +]; + +export const timeframeLabels: Record = { + latest: 'latest', + trending: 'trending', + popular: 'popular', + mostzapped: 'most zapped', +}; + +export const scopeLabels: Record = { + follows: 'my follows', + tribe: 'my tribe', + network: 'my network', + global: 'global' +}; + +export const noKey = 'no-key'; + +export enum Kind { + Metadata = 0, + Text = 1, + RecommendRelay = 2, + Contacts = 3, + EncryptedDirectMessage = 4, + EventDeletion = 5, + Repost = 6, + Reaction = 7, + ChannelCreation = 40, + ChannelMetadata = 41, + ChannelMessage = 42, + ChannelHideMessage = 43, + ChannelMuteUser = 44, + + Settings = 30_078, + + ACK = 10_000_098, + NoteStats = 10_000_100, + NetStats = 10_000_101, + LegendStats = 10_000_102, + UserStats = 10_000_105, + OldestEvent = 10_000_106, + Mentions = 10_000_107, + UserScore = 10_000_108, + Notification = 10_000_110, + Timestamp = 10_000_111, + NotificationStats = 10_000_112, + FeedRange = 10_000_113, + NoteActions = 10_000_115, + MessageStats = 10_000_117, + MesagePerSenderStats = 10_000_118, + MediaInfo = 10_000_119, + Upload = 10_000_120, + Uploaded = 10_000_121, +} + +export const relayConnectingTimeout = 5000; + +export enum NotificationType { + NEW_USER_FOLLOWED_YOU = 1,// + USER_UNFOLLOWED_YOU = 2,// + + YOUR_POST_WAS_ZAPPED = 3,// + YOUR_POST_WAS_LIKED = 4,// + YOUR_POST_WAS_REPOSTED = 5,// + YOUR_POST_WAS_REPLIED_TO = 6,// + YOU_WERE_MENTIONED_IN_POST = 7,// + YOUR_POST_WAS_MENTIONED_IN_POST = 8,// + + POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED = 101,// + POST_YOU_WERE_MENTIONED_IN_WAS_LIKED = 102,// + POST_YOU_WERE_MENTIONED_IN_WAS_REPOSTED = 103, + POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO = 104, + + POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED = 201, + POST_YOUR_POST_WAS_MENTIONED_IN_WAS_LIKED = 202,// + POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPOSTED = 203, + POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO = 204, +}; + +export const typeIcons: Record = { + [NotificationType.NEW_USER_FOLLOWED_YOU]: 'user_followed.svg', + [NotificationType.USER_UNFOLLOWED_YOU]: 'user_unfollowed.svg', + + [NotificationType.YOUR_POST_WAS_ZAPPED]: 'post_zapped.svg', + [NotificationType.YOUR_POST_WAS_LIKED]: 'post_liked.svg', + [NotificationType.YOUR_POST_WAS_REPOSTED]: 'post_reposted.svg', + [NotificationType.YOUR_POST_WAS_REPLIED_TO]: 'post_replied.svg', + + [NotificationType.YOU_WERE_MENTIONED_IN_POST]: 'mention.svg', + [NotificationType.YOUR_POST_WAS_MENTIONED_IN_POST]: 'mentioned_post.svg', + + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED]: 'mention_zapped.svg', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_LIKED]: 'mention_liked.svg', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPOSTED]: 'mention_reposted.svg', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO]: 'mention_replied.svg', + + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED]: 'mentioned_post_zapped.svg', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_LIKED]: 'mentioned_post_liked.svg', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPOSTED]: 'mentioned_post_reposted.svg', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO]: 'mentioned_post_replied.svg', + +} + +export const notificationTypeUserProps: Record = { + [NotificationType.NEW_USER_FOLLOWED_YOU]: 'follower', + [NotificationType.USER_UNFOLLOWED_YOU]: 'follower', + + [NotificationType.YOUR_POST_WAS_ZAPPED]: 'who_zapped_it', + [NotificationType.YOUR_POST_WAS_LIKED]: 'who_liked_it', + [NotificationType.YOUR_POST_WAS_REPOSTED]: 'who_reposted_it', + [NotificationType.YOUR_POST_WAS_REPLIED_TO]: 'who_replied_to_it', + + [NotificationType.YOU_WERE_MENTIONED_IN_POST]: 'you_were_mentioned_in', + [NotificationType.YOUR_POST_WAS_MENTIONED_IN_POST]: 'your_post_were_mentioned_in', + + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED]: 'who_zapped_it', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_LIKED]: 'who_liked_it', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPOSTED]: 'who_reposted_it', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO]: 'who_replied_to_it', + + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED]: 'who_zapped_it', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_LIKED]: 'who_liked_it', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPOSTED]: 'who_reposted_it', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO]: 'who_replied_to_it', + +} + +export const notificationTypeNoteProps: Record = { + // [NotificationType.NEW_USER_FOLLOWED_YOU]: 'follower', + // [NotificationType.USER_UNFOLLOWED_YOU]: 'follower', + + [NotificationType.YOUR_POST_WAS_ZAPPED]: 'your_post', + [NotificationType.YOUR_POST_WAS_LIKED]: 'your_post', + [NotificationType.YOUR_POST_WAS_REPOSTED]: 'your_post', + [NotificationType.YOUR_POST_WAS_REPLIED_TO]: 'reply', + + [NotificationType.YOU_WERE_MENTIONED_IN_POST]: 'you_were_mentioned_in', + [NotificationType.YOUR_POST_WAS_MENTIONED_IN_POST]: 'your_post_were_mentioned_in', + + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED]: 'post_you_were_mentioned_in', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_LIKED]: 'post_you_were_mentioned_in', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPOSTED]: 'post_you_were_mentioned_in', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO]: 'reply', + + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED]: 'your_post_were_mentioned_in', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_LIKED]: 'your_post_were_mentioned_in', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPOSTED]: 'your_post_were_mentioned_in', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO]: 'reply', + +} + +export const noteRegex = /nostr:((note|nevent)1\w+)\b|#\[(\d+)\]/g; +export const profileRegex = /nostr:((npub|nprofile)1\w+)\b|#\[(\d+)\]/g; +export const editMentionRegex = /(?:\s|^)@\`(.*?)\`/ig; + +export const medZapLimit = 1000; + + +export const defaultNotificationSettings: Record = { + NEW_USER_FOLLOWED_YOU: true, + USER_UNFOLLOWED_YOU: true, + + YOUR_POST_WAS_ZAPPED: true, + YOUR_POST_WAS_LIKED: true, + YOUR_POST_WAS_REPOSTED: true, + YOUR_POST_WAS_REPLIED_TO: true, + + YOU_WERE_MENTIONED_IN_POST: true, + YOUR_POST_WAS_MENTIONED_IN_POST: true, + + POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED: true, + POST_YOU_WERE_MENTIONED_IN_WAS_LIKED: true, + POST_YOU_WERE_MENTIONED_IN_WAS_REPOSTED: true, + POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO: true, + + POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED: true, + POST_YOUR_POST_WAS_MENTIONED_IN_WAS_LIKED: true, + POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPOSTED: true, + POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO: true, +}; + +export const emojiSearchLimit = 1; diff --git a/src/contexts/AccountContext.tsx b/src/contexts/AccountContext.tsx new file mode 100644 index 0000000..eda8048 --- /dev/null +++ b/src/contexts/AccountContext.tsx @@ -0,0 +1,396 @@ +import { createStore } from "solid-js/store"; +import { + createContext, + createEffect, + JSX, + onCleanup, + onMount, + useContext +} from "solid-js"; +import { + NostrContactsContent, + NostrEOSE, + NostrEvent, + NostrRelays, + NostrWindow, + PrimalNote, + PrimalUser, +} from '../types/primal'; +import { Kind, noKey } from "../constants"; +import { isConnected, refreshSocketListeners, removeSocketListeners, socket, subscribeTo } from "../sockets"; +import { sendContacts, sendLike } from "../lib/notes"; +import { Relay } from "nostr-tools"; +import { APP_ID } from "../App"; +import { getLikes, getProfileContactList, getUserProfiles } from "../lib/profile"; +import { getStorage, saveFollowing, saveLikes, saveRelaySettings } from "../lib/localStore"; +import { closeRelays, connectRelays } from "../lib/relays"; + +export type AccountContextStore = { + likes: string[], + relays: Relay[], + relaySettings: NostrRelays, + publicKey: string | undefined, + activeUser: PrimalUser | undefined, + showNewNoteForm: boolean, + following: string[], + followingSince: number, + hasPublicKey: () => boolean, + isKeyLookupDone: boolean, + actions: { + showNewNoteForm: () => void, + hideNewNoteForm: () => void, + setActiveUser: (user: PrimalUser) => void, + addLike: (note: PrimalNote) => Promise, + setPublicKey: (pubkey: string | undefined) => void, + addFollow: (pubkey: string) => void, + removeFollow: (pubkey: string) => void, + }, +} + +const initialData = { + likes: [], + relays: [], + relaySettings: {}, + publicKey: undefined, + activeUser: undefined, + showNewNoteForm: false, + following: [], + followingSince: 0, + isKeyLookupDone: false, +}; + +export const AccountContext = createContext(); + +export function AccountProvider(props: { children: number | boolean | Node | JSX.ArrayElement | JSX.FunctionElement | (string & {}) | null | undefined; }) { + + const setPublicKey = (pubkey: string | undefined) => { + updateStore('publicKey', () => pubkey); + updateStore('isKeyLookupDone', true); + }; + + const hasPublicKey: () => boolean = () => { + return !!store.publicKey && store.publicKey !== noKey; + }; + + const setRelaySettings = (settings: NostrRelays) => { + updateStore('relaySettings', () => ({ ...settings })); + saveRelaySettings(store.publicKey, settings) + } + + let connecting = false; + + const connectToRelays = (relaySettings: NostrRelays) => { + + if (connecting) { + return; + } + + connecting = true; + + closeRelays(store.relays, + () => { + connectRelays(relaySettings, (connected) => { + updateStore('relays', () => [ ...connected ]); + console.log('Connected relays: ', connected); + connecting = false; + }); + + }, + () => { + console.log('Failed to close all relays'); + connecting = false; + }, + ); + + }; + + let extensionAttempt = 0; + + const fetchNostrKey = async () => { + const win = window as NostrWindow; + const nostr = win.nostr; + + if (nostr === undefined) { + console.log('No WebLn extension'); + // Try again after one second if extensionAttempts are not exceeded + if (extensionAttempt < 1) { + extensionAttempt += 1; + setTimeout(fetchNostrKey, 1000); + return; + } + + updateStore('isKeyLookupDone', true); + return; + } + + try { + const key = await nostr.getPublicKey(); + + if (key === undefined) { + setTimeout(fetchNostrKey, 1000); + } + else { + setPublicKey(key); + localStorage.setItem('pubkey', key); + // getRelays(); + getUserProfiles([key], `user_profile_${APP_ID}`); + } + } catch (e: any) { + setPublicKey(noKey); + localStorage.setItem('pubkey', noKey); + console.log('error fetching public key: ', e); + } + } + + const setActiveUser = (user: PrimalUser) => { + updateStore('activeUser', () => ({...user})); + }; + + const showNewNoteForm = () => { + updateStore('showNewNoteForm', () => true); + }; + + const hideNewNoteForm = () => { + updateStore('showNewNoteForm', () => false); + }; + + const addLike = async (note: PrimalNote) => { + if (store.likes.includes(note.post.id)) { + return false; + } + + const success = await sendLike(note, store.relays); + + if (success) { + updateStore('likes', (likes) => [ ...likes, note.post.id]); + saveLikes(store.publicKey, store.likes); + } + + return success; + }; + + const updateContacts = (content: NostrContactsContent) => { + + const followingSince = content.created_at; + const tags = content.tags; + + const contacts = tags.reduce((acc, t) => { + return t[0] === 'p' ? [ ...acc, t[1] ] : acc; + }, []); + + setRelaySettings(JSON.parse(content.content || '{}')); + updateStore('following', () => contacts); + updateStore('followingSince', () => followingSince || 0); + saveFollowing(store.publicKey, contacts, followingSince || 0); + }; + + const addFollow = (pubkey: string) => { + if (!store.publicKey || store.following.includes(pubkey)) { + return; + } + + const unsub = subscribeTo(`before_follow_${APP_ID}`, async (type, subId, content) => { + if (type === 'EOSE') { + + if (!store.following.includes(pubkey)) { + const relayInfo = JSON.stringify(store.relaySettings); + const date = Math.floor((new Date()).getTime() / 1000); + const following = [...store.following, pubkey]; + + const success = await sendContacts(following, date, relayInfo, store.relays); + + if (success) { + updateStore('following', () => following); + updateStore('followingSince', () => date); + saveFollowing(store.publicKey, following, date); + } + } + + unsub(); + return; + } + + if (content && + content.kind === Kind.Contacts && + content.created_at && + content.created_at > store.followingSince + ) { + updateContacts(content); + } + }); + + getProfileContactList(store.publicKey, `before_follow_${APP_ID}`); + + } + + const removeFollow = (pubkey: string) => { + if (!store.publicKey || !store.following.includes(pubkey)) { + return; + } + + const unsub = subscribeTo(`before_unfollow_${APP_ID}`, async (type, subId, content) => { + if (type === 'EOSE') { + if (store.following.includes(pubkey)) { + const relayInfo = JSON.stringify(store.relaySettings); + const date = Math.floor((new Date()).getTime() / 1000); + const following = store.following.filter(f => f !== pubkey); + + const success = await sendContacts(following, date, relayInfo, store.relays); + + if (success) { + updateStore('following', () => following); + updateStore('followingSince', () => date); + saveFollowing(store.publicKey, following, date); + } + } + + unsub(); + return; + } + + if (content && + content.kind === Kind.Contacts && + content.created_at && + content.created_at > store.followingSince + ) { + updateContacts(content); + } + }); + + getProfileContactList(store.publicKey, `before_unfollow_${APP_ID}`); + + } + + +// EFFECTS -------------------------------------- + + onMount(() => { + setTimeout(() => { + updateStore('isKeyLookupDone', false); + fetchNostrKey(); + }, 1000); + }); + + createEffect(() => { + if (store.publicKey && store.publicKey !== noKey) { + + const storage = getStorage(store.publicKey); + + if (store.followingSince < storage.followingSince) { + updateStore('following', () => ({ ...storage.following })); + updateStore('followingSince', () => storage.followingSince); + } + + getProfileContactList(store.publicKey, `user_contacts_${APP_ID}`); + } + }); + + createEffect(() => { + if (store.publicKey && store.relays.length > 0) { + getLikes(store.publicKey, store.relays, (likes: string[]) => { + + updateStore('likes', () => [...likes]); + saveLikes(store.publicKey, likes); + }); + } + }); + + // If user has relays but none is connected, retry connecting after a delay + createEffect(() => { + if ( + Object.keys(store.relaySettings).length > 0 && + store.relays.length === 0 + ) { + setTimeout(() => { + connectToRelays(store.relaySettings); + }, 2000); + } + }) + + createEffect(() => { + if (isConnected()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + } + }); + + createEffect(() => { + if (Object.keys(store.relaySettings).length > 0) { + connectToRelays(store.relaySettings); + } + }); + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + store.relays.forEach(relay => relay.close()) + }); + +// SOCKET HANDLERS ------------------------------ + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + webSocket.removeEventListener('message', onMessage); + webSocket.removeEventListener('close', onSocketClose); + }; + + const onMessage = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + const [type, subId, content] = message; + + if (subId === `user_profile_${APP_ID}`) { + if (content?.content) { + const user = JSON.parse(content.content); + + updateStore('activeUser', () => ({...user})); + } + return; + } + + if (subId === `user_contacts_${APP_ID}`) { + if (content && content.kind === Kind.Contacts) { + if (Object.keys(store.relaySettings).length === 0) { + setRelaySettings(JSON.parse(content.content || '{}')); + } + + if (!content.created_at || content.created_at <= store.followingSince) { + return; + } + + updateContacts(content); + } + return; + } + + }; + +// STORES --------------------------------------- + +const [store, updateStore] = createStore({ + ...initialData, + hasPublicKey, + actions: { + showNewNoteForm, + hideNewNoteForm, + setActiveUser, + addLike, + setPublicKey, + addFollow, + removeFollow, + }, +}); + + return ( + + {props.children} + + ); +} + +export function useAccountContext() { return useContext(AccountContext); } diff --git a/src/contexts/ExploreContext.tsx b/src/contexts/ExploreContext.tsx new file mode 100644 index 0000000..ce29c12 --- /dev/null +++ b/src/contexts/ExploreContext.tsx @@ -0,0 +1,371 @@ +import { nip19 } from "nostr-tools"; +import { createStore } from "solid-js/store"; +import { getEvents, getExploreFeed } from "../lib/feed"; +import { useAccountContext } from "./AccountContext"; +import { sortingPlan, convertToNotes, parseEmptyReposts, paginationPlan } from "../stores/note"; +import { Kind } from "../constants"; +import { + createContext, + createEffect, + onCleanup, + useContext +} from "solid-js"; +import { + getLegendStats, + startListeningForNostrStats, + stopListeningForNostrStats +} from "../lib/stats"; +import { + isConnected, + refreshSocketListeners, + removeSocketListeners, + socket +} from "../sockets"; +import { + ContextChildren, + FeedPage, + NostrEOSE, + NostrEvent, + NostrEventContent, + NostrMentionContent, + NostrNoteActionsContent, + NostrNoteContent, + NostrStatsContent, + NostrUserContent, + NoteActions, + PrimalNote, +} from "../types/primal"; +import { APP_ID } from "../App"; + +export type ExploreContextStore = { + notes: PrimalNote[], + scope: string, + timeframe: string, + isFetching: boolean, + page: FeedPage, + lastNote: PrimalNote | undefined, + reposts: Record | undefined, + isNetStatsStreamOpen: boolean, + stats: { + users: number, + pubkeys: number, + pubnotes: number, + reactions: number, + reposts: number, + any: number, + zaps: number, + satszapped: number, + }, + legend: { + your_follows: number, + your_inner_network: number, + your_outer_network: number, + }, + actions: { + saveNotes: (newNotes: PrimalNote[]) => void, + clearNotes: () => void, + fetchNotes: (topic: string, until?: number, limit?: number) => void, + fetchNextPage: () => void, + updatePage: (content: NostrEventContent) => void, + savePage: (page: FeedPage) => void, + openNetStatsStream: () => void, + closeNetStatsStream: () => void, + fetchLegendStats: (pubkey?: string) => void, + } +} + +export const initialExploreData = { + notes: [], + isFetching: false, + scope: 'global', + timeframe: 'latest', + page: { + messages: [], + users: {}, + postStats: {}, + mentions: {}, + noteActions: {}, + }, + reposts: {}, + lastNote: undefined, + isNetStatsStreamOpen: false, + stats: { + users: 0, + pubkeys: 0, + pubnotes: 0, + reactions: 0, + reposts: 0, + any: 0, + zaps: 0, + satszapped: 0, + }, + legend: { + your_follows: 0, + your_inner_network: 0, + your_outer_network: 0, + }, +}; + + +export const ExploreContext = createContext(); + +export const ExploreProvider = (props: { children: ContextChildren }) => { + + const account = useAccountContext(); + +// ACTIONS -------------------------------------- + + const saveNotes = (newNotes: PrimalNote[]) => { + + updateStore('notes', (notes) => [ ...notes, ...newNotes ]); + updateStore('isFetching', () => false); + }; + + const fetchNotes = (topic: string, until = 0, limit = 20) => { + const [scope, timeframe] = topic.split(';'); + + + if (scope && timeframe) { + updateStore('isFetching', true); + updateStore('page', () => ({ messages: [], users: {}, postStats: {} })); + + updateStore('scope', () => scope); + updateStore('timeframe', () => timeframe); + + getExploreFeed( + account?.publicKey || '', + `explore_${APP_ID}`, + scope, + timeframe, + until, + limit, + ); + return; + } + } + + const clearNotes = () => { + updateStore('page', () => ({ messages: [], users: {}, postStats: {}, noteActions: {} })); + updateStore('notes', () => []); + updateStore('reposts', () => undefined); + updateStore('lastNote', () => undefined); + }; + + const fetchNextPage = () => { + const lastNote = store.notes[store.notes.length - 1]; + + if (!lastNote) { + return; + } + + updateStore('lastNote', () => ({ ...lastNote })); + + const criteria = paginationPlan(store.timeframe); + + const noteData: Record = lastNote.repost ? + lastNote.repost.note : + lastNote.post; + + const until = noteData[criteria]; + + if (until > 0) { + fetchNotes( + `${store.scope};${store.timeframe}`, + until, + ); + } + }; + + const updatePage = (content: NostrEventContent) => { + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + updateStore('page', 'users', + (usrs) => ({ ...usrs, [user.pubkey]: { ...user } }) + ); + return; + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + + if (store.lastNote?.post?.noteId !== nip19.noteEncode(message.id)) { + updateStore('page', 'messages', + (msgs) => [ ...msgs, { ...message }] + ); + } + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + updateStore('page', 'postStats', + (stats) => ({ ...stats, [stat.event_id]: { ...stat } }) + ); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + updateStore('page', 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + + if (content.kind === Kind.NoteActions) { + const noteActionContent = content as NostrNoteActionsContent; + const noteActions = JSON.parse(noteActionContent.content) as NoteActions; + + updateStore('page', 'noteActions', + (actions) => ({ ...actions, [noteActions.event_id]: { ...noteActions } }) + ); + return; + } + }; + + const savePage = (page: FeedPage) => { + const sort = sortingPlan(store.timeframe); + + const newPosts = sort(convertToNotes(page)); + + saveNotes(newPosts); + }; + + const openNetStatsStream = () => { + startListeningForNostrStats(APP_ID); + }; + + const closeNetStatsStream = () => { + stopListeningForNostrStats(APP_ID); + }; + + const fetchLegendStats = (pubkey?: string) => { + if (!pubkey) { + return; + } + + getLegendStats(pubkey, APP_ID); + }; + +// SOCKET HANDLERS ------------------------------ + + const onMessage = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + const [type, subId, content] = message; + + if (subId === `explore_${APP_ID}`) { + if (type === 'EOSE') { + const reposts = parseEmptyReposts(store.page); + const ids = Object.keys(reposts); + + if (ids.length === 0) { + savePage(store.page); + return; + } + + updateStore('reposts', () => reposts); + + getEvents(account?.publicKey, ids, `explore_reposts_${APP_ID}`); + + return; + } + + if (type === 'EVENT') { + updatePage(content); + return; + } + } + + if ([`netstats_${APP_ID}`, `legendstats_${APP_ID}`].includes(subId) && content?.content) { + const stats = JSON.parse(content.content); + + if (content.kind === Kind.NetStats) { + updateStore('stats', () => ({ ...stats })); + } + + if (content.kind === Kind.LegendStats) { + updateStore('legend', () => ({ ...stats })); + } + } + + if (subId === `explore_reposts_${APP_ID}`) { + if (type === 'EOSE') { + savePage(store.page); + return; + } + + if (type === 'EVENT') { + const repostId = (content as NostrNoteContent).id; + const reposts = store.reposts || {}; + const parent = store.page.messages.find(m => m.id === reposts[repostId]); + + if (parent) { + updateStore('page', 'messages', (msg) => msg.id === parent.id, 'content', () => JSON.stringify(content)); + } + + return; + } + } + }; + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + removeSocketListeners( + webSocket, + { message: onMessage, close: onSocketClose }, + ); + }; + +// EFFECTS -------------------------------------- + + createEffect(() => { + if (isConnected()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + } + }); + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + }); + +// STORES --------------------------------------- + + const [store, updateStore] = createStore({ + ...initialExploreData, + actions: { + saveNotes, + fetchNotes, + clearNotes, + fetchNextPage, + updatePage, + savePage, + openNetStatsStream, + closeNetStatsStream, + fetchLegendStats, + }, + }); + +// RENDER --------------------------------------- + + return ( + + {props.children} + + ); +} + +export const useExploreContext = () => useContext(ExploreContext); diff --git a/src/contexts/HomeContext.tsx b/src/contexts/HomeContext.tsx new file mode 100644 index 0000000..59c3bd6 --- /dev/null +++ b/src/contexts/HomeContext.tsx @@ -0,0 +1,522 @@ +import { nip19 } from "nostr-tools"; +import { createContext, createEffect, onCleanup, useContext } from "solid-js"; +import { createStore } from "solid-js/store"; +import { APP_ID } from "../App"; +import { Kind } from "../constants"; +import { getEvents, getExploreFeed, getFeed, getFutureExploreFeed, getFutureFeed } from "../lib/feed"; +import { searchContent } from "../lib/search"; +import { isConnected, refreshSocketListeners, removeSocketListeners, socket } from "../sockets"; +import { sortingPlan, convertToNotes, parseEmptyReposts, paginationPlan } from "../stores/note"; +import { + ContextChildren, + FeedPage, + NostrEOSE, + NostrEvent, + NostrEventContent, + NostrMentionContent, + NostrNoteActionsContent, + NostrNoteContent, + NostrStatsContent, + NostrUserContent, + NoteActions, + PrimalFeed, + PrimalNote, +} from "../types/primal"; +import { useAccountContext } from "./AccountContext"; +import { useSettingsContext } from "./SettingsContext"; + +type HomeContextStore = { + notes: PrimalNote[], + isFetching: boolean, + scrollTop: number, + selectedFeed: PrimalFeed | undefined, + page: FeedPage, + lastNote: PrimalNote | undefined, + reposts: Record | undefined, + mentionedNotes: Record, + future: { + notes: PrimalNote[], + page: FeedPage, + reposts: Record | undefined, + }, + actions: { + saveNotes: (newNotes: PrimalNote[]) => void, + clearNotes: () => void, + fetchNotes: (topic: string, subId: string, until?: number) => void, + fetchNextPage: () => void, + selectFeed: (feed: PrimalFeed | undefined) => void, + updateScrollTop: (top: number) => void, + updatePage: (content: NostrEventContent) => void, + savePage: (page: FeedPage) => void, + checkForNewNotes: (topic: string | undefined) => void, + loadFutureContent: () => void, + } +} + +const initialHomeData = { + notes: [], + isFetching: false, + scrollTop: 0, + selectedFeed: undefined, + page: { + messages: [], + users: {}, + postStats: {}, + mentions: {}, + noteActions: {}, + }, + reposts: {}, + lastNote: undefined, + mentionedNotes: {}, + future: { + notes: [], + reposts: {}, + page: { + messages: [], + users: {}, + postStats: {}, + mentions: {}, + noteActions: {}, + }, + }, +}; + +export const HomeContext = createContext(); + +export const HomeProvider = (props: { children: ContextChildren }) => { + + const settings = useSettingsContext(); + const account = useAccountContext(); + +// ACTIONS -------------------------------------- + + const clearFuture = () => { + updateStore('future', () => ({ + notes: [], + reposts: {}, + page: { + messages: [], + users: {}, + postStats: {}, + mentions: {}, + noteActions: {}, + }, + })) + } + + const saveNotes = (newNotes: PrimalNote[], scope?: 'future') => { + if (scope) { + updateStore(scope, 'notes', (notes) => [ ...notes, ...newNotes ]); + return; + } + updateStore('notes', (notes) => [ ...notes, ...newNotes ]); + updateStore('isFetching', () => false); + }; + + const checkForNewNotes = (topic: string | undefined) => { + + if (!topic) { + return; + } + + if (store.future.notes.length > 100) { + return; + } + + const [scope, timeframe] = topic.split(';'); + + let since = 0; + + if (store.notes[0]) { + since = store.notes[0].repost ? + store.notes[0].repost.note.created_at : + store.notes[0].post.created_at; + } + + // if (store.future.notes[0]) { + // since = store.future.notes[0].post.created_at; + // } + + clearFuture(); + + + if (scope && timeframe) { + + // if (scope === 'search') { + // searchFutureContent(`home_future_${APP_ID}`, decodeURI(timeframe), since); + // return; + // } + + getFutureExploreFeed( + account?.publicKey, + `home_future_${APP_ID}`, + scope, + timeframe, + since, + ); + return; + } + + getFutureFeed(account?.publicKey, topic, `home_future_${APP_ID}`, since); + } + + const loadFutureContent = () => { + if (store.future.notes.length === 0) { + return; + } + + updateStore('notes', (notes) => [...store.future.notes, ...notes]); + clearFuture(); + }; + + const fetchNotes = (topic: string, subId: string, until = 0) => { + const [scope, timeframe] = topic.split(';'); + + updateStore('isFetching', true); + updateStore('page', () => ({ messages: [], users: {}, postStats: {} })); + + if (scope && timeframe) { + + if (scope === 'search') { + searchContent(`home_feed_${subId}`, decodeURI(timeframe)); + return; + } + + getExploreFeed( + account?.publicKey, + `home_feed_${subId}`, + scope, + timeframe, + until, + ); + return; + } + + getFeed(account?.publicKey, topic, `home_feed_${subId}`, until); + }; + + const clearNotes = () => { + updateStore('scrollTop', () => 0); + updateStore('page', () => ({ messages: [], users: {}, postStats: {}, noteActions: {} })); + updateStore('notes', () => []); + updateStore('reposts', () => undefined); + updateStore('lastNote', () => undefined); + + clearFuture(); + }; + + const fetchNextPage = () => { + const lastNote = store.notes[store.notes.length - 1]; + + if (!lastNote) { + return; + } + + updateStore('lastNote', () => ({ ...lastNote })); + + const topic = store.selectedFeed?.hex; + + if (!topic) { + return; + } + + const [scope, timeframe] = topic.split(';'); + + if (scope === 'search') { + return; + } + + const pagCriteria = timeframe || 'latest'; + + const criteria = paginationPlan(pagCriteria); + + const noteData: Record = lastNote.repost ? + lastNote.repost.note : + lastNote.post; + + const until = noteData[criteria]; + + if (until > 0) { + fetchNotes(topic, `${APP_ID}`, until); + } + }; + + const updateScrollTop = (top: number) => { + updateStore('scrollTop', () => top); + }; + + const selectFeed = (feed: PrimalFeed | undefined) => { + if (feed !== undefined && feed.hex !== undefined) { + updateStore('selectedFeed', () => ({ ...feed })); + clearNotes(); + fetchNotes(feed.hex , `${APP_ID}`); + } + }; + + const updatePage = (content: NostrEventContent, scope?: 'future') => { + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + if (scope) { + updateStore(scope, 'page', 'users', + (usrs) => ({ ...usrs, [user.pubkey]: { ...user } }) + ); + return; + } + + updateStore('page', 'users', + (usrs) => ({ ...usrs, [user.pubkey]: { ...user } }) + ); + return; + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + const messageId = nip19.noteEncode(message.id); + + if (scope) { + const isFirstNote = message.kind === Kind.Text ? + store.notes[0]?.post?.noteId === messageId : + store.notes[0]?.repost?.note.noteId === messageId; + + // const isAlreadyFetched = message.kind === Kind.Text ? + // store.future.notes[0]?.post?.noteId === messageId : + // store.future.notes[0]?.repost?.note.noteId === messageId; + + if (!isFirstNote) { + updateStore(scope, 'page', 'messages', + (msgs) => [ ...msgs, { ...message }] + ); + } + return; + } + + const isLastNote = message.kind === Kind.Text ? + store.lastNote?.post?.noteId === messageId : + store.lastNote?.repost?.note.noteId === messageId; + + if (!isLastNote) { + updateStore('page', 'messages', + (msgs) => [ ...msgs, { ...message }] + ); + } + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + if (scope) { + updateStore(scope, 'page', 'postStats', + (stats) => ({ ...stats, [stat.event_id]: { ...stat } }) + ); + return; + } + updateStore('page', 'postStats', + (stats) => ({ ...stats, [stat.event_id]: { ...stat } }) + ); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + if (scope) { + updateStore(scope, 'page', 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + + updateStore('page', 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + + if (content.kind === Kind.NoteActions) { + const noteActionContent = content as NostrNoteActionsContent; + const noteActions = JSON.parse(noteActionContent.content) as NoteActions; + + if (scope) { + updateStore(scope, 'page', 'noteActions', + (actions) => ({ ...actions, [noteActions.event_id]: { ...noteActions } }) + ); + return; + } + + updateStore('page', 'noteActions', + (actions) => ({ ...actions, [noteActions.event_id]: { ...noteActions } }) + ); + return; + } + }; + + const savePage = (page: FeedPage, scope?: 'future') => { + const topic = (store.selectedFeed?.hex || '').split(';'); + const sortingFunction = sortingPlan(topic[1]); + + const newPosts = sortingFunction(convertToNotes(page)); + + saveNotes(newPosts, scope); + }; + +// SOCKET HANDLERS ------------------------------ + + const onMessage = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + const [type, subId, content] = message; + + if (subId === `home_feed_${APP_ID}`) { + if (type === 'EOSE') { + const reposts = parseEmptyReposts(store.page); + const ids = Object.keys(reposts); + + if (ids.length === 0) { + savePage(store.page); + return; + } + + updateStore('reposts', () => reposts); + + getEvents(account?.publicKey, ids, `home_reposts_${APP_ID}`); + + return; + } + + if (type === 'EVENT') { + updatePage(content); + return; + } + } + + if (subId === `home_reposts_${APP_ID}`) { + if (type === 'EOSE') { + savePage(store.page); + return; + } + + if (type === 'EVENT') { + const repostId = (content as NostrNoteContent).id; + const reposts = store.reposts || {}; + const parent = store.page.messages.find(m => m.id === reposts[repostId]); + + if (parent) { + updateStore('page', 'messages', (msg) => msg.id === parent.id, 'content', () => JSON.stringify(content)); + } + + return; + } + } + + if (subId === `home_future_${APP_ID}`) { + if (type === 'EOSE') { + const reposts = parseEmptyReposts(store.future.page); + const ids = Object.keys(reposts); + + if (ids.length === 0) { + savePage(store.future.page, 'future'); + return; + } + + updateStore('future', 'reposts', () => reposts); + + getEvents(account?.publicKey, ids, `home_future_reposts_${APP_ID}`); + + return; + } + + if (type === 'EVENT') { + updatePage(content, 'future'); + return; + } + } + + if (subId === `home_future_reposts_${APP_ID}`) { + if (type === 'EOSE') { + savePage(store.future.page, 'future'); + return; + } + + if (type === 'EVENT') { + const repostId = (content as NostrNoteContent).id; + const reposts = store.future.reposts || {}; + const parent = store.future.page.messages.find(m => m.id === reposts[repostId]); + + if (parent) { + updateStore('future', 'page', 'messages', (msg) => msg.id === parent.id, 'content', () => JSON.stringify(content)); + } + + return; + } + } + + + }; + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + removeSocketListeners( + webSocket, + { message: onMessage, close: onSocketClose }, + ); + }; + +// EFFECTS -------------------------------------- + + createEffect(() => { + if (isConnected()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + } + }); + + createEffect(() => { + if (account?.isKeyLookupDone) { + selectFeed(settings?.defaultFeed); + } + }); + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + }); + + +// STORES --------------------------------------- + + const [store, updateStore] = createStore({ + ...initialHomeData, + actions: { + saveNotes, + clearNotes, + fetchNotes, + fetchNextPage, + selectFeed, + updateScrollTop, + updatePage, + savePage, + checkForNewNotes, + loadFutureContent, + }, + }); + +// RENDER ------------------------------------- + + return ( + + {props.children} + + ); +} + +export const useHomeContext = () => useContext(HomeContext); diff --git a/src/contexts/MediaContext.tsx b/src/contexts/MediaContext.tsx new file mode 100644 index 0000000..1cbe014 --- /dev/null +++ b/src/contexts/MediaContext.tsx @@ -0,0 +1,116 @@ +import { createStore } from "solid-js/store"; +import { + createContext, + createEffect, + JSXElement, + onCleanup, + useContext +} from "solid-js"; +import { MediaEvent, MediaSize, MediaVariant, NostrEOSE, NostrEvent } from "../types/primal"; +import { removeSocketListeners, isConnected, refreshSocketListeners, socket } from "../sockets"; +import { Kind } from "../constants"; + +export type MediaContextStore = { + media: Record, + actions: { + getMedia: (url: string , size?: MediaSize, animated?: boolean) => MediaVariant | undefined, + getMediaUrl: (url: string | undefined, size?: MediaSize, animated?: boolean) => string | undefined, + }, +} + +const initialData = { + media: {}, +}; + +export const MediaContext = createContext(); + +export const MediaProvider = (props: { children: JSXElement }) => { + + const getMedia = (url: string, size?: MediaSize , animated?: boolean) => { + const variants: MediaVariant[] = store.media[url] || []; + + const isOfSize = (s: MediaSize) => size ? size === s : true; + const isAnimated = (a: 0 | 1) => animated !== undefined ? animated === !!a : true; + + return variants.find(v => isOfSize(v.s) && isAnimated(v.a)); + }; + + const getMediaUrl = (url: string | undefined, size?: MediaSize, animated?: boolean) => { + if (!url) { + return; + } + + const media = getMedia(url, size, animated); + + return media?.media_url; + } + +// SOCKET HANDLERS ------------------------------ + + const onMessage = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + const [type, _, content] = message; + + if (type === 'EVENT') { + if (content.kind === Kind.MediaInfo) { + const mediaInfo: MediaEvent = JSON.parse(content.content); + + let media: Record = {}; + + for (let i = 0;i ({ ...media })); + } + } + }; + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + removeSocketListeners( + webSocket, + { message: onMessage, close: onSocketClose }, + ); + }; + +// EFFECTS -------------------------------------- + + createEffect(() => { + if (isConnected()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + } + }); + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + }); + + +// STORES --------------------------------------- + + const [store, updateStore] = createStore({ + ...initialData, + actions: { + getMedia, + getMediaUrl, + }, + }); + + return ( + + {props.children} + + ); +} + +export const useMediaContext = () => useContext(MediaContext); diff --git a/src/contexts/MessagesContext.tsx b/src/contexts/MessagesContext.tsx new file mode 100644 index 0000000..2e96743 --- /dev/null +++ b/src/contexts/MessagesContext.tsx @@ -0,0 +1,816 @@ +import { createStore } from "solid-js/store"; +import { Kind } from "../constants"; +import { + createContext, + createEffect, + onCleanup, + useContext +} from "solid-js"; +import { + isConnected, + refreshSocketListeners, + removeSocketListeners, + socket, + subscribeTo +} from "../sockets"; +import { + ContextChildren, + FeedPage, + NostrEOSE, + NostrEvent, + NostrMentionContent, + NostrMessageEncryptedContent, + NostrNoteActionsContent, + NostrNoteContent, + NostrStatsContent, + NostrUserContent, + NostrWindow, + NoteActions, + PrimalNote, + PrimalUser, + UserRelation, +} from "../types/primal"; +import { APP_ID } from "../App"; +import { getMessageCounts, getNewMessages, getOldMessages, markAllAsRead, resetMessageCount, subscribeToMessagesStats } from "../lib/messages"; +import { useAccountContext } from "./AccountContext"; +import { convertToUser } from "../stores/profile"; +import { getUserProfiles } from "../lib/profile"; +import { getEvents } from "../lib/feed"; +import { nip19 } from "nostr-tools"; +import { convertToNotes } from "../stores/note"; +import { sanitize, sendEvent } from "../lib/notes"; + + +type DirectMessage = { + id: string, + sender: string, + content: string, + created_at: number, +}; + +type DirectMessageThread = { + author: string, + messages: DirectMessage[], +}; + +type SenderMessageCount = { + cnt: number, + latest_at: number, + latest_event_id: string, +} + +export type MessagesContextStore = { + messageCount: number, + messageCountPerSender: Record, + senders: Record; + selectedSender: PrimalUser | null, + encryptedMessages: NostrMessageEncryptedContent[], + messages: DirectMessage[], + conversation: DirectMessageThread[], + isConversationLoaded: boolean, + referecedUsers: Record, + referecedNotes: Record, + referencePage: FeedPage, + now: number, + senderRelation: UserRelation, + addSender: PrimalUser | undefined, + actions: { + getMessagesPerSender: () => void, + changeSenderRelation: (relation: UserRelation) => void, + selectSender: (senderId: string | undefined) => void, + resetConversationLoaded: () => void, + addToConversation: (messages: DirectMessage[]) => void, + sendMessage: (receiver: PrimalUser, message: DirectMessage) => Promise, + resetAllMessages: () => Promise, + addSender: (user: PrimalUser) => void, + getNextConversationPage: () => void, + addUserReference: (user: PrimalUser) => void, + } +} + +export const initialData = { + messageCount: 0, + messageCountPerSender: {}, + senders: {}, + selectedSender: null, + encryptedMessages: [], + messages: [], + conversation: [], + isConversationLoaded: false, + referecedUsers: {}, + referecedNotes: {}, + now: Math.floor(new Date().getTime() / 1000), + senderRelation: 'follows' as UserRelation, + addSender: undefined, + referencePage: { + messages: [], + users: {}, + postStats: {}, + mentions: {}, + noteActions: {}, + }, +}; + + +export const MessagesContext = createContext(); + +export const MessagesProvider = (props: { children: ContextChildren }) => { + + const account = useAccountContext(); + + const subidMsgCount = `msg_stats_${APP_ID}`; + const subidMsgCountPerSender = `msg_count_p_s_ ${APP_ID}`; + const subidResetMsgCount = `msg_reset_ ${APP_ID}`; + const subidResetMsgCounts = `msg_mark_as_read_${APP_ID}`; + const subidCoversation = `msg_conv_ ${APP_ID}`; + const subidCoversationNextPage = `msg_conv_np_ ${APP_ID}`; + const subidNewMsg = `msg_new_ ${APP_ID}`; + const subidNoteRef = `msg_note_ ${APP_ID}`; + const subidUserRef = `msg_user_ ${APP_ID}`; + + + const getNostr = () => { + const win = window as NostrWindow; + return win.nostr; + } + +// ACTIONS -------------------------------------- + + const changeSenderRelation = (relation: UserRelation) => { + updateStore('senderRelation', () => relation); + // @ts-ignore + updateStore('senders', () => undefined ); + updateStore('senders', () => ({})); + getMessagesPerSender(true); + }; + + const subToMessagesStats = () => { + if (!account?.hasPublicKey()) { + return; + } + + // @ts-ignore + subscribeToMessagesStats(account?.publicKey, subidMsgCount); + } + + const getMessagesPerSender = (changeSender?: boolean) => { + if (account?.isKeyLookupDone && account.hasPublicKey()) { + changeSender && updateStore('selectedSender', () => null); + // @ts-ignore + getMessageCounts(account.publicKey, store.senderRelation, subidMsgCountPerSender); + } + }; + + const selectSender = async (senderId: string | undefined) => { + if (!senderId) { + return; + } + + let pubkey = senderId; + + if (senderId.startsWith('npub') || senderId.startsWith('nevent')) { + const decoded = nip19.decode(senderId); + + if (decoded.type === 'npub') { + pubkey = decoded.data; + } + + if (decoded.type === 'nevent') { + pubkey = decoded.data.id; + } + } + + if (!store.senders) { + return; + } + + const sender = store.senders[pubkey]; + + if (!sender) { + findMissingUser(pubkey); + return; + } + + await resetMessageCount(sender.pubkey, subidResetMsgCount); + + updateStore('selectedSender', () => null); + updateStore('selectedSender', () => ({ ...sender })); + }; + + const findMissingUser = (pubkey: string) => { + const subid = `msg_unk_${APP_ID}`; + let user: PrimalUser | undefined; + + const unsub = subscribeTo(subid, (type, subId, content) => { + + if (type === 'EVENT') { + if (content?.kind === Kind.Metadata) { + user = convertToUser(content); + } + } + + if (type === 'EOSE') { + user && addSender(user); + unsub(); + } + }); + + getUserProfiles([pubkey], subid); + }; + + const resetAllMessages = async () => { + markAllAsRead(subidResetMsgCounts); + }; + + const getConversationWithSender = (sender: PrimalUser | null, until = 0) => { + if (!account?.isKeyLookupDone || !account.hasPublicKey() || !sender) { + return; + } + resetConversationLoaded(); + // @ts-ignore + getOldMessages(account.publicKey, sender.pubkey, subidCoversation, until); + }; + + const getNextConversationPage = () => { + if ( + !account?.isKeyLookupDone || + !account.hasPublicKey() || + !store.selectedSender + ) { + return; + + } + const lastMessage = store.messages[store.messages.length - 1] || { created_at: 0}; + + updateStore('encryptedMessages', () => []); + + // @ts-ignore + lastMessage.created_at > 0 && getOldMessages(account.publicKey, store.selectedSender.pubkey, subidCoversationNextPage, lastMessage.created_at); + }; + + const decryptMessages = async (then: (messages: DirectMessage[]) => void) => { + const nostr = getNostr(); + + if (nostr === undefined || store.selectedSender === null) { + return; + } + + let newMessages: DirectMessage[] = []; + + for (let i = 0; i < store.encryptedMessages.length; i++) { + const eMsg = store.encryptedMessages[i]; + + if (!store.messages.find(m => eMsg.id === m.id) && store.selectedSender) { + try { + const content = await nostr.nip04.decrypt(store.selectedSender.pubkey, eMsg.content); + + const msg: DirectMessage = { + sender: eMsg.pubkey, + content: sanitize(content), + created_at: eMsg.created_at, + id: eMsg.id, + }; + + newMessages.push(msg); + } catch (e) { + console.warn('Falied to decrypt message: ', e); + } + } + } + + updateStore('messages', (conv) => [ ...conv, ...newMessages ]); + resetMessageCount(store.selectedSender.pubkey, subidResetMsgCount); + updateStore('messageCountPerSender', store.selectedSender.pubkey, 'cnt', 0) + + parseForMentions(newMessages); + then(newMessages); + // areNewMessages ? addToConversation(newMessages, true) : generateConversation(newMessages); + }; + + const parseForMentions = (messages: DirectMessage[]) => { + const noteRegex = /\bnostr:((note|nevent)1\w+)\b|#\[(\d+)\]/g; + const userRegex = /\bnostr:((npub|nprofile)1\w+)\b|#\[(\d+)\]/g; + + let noteRefs = []; + let userRefs = []; + let match; + + for (let i=0; i { + const decoded = nip19.decode(x); + + if (decoded.type === 'npub') { + return decoded.data; + } + + if (decoded.type === 'nprofile') { + return decoded.data.pubkey; + } + + return ''; + + }); + const noteIds = noteRefs.map(x => { + const decoded = nip19.decode(x); + + if (decoded.type === 'note') { + return decoded.data; + } + + if (decoded.type === 'nevent') { + return decoded.data.id; + } + + return ''; + + }); + + updateStore('referencePage', () => ({ + messages: [], + users: {}, + postStats: {}, + mentions: {}, + noteActions: {}, + })); + + getUserProfiles(pubkeys, subidUserRef); + getEvents(account?.publicKey, noteIds, subidNoteRef, true); + + + }; + + const prependToConversation = (messages: DirectMessage[]) => { + let firstThread = store.conversation[store.conversation.length - 1]; + + for (let i=0;i [...msgs, message] + ); + } + else { + firstThread = { + author: message.sender, + messages: [message], + } + + updateStore('conversation', (conv) => [...conv, { ...firstThread }]); + } + + // updateStore('isConversationLoaded', () => true); + updateMessageTimings(); + + }; + + }; + + const addToConversation = (messages: DirectMessage[], ignoreMy?: boolean) => { + let lastThread = store.conversation[0]; + + for (let i=0;i [message, ...msgs] + ); + } + else { + lastThread = { + author: message.sender, + messages: [message], + } + + updateStore('conversation', (conv) => [{ ...lastThread }, ...conv]); + } + + updateStore('isConversationLoaded', () => true); + updateMessageTimings(); + + }; + }; + + const generateConversation = (messages: DirectMessage[]) => { + + let author: string | undefined; + let thread: DirectMessageThread = { author: '', messages: [] }; + let conversation: any[] = []; + + for (let i=0;i 0 && Math.abs(thread.messages[thread.messages.length - 1].created_at - message.created_at) > 900 + )) { + author = message.sender; + thread.messages.length > 0 && conversation.push(thread); + thread = { author, messages: []}; + } + + thread.messages.push(message); + + }; + + thread.messages.length > 0 && conversation.push(thread); + + updateStore('conversation', (conv) => [...conv, ...conversation]); + updateStore('isConversationLoaded', () => true); + }; + + const resetConversationLoaded = () => { + updateStore('isConversationLoaded', () => false); + } + + const updateRefUsers = () => { + const refs = store.referencePage.users; + + const users = Object.keys(refs).reduce((acc, id) => { + const user = convertToUser(refs[id]); + return {...acc, [user.pubkey]: { ...user }}; + }, {}); + + updateStore('referecedUsers', (usrs) => ({ ...usrs, ...users })); + }; + + const updateRefNotes = () => { + const refs = convertToNotes(store.referencePage) || []; + + const notes = refs.reduce((acc, note) => { + return { ...acc, [note.post.noteId]: note }; + }, {}); + + updateStore('referecedNotes', (nts) => ({ ...nts, ...notes })); + }; + + const sendMessage = async (receiver: PrimalUser, message: DirectMessage) => { + const nostr = getNostr(); + if (!account || !nostr) { + return false; + } + + const content = await nostr.nip04.encrypt(receiver.pubkey, message.content); + + const event = { + content, + kind: Kind.EncryptedDirectMessage, + tags: [['p', receiver.pubkey]], + created_at: Math.floor((new Date).getTime() / 1000), + }; + + const success = await sendEvent(event, account?.relays); + + if (success) { + const msg = { ...message, content: sanitize(message.content) }; + addToConversation([msg]); + updateStore('messageCountPerSender', receiver.pubkey, 'latest_at', message.created_at); + } + + return success; + } + + const addNewSender = (user: PrimalUser) => { + if (!store.senders[user.pubkey]) { + updateStore('senders', () => ({ [user.pubkey]: {...user }})); + updateStore('messageCountPerSender', user.pubkey, () => ({ cnt: 0 })); + } + + selectSender(user.npub); + }; + + const addSender = (user: PrimalUser) => { + const isFollowing = account?.following.includes(user.pubkey); + + if (isFollowing && store.senderRelation === 'follows' || + !isFollowing && store.senderRelation === 'other' + ) { + addNewSender(user); + return; + } + + updateStore('addSender', () => ({ ...user })); + + changeSenderRelation(isFollowing ? 'follows' : 'other'); + } + + const addUserReference = (user: PrimalUser) => { + updateStore('referecedUsers', () => ({ [user.pubkey]: {...user} })); + }; + + +// SOCKET HANDLERS ------------------------------ + + const onMessage = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + const [type, subId, content] = message; + + if (subId === subidMsgCount) { + if (content?.kind === Kind.MessageStats) { + const count = parseInt(content.cnt); + + if (count !== store.messageCount) { + updateStore('messageCount', () => count); + } + + } + } + + if (subId === subidMsgCountPerSender) { + if (type === 'EVENT') { + if (content?.kind === Kind.MesagePerSenderStats) { + const senderCount = JSON.parse(content.content); + + updateStore('messageCountPerSender', () => ({ ...senderCount })); + updateMessageTimings(); + } + + if (content?.kind === Kind.Metadata) { + if (store.senders[content.pubkey]) { + return; + } + + const isFollowing = account?.following.includes(content.pubkey); + + if (isFollowing && store.senderRelation !== 'follows' || + !isFollowing && store.senderRelation !== 'other' + ) { + return; + } + + const user = convertToUser(content); + + updateStore('senders', () => ({ [user.pubkey]: { ...user } })); + } + } + + if (type === 'EOSE') { + if (store.addSender !== undefined) { + const key = store.addSender.pubkey; + const user = { ...store.addSender } + + updateStore('senders', () => ({ [key]: user })); + updateStore('messageCountPerSender', user.pubkey, () => ({ cnt: 0 })); + selectSender(store.addSender.pubkey); + updateStore('addSender', () => undefined); + return; + } + + const senderIds = Object.keys(store.senders); + if (!store.selectedSender) { + selectSender(senderIds[0]); + } + // !store.selectedSender && updateStore('selectedSender', () => ({ ...store.senders[senderIds[0]] })); + } + } + + if (subId === subidCoversation || subId === subidCoversationNextPage) { + if (type === 'EVENT') { + if (content?.kind === Kind.EncryptedDirectMessage) { + updateStore('encryptedMessages', (conv) => [ ...conv, {...content}]); + } + } + + if (type === 'EOSE') { + if (subId === subidCoversation) { + decryptMessages(generateConversation); + return; + } + + if (subId === subidCoversationNextPage) { + decryptMessages(prependToConversation); + return; + } + } + } + + if (subId === subidNewMsg) { + if (type === 'EVENT') { + if (content?.kind === Kind.EncryptedDirectMessage) { + updateStore('encryptedMessages', (conv) => [ ...conv, {...content}]); + } + } + + if (type === 'EOSE') { + decryptMessages((msgs) => addToConversation(msgs, true)); + } + } + + if (subId === subidUserRef) { + if (type === 'EVENT') { + if (content?.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + updateStore('referencePage', 'users', + (usrs) => ({ ...usrs, [user.pubkey]: { ...user } }) + ); + } + } + + if (type === 'EOSE') { + updateRefUsers(); + } + } + + if (subId === subidNoteRef) { + if (type === 'EVENT') { + if (content?.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + updateStore('referencePage', 'users', + (usrs) => ({ ...usrs, [user.pubkey]: { ...user } }) + ); + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + + updateStore('referencePage', 'messages', + (msgs) => [ ...msgs, { ...message }] + ); + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + updateStore('referencePage', 'postStats', + (stats) => ({ ...stats, [stat.event_id]: { ...stat } }) + ); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + updateStore('referencePage', 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + + if (content.kind === Kind.NoteActions) { + const noteActionContent = content as NostrNoteActionsContent; + const noteActions = JSON.parse(noteActionContent.content) as NoteActions; + + updateStore('referencePage', 'noteActions', + (actions) => ({ ...actions, [noteActions.event_id]: { ...noteActions } }) + ); + return; + } + } + + if (type === 'EOSE') { + updateRefNotes(); + updateRefUsers(); + } + } + }; + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + removeSocketListeners( + webSocket, + { message: onMessage, close: onSocketClose }, + ); + }; + +// EFFECTS -------------------------------------- + + createEffect(() => { + if (isConnected() && account?.isKeyLookupDone && account?.hasPublicKey()) { + subToMessagesStats(); + } + }); + + createEffect(() => { + if (isConnected()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + } + }); + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + }); + + let conversationRefreshInterval = 0; + + const updateMessageTimings = () => { + updateStore('now', () => Math.floor((new Date()).getTime() / 1000)); + }; + + // When a sender is selected, get the first page of the conversation + createEffect(() => { + if (store.selectedSender) { + clearInterval(conversationRefreshInterval); + + updateStore('encryptedMessages', () => []); + updateStore('conversation', () => []); + updateStore('messages', () => []); + getConversationWithSender(store.selectedSender); + + conversationRefreshInterval = setInterval(() => { + updateMessageTimings(); + }, 60_000); + } + }); + + // when the total number of messages increases, check for new messages + createEffect(() => { + if ( + account?.hasPublicKey() && + store.selectedSender && + store.messageCountPerSender[store.selectedSender?.pubkey] && + store.messageCountPerSender[store.selectedSender.pubkey].cnt > 0 + ) { + + updateStore('encryptedMessages', () => []); + + let time = Math.floor((new Date()).getTime() / 1000); + + const lastThread = store.conversation[store.conversation.length - 1]; + + if (lastThread) { + const lastMessage = lastThread.messages[lastThread.messages.length - 1]; + + if (lastMessage) { + time = lastMessage.created_at + } + } + + getNewMessages( + // @ts-ignore + account?.publicKey, + store.selectedSender.pubkey, + subidNewMsg, + time, + ); + } + }); + + +// STORES --------------------------------------- + + + const [store, updateStore] = createStore({ + ...initialData, + actions: { + getMessagesPerSender, + selectSender, + addToConversation, + resetConversationLoaded, + sendMessage, + changeSenderRelation, + resetAllMessages, + addSender, + getNextConversationPage, + addUserReference, + }, + }); + +// RENDER --------------------------------------- + + return ( + + {props.children} + + ); +} + +export const useMessagesContext = () => useContext(MessagesContext); diff --git a/src/contexts/NotificationsContext.tsx b/src/contexts/NotificationsContext.tsx new file mode 100644 index 0000000..9d3a9fc --- /dev/null +++ b/src/contexts/NotificationsContext.tsx @@ -0,0 +1,131 @@ +import { createStore } from "solid-js/store"; +import { Kind } from "../constants"; +import { + createContext, + createEffect, + onCleanup, + useContext +} from "solid-js"; +import { + isConnected, + refreshSocketListeners, + removeSocketListeners, + socket +} from "../sockets"; +import { + ContextChildren, + NostrEOSE, + NostrEvent, +} from "../types/primal"; +import { APP_ID } from "../App"; +import { subscribeToNotificationStats } from "../lib/notifications"; +import { useAccountContext } from "./AccountContext"; + +export type NotificationsContextStore = { + notificationCount: number, + actions: { + } +} + +export const initialData = { + notificationCount: 0, +}; + + +export const NotificationsContext = createContext(); + +export const NotificationsProvider = (props: { children: ContextChildren }) => { + + const account = useAccountContext(); + + const subid = `notif_stats_${APP_ID}`; + +// ACTIONS -------------------------------------- + + const subToNotificationStats = () => { + if (!account?.hasPublicKey()) { + return; + } + + // @ts-ignore + subscribeToNotificationStats(account?.publicKey, subid); + } + +// SOCKET HANDLERS ------------------------------ + + const onMessage = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + const [type, subId, content] = message; + + if (subId === subid) { + if (content?.kind === Kind.NotificationStats) { + const sum = Object.keys(content).reduce((acc, key) => { + if (key === 'pubkey' || key == 'kind') { + return acc; + } + + // @ts-ignore + return acc + content[key]; + }, 0); + + if (sum !== store.notificationCount) { + updateStore('notificationCount', () => sum) + } + + } + } + }; + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + removeSocketListeners( + webSocket, + { message: onMessage, close: onSocketClose }, + ); + }; + +// EFFECTS -------------------------------------- + + createEffect(() => { + if (isConnected() && account?.hasPublicKey()) { + subToNotificationStats(); + } + }); + + createEffect(() => { + if (isConnected()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + } + }); + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + }); + +// STORES --------------------------------------- + + + const [store, updateStore] = createStore({ + ...initialData, + actions: { + }, + }); + +// RENDER --------------------------------------- + + return ( + + {props.children} + + ); +} + +export const useNotificationsContext = () => useContext(NotificationsContext); diff --git a/src/contexts/ProfileContext.tsx b/src/contexts/ProfileContext.tsx new file mode 100644 index 0000000..89915f6 --- /dev/null +++ b/src/contexts/ProfileContext.tsx @@ -0,0 +1,441 @@ +import { nip19 } from "nostr-tools"; +import { createStore } from "solid-js/store"; +import { getEvents, getUserFeed } from "../lib/feed"; +import { convertToNotes, paginationPlan, parseEmptyReposts, sortByRecency, sortByScore } from "../stores/note"; +import { Kind } from "../constants"; +import { + createContext, + createEffect, + onCleanup, + useContext +} from "solid-js"; +import { + isConnected, + refreshSocketListeners, + removeSocketListeners, + socket +} from "../sockets"; +import { + ContextChildren, + FeedPage, + NostrEOSE, + NostrEvent, + NostrEventContent, + NostrMentionContent, + NostrNoteActionsContent, + NostrNoteContent, + NostrStatsContent, + NostrUserContent, + NoteActions, + PrimalNote, + PrimalUser, + VanityProfiles, +} from "../types/primal"; +import { APP_ID } from "../App"; +import { hexToNpub } from "../lib/keys"; +import { + getProfileContactList, + getProfileScoredNotes, + getUserProfileInfo, +} from "../lib/profile"; +import { useAccountContext } from "./AccountContext"; + +export type ProfileContextStore = { + profileKey: string | undefined, + userProfile: PrimalUser | undefined, + userStats: { + follows_count: number, + followers_count: number, + note_count: number, + time_joined: number, + }, + knownProfiles: VanityProfiles, + notes: PrimalNote[], + isFetching: boolean, + page: FeedPage, + reposts: Record | undefined, + lastNote: PrimalNote | undefined, + following: string[], + sidebar: FeedPage & { notes: PrimalNote[] }, + actions: { + saveNotes: (newNotes: PrimalNote[]) => void, + clearNotes: () => void, + fetchNotes: (noteId: string | undefined, until?: number) => void, + fetchNextPage: () => void, + updatePage: (content: NostrEventContent) => void, + savePage: (page: FeedPage) => void, + setProfileKey: (profileKey?: string) => void, + } +} + +export const emptyStats = { + follows_count: 0, + followers_count: 0, + note_count: 0, + time_joined: 0, +}; + +export const initialData = { + profileKey: undefined, + userProfile: undefined, + userStats: { ...emptyStats }, + knownProfiles: { names: {} }, + notes: [], + isFetching: false, + page: { messages: [], users: {}, postStats: {}, mentions: {}, noteActions: {} }, + reposts: {}, + lastNote: undefined, + following: [], + sidebar: { + messages: [], + users: {}, + postStats: {}, + notes: [], + noteActions: {}, + }, +}; + + +export const ProfileContext = createContext(); + +export const ProfileProvider = (props: { children: ContextChildren }) => { + + const account = useAccountContext(); + +// ACTIONS -------------------------------------- + + const saveNotes = (newNotes: PrimalNote[]) => { + updateStore('notes', (notes) => [ ...notes, ...newNotes ]); + updateStore('isFetching', () => false); + }; + + const fetchNotes = (pubkey: string | undefined, until = 0, limit = 20) => { + if (!pubkey) { + return; + } + + updateStore('isFetching', () => true); + updateStore('page', () => ({ messages: [], users: {}, postStats: {} })); + getUserFeed(account?.publicKey, pubkey, `profile_feed_${APP_ID}`, until, limit); + } + + const clearNotes = () => { + updateStore('page', () => ({ messages: [], users: {}, postStats: {}, noteActions: {} })); + updateStore('notes', () => []); + updateStore('reposts', () => undefined); + updateStore('lastNote', () => undefined); + updateStore('sidebar', () => ({ + messages: [], + users: {}, + postStats: {}, + notes: [], + noteActions: {}, + })); + }; + + const fetchNextPage = () => { + const lastNote = store.notes[store.notes.length - 1]; + + if (!lastNote) { + return; + } + + updateStore('lastNote', () => ({ ...lastNote })); + + const criteria = paginationPlan('latest'); + + const noteData: Record = lastNote.repost ? + lastNote.repost.note : + lastNote.post; + + const until = noteData[criteria]; + + if (until > 0 && store.profileKey) { + fetchNotes(store.profileKey, until); + } + }; + + const updatePage = (content: NostrEventContent) => { + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + updateStore('page', 'users', () => ({ [user.pubkey]: user})); + return; + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + const messageId = nip19.noteEncode(message.id); + + const isLastNote = message.kind === Kind.Text ? + store.lastNote?.post?.noteId === messageId : + store.lastNote?.repost?.note.noteId === messageId; + + if (!isLastNote) { + updateStore('page', 'messages', messages => [ ...messages, message]); + } + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + updateStore('page', 'postStats', () => ({ [stat.event_id]: stat })); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + updateStore('page', 'mentions', () => ({ [mention.id]: mention })); + return; + } + + if (content.kind === Kind.NoteActions) { + const noteActionContent = content as NostrNoteActionsContent; + const noteActions = JSON.parse(noteActionContent.content) as NoteActions; + + updateStore('page', 'noteActions', () => ({ [noteActions.event_id]: noteActions })); + return; + } + }; + + const savePage = (page: FeedPage) => { + const newPosts = sortByRecency(convertToNotes(page)); + + saveNotes(newPosts); + }; + + + const updateSidebar = (content: NostrEventContent) => { + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + updateStore('sidebar', 'users', () => ({ [user.pubkey]: user }) + ); + return; + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + + if (store.lastNote?.post?.noteId !== nip19.noteEncode(message.id)) { + updateStore('sidebar', 'messages', (msgs) => [ ...msgs, message ]); + } + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + updateStore('sidebar', 'postStats', () => ({ [stat.event_id]: stat })); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + updateStore('page', 'mentions', () => ({ [mention.id]: mention })); + return; + } + + if (content.kind === Kind.NoteActions) { + const noteActionContent = content as NostrNoteActionsContent; + const noteActions = JSON.parse(noteActionContent.content) as NoteActions; + + updateStore('page', 'noteActions', () => ({ [noteActions.event_id]: noteActions })); + return; + } + }; + + const saveSidebar = (page: FeedPage) => { + const newPosts = sortByScore(convertToNotes(page)); + + updateStore('sidebar', 'notes', () => [ ...newPosts ]); + }; + + const setProfileKey = (profileKey?: string) => { + updateStore('profileKey', () => profileKey); + + if (profileKey) { + updateStore('userProfile', () => undefined); + updateStore('userStats', () => ({ ...emptyStats })); + getUserProfileInfo(profileKey, `profile_info_${APP_ID}`); + getProfileContactList(profileKey, `profile_contacts_${APP_ID}`); + getProfileScoredNotes(profileKey, `profile_scored_${APP_ID}`, 10); + } + } + +// SOCKET HANDLERS ------------------------------ + + const onMessage = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + const [type, subId, content] = message; + + if (subId === `profile_feed_${APP_ID}`) { + if (type === 'EOSE') { + const reposts = parseEmptyReposts(store.page); + const ids = Object.keys(reposts); + + if (ids.length === 0) { + savePage(store.page); + return; + } + + updateStore('reposts', () => reposts); + + getEvents(account?.publicKey, ids, `profile_reposts_${APP_ID}`); + return; + } + + if (type === 'EVENT') { + updatePage(content); + return; + } + } + + if (subId === `profile_info_${APP_ID}`) { + + if (content?.kind === Kind.Metadata) { + let user = JSON.parse(content.content); + + if (!user.displayName || typeof user.displayName === 'string' && user.displayName.trim().length === 0) { + user.displayName = user.display_name; + } + user.pubkey = content.pubkey; + user.npub = hexToNpub(content.pubkey); + user.created_at = content.created_at; + + updateStore('userProfile', () => user); + return; + } + + if (content?.kind === Kind.UserStats) { + const stats = JSON.parse(content.content); + + updateStore('userStats', () => ({ ...stats })); + return; + } + } + + if (subId === `profile_reposts_${APP_ID}`) { + if (type === 'EOSE') { + savePage(store.page); + return; + } + + if (type === 'EVENT') { + const repostId = (content as NostrNoteContent).id; + const reposts = store.reposts || {}; + const parent = store.page.messages.find(m => m.id === reposts[repostId]); + + if (parent) { + updateStore('page', 'messages', (msg) => msg.id === parent.id, 'content', () => JSON.stringify(content)); + } + + return; + } + } + + // if (subId === `profile_oldest_${APP_ID}`) { + // if (content?.kind === Kind.OldestEvent) { + // const timestamp = Number.parseInt(content.content); + // if (isNaN(timestamp)) { + // updateStore('oldestNoteDate', () => undefined); + // return; + // } + // updateStore('oldestNoteDate', () => timestamp); + // } + // return; + // } + + if (subId === `profile_contacts_${APP_ID}`) { + if (content && content.kind === Kind.Contacts) { + const tags = content.tags; + let contacts: string[] = []; + + for (let i = 0;i contacts); + } + return; + } + + if (subId === `profile_scored_${APP_ID}`) { + if (type === 'EOSE') { + saveSidebar(store.sidebar); + return; + } + + if (type === 'EVENT') { + updateSidebar(content); + return; + } + } + }; + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + removeSocketListeners( + webSocket, + { message: onMessage, close: onSocketClose }, + ); + }; + +// EFFECTS -------------------------------------- + + createEffect(() => { + if (isConnected()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + } + }); + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + }); + +// STORES --------------------------------------- + + + const [store, updateStore] = createStore({ + ...initialData, + actions: { + saveNotes, + clearNotes, + fetchNotes, + fetchNextPage, + updatePage, + savePage, + setProfileKey, + }, + }); + +// RENDER --------------------------------------- + + return ( + + {props.children} + + ); +} + +export const useProfileContext = () => useContext(ProfileContext); diff --git a/src/contexts/SearchContext.tsx b/src/contexts/SearchContext.tsx new file mode 100644 index 0000000..c30a04e --- /dev/null +++ b/src/contexts/SearchContext.tsx @@ -0,0 +1,413 @@ +import { createStore } from "solid-js/store"; +import { + createContext, + JSX, + useContext +} from "solid-js"; +import { + FeedPage, + NostrEventContent, + NostrMentionContent, + NostrNoteActionsContent, + NostrNoteContent, + NostrStatsContent, + NostrUserContent, + NoteActions, + PrimalNote, + PrimalUser, +} from '../types/primal'; +import { Kind } from "../constants"; +import { APP_ID } from "../App"; +import { getUserProfiles } from "../lib/profile"; +import { searchContent, searchUsers } from "../lib/search"; +import { convertToUser } from "../stores/profile"; +import { sortByRecency, convertToNotes } from "../stores/note"; +import { subscribeTo } from "../sockets"; +import { nip19 } from "nostr-tools"; + +const recomendedUsers = [ + '82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2', // jack + 'bf2376e17ba4ec269d10fcc996a4746b451152be9031fa48e74553dde5526bce', // carla + 'c48e29f04b482cc01ca1f9ef8c86ef8318c059e0e9353235162f080f26e14c11', // walker + '85080d3bad70ccdcd7f74c29a44f55bb85cbcd3dd0cbb957da1d215bdb931204', // preston + 'eab0e756d32b80bcd464f3d844b8040303075a13eabc3599a762c9ac7ab91f4f', // lyn + '04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9', // odell + '472f440f29ef996e92a186b8d320ff180c855903882e59d50de1b8bd5669301e', // marty + 'e88a691e98d9987c964521dff60025f60700378a4879180dcbbb4a5027850411', // nvk + '91c9a5e1a9744114c6fe2d61ae4de82629eaaa0fb52f48288093c7e7e036f832', // rockstar + 'fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52', // pablo +]; + +export type SearchContextStore = { + contentQuery: string, + users: PrimalUser[], + scores: Record, + contentUsers: PrimalUser[], + contentScores: Record, + notes: PrimalNote[], + isFetchingUsers: boolean, + isFetchingContent: boolean, + page: FeedPage, + reposts: Record | undefined, + mentionedNotes: Record, + actions: { + findUsers: (query: string, pubkey?: string) => void, + findUserByNupub: (npub: string) => void, + findContentUsers: (query: string, pubkey?: string) => void, + findContent: (query: string) => void, + setContentQuery: (query: string) => void, + getRecomendedUsers: () => void, + }, +} + +const initialData = { + contentQuery: '', + users: [], + scores: {}, + contentUsers: [], + contentScores: {}, + notes: [], + isFetchingUsers: false, + isFetchingContent: false, + page: { messages: [], users: {}, postStats: {}, mentions: {}, noteActions: {} }, + reposts: {}, + mentionedNotes: {}, +}; + +export const SearchContext = createContext(); + +export function SearchProvider(props: { children: number | boolean | Node | JSX.ArrayElement | JSX.FunctionElement | (string & {}) | null | undefined; }) { + +// ACTIONS -------------------------------------- + + const findUserByNupub = (npub: string) => { + const subId = `find_npub_${APP_ID}`; + + let decoded: nip19.DecodeResult | undefined; + + try { + decoded = nip19.decode(npub); + } catch (e) { + findUsers(npub); + return; + } + + if (!decoded) { + findUsers(npub); + return; + } + + const hex = typeof decoded.data === 'string' ? + decoded.data : + (decoded.data as nip19.ProfilePointer).pubkey; + + let users: PrimalUser[] = []; + + const unsub = subscribeTo(subId, (type, _, content) => { + if (type === 'EVENT') { + if (!content) { + return; + } + + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + users.push(convertToUser(user)); + return; + } + + if (content.kind === Kind.UserScore) { + const scores = JSON.parse(content.content); + + updateStore('scores', () => ({ ...scores })); + return; + } + } + + if (type === 'EOSE') { + + if (users.length > 0) { + updateStore('users', () => [users[0]]); + } + + updateStore('isFetchingUsers', () => false); + + unsub(); + return; + } + }); + + getUserProfiles([hex], subId); + }; + + const getRecomendedUsers = () => { + const subid = `recomended_users_${APP_ID}`; + + let users: PrimalUser[] = []; + + const unsub = subscribeTo(subid, (type, _, content) => { + if (type === 'EVENT') { + if (!content) { + return; + } + + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + users.push(convertToUser(user)); + return; + } + + if (content.kind === Kind.UserScore) { + const scores = JSON.parse(content.content); + + updateStore('scores', () => ({ ...scores })); + return; + } + } + + if (type === 'EOSE') { + + let sorted: PrimalUser[] = []; + + users.forEach((user) => { + const index = recomendedUsers.indexOf(user.pubkey); + sorted[index] = { ...user }; + }); + + updateStore('users', () => sorted); + updateStore('isFetchingUsers', () => false); + + unsub(); + return; + } + }); + + + updateStore('isFetchingUsers', () => true); + getUserProfiles(recomendedUsers, subid); + + }; + + const findUsers = (query: string, publicKey?: string) => { + const subid = `search_users_${APP_ID}`; + + let users: PrimalUser[] = []; + + const unsub = subscribeTo(subid, (type, _, content) => { + if (type === 'EVENT') { + if (!content) { + return; + } + + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + users.push(convertToUser(user)); + return; + } + + if (content.kind === Kind.UserScore) { + const scores = JSON.parse(content.content); + + updateStore('scores', () => ({ ...scores })); + return; + } + } + + if (type === 'EOSE') { + const sorted = users.sort((a, b) => { + const aScore = store.scores[a.pubkey]; + const bScore = store.scores[b.pubkey]; + + return bScore - aScore; + }); + + updateStore('users', () => sorted.slice(0, 10)); + updateStore('isFetchingUsers', () => false); + + unsub(); + return; + } + + }); + + const pubkey = query.length > 0 ? undefined : publicKey; + + updateStore('isFetchingUsers', () => true); + searchUsers(pubkey, subid, query); + } + + const findContentUsers = (query: string, publicKey?: string) => { + const subid = `search_users_c_${APP_ID}`; + + let users: PrimalUser[] = []; + + const unsub = subscribeTo(subid, (type, _, content) => { + if (type === 'EVENT') { + if (!content) { + return; + } + + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + users.push(convertToUser(user)); + return; + } + + if (content.kind === Kind.UserScore) { + const scores = JSON.parse(content.content); + + updateStore('contentScores', () => ({ ...scores })); + return; + } + } + + if (type === 'EOSE') { + const sorted = users.sort((a, b) => { + const aScore = store.scores[a.pubkey]; + const bScore = store.scores[b.pubkey]; + + return bScore - aScore; + }); + + updateStore('contentUsers', () => sorted.slice(0, 10)); + + unsub(); + return; + } + + }); + + const pubkey = query.length > 0 ? undefined : publicKey; + + updateStore('isFetchingUsers', () => true); + searchUsers(pubkey, subid, query); + } + + const saveNotes = (newNotes: PrimalNote[]) => { + updateStore('notes', () => [ ...newNotes ]); + updateStore('isFetchingContent', () => false); + }; + + + const updatePage = (content: NostrEventContent) => { + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + updateStore('page', 'users', + (usrs) => ({ ...usrs, [user.pubkey]: { ...user } }) + ); + return; + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + + updateStore('page', 'messages', + (msgs) => [ ...msgs, { ...message }] + ); + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + updateStore('page', 'postStats', + (stats) => ({ ...stats, [stat.event_id]: { ...stat } }) + ); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + updateStore('page', 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + + if (content.kind === Kind.NoteActions) { + const noteActionContent = content as NostrNoteActionsContent; + const noteActions = JSON.parse(noteActionContent.content) as NoteActions; + + updateStore('page', 'noteActions', + (actions) => ({ ...actions, [noteActions.event_id]: { ...noteActions } }) + ); + return; + } + }; + + const savePage = (page: FeedPage) => { + const newPosts = sortByRecency(convertToNotes(page)); + + saveNotes(newPosts); + }; + + const findContent = (query: string) => { + const subid = `search_content_${APP_ID}`; + + const unsub = subscribeTo(subid, (type, _, content) => { + + if (type === 'EOSE') { + savePage(store.page); + unsub(); + return; + } + + if (!content) { + return; + } + + + if (type === 'EVENT') { + updatePage(content); + return; + } + + }); + + updateStore('isFetchingContent', () => true); + updateStore('notes', () => []); + updateStore('page', { messages: [], users: {}, postStats: {}, mentions: {}, noteActions: {} }) + searchContent(subid, query); + } + + const setContentQuery = (query: string) => { + updateStore('contentQuery', () => query); + }; + + + +// EFFECTS -------------------------------------- + +// SOCKET HANDLERS ------------------------------ + + +// STORES --------------------------------------- + +const [store, updateStore] = createStore({ + ...initialData, + actions: { + findUsers, + findUserByNupub, + findContent, + findContentUsers, + setContentQuery, + getRecomendedUsers, + }, +}); + + return ( + + {props.children} + + ); +} + +export function useSearchContext() { return useContext(SearchContext); } diff --git a/src/contexts/SettingsContext.tsx b/src/contexts/SettingsContext.tsx new file mode 100644 index 0000000..3ac3c3d --- /dev/null +++ b/src/contexts/SettingsContext.tsx @@ -0,0 +1,444 @@ +import { createStore } from "solid-js/store"; +import { useToastContext } from "../components/Toaster/Toaster"; +import { defaultFeeds, noKey, defaultNotificationSettings, themes, trendingFeed } from "../constants"; +import { + createContext, + createEffect, + onCleanup, + onMount, + useContext +} from "solid-js"; +import { + isConnected, + refreshSocketListeners, + removeSocketListeners, + socket, + subscribeTo +} from "../sockets"; +import { + ContextChildren, + PrimalFeed, + PrimalTheme, +} from "../types/primal"; +import { + initAvailableFeeds, + removeFromAvailableFeeds, + replaceAvailableFeeds, + updateAvailableFeeds, + updateAvailableFeedsTop +} from "../lib/availableFeeds"; +import { useAccountContext } from "./AccountContext"; +import { saveTheme } from "../lib/localStore"; +import { getDefaultSettings, getSettings, sendSettings } from "../lib/settings"; +import { APP_ID } from "../App"; +import { useIntl } from "@cookbook/solid-intl"; +import { hexToNpub } from "../lib/keys"; + +export type SettingsContextStore = { + locale: string, + theme: string, + themes: PrimalTheme[], + availableFeeds: PrimalFeed[], + defaultFeed: PrimalFeed, + defaultZapAmount: number, + availableZapOptions: number[], + notificationSettings: Record, + actions: { + setTheme: (theme: PrimalTheme | null) => void, + addAvailableFeed: (feed: PrimalFeed, addToTop?: boolean) => void, + removeAvailableFeed: (feed: PrimalFeed) => void, + setAvailableFeeds: (feedList: PrimalFeed[]) => void, + moveAvailableFeed: (fromIndex: number, toIndex: number) => void, + renameAvailableFeed: (feed: PrimalFeed, newName: string) => void, + saveSettings: () => void, + loadSettings: (pubkey: string) => void, + setDefaultZapAmount: (amount: number) => void, + setZapOptions: (amount:number, index: number) => void, + updateNotificationSettings: (key: string, value: boolean, temp?: boolean) => void, + } +} + +export const initialData = { + locale: 'en-us', + theme: 'sunset', + themes, + availableFeeds: [], + defaultFeed: defaultFeeds[0], + defaultZapAmount: 10, + availableZapOptions: [ + 21, + 420, + 10_000, + 69_420, + 100_000, + 1_000_000, + ], + notificationSettings: { ...defaultNotificationSettings }, +}; + + +export const SettingsContext = createContext(); + +export const SettingsProvider = (props: { children: ContextChildren }) => { + + const toaster = useToastContext(); + const account = useAccountContext(); + const intl = useIntl(); + +// ACTIONS -------------------------------------- + + const setDefaultZapAmount = (amount: number, temp?: boolean) => { + updateStore('defaultZapAmount', () => amount); + !temp && saveSettings(); + }; + + const setZapOptions = (amount: number, index: number, temp?: boolean) => { + updateStore('availableZapOptions', index, () => amount); + !temp && saveSettings(); + }; + + const setTheme = (theme: PrimalTheme | null, temp?: boolean) => { + if (!theme) { + return; + } + + saveTheme(account?.publicKey, theme.name); + updateStore('theme', () => theme.name); + !temp && saveSettings(); + } + + const setThemeByName = (name: string | null, temp?: boolean) => { + if (!name) { + return; + } + + const availableTheme = store.themes.find(t => t.name === name); + availableTheme && setTheme(availableTheme, temp); + } + + const addAvailableFeed = (feed: PrimalFeed, addToTop = false, temp?: boolean) => { + if (!feed) { + return; + } + if (account?.hasPublicKey()) { + const add = addToTop ? updateAvailableFeedsTop : updateAvailableFeeds; + + updateStore('availableFeeds', (feeds) => add(account?.publicKey, feed, feeds)); + !temp && saveSettings(); + } + }; + + const removeAvailableFeed = (feed: PrimalFeed, temp?: boolean) => { + if (!feed) { + return; + } + + if (account?.hasPublicKey()) { + updateStore('availableFeeds', + (feeds) => removeFromAvailableFeeds(account?.publicKey, feed, feeds), + ); + + !temp && saveSettings(); + toaster?.sendSuccess(`"${feed.name}" has been removed from your home page`); + } + }; + + const setAvailableFeeds = (feedList: PrimalFeed[], temp?: boolean) => { + if (account?.hasPublicKey()) { + updateStore('availableFeeds', + () => replaceAvailableFeeds(account?.publicKey, feedList), + ); + !temp && saveSettings(); + } + }; + + const moveAvailableFeed = (fromIndex: number, toIndex: number) => { + + let list = [...store.availableFeeds]; + + list.splice(toIndex, 0, list.splice(fromIndex, 1)[0]); + + setAvailableFeeds(list); + + }; + + const renameAvailableFeed = (feed: PrimalFeed, newName: string) => { + const list = store.availableFeeds.map(af => { + return af.hex === feed.hex ? { ...af, name: newName } : { ...af }; + }); + setAvailableFeeds(list); + }; + + const updateNotificationSettings = (key: string, value: boolean, temp?: boolean) => { + updateStore('notificationSettings', () => ({ [key]: value })); + + !temp && saveSettings(); + }; + + const saveSettings = () => { + const settings = { + theme: store.theme, + feeds: store.availableFeeds, + defaultZapAmount: store.defaultZapAmount, + zapOptions: store.availableZapOptions, + notifications: store.notificationSettings, + }; + + const subid = `save_settings_${APP_ID}`; + + const unsub = subscribeTo(subid, async (type, subId, content) => { + if (type === 'NOTICE') { + toaster?.sendWarning(intl.formatMessage({ + id: 'settings.saveFail', + defaultMessage: 'Failed to save settings', + description: 'Toast message after settings have failed to be saved on the server', + })); + } + + unsub(); + return; + }); + + sendSettings(settings, subid); + } + + const loadDefaults = () => { + + const subid = `load_defaults_${APP_ID}`; + + const unsub = subscribeTo(subid, async (type, subId, content) => { + + if (type === 'EVENT' && content?.content) { + try { + const settings = JSON.parse(content?.content); + + const feeds = settings.feeds as PrimalFeed[]; + const notificationSettings = settings.notifications as Record; + + // const availableTopics = store.availableFeeds.map(f => f.hex); + + // const updatedFeeds = feeds.reduce((acc, feed) => { + // return availableTopics.includes(feed.hex) ? + // acc : + // [ ...acc, feed ]; + // }, store.availableFeeds) + + updateStore('availableFeeds', + () => replaceAvailableFeeds(account?.publicKey, feeds), + ); + + updateStore('defaultFeed', () => store.availableFeeds[0]); + + updateStore('notificationSettings', () => ({ ...notificationSettings } || { ...defaultNotificationSettings })); + + const defaultZaps = settings.defaultZapAmount || 10; + + const zapOptions = settings.zapOptions || [ + 21, + 420, + 10_000, + 69_420, + 100_000, + 1_000_000, + ]; + + updateStore('defaultZapAmount', () => defaultZaps); + updateStore('availableZapOptions', () => zapOptions); + } + catch (e) { + console.log('Error parsing settings response: ', e); + } + } + + if (type === 'NOTICE') { + toaster?.sendWarning(intl.formatMessage({ + id: 'settings.loadFail', + defaultMessage: 'Failed to load settings. Will be using local settings.', + description: 'Toast message after settings have failed to be loaded from the server', + })); + } + + unsub(); + return; + }); + + getDefaultSettings(subid) + }; + + const loadSettings = (pubkey: string | undefined) => { + if (!pubkey || pubkey === noKey) { + return; + } + + const subid = `load_settings_${APP_ID}`; + + const unsub = subscribeTo(subid, async (type, subId, content) => { + + if (type === 'EVENT' && content?.content) { + try { + const { theme, feeds, defaultZapAmount, zapOptions, notifications } = JSON.parse(content?.content); + + theme && setThemeByName(theme, true); + feeds && setAvailableFeeds(feeds, true); + defaultZapAmount && setDefaultZapAmount(defaultZapAmount, true); + zapOptions && updateStore('availableZapOptions', () => zapOptions); + + if (notifications) { + updateStore('notificationSettings', () => ({ ...notifications })); + } + else { + updateStore('notificationSettings', () => ({ ...defaultNotificationSettings})); + } + } + catch (e) { + console.log('Error parsing settings response: ', e); + } + } + + if (type === 'NOTICE') { + toaster?.sendWarning(intl.formatMessage({ + id: 'settings.loadFail', + defaultMessage: 'Failed to load settings. Will be using local settings.', + description: 'Toast message after settings have failed to be loaded from the server', + })); + } + + updateStore('defaultFeed', () => store.availableFeeds[0]); + + unsub(); + return; + }); + + pubkey && getSettings(pubkey, subid); + } + +// SOCKET HANDLERS ------------------------------ + + const onMessage = (event: MessageEvent) => { + // const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + // const [type, subId, content] = message; + }; + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + removeSocketListeners( + webSocket, + { message: onMessage, close: onSocketClose }, + ); + }; + + +// EFFECTS -------------------------------------- + + onMount(() => { + // Set global theme, this is done to avoid changing the theme + // when waiting for pubkey (like when reloading a page). + const storedTheme = localStorage.getItem('theme'); + setThemeByName(storedTheme, true); + }); + + + // This is here as to not trigger the effect + // TODO Solve this. + const feedLabel = intl.formatMessage({ + id: 'feeds.latestFollowing', + defaultMessage: 'Latest, following', + description: 'Label for the `latest;following` (active user\'s) feed', + }); + + + // Initial setup for a user with a public key + createEffect(() => { + if (!account?.hasPublicKey() && account?.isKeyLookupDone) { + loadDefaults(); + return; + } + + const pubkey = account?.publicKey; + + const initFeeds = initAvailableFeeds(pubkey); + + if (initFeeds && initFeeds.length > 0) { + updateStore('defaultFeed', () => initFeeds[0]); + updateStore('availableFeeds', () => replaceAvailableFeeds(pubkey, initFeeds)); + } + + + const feed = { + name: feedLabel, + hex: pubkey, + npub: hexToNpub(pubkey), + }; + + // Add trendingFeed if it's missing + // @ts-ignore + if (initFeeds && !initFeeds.find((f) => f.hex === trendingFeed.hex)) { + addAvailableFeed(trendingFeed, true, true); + } + + // Add active user's feed if it's missing + // @ts-ignore + if (initFeeds && !initFeeds.find(f => f.hex === feed.hex)) { + addAvailableFeed(feed, true, true); + } + + + setTimeout(() => { + loadSettings(pubkey); + }, 100); + }); + + createEffect(() => { + const html: HTMLElement | null = document.querySelector('html'); + localStorage.setItem('theme', store.theme); + html?.setAttribute('data-theme', store.theme); + }); + + createEffect(() => { + if (isConnected()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + } + }); + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + }); + +// STORES --------------------------------------- + + + const [store, updateStore] = createStore({ + ...initialData, + actions: { + setTheme, + addAvailableFeed, + removeAvailableFeed, + setAvailableFeeds, + moveAvailableFeed, + renameAvailableFeed, + saveSettings, + loadSettings, + setDefaultZapAmount, + setZapOptions, + updateNotificationSettings, + }, + }); + +// RENDER --------------------------------------- + + return ( + + {props.children} + + ); +} + +export const useSettingsContext = () => useContext(SettingsContext); diff --git a/src/contexts/ThreadContext.tsx b/src/contexts/ThreadContext.tsx new file mode 100644 index 0000000..3ef8069 --- /dev/null +++ b/src/contexts/ThreadContext.tsx @@ -0,0 +1,317 @@ +import { nip19 } from "nostr-tools"; +import { createStore } from "solid-js/store"; +import { getEvents, getThread } from "../lib/feed"; +import { + convertToNotes, + parseEmptyReposts, + sortByRecency, +} from "../stores/note"; +import { convertToUser } from "../stores/profile"; +import { Kind } from "../constants"; +import { + createContext, + createEffect, + onCleanup, + useContext +} from "solid-js"; +import { + isConnected, + refreshSocketListeners, + removeSocketListeners, + socket +} from "../sockets"; +import { + ContextChildren, + FeedPage, + NostrEOSE, + NostrEvent, + NostrEventContent, + NostrMentionContent, + NostrNoteActionsContent, + NostrNoteContent, + NostrStatsContent, + NostrUserContent, + NoteActions, + PrimalNote, + PrimalUser, +} from "../types/primal"; +import { APP_ID } from "../App"; +import { useAccountContext } from "./AccountContext"; + +export type ThreadContextStore = { + primaryNote: PrimalNote | undefined, + noteId: string; + notes: PrimalNote[], + users: PrimalUser[], + isFetching: boolean, + page: FeedPage, + reposts: Record | undefined, + lastNote: PrimalNote | undefined, + actions: { + saveNotes: (newNotes: PrimalNote[]) => void, + clearNotes: () => void, + fetchNotes: (noteId: string, until?: number) => void, + fetchNextPage: () => void, + updatePage: (content: NostrEventContent) => void, + savePage: (page: FeedPage) => void, + setPrimaryNote: (context: PrimalNote | undefined) => void, + } +} + +export const initialData = { + primaryNote: undefined, + noteId: '', + parentNotes: [], + notes: [], + users: [], + replyNotes: [], + isFetching: false, + page: { + messages: [], + users: {}, + postStats: {}, + mentions: {}, + noteActions: {}, + }, + reposts: {}, + lastNote: undefined, +}; + + +export const ThreadContext = createContext(); + +export const ThreadProvider = (props: { children: ContextChildren }) => { + + const account = useAccountContext(); + +// ACTIONS -------------------------------------- + + const saveNotes = (newNotes: PrimalNote[]) => { + updateStore('notes', (notes) => [ ...notes, ...newNotes ]); + updateStore('isFetching', () => false); + }; + + const fetchNotes = (noteId: string, until = 0, limit = 100) => { + clearNotes(); + updateStore('noteId', noteId) + getThread(account?.publicKey, noteId, `thread_${APP_ID}`); + updateStore('isFetching', () => true); + } + + const clearNotes = () => { + updateStore('page', () => ({ messages: [], users: {}, postStats: {}, noteActions: {} })); + updateStore('notes', () => []); + updateStore('reposts', () => undefined); + updateStore('lastNote', () => undefined); + }; + + const fetchNextPage = () => { + const lastNote = store.notes[store.notes.length - 1]; + + if (!lastNote) { + return; + } + + updateStore('lastNote', () => ({ ...lastNote })); + + // Disable pagination for thread feeds + const until = 0; //lastNote.post?.created_at || 0; + + if (until > 0) { + fetchNotes(store.noteId); + } + }; + + const updatePage = (content: NostrEventContent) => { + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + updateStore('page', 'users', + (usrs) => ({ ...usrs, [user.pubkey]: { ...user } }) + ); + return; + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + + if (store.lastNote?.post?.noteId !== nip19.noteEncode(message.id)) { + updateStore('page', 'messages', + (msgs) => [ ...msgs, { ...message }] + ); + } + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + updateStore('page', 'postStats', + (stats) => ({ ...stats, [stat.event_id]: { ...stat } }) + ); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + updateStore('page', 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + + if (content.kind === Kind.NoteActions) { + const noteActionContent = content as NostrNoteActionsContent; + const noteActions = JSON.parse(noteActionContent.content) as NoteActions; + + updateStore('page', 'noteActions', + (actions) => ({ ...actions, [noteActions.event_id]: { ...noteActions } }) + ); + return; + } + }; + + const savePage = (page: FeedPage) => { + const newPosts = sortByRecency(convertToNotes(page)); + const users = Object.values(page.users).map(convertToUser); + + updateStore('users', () => [ ...users ]); + saveNotes(newPosts); + }; + + const setPrimaryNote = (context: PrimalNote | undefined) => { + updateStore('primaryNote', () => ({ ...context })); + }; + +// SOCKET HANDLERS ------------------------------ + + const onMessage = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + + const [type, subId, content] = message; + + if (subId === `thread_${APP_ID}`) { + if (type === 'EOSE') { + const reposts = parseEmptyReposts(store.page); + const ids = Object.keys(reposts); + + if (ids.length === 0) { + savePage(store.page); + return; + } + + updateStore('reposts', () => reposts); + + getEvents(account?.publicKey, ids, `thread_reposts_${APP_ID}`); + + return; + } + + if (type === 'EVENT') { + updatePage(content); + return; + } + } + + if (subId === `thread_reposts_${APP_ID}`) { + if (type === 'EOSE') { + savePage(store.page); + return; + } + + if (type === 'EVENT') { + const repostId = (content as NostrNoteContent).id; + const reposts = store.reposts || {}; + const parent = store.page.messages.find(m => m.id === reposts[repostId]); + + if (parent) { + updateStore('page', 'messages', (msg) => msg.id === parent.id, 'content', () => JSON.stringify(content)); + } + + return; + } + } + }; + + const onSocketClose = (closeEvent: CloseEvent) => { + const webSocket = closeEvent.target as WebSocket; + + removeSocketListeners( + webSocket, + { message: onMessage, close: onSocketClose }, + ); + }; + +// EFFECTS -------------------------------------- + + createEffect(() => { + if (isConnected()) { + refreshSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + } + }); + + onCleanup(() => { + removeSocketListeners( + socket(), + { message: onMessage, close: onSocketClose }, + ); + }); + +// STORES --------------------------------------- + + const primaryNote: () => PrimalNote | undefined = () => + store.notes.find(n => n.post.id === store.noteId); + + const parentNotes: () => PrimalNote[] = () => { + const note = primaryNote(); + + if (!note) { + return []; + } + + return store.notes.filter(n => + n.post.id !== note.post.id && n.post.created_at <= note.post.created_at, + ); + }; + const replyNotes: () => PrimalNote[] = () => { + const note = primaryNote(); + + if (!note) { + return []; + } + + return store.notes.filter(n => + n.post.id !== note.post.id && n.post.created_at >= note.post.created_at, + ); + }; + + const [store, updateStore] = createStore({ + ...initialData, + actions: { + saveNotes, + fetchNotes, + clearNotes, + fetchNextPage, + updatePage, + savePage, + setPrimaryNote, + }, + }); + +// RENDER --------------------------------------- + + return ( + + {props.children} + + ); +} + +export const useThreadContext = () => useContext(ThreadContext); diff --git a/src/contexts/TranslatorContext.tsx b/src/contexts/TranslatorContext.tsx new file mode 100644 index 0000000..ddafdab --- /dev/null +++ b/src/contexts/TranslatorContext.tsx @@ -0,0 +1,49 @@ +import { createStore } from "solid-js/store"; +import { + createContext, + JSXElement, + useContext +} from "solid-js"; +import { IntlProvider } from "@cookbook/solid-intl"; + + +export type TranslatorContextStore = { + locale: string, + messages: Record, + actions: { + setLocale: (locale: string) => void, + }, +} + +const initialData = { + locale: 'en', + messages: {}, +}; + +export const TranslatorContext = createContext(); + +export function TranslatorProvider(props: { children: JSXElement }) { + + const setLocale = (locale: string) => { + updateStore('locale', () => locale); + }; + +// STORES --------------------------------------- + +const [store, updateStore] = createStore({ + ...initialData, + actions: { + setLocale, + }, +}); + + return ( + + + {props.children} + + + ); +} + +export function useTranslatorContext() { return useContext(TranslatorContext); } diff --git a/src/formats.ts b/src/formats.ts new file mode 100644 index 0000000..57e4878 --- /dev/null +++ b/src/formats.ts @@ -0,0 +1,9 @@ +type NumberFormatOptions = { + style?: "unit" | "currency" | "decimal" | "percent", + unit?: string, + unitDisplay?: "narrow" | "long" | "short", +}; + +export const hourNarrow: NumberFormatOptions = { + style: 'unit', unit: 'hour', unitDisplay: 'narrow', +}; diff --git a/src/index.scss b/src/index.scss new file mode 100644 index 0000000..bb6d972 --- /dev/null +++ b/src/index.scss @@ -0,0 +1,462 @@ +@import "@picocss/pico/scss/pico"; + +@mixin sunset_wave { + --brand-1: #FA3C3C; + --brand-2: #5B09AD; + --brand-3: #FA9A43; + --brand-gradient: linear-gradient(135deg, var(--brand-1) 0%, var(--brand-2) 100%); + --brand-gradient-vertical: linear-gradient(180deg, var(--brand-1) 0%, var(--brand-2) 100%); + --highlight-gradient: linear-gradient(137.63deg, var(--brand-3) 0%, var(--brand-1) 32.3%, var(--brand-2) 100%); + --accent-1: #CA079F; + --accent-2: #AB268E; + + --brand-text: #D5D5D5; + --background-site: #000000; + --background-card: #121212; + --background-input: #222222; + --background-modal: #00000066; + --background-embedded_card: #1A1A1A; + --border-embedded-card: #282828; + --text-primary: #FFFFFF; + --text-secondary: #AAAAAA; + --text-secondary-2: #AAAAAA; + --text-tertiary: #757575; + --text-tertiary-2: #666666; + --subtile-devider: #444444; + --check-image: url('./assets/icons/check.svg'); + + --primary: var(--accent-1); + --primary-hover: var(--accent-2); + --primary-focus: var(--background-color); + --background-color: var(--background-site); + + --active-link: var(--text-primary); + --inactive-link: var(--text-secondary); + --fade-gradient-vertical: linear-gradient(180deg, #000000FF 80%, #00000000 100%); + --fade-note-vertical: linear-gradient(180deg, #12121200, #121212FF 90%); + + --logo: url('./assets/icons/logo_fire.svg'); + --icon-follows: url('./assets/icons/follows.svg'); + --icon-tribe: url('./assets/icons/tribe.svg'); + --icon-global: url('./assets/icons/global.svg'); + --icon-network: url('./assets/icons/network.svg'); + + --icon-follows-latest: url('./assets/icons/follows_latest.svg'); + --icon-follows-popular: url('./assets/icons/follows_popular.svg'); + --icon-follows-trending: url('./assets/icons/follows_trending.svg'); + + --icon-tribe-latest: url('./assets/icons/tribe_latest.svg'); + --icon-tribe-popular: url('./assets/icons/tribe_popular.svg'); + --icon-tribe-trending: url('./assets/icons/tribe_trending.svg'); + + --icon-global-latest: url('./assets/icons/global_latest.svg'); + --icon-global-popular: url('./assets/icons/global_popular.svg'); + --icon-global-trending: url('./assets/icons/global_trending.svg'); + + --icon-network-latest: url('./assets/icons/network_latest.svg'); + --icon-network-popular: url('./assets/icons/network_popular.svg'); + --icon-network-trending: url('./assets/icons/network_trending.svg'); + + + select { + background-color: var(--background-site); + } + +} + +@mixin sunrise_wave { + --brand-1: #FA3C3C; + --brand-2: #5B09AD; + --brand-3: #5B09AD; + --brand-gradient: linear-gradient(135deg, var(--brand-1) 0%, var(--brand-2) 100%); + --brand-gradient-vertical: linear-gradient(180deg, var(--brand-1) 0%, var(--brand-2) 100%); + --highlight-gradient: linear-gradient(137.63deg, var(--brand-3) 0%, var(--brand-1) 32.3%, var(--brand-2) 100%); + --accent-1: #CA079F; + --accent-2: #AB268E; + + --brand-text: #444444; + --background-site: #F5F5F5; + --background-card: #FFFFFF; + --background-input: #E5E5E5; + --background-modal: #F5F5F566; + --background-embedded_card: #F5F5F5; + --border-embedded-card: #E5E5E5; + --text-primary: #111111; + --text-secondary: #444444; + --text-secondary-2: #666666; + --text-tertiary: #808080; + --text-tertiary-2: #808080; + --subtile-devider: #C8C8C8; + --check-image: url('./assets/icons/check-black.svg'); + + --primary: var(--accent-1); + --primary-hover: var(--accent-2); + --primary-focus: var(--background-color); + --background-color: var(--background-site); + + --active-link: var(--text-primary); + --inactive-link: var(--text-secondary); + --fade-gradient-vertical: linear-gradient(180deg, #F5F5F5FF 80%, #F5F5F500 100%); + --fade-note-vertical: linear-gradient(180deg, #FFFFFF00, #FFFFFFFF 90%); + + --logo: url('./assets/icons/logo_fire.svg'); + --icon-follows: url('./assets/icons/follows_light.svg'); + --icon-tribe: url('./assets/icons/tribe_light.svg'); + --icon-global: url('./assets/icons/global_light.svg'); + --icon-network: url('./assets/icons/network_light.svg'); + + --icon-follows-latest: url('./assets/icons/follows_latest_light.svg'); + --icon-follows-popular: url('./assets/icons/follows_popular_light.svg'); + --icon-follows-trending: url('./assets/icons/follows_trending_light.svg'); + + --icon-tribe-latest: url('./assets/icons/tribe_latest_light.svg'); + --icon-tribe-popular: url('./assets/icons/tribe_popular_light.svg'); + --icon-tribe-trending: url('./assets/icons/tribe_trending_light.svg'); + + --icon-global-latest: url('./assets/icons/global_latest_light.svg'); + --icon-global-popular: url('./assets/icons/global_popular_light.svg'); + --icon-global-trending: url('./assets/icons/global_trending_light.svg'); + + --icon-network-latest: url('./assets/icons/network_latest_light.svg'); + --icon-network-popular: url('./assets/icons/network_popular_light.svg'); + --icon-network-trending: url('./assets/icons/network_trending_light.svg'); + + select { + background-color: var(--background-site); + } +} + +@mixin midnight_wave { + --brand-1: #0090F8; + --brand-2: #4C00C7; + --brand-3: #00E0FF; + --brand-gradient: linear-gradient(135deg, var(--brand-1) 0%, var(--brand-2) 100%); + --brand-gradient-vertical: linear-gradient(180deg, var(--brand-1) 0%, var(--brand-2) 100%); + --highlight-gradient: linear-gradient(137.63deg, var(--brand-3) 0%, var(--brand-1) 32.22%, var(--brand-2) 100%); + + --accent-1: #2394EF; + --accent-2: #0C7DD8; + + --brand-text: #D5D5D5; + --background-site: #000000; + --background-card: #121212; + --background-input: #222222; + --background-modal: #00000066; + --background-embedded_card: #1A1A1A; + --border-embedded-card: #282828; + --text-primary: #FFFFFF; + --text-secondary: #AAAAAA; + --text-secondary-2: #AAAAAA; + --text-tertiary: #757575; + --text-tertiary-2: #666666; + --subtile-devider: #444444; + --card-border: #282828; + --check-image: url('./assets/icons/check.svg'); + + --primary: var(--accent-1); + --primary-hover: var(--accent-2); + --primary-focus: var(--background-color); + --background-color: var(--background-site); + + --active-link: var(--text-primary); + --inactive-link: var(--text-secondary); + --fade-gradient-vertical: linear-gradient(180deg, #000000FF 80%, #00000000 100%); + --fade-note-vertical: linear-gradient(180deg, #12121200, #121212FF 90%); + + --logo: url('./assets/icons/logo_ice.svg'); + --icon-follows: url('./assets/icons/follows.svg'); + --icon-tribe: url('./assets/icons/tribe.svg'); + --icon-global: url('./assets/icons/global.svg'); + --icon-network: url('./assets/icons/network.svg'); + + --icon-follows-latest: url('./assets/icons/follows_latest.svg'); + --icon-follows-popular: url('./assets/icons/follows_popular.svg'); + --icon-follows-trending: url('./assets/icons/follows_trending.svg'); + + --icon-tribe-latest: url('./assets/icons/tribe_latest.svg'); + --icon-tribe-popular: url('./assets/icons/tribe_popular.svg'); + --icon-tribe-trending: url('./assets/icons/tribe_trending.svg'); + + --icon-global-latest: url('./assets/icons/global_latest.svg'); + --icon-global-popular: url('./assets/icons/global_popular.svg'); + --icon-global-trending: url('./assets/icons/global_trending.svg'); + + --icon-network-latest: url('./assets/icons/network_latest.svg'); + --icon-network-popular: url('./assets/icons/network_popular.svg'); + --icon-network-trending: url('./assets/icons/network_trending.svg'); + + + select { + background-color: var(--background-site); + } +} + + +@mixin ice_wave { + --brand-1: #0090F8; + --brand-2: #4C00C7; + --brand-3: #00E0FF; + --brand-gradient: linear-gradient(135deg, var(--brand-1) 0%, var(--brand-2) 100%); + --brand-gradient-vertical: linear-gradient(180deg, var(--brand-1) 0%, var(--brand-2) 100%); + --highlight-gradient: linear-gradient(137.63deg, var(--brand-3) 0%, var(--brand-1) 32.22%, var(--brand-2) 100%); + --accent-1: #2394EF; + --accent-2: #0C7DD8; + + --brand-text: #444444; + --background-site: #F5F5F5; + --background-card: #FFFFFF; + --background-input: #E5E5E5; + --background-modal: #F5F5F566; + --background-embedded_card: #F5F5F5; + --border-embedded-card: #E5E5E5; + --text-primary: #111111; + --text-secondary: #444444; + --text-secondary-2: #666666; + --text-tertiary: #808080; + --text-tertiary-2: #808080; + --subtile-devider: #C8C8C8; + --check-image: url('./assets/icons/check-black.svg'); + + --primary: var(--accent-1); + --primary-hover: var(--accent-2); + --primary-focus: var(--background-color); + --background-color: var(--background-site); + + --active-link: var(--text-primary); + --inactive-link: var(--text-secondary); + --fade-gradient-vertical: linear-gradient(180deg, #F5F5F5FF 80%, #F5F5F500 100%); + --fade-note-vertical: linear-gradient(180deg, #FFFFFF00, #FFFFFFFF 90%); + + --logo: url('./assets/icons/logo_ice.svg'); + --icon-follows: url('./assets/icons/follows_light.svg'); + --icon-tribe: url('./assets/icons/tribe_light.svg'); + --icon-global: url('./assets/icons/global_light.svg'); + --icon-network: url('./assets/icons/network_light.svg'); + + --icon-follows-latest: url('./assets/icons/follows_latest_light.svg'); + --icon-follows-popular: url('./assets/icons/follows_popular_light.svg'); + --icon-follows-trending: url('./assets/icons/follows_trending_light.svg'); + + --icon-tribe-latest: url('./assets/icons/tribe_latest_light.svg'); + --icon-tribe-popular: url('./assets/icons/tribe_popular_light.svg'); + --icon-tribe-trending: url('./assets/icons/tribe_trending_light.svg'); + + --icon-global-latest: url('./assets/icons/global_latest_light.svg'); + --icon-global-popular: url('./assets/icons/global_popular_light.svg'); + --icon-global-trending: url('./assets/icons/global_trending_light.svg'); + + --icon-network-latest: url('./assets/icons/network_latest_light.svg'); + --icon-network-popular: url('./assets/icons/network_popular_light.svg'); + --icon-network-trending: url('./assets/icons/network_trending_light.svg'); + select { + background-color: var(--background-site); + } +} + +/* Default theme */ +:root[data-theme="dark"], +:root[data-theme="sunset"], +:root:not([data-theme="dark"]), +:root:not([data-theme="sunset"]), +:root:not([data-theme="sunrise"]), +:root:not([data-theme="midinght"]), +:root:not([data-theme="ice"]) { + @include sunset_wave(); +} + +:root[data-theme="light"], +:root[data-theme="sunrise"] { + @include sunrise_wave(); +} + +:root[data-theme="midnight"] { + @include midnight_wave(); +} + +:root[data-theme="ice"] { + @include ice_wave(); +} + +/* Automatically enabled if user has Dark mode enabled */ +@media only screen and (prefers-color-scheme: dark) { + :root { + @include sunset_wave(); + } +} + +/* Common styles */ +:root { + --missing-avatar-text: #FFFFFF; + + --z-index-lifted: 10; + --z-index-header: 20; + --z-index-floater: 30; + + --sidebar-section-icon-gradient: linear-gradient(175.11deg, #FA9A43 6.94%, #FA4343 29.79%, #5B12A4 97.76%), linear-gradient(170.29deg, #CCCCCC 12.73%, #808080 94.98%), #D9D9D9; + + --light-input: #E5E5E5; + --light-back: #F5F5F5; + --dark-input: #222222; + --dark-back: #000000; + + .mentioned_user { + color: var(--accent-1); + } + .hash_tag { + color: var(--accent-1); + } + + .postImage { + display: block; + width: 100%; + border-radius: 12px; + } + + .w-max { + width: 100%; + height: 300px; + border-radius: 4px; + } + + * { + ::-moz-selection { + color: var(--background-site); + background: var(--text-primary); + } + + ::selection { + color: var(--background-site); + background: var(--text-primary); + } + } + +} + +body { + margin: 0; + font-family: 'Roboto Flex', sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + overflow-y: scroll; + background-color: var(--background-site); +} + +.linkish { + color: var(--accent-1); +} + +.reply_icon { + -webkit-mask: url(./assets/icons/feed_reply.svg) no-repeat 0 / 100%; + mask: url(./assets/icons/feed_reply_fill.svg) no-repeat 0 / 100%; +} +.reply_icon { + -webkit-mask: url(./assets/icons/feed_reply_fill.svg) no-repeat 0 / 100%; + mask: url(./assets/icons/feed_reply_fill.svg) no-repeat 0 / 100%; +} +.repost_icon { + -webkit-mask: url(./assets/icons/feed_repost.svg) no-repeat 0 / 100%; + mask: url(./assets/icons/feed_repost_fill.svg) no-repeat 0 / 100%; +} +.repost_icon { + -webkit-mask: url(./assets/icons/feed_repost_fill.svg) no-repeat 0 / 100%; + mask: url(./assets/icons/feed_repost_fill.svg) no-repeat 0 / 100%; +} +.zap_icon { + -webkit-mask: url(./assets/icons/feed_zap.svg) no-repeat 0 / 100%; + mask: url(./assets/icons/feed_zap_fill.svg) no-repeat 0 / 100%; +} +.zap_icon { + -webkit-mask: url(./assets/icons/feed_zap_fill.svg) no-repeat 0 / 100%; + mask: url(./assets/icons/feed_zap_fill.svg) no-repeat 0 / 100%; +} +.like_icon { + -webkit-mask: url(./assets/icons/feed_like.svg) no-repeat 0 / 100%; + mask: url(./assets/icons/feed_like_fill.svg) no-repeat 0 / 100%; +} +.like_icon { + -webkit-mask: url(./assets/icons/feed_like_fill.svg) no-repeat 0 / 100%; + mask: url(./assets/icons/feed_like_fill.svg) no-repeat 0 / 100%; +} +.attach_icon { + -webkit-mask: url(./assets/icons/attach_media.svg) no-repeat 0 / 100%; + mask: url(./assets/icons/attach_media.svg) no-repeat 0 / 100%; +} + +// Scrollbars + +/* width */ +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +/* Track */ +::-webkit-scrollbar-track { + background: none; +} + +/* Handle */ +::-webkit-scrollbar-thumb { + background: var(--subtile-devider); + border-radius: 3px; +} + +/* Handle on hover */ +::-webkit-scrollbar-thumb:hover { + background: var(--text-tertiary-2); +} + +// Checkboxes + +[type="checkbox"] { + background-color: var(--background-card); + border-color: var(--text-tertiary-2); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + width: 20px; + height: 20px; + margin: 0; + margin-inline-end: 16px; + border-width: 1px; + font-size: inherit; + vertical-align: middle; + cursor: pointer; + + &::-ms-check { + display: none; // unstyle IE checkboxes + } + + &:checked, + &:checked:active, + &:checked:focus { + background-color: var(--background-card); + border-color: var(--text-tertiary-2); + background-position: center; + background-size: 12px auto; + background-repeat: no-repeat; + background-image: var(--check-image); + } + + &:focus { + background-color: var(--background-card); + border-color: var(--text-tertiary-2); + } + + & ~ label { + display: inline-block; + margin-right: 0; + margin-bottom: 0; + cursor: pointer; + } + + &:indeterminate { + background-color: var(--background-site); + border-color: var(--text-tertiary-2); + background-image: var(--icon-minus); + background-position: center; + background-size: 12px auto; + background-repeat: no-repeat; + } + +} diff --git a/src/index.tsx b/src/index.tsx new file mode 100644 index 0000000..a1a9779 --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,8 @@ +/* @refresh reload */ +import { render } from 'solid-js/web'; + +import './index.scss'; +import App from './App'; +import { Router } from '@solidjs/router'; + +render(() => , document.getElementById('root') as HTMLElement); diff --git a/src/lib/availableFeeds.ts b/src/lib/availableFeeds.ts new file mode 100644 index 0000000..bffcc09 --- /dev/null +++ b/src/lib/availableFeeds.ts @@ -0,0 +1,69 @@ +import { defaultFeeds, noKey } from "../constants"; +import { PrimalFeed } from "../types/primal"; +import { getStorage, saveFeeds } from "./localStore"; + + +export const initAvailableFeeds = (pubkey: string | undefined) => { + const storage = getStorage(pubkey); + + if (storage.feeds && storage.feeds.length === 0) { + saveFeeds(pubkey, defaultFeeds); + return defaultFeeds; + } + + return storage.feeds; +} + +export const updateAvailableFeedsTop = ( + pubkey: string | undefined, + feed: PrimalFeed, + feeds: PrimalFeed[], +) => { + if (feeds.find(f => feed.name === f.name)) { + return [...feeds]; + } + + const newFeeds = [ { ...feed }, ...feeds]; + + saveFeeds(pubkey, newFeeds); + + return newFeeds; +}; + +export const updateAvailableFeeds = ( + pubkey: string | undefined, + feed: PrimalFeed, + feeds: PrimalFeed[], +) => { + if (feeds.find(f => feed.name === f.name)) { + return [...feeds]; + } + + const newFeeds = [ ...feeds, { ...feed }]; + + saveFeeds(pubkey, newFeeds); + + return newFeeds; +}; + +export const removeFromAvailableFeeds = ( + pubkey: string | undefined, + feed: PrimalFeed, + feeds: PrimalFeed[], +) => { + const newFeeds = feeds.filter(f => f.hex !== feed.hex); + + saveFeeds(pubkey, newFeeds); + + return newFeeds; +}; + +export const replaceAvailableFeeds = ( + pubkey: string | undefined, + feeds: PrimalFeed[], +) => { + const newFeeds = [...feeds]; + saveFeeds(pubkey, newFeeds); + + return newFeeds; +} diff --git a/src/lib/dates.ts b/src/lib/dates.ts new file mode 100644 index 0000000..c5128dc --- /dev/null +++ b/src/lib/dates.ts @@ -0,0 +1,57 @@ +export const shortDate = (timestamp: number | undefined) => { + if (!timestamp || timestamp < 0) { + return ''; + } + const date = new Date(timestamp * 1000); + const dtf = new Intl.DateTimeFormat('en-US', { dateStyle: 'medium'}); + + return dtf.format(date); +}; + +export const date = (postTimestamp: number, style: Intl.RelativeTimeFormatStyle = 'short', since?: number) => { + const today = since ?? Math.floor((new Date()).getTime() / 1000); + const date = new Date(postTimestamp * 1000); + + const minute = 60; + const hour = minute * 60; + const day = hour * 24; + const week = day * 7; + const month = day * 30; + const year = month * 12; + + const rtf = new Intl.RelativeTimeFormat('en', { style }); + + const diff = today - postTimestamp; + + if ( diff > year) { + const years = Math.floor(diff / year); + return { date, label: rtf.format(-years, 'years') }; + } + + if (diff > month) { + const months = Math.floor(diff / month); + return { date, label: rtf.format(-months, 'months') }; + } + + if (diff > week) { + const weeks = Math.floor(diff / week); + return { date, label: rtf.format(-weeks, 'weeks') }; + } + + if (diff > day) { + const days = Math.floor(diff / day); + return { date, label: rtf.format(-days, 'days') }; + } + + if (diff > hour) { + const hours = Math.floor(diff / hour); + return { date, label: rtf.format(-hours, 'hours') }; + } + + if (diff > minute) { + const minutes = Math.floor(diff / minute); + return { date, label: rtf.format(-minutes, 'minutes') }; + } + + return { date, label: `${diff}s` }; +}; diff --git a/src/lib/feed.ts b/src/lib/feed.ts new file mode 100644 index 0000000..25166e9 --- /dev/null +++ b/src/lib/feed.ts @@ -0,0 +1,224 @@ +import { sendMessage } from "../sockets"; +import { ExploreFeedPayload } from "../types/primal"; +import { nip19 } from "nostr-tools"; +import { day, hour, noKey } from "../constants"; + +export const getFutureFeed = (user_pubkey: string | undefined, pubkey: string | undefined, subid: string, since: number) => { + if (!pubkey || pubkey === noKey) { + return; + } + + let payload: { since: number, pubkey: string, user_pubkey?: string, limit: number } = + { since, pubkey, limit: 1000 }; + + if (user_pubkey && user_pubkey !== noKey) { + payload.user_pubkey = user_pubkey; + } + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["feed", payload]}, + ])); +}; + +export const getFeed = (user_pubkey: string | undefined, pubkey: string | undefined, subid: string, until = 0, limit = 20) => { + if (!pubkey || pubkey === noKey) { + return; + } + const start = until === 0 ? 'since' : 'until'; + + let payload = { limit, [start]: until, pubkey }; + + if (user_pubkey && user_pubkey !== noKey) { + payload.user_pubkey = user_pubkey; + } + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["feed", payload]}, + ])); +} + +export const getEvents = (user_pubkey: string | undefined, eventIds: string[], subid: string, extendResponse?: boolean) => { + + let payload: {event_ids: string[], user_pubkey?: string, extended_response?: boolean } = + { event_ids: eventIds } ; + + if (user_pubkey && user_pubkey !== noKey) { + payload.user_pubkey = user_pubkey; + } + + if (extendResponse) { + payload.extended_response = extendResponse; + } + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["events", payload]}, + ])); + +}; + +export const getUserFeed = (user_pubkey: string | undefined, pubkey: string | undefined, subid: string, until = 0, limit = 20) => { + if (!pubkey || pubkey === noKey) { + return; + } + + const start = until === 0 ? 'since' : 'until'; + + let payload = { pubkey, limit, notes: 'authored', [start]: until } ; + + if (user_pubkey && user_pubkey !== noKey) { + payload.user_pubkey = user_pubkey; + } + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["feed", payload]}, + ])); +} + +export const getThread = (user_pubkey: string | undefined, postId: string, subid: string, until = 0, limit = 20) => { + + const decoded = nip19.decode(postId).data; + let event_id = ''; + + + if (typeof decoded === 'string') { + event_id = decoded; + } + + if (typeof decoded !== 'string' && 'id' in decoded) { + event_id = decoded.id; + } + + if (event_id.length === 0) { + return; + } + + let payload: { user_pubkey?: string, limit: number, event_id: string, until?: number } = + { event_id, limit: 100 } ; + + if (user_pubkey && user_pubkey !== noKey) { + payload.user_pubkey = user_pubkey; + } + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["thread_view", payload]}, + ])); +} + +export const getFutureExploreFeed = ( + user_pubkey: string | undefined, + subid: string, + scope: string, + timeframe: string, + since: number, + ) => { + + let payload: { timeframe: string, scope: string, since: number, user_pubkey?: string, created_after?: number, limit: number } = + { timeframe, scope, since, limit: 1000, }; + + if (user_pubkey && user_pubkey !== noKey) { + payload.user_pubkey = user_pubkey; + } + + if (since > 0) { + payload.since = since; + } + + if (timeframe === 'trending') { + const yesterday = Math.floor((new Date().getTime() - day) / 1000); + + payload.created_after = yesterday; + } + + if (timeframe === 'mostzapped4h') { + const fourHAgo = Math.floor((new Date().getTime() - (4 * hour)) / 1000); + + payload.timeframe = 'mostzapped'; + payload.created_after = fourHAgo; + } + + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: [ + "explore", + payload, + ]}, + ])); +}; + +export const getExploreFeed = ( + pubkey: string | undefined, + subid: string, + scope: string, + timeframe: string, + until = 0, + limit = 20, +) => { + + let payload: ExploreFeedPayload = { timeframe, scope, limit }; + + if (pubkey && pubkey !== noKey) { + payload.user_pubkey = pubkey; + } + + if (until > 0) { + payload.until = until; + } + + if (timeframe === 'trending') { + const yesterday = Math.floor((new Date().getTime() - day) / 1000); + + payload.created_after = yesterday; + } + + if (timeframe === 'mostzapped4h') { + const fourHAgo = Math.floor((new Date().getTime() - (4 * hour)) / 1000); + + payload.timeframe = 'mostzapped'; + payload.created_after = fourHAgo; + } + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: [ + "explore", + payload, + ]}, + ])); +}; + +export const getTrending24h = ( + subid: string, +) => { + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: [ + "explore_global_trending_24h", + ]}, + ])); +}; + +export const getMostZapped4h = ( + subid: string, +) => { + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: [ + "explore_global_mostzapped_4h", + ]}, + ])); +}; diff --git a/src/lib/keys.ts b/src/lib/keys.ts new file mode 100644 index 0000000..b0812bb --- /dev/null +++ b/src/lib/keys.ts @@ -0,0 +1,6 @@ +import { nip19 } from "nostr-tools" +import { noKey } from "../constants"; + +export const hexToNpub = (hex: string | undefined): string => { + return hex && hex !== noKey ? nip19.npubEncode(hex) : ''; +} diff --git a/src/lib/localStore.ts b/src/lib/localStore.ts new file mode 100644 index 0000000..d484703 --- /dev/null +++ b/src/lib/localStore.ts @@ -0,0 +1,111 @@ +import { noKey } from "../constants" +import { NostrRelays, PrimalFeed } from "../types/primal"; + +export type LocalStore = { + following: string[], + followingSince: number, + relaySettings: NostrRelays, + likes: string[], + feeds: PrimalFeed[]; + theme: string, +}; + +export const emptyStorage = { + following: [], + followingSince: 0, + relaySettings: {}, + likes: [], + feeds: [], + theme: 'sunset', +} + +export const storageName = (pubkey?: string) => { + if (!pubkey || pubkey === noKey) { + return 'anon'; + } + + return `store_${pubkey}`; +}; + +export const getStorage = (pubkey?: string) => { + if (!pubkey) { + return {} as LocalStore; + } + + const name = storageName(pubkey); + const storage = localStorage.getItem(name); + + return storage ? + JSON.parse(storage) as LocalStore : + { ...emptyStorage }; +}; + +export const setStorage = (pubkey: string | undefined, data: LocalStore) => { + if (!pubkey) { + return; + } + + const name = storageName(pubkey); + const value = JSON.stringify(data); + + localStorage.setItem(name, value); +} + +export const saveFollowing = (pubkey: string | undefined, following: string[], since: number) => { + if (!pubkey) { + return; + } + + const store = getStorage(pubkey); + + store.following = [...following]; + store.followingSince = since; + + setStorage(pubkey, store); +} + +export const saveRelaySettings = (pubkey: string | undefined, settings: NostrRelays) => { + if (!pubkey) { + return; + } + + const store = getStorage(pubkey); + + store.relaySettings = { ...settings }; + + setStorage(pubkey, store); +} + +export const saveLikes = (pubkey: string | undefined, likes: string[]) => { + if (!pubkey) { + return; + } + + const store = getStorage(pubkey); + + store.likes = [ ...likes ]; + + setStorage(pubkey, store); +}; + +export const saveFeeds = (pubkey: string | undefined, feeds: PrimalFeed[]) => { + if (!pubkey) { + return; + } + const store = getStorage(pubkey); + + store.feeds = [ ...feeds ]; + + setStorage(pubkey, store); +}; + +export const saveTheme = (pubkey: string | undefined, theme: string) => { + if (!pubkey) { + return; + } + const store = getStorage(pubkey); + + store.theme = theme; + + setStorage(pubkey, store); +}; diff --git a/src/lib/media.ts b/src/lib/media.ts new file mode 100644 index 0000000..6d70af1 --- /dev/null +++ b/src/lib/media.ts @@ -0,0 +1,50 @@ +import { Kind } from "../constants"; +import { sendMessage } from "../uploadSocket"; +import { NostrWindow } from "../types/primal"; + +export const getMediaUrl = (url: string | undefined, size = 'o', animated = 1) => { + if (!url) { + return; + } + const mediaServer = localStorage.getItem('mediaServer'); + + if (!mediaServer) { + return url; + } + + const encodedUrl = encodeURIComponent(url); + + return `${mediaServer}/media-cache?s=${size}&a=${animated}&u=${encodedUrl}`; +} + +export const uploadMedia = async ( + uploader: string | undefined, + subid: string, + content: string, +) => { + if (!uploader) { + return; + } + + const event = { + content, + kind: Kind.Upload, + tags: [['p', uploader]], + created_at: Math.floor((new Date()).getTime() / 1000), + }; + + const win = window as NostrWindow; + const nostr = win.nostr; + + if (nostr === undefined) { + return false; + } + + const signedNote = await nostr.signEvent(event); + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["upload", { event_from_user: signedNote }]}, + ])); +}; diff --git a/src/lib/messages.ts b/src/lib/messages.ts new file mode 100644 index 0000000..8790efc --- /dev/null +++ b/src/lib/messages.ts @@ -0,0 +1,96 @@ +import { Kind } from "../constants"; +import { sendMessage } from "../sockets"; +import { NostrWindow, UserRelation } from "../types/primal"; + + +export const subscribeToMessagesStats = (pubkey: string, subid: string) => { + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["directmsg_count", { pubkey }]}, + ])); +} + +export const resetMessageCount = async (sender: string, subid: string) => { + + const win = window as NostrWindow; + const nostr = win.nostr; + + if (nostr === undefined) { + return false; + } + + const event = { + content: `{ "description": "reset messages from '${sender}'"}`, + kind: Kind.Settings, + tags: [["d", "Primal-Web App"]], + created_at: Math.ceil((new Date()).getTime() / 1000), + }; + + const signedEvent = await nostr.signEvent(event); + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["reset_directmsg_count", { + event_from_user: signedEvent, + sender, + }]}, + ])); +} + +export const getMessageCounts = (user_pubkey: string, relation: UserRelation, subid: string) => { + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["get_directmsg_contacts", { user_pubkey, relation }]}, + ])); +} + +export const getOldMessages = (receiver: string, sender: string, subid: string, until = 0, limit = 20) => { + + const start = until === 0 ? 'since' : 'until'; + + const payload = { limit, [start]: until, receiver, sender }; + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["get_directmsgs", payload]}, + ])); +} + +export const getNewMessages = (receiver: string, sender: string, subid: string, since = 0, limit = 20) => { + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["get_directmsgs", { receiver, sender, since, limit }]}, + ])); +} + +export const markAllAsRead = async (subid: string) => { + + const win = window as NostrWindow; + const nostr = win.nostr; + + if (nostr === undefined) { + return false; + } + + const event = { + content: `{ "description": "mark all messages as read"}`, + kind: Kind.Settings, + tags: [["d", "Primal-Web App"]], + created_at: Math.ceil((new Date()).getTime() / 1000), + }; + + const signedEvent = await nostr.signEvent(event); + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["reset_directmsg_counts", { + event_from_user: signedEvent, + }]}, + ])); +} diff --git a/src/lib/notes.ts b/src/lib/notes.ts new file mode 100644 index 0000000..ba6c5b8 --- /dev/null +++ b/src/lib/notes.ts @@ -0,0 +1,317 @@ +import { getLinkPreview } from "link-preview-js"; +import { Relay } from "nostr-tools"; +import { createStore } from "solid-js/store"; +import { Kind } from "../constants"; +import { NostrWindow, PrimalNote } from "../types/primal"; +import { getMediaUrl } from "./media"; + +const getLikesStorageKey = () => { + const key = localStorage.getItem('pubkey') || 'anon'; + return `likes_${key}`; +}; + +export const getStoredLikes = () => { + return JSON.parse(localStorage.getItem(getLikesStorageKey()) || '[]'); +}; + +export const setStoredLikes = (likes: string[]) => { + return localStorage.setItem(getLikesStorageKey(), JSON.stringify(likes)); +}; + +export const sanitize = (html: string) => { + return html.replaceAll('<', '<').replaceAll('>', '>'); +}; + +export const [linkPreviews, setLinkPreviews] = createStore>({}); + +export const addLinkPreviews = async (url: string) => { + try { + const preview = await getLinkPreview(url); + + // const preview = await fetch(`link-preview?u=https://yahoo.com`); + // console.log('PREV: ', preview); + setLinkPreviews((p) => ({ ...p, [url]: { ...preview }})); + + } catch (e) { + console.log('Failed to get preview for: ', url); + setLinkPreviews((p) => ({ ...p, [url]: { noPreview: url }})); + } +}; + +export const spotifyRegex = /open\.spotify\.com\/(track|album|playlist|episode)\/([a-zA-Z0-9]+)/; +export const twitchRegex = /twitch.tv\/([a-z0-9_]+$)/i; +export const mixCloudRegex = /mixcloud\.com\/(?!live)([a-zA-Z0-9]+)\/([a-zA-Z0-9-]+)/; +// export const tidalRegex = /tidal\.com\/(?:browse\/)?(\w+)\/([a-z0-9-]+)/i; +export const soundCloudRegex = /soundcloud\.com\/(?!live)([a-zA-Z0-9]+)\/([a-zA-Z0-9-]+)/; +// export const tweetUrlRegex = /https?:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(?:es)?\/(\d+)/; +export const appleMusicRegex = /music\.apple\.com\/([a-z]{2}\/)?(?:album|playlist)\/[\w\d-]+\/([.a-zA-Z0-9-]+)(?:\?i=\d+)?/i; +export const nostrNestsRegex = /nostrnests\.com\/[a-zA-Z0-9]+/i; +// export const magnetRegex = /(magnet:[\S]+)/i; +export const wavlakeRegex = /(?:player\.)?wavlake\.com\/(track\/[.a-zA-Z0-9-]+|album\/[.a-zA-Z0-9-]+|[.a-zA-Z0-9-]+)/i; +// export const odyseeRegex = /odysee\.com\/([a-zA-Z0-9]+)/; +export const youtubeRegex = /(?:https?:\/\/)?(?:www|m\.)?(?:youtu\.be\/|youtube\.com\/(?:live\/|shorts\/|embed\/|v\/|watch\?v=|watch\?.+&v=))((\w|-){11})/; + +export const urlify = (text: string, highlightOnly = false, skipEmbed = false, skipLinkPreview = false) => { + const urlRegex = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,8}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g; + + return text.replace(urlRegex, (url) => { + if (!skipEmbed) { + + const isImage = url.includes('.jpg')|| url.includes('.jpeg')|| url.includes('.webp') || url.includes('.png') || url.includes('.gif') || url.includes('format=png'); + + if (isImage) { + return '' + } + + const isMp4Video = url.includes('.mp4') || url.includes('.mov'); + + if (isMp4Video) { + return ``; + } + + const isOggVideo = url.includes('.ogg'); + + if (isOggVideo) { + return ``; + } + + const isWebmVideo = url.includes('.webm'); + + if (isWebmVideo) { + return ``; + } + + if (youtubeRegex.test(url)) { + const youtubeId = youtubeRegex.test(url) && RegExp.$1; + + return ``; + } + + if (spotifyRegex.test(url)) { + const convertedUrl = url.replace(/\/(track|album|playlist|episode)\/([a-zA-Z0-9]+)/, "/embed/$1/$2"); + + return ``; + } + + if (twitchRegex.test(url)) { + const channel = url.split("/").slice(-1); + + const args = `?channel=${channel}&parent=${window.location.hostname}&muted=true`; + return ``; + } + + if (mixCloudRegex.test(url)) { + const feedPath = (mixCloudRegex.test(url) && RegExp.$1) + "%2F" + (mixCloudRegex.test(url) && RegExp.$2); + + // const lightTheme = useLogin().preferences.theme === "light"; + // const lightParams = lightTheme ? "light=1" : "light=0"; + return ` +
+ `; + } + + if (soundCloudRegex.test(url)) { + return ``; + } + + if (appleMusicRegex.test(url)) { + const convertedUrl = url.replace("music.apple.com", "embed.music.apple.com"); + const isSongLink = /\?i=\d+$/.test(convertedUrl); + + return ` + + `; + } + + if (nostrNestsRegex.test(url)) { + return ` + `; + } + + if (wavlakeRegex.test(url)) { + const convertedUrl = url.replace(/(?:player\.|www\.)?wavlake\.com/, "embed.wavlake.com"); + + return ` + `; + } + } + + if (highlightOnly) { + return `${url}`; + } + + if (skipLinkPreview) { + return `${url}`; + } + + addLinkPreviews(url); + + return `__LINK__${url}__LINK__`; + }) +} + +export const replaceLinkPreviews = (text: string) => { + let parsed = text; + + const regex = /__LINK__.*?__LINK__/ig; + + parsed = parsed.replace(regex, (link) => { + const url = link.split('__LINK__')[1]; + + return `${url}`; + + }); + + return parsed; +} + +export const addlineBreaks = (text: string) => { + const regex = /(\r\n|\r|\n)/g; + + return text.replaceAll(regex, '
'); +}; + +export const highlightHashtags = (text: string) => { + const regex = /(^|\s)(#[a-z\d-]+)/ig; + + return text.replace(regex, "$1$2"); +}; + +export const parseNote1 = (content: string) => urlify(addlineBreaks(content)); +export const parseNote2 = (content: string) => urlify(addlineBreaks(content), true); +export const parseNote3 = (content: string) => urlify(addlineBreaks(content), false, false, true); + +type ReplyTo = { e?: string, p?: string }; +type NostrEvent = { content: string, kind: number, tags: string[][], created_at: number }; + +export const sendLike = async (note: PrimalNote, relays: Relay[]) => { + const event = { + content: '+', + kind: Kind.Reaction, + tags: [ + ['e', note.post.id], + ['p', note.post.pubkey], + ], + created_at: Math.floor((new Date()).getTime() / 1000), + }; + + return await sendEvent(event, relays); + +} + +export const sendRepost = async (note: PrimalNote, relays: Relay[]) => { + const event = { + content: JSON.stringify(note.msg), + kind: Kind.Repost, + tags: [ + ['e', note.post.id], + ['p', note.user.pubkey], + ], + created_at: Math.floor((new Date()).getTime() / 1000), + }; + + return await sendEvent(event, relays); +} + + +export const sendNote = async (text: string, relays: Relay[], tags: string[][]) => { + const event = { + content: text, + kind: Kind.Text, + tags, + created_at: Math.floor((new Date()).getTime() / 1000), + }; + + return await sendEvent(event, relays); +} + +export const sendContacts = async (contacts: string[], date: number, content: string, relays: Relay[]) => { + const event = { + content, + kind: Kind.Contacts, + tags: contacts.map(c => ['p', c]), + created_at: date, + }; + + return await sendEvent(event, relays); +}; + +export const sendEvent = async (event: NostrEvent, relays: Relay[]) => { + const win = window as NostrWindow; + const nostr = win.nostr; + + if (nostr === undefined) { + return false; + } + + const signedNote = await nostr.signEvent(event); + + return new Promise((resolve) => { + const numberOfRelays = relays.length; + let failed = 0; + + relays.forEach(relay => { + try { + let pub = relay.publish(signedNote); + + pub.on('ok', () => { + console.log(`${relay.url} has accepted our event`); + resolve(true); + }); + + pub.on('failed', (reason: any) => { + console.log(`failed to publish to ${relay.url}: ${reason}`) + failed += 1; + if (failed >= numberOfRelays) { + resolve(false); + } + }); + } catch (e) { + console.log('Failed sending note: ', e); + failed += 1; + if (failed >= numberOfRelays) { + resolve(false); + } + } + }); + + }); +} diff --git a/src/lib/notifications.ts b/src/lib/notifications.ts new file mode 100644 index 0000000..70be2ba --- /dev/null +++ b/src/lib/notifications.ts @@ -0,0 +1,127 @@ +import { Kind } from "../constants"; +import { sendMessage } from "../sockets"; +import { NostrWindow } from "../types/primal"; + +export const getNotifications = ( + user_pubkey: string | undefined, + pubkey: string | undefined, + subid: string, + since = 0, + limit = 1000, +) => { + if (!pubkey) { + return; + } + + let payload: { pubkey: string, limit: number, since: number, user_pubkey?: string } = { pubkey, limit, since }; + + if (user_pubkey) { + payload.user_pubkey = user_pubkey; + } + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["get_notifications", payload]}, + ])); +}; + +export const getOldNotifications = ( + user_pubkey: string | undefined, + pubkey: string | undefined, + subid: string, + until = 0, + limit = 20, +) => { + if (!pubkey) { + return; + } + + let payload: { pubkey: string, limit: number, until: number, user_pubkey?: string } = { pubkey, limit, until }; + + if (user_pubkey) { + payload.user_pubkey = user_pubkey; + } + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["get_notifications", payload]}, + ])); +}; + +export const getLastSeen = (pubkey: string | undefined, subid: string) => { + if (!pubkey) { + return; + } + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["get_notifications_seen", { pubkey }]}, + ])); + +}; + +export const setLastSeen = async ( + subid: string, + timestamp: number, +) => { + const win = window as NostrWindow; + const nostr = win.nostr; + + if (nostr === undefined) { + return false; + } + + const event = { + content: '{ "description": "update notifications last seen timestamp"}', + kind: Kind.Settings, + tags: [], + created_at: timestamp, + }; + + const signedNote = await nostr.signEvent(event); + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["set_notifications_seen", { + event_from_user: signedNote, + }]}, + ])); + +}; + +export const subscribeToNotificationStats = (pubkey: string, subid: string) => { + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["notification_counts", { pubkey, subid, }]}, + ])); +} + +export const truncateNumber = (amount: number, from?: 1 | 2 | 3 | 4) => { + const t = 1_000; + const s = from || 1; + + const l = Math.pow(t, s); + + if (amount < l) { + return amount.toLocaleString(); + } + + if (amount < Math.pow(t, 2)) { + return `${Math.floor(amount / t).toLocaleString()}K`; + } + + if (amount < Math.pow(t, 3)) { + return `${Math.floor(amount / Math.pow(t, 2)).toLocaleString()}M` + } + + if (amount < Math.pow(t, 4)) { + return `${Math.floor(amount / Math.pow(t, 3)).toLocaleString()}B` + } + + return `1T+`; +}; diff --git a/src/lib/profile.ts b/src/lib/profile.ts new file mode 100644 index 0000000..3fac2a2 --- /dev/null +++ b/src/lib/profile.ts @@ -0,0 +1,123 @@ +import { Event, Relay } from "nostr-tools"; +import { Kind, minKnownProfiles, noKey } from "../constants"; +import { sendMessage } from "../sockets"; +import { NostrWindow, VanityProfiles } from "../types/primal"; +import { getStorage } from "./localStore"; + +export const getUserProfiles = (pubkeys: string[], subid: string) => { + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["user_infos", { pubkeys }]}, + ])); +} + +export const getUserProfileInfo = (pubkey: string, subid: string) => { + if (pubkey === noKey) { + return + } + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["user_profile", { pubkey }]}, + ])); +} + +export const getProfileContactList = (pubkey: string, subid: string) => { + if (pubkey === noKey) { + return + } + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["contact_list", { pubkey }]}, + ])); +} + +export const getProfileScoredNotes = (pubkey: string, subid: string, limit = 5) => { + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["user_profile_scored_content", { pubkey, limit }]}, + ])); +} + +export const getTrendingUsers = (subid: string) => { + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["scored_users_24h"]}, + ])); +} + + +export const trimVerification = (address: string | undefined) => { + if (address === undefined) { + return ''; + } + + return address.split('@'); +} + +export const getLikes = (pubkey: string, relays: Relay[], callback: (likes: string[]) => void) => { + if (pubkey === noKey) { + return; + } + + const win = window as NostrWindow; + const nostr = win.nostr; + const storage = getStorage(pubkey); + + let likes = new Set(storage.likes); + + if (!nostr) { + callback(storage.likes); + return; + } + + // Request Reactions from all relays + try { + // const signedNote = await nostr.signEvent(event); + + relays.forEach(relay => { + + const sub = relay.sub([ + { + kinds: [Kind.Reaction], + authors: [pubkey], + }, + ]); + + sub.on('event', (event: Event) => { + const e = event.tags.find(t => t[0] === 'e'); + + e && e[1] && likes.add(e[1]); + }) + + sub.on('eose', () => { + const likeArray = Array.from(likes); + + callback(likeArray); + + sub.unsub(); + }) + }); + + } catch (e) { + console.log('Failed sending note: ', e); + } +}; + +export const fetchKnownProfiles: (vanityName: string) => Promise = async (vanityName: string) => { + try { + const name = vanityName.toLowerCase(); + const content = await fetch(`${window.location.origin}/.well-known/nostr.json?name=${name}`); + + return await content.json(); + } catch (e) { + console.log('Failed to fetch known users: ', e); + + return { ...minKnownProfiles }; + } +}; diff --git a/src/lib/relays.ts b/src/lib/relays.ts new file mode 100644 index 0000000..6249bf8 --- /dev/null +++ b/src/lib/relays.ts @@ -0,0 +1,66 @@ +import { relayInit, Relay } from "nostr-tools"; +import { relayConnectingTimeout } from "../constants"; +import { NostrRelays } from "../types/primal"; + +const logError = (relay: Relay, e: any, timedOut?: boolean) => { + const message = timedOut ? + 'timed-out connecting to relay: ' : + 'error connecting to relay: '; + + console.log(message, relay.url, e); +}; + +export const closeRelays = async (relays: Relay[], success = () => {}, fail = () => {}) => { + try { + for (let i=0; i< relays.length; i++) { + await relays[i].close() + } + return success(); + } catch (e) { + return fail(); + } +}; + +const connectToRelay = (relay: Relay) => new Promise( + (resolve, reject) => { + const timeout = setTimeout(() => { + relay.close(); + logError(relay, null, true); + reject(); + }, relayConnectingTimeout); + + relay.connect() + .then(() => { + clearTimeout(timeout); + resolve(true); + }) + .catch((e) => { + logError(relay, e); + reject(); + }); + }, +); + +export const connectRelays = async ( + relaySettings: NostrRelays, + onConnect: (relays: Relay[]) => void, +) => { + + const urls = Object.keys(relaySettings); + const relays = urls.map(u => relayInit(u)); + const connected: Relay[] = []; + + for (let i=0; i < relays.length; i++) { + const relay = relays[i]; + + if (relay.status === WebSocket.CLOSED) { + try { + await connectToRelay(relay); + connected.push(relay); + } catch(e){ + logError(relay, e); + }; + } + } + onConnect(connected); +}; diff --git a/src/lib/scroll.ts b/src/lib/scroll.ts new file mode 100644 index 0000000..5bc67d3 --- /dev/null +++ b/src/lib/scroll.ts @@ -0,0 +1,11 @@ +export const scrollWindowTo = (top: number = 0, smooth = false) => { + const behavior = smooth ? 'smooth' : 'instant'; + setTimeout(() => { + window.scrollTo({ + top, + left: 0, + // @ts-expect-error https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/5 + behavior, + }); + }, 0); +}; diff --git a/src/lib/search.ts b/src/lib/search.ts new file mode 100644 index 0000000..8d11771 --- /dev/null +++ b/src/lib/search.ts @@ -0,0 +1,47 @@ +import { sendMessage } from "../sockets"; +import { sanitize } from "./notes"; + +type SearchPayload = { query: string, limit: number, pubkey?: string, since?: number, until?: number }; + +export const cleanQuery = (query: string) => { + return sanitize(query); +} + + +export const searchUsers = (pubkey: string | undefined, subid: string, query: string, limit = 10) => { + + let payload: SearchPayload = { query: cleanQuery(query), limit }; + + if (pubkey) { + payload.pubkey = pubkey; + } + + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["user_search", payload]}, + ])); +} + +export const searchContent = (subid: string, query: string, limit = 100) => { + + let payload: SearchPayload = { query: cleanQuery(query), limit }; + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["search", payload]}, + ])); +} + +export const searchFutureContent = (subid: string, query: string, since:number, limit = 100) => { + + let payload: SearchPayload = { query: cleanQuery(query), limit, since }; + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["search", payload]}, + ])); +} diff --git a/src/lib/settings.ts b/src/lib/settings.ts new file mode 100644 index 0000000..a8a7ed0 --- /dev/null +++ b/src/lib/settings.ts @@ -0,0 +1,68 @@ +import { Kind } from "../constants"; +import { sendMessage } from "../sockets"; +import { NostrWindow, PrimalFeed } from "../types/primal"; + +type PrimalSettings = { + theme: string, + feeds: PrimalFeed[], + description?: string, +}; + +export const sendSettings = async (settings: PrimalSettings, subid: string) => { + const win = window as NostrWindow; + const nostr = win.nostr; + + if (nostr === undefined) { + return false; + } + + const content = { description: 'Sync app settings', ...settings }; + + const event = { + content: JSON.stringify(content), + kind: Kind.Settings, + tags: [["d", "Primal-Web App"]], + created_at: Math.floor((new Date()).getTime() / 1000), + }; + + const signedNote = await nostr.signEvent(event); + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["set_app_settings", { settings_event: signedNote }]}, + ])) +}; + +export const getSettings = async (pubkey: string | undefined, subid: string) => { + const win = window as NostrWindow; + const nostr = win.nostr; + + if (nostr === undefined || !pubkey) { + return false; + } + + const event = { + content: '{ "description": "Sync app settings" }', + kind: Kind.Settings, + tags: [["d", "Primal-Web App"]], + created_at: Math.floor((new Date()).getTime() / 1000), + }; + + const signedNote = await nostr.signEvent(event); + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["get_app_settings", { event_from_user: signedNote }]}, + ])) +}; + +export const getDefaultSettings = async (subid: string) => { + + sendMessage(JSON.stringify([ + "REQ", + subid, + {cache: ["get_default_app_settings", { client: "Primal-Web App" }]}, + ])) +}; diff --git a/src/lib/stats.ts b/src/lib/stats.ts new file mode 100644 index 0000000..41424d7 --- /dev/null +++ b/src/lib/stats.ts @@ -0,0 +1,47 @@ +import { sendMessage } from '../sockets'; + +export const startListeningForNostrStats = (subId: string) => { + sendMessage(JSON.stringify([ + "REQ", + `netstats_${subId}`, + {cache: ["net_stats"]}, + ])); +}; + +export const stopListeningForNostrStats = (subId: string) => { + sendMessage(JSON.stringify([ + "CLOSE", + `netstats_${subId}`, + ])); +}; + +export const getLegendStats = (pubkey: string | undefined, subId: string) => { + pubkey && sendMessage(JSON.stringify([ + "REQ", + `legendstats_${subId}`, + {"cache":["explore_legend_counts",{ pubkey }]}, + ])); +} + +export const humanizeNumber = (number: number, veryShort = false) => { + + const bottomLimit = veryShort ? 1000 : 10000; + + if (number < bottomLimit) { + return number.toLocaleString(); + } + + if (number < 100000) { + return `${parseFloat((number/1000).toFixed(1))} k`; + } + + if (number < 1000000) { + return `${Math.floor(number/1000)} k`; + } + + if (number < 100000000) { + return `${parseFloat((number/1000000).toFixed(1))} m`; + } + + return `${Math.floor(number/1000000)} m`; +}; diff --git a/src/lib/textArea.ts b/src/lib/textArea.ts new file mode 100644 index 0000000..a4cb454 --- /dev/null +++ b/src/lib/textArea.ts @@ -0,0 +1,136 @@ + // Taken and slightly adapted from https://github.com/component/textarea-caret-position + + // We'll copy the properties below into the mirror div. + // Note that some browsers, such as Firefox, do not concatenate properties + // into their shorthand (e.g. padding-top, padding-bottom etc. -> padding), + // so we have to list every single property explicitly. + const properties = [ + 'direction', // RTL support + 'boxSizing', + 'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does + 'height', + 'overflowX', + 'overflowY', // copy the scrollbar for IE + + 'borderTopWidth', + 'borderRightWidth', + 'borderBottomWidth', + 'borderLeftWidth', + 'borderStyle', + + 'paddingTop', + 'paddingRight', + 'paddingBottom', + 'paddingLeft', + + // https://developer.mozilla.org/en-US/docs/Web/CSS/font + 'fontStyle', + 'fontVariant', + 'fontWeight', + 'fontStretch', + 'fontSize', + 'fontSizeAdjust', + 'lineHeight', + 'fontFamily', + + 'textAlign', + 'textTransform', + 'textIndent', + 'textDecoration', // might not make a difference, but better be safe + + 'letterSpacing', + 'wordSpacing', + + 'tabSize', + 'MozTabSize' + + ]; + + var isBrowser = (typeof window !== 'undefined'); + // @ts-ignore + var isFirefox = (isBrowser && window.mozInnerScreenX != null); + + export const getCaretCoordinates = (element: HTMLTextAreaElement | HTMLInputElement, position: number) => { + if (!isBrowser) { + throw new Error('textarea-caret-position#getCaretCoordinates should only be called in a browser'); + } + + // The mirror div will replicate the textarea's style + var div = document.createElement('div'); + div.id = 'input-textarea-caret-position-mirror-div'; + document.body.appendChild(div); + + var style = div.style; + // @ts-ignore + var computed = window.getComputedStyle ? window.getComputedStyle(element) : element.currentStyle; // currentStyle for IE < 9 + var isInput = element.nodeName === 'INPUT'; + + // Default textarea styles + style.whiteSpace = 'pre-wrap'; + if (!isInput) + style.wordWrap = 'break-word'; // only for textarea-s + + // Position off-screen + style.position = 'absolute'; // required to return coordinates properly + + // Transfer the element's properties to the div + properties.forEach(function (prop) { + if (isInput && prop === 'lineHeight') { + // Special case for s because text is rendered centered and line height may be != height + if (computed.boxSizing === "border-box") { + var height = parseInt(computed.height); + var outerHeight = + parseInt(computed.paddingTop) + + parseInt(computed.paddingBottom) + + parseInt(computed.borderTopWidth) + + parseInt(computed.borderBottomWidth); + var targetHeight = outerHeight + parseInt(computed.lineHeight); + if (height > targetHeight) { + style.lineHeight = height - outerHeight + "px"; + } else if (height === targetHeight) { + style.lineHeight = computed.lineHeight; + } else { + style.lineHeight = '0'; + } + } else { + style.lineHeight = computed.height; + } + } else { + // @ts-ignore + style[prop] = computed[prop]; + } + }); + + if (isFirefox) { + // Firefox lies about the overflow property for textareas: https://bugzilla.mozilla.org/show_bug.cgi?id=984275 + if (element.scrollHeight > parseInt(computed.height)) + style.overflowY = 'scroll'; + } else { + style.overflow = 'hidden'; // for Chrome to not render a scrollbar; IE keeps overflowY = 'scroll' + } + + div.textContent = element.value.substring(0, position); + // The second special handling for input type="text" vs textarea: + // spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037 + if (isInput) + div.textContent = div.textContent.replace(/\s/g, '\u00a0'); + + var span = document.createElement('span'); + // Wrapping must be replicated *exactly*, including when a long word gets + // onto the next line, with whitespace at the end of the line before (#7). + // The *only* reliable way to do that is to copy the *entire* rest of the + // textarea's content into the created at the caret position. + // For inputs, just '.' would be enough, but no need to bother. + span.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all + div.appendChild(span); + + var coordinates = { + top: span.offsetTop + parseInt(computed['borderTopWidth']), + left: span.offsetLeft + parseInt(computed['borderLeftWidth']), + height: parseInt(computed['lineHeight']) + }; + + document.body.removeChild(div); + + return coordinates; + } diff --git a/src/lib/zap.ts b/src/lib/zap.ts new file mode 100644 index 0000000..abd5405 --- /dev/null +++ b/src/lib/zap.ts @@ -0,0 +1,86 @@ +import { bech32 } from "@scure/base"; +import { nip57, Relay, utils } from "nostr-tools"; +import { NostrWindow, PrimalNote, PrimalUser } from "../types/primal"; + +export const zapNote = async (note: PrimalNote, sender: string | undefined, amount: number, comment = '', relays: Relay[]) => { + if (!sender) { + return false; + } + + const callback = await getZapEndpoint(note.user); + + if (!callback) { + return false; + } + + const sats = Math.round(amount * 1000); + + const zapReq = nip57.makeZapRequest({ + profile: note.post.pubkey, + event: note.msg.id, + amount: sats, + comment, + relays: relays.map(r => r.url) + }); + + const win = window as NostrWindow; + const nostr = win.nostr; + const webln = win.webln + + if (!nostr || !webln) { + return false; + } + + try { + const signedEvent = await nostr.signEvent(zapReq); + + const event = encodeURI(JSON.stringify(signedEvent)); + + const r2 = await (await fetch(`${callback}?amount=${sats}&nostr=${event}`)).json(); + const pr = r2.pr; + + await webln.enable(); + await webln.sendPayment(pr); + + return true; + } catch (e) { + return false; + } +} + +export const getZapEndpoint = async (user: PrimalUser): Promise => { + try { + let lnurl: string = '' + let {lud06, lud16} = user; + + if (lud16) { + let [name, domain] = lud16.split('@') + lnurl = `https://${domain}/.well-known/lnurlp/${name}` + } + else if (lud06) { + let {words} = bech32.decode(lud06, 1023) + let data = bech32.fromWords(words) + lnurl = utils.utf8Decoder.decode(data) + } + else { + return null; + } + + let res = await fetch(lnurl) + let body = await res.json() + + if (body.allowsNostr && body.nostrPubkey) { + return body.callback; + } + } catch (err) { + console.log('E: ', err); + return null; + /*-*/ + } + + return null; +} + +export const canUserReceiveZaps = (user: PrimalUser | undefined) => { + return !!user && (!!user.lud16 || !!user.lud06); +} diff --git a/src/logo.svg b/src/logo.svg new file mode 100644 index 0000000..025aa30 --- /dev/null +++ b/src/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/pages/Downloads.module.scss b/src/pages/Downloads.module.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Downloads.tsx b/src/pages/Downloads.tsx new file mode 100644 index 0000000..6a5b412 --- /dev/null +++ b/src/pages/Downloads.tsx @@ -0,0 +1,14 @@ +import { Component } from 'solid-js'; +import MissingPage from '../components/MissingPage/MissingPage'; + + +const Downloads: Component = () => { + + return ( + <> + + + ); +} + +export default Downloads; diff --git a/src/pages/Explore.module.scss b/src/pages/Explore.module.scss new file mode 100644 index 0000000..e937e94 --- /dev/null +++ b/src/pages/Explore.module.scss @@ -0,0 +1,175 @@ +.fullHeader { + display: grid; + height: 120px; + align-items: center; + justify-content: left; + position: relative; + margin-bottom: -3px; + position: relative; + + .exploreCaption { + font-weight: 300; + font-size: 32px; + line-height: 34px; + color: var(--brand-text); + } + + .addToFeed { + display: flex; + position: absolute; + bottom: 0px; + width: 100%; + height: 35px; + justify-content: flex-end; + align-items: flex-end; + + .noAdd { + display: flex; + align-items: center; + font-size: 16px; + line-height: 25px; + font-weight: 400; + color: var(--text-primary); + opacity: 0.6; + transition: opacity 0.4s; + } + + .addButton { + display: flex; + align-items: center; + margin: 0; + padding: 0; + border: none; + background-color: unset; + width: auto; + font-size: 16px; + line-height: 25px; + font-weight: 400; + color: var(--text-primary); + opacity: 0.6; + transition: opacity 0.4s; + + >span { + font-weight: 800; + margin-right: 5px; + } + + &:hover { + opacity: 1; + transition: opacity 0.4s; + } + + &:focus { + box-shadow: none; + } + } + } +} + +.exploreMenu { + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + grid-column-gap: 26px; + grid-row-gap: 26px; +} + +.exploreBox { + box-sizing: border-box; + + width: 140px; + height: 140px; + + border: 1px solid var(--text-tertiary-2); + border-radius: 9px; + + display: flex; + align-items: flex-end; + justify-content: center; + + text-decoration: none; + + >div { + display: flex; + width: 100%; + height: 100%; + flex-direction: column; + align-items: center; + + .firstLine { + text-align: center; + font-size: 18px; + font-weight: 300; + line-height: 22px; + color: var(--text-tertiary); + } + + .secondLine { + text-align: center; + font-size: 18px; + line-height: 22px; + font-weight: 700; + color: var(--text-primary); + } + + .exploreBoxIcon { + align-self: center; + justify-self: center; + margin-top: 12px; + margin-bottom: 12px; + } + } +} + +@mixin tableCell { + display: table-cell; + padding: 0px 12px; + margin: 12px 0px; + border-bottom: solid 1px var(--subtile-devider); +} + +.statsLegend { + display: table; + width: 100%; + margin-top: 53px; + + + .legendDetails { + display: table-row; + + .legendIcon { + @include tableCell; + width: 32px; + padding: 0px; + >img { + width: 32px; + height: 32px; + margin: 12px 0px; + } + } + + .legendName { + @include tableCell; + color: var(--text-primary); + font-size: 18px; + line-height: 22px; + font-weight: 700; + } + + .legendNumber { + @include tableCell; + color: var(--text-primary); + font-size: 24px; + line-height: 36px; + font-weight: 300; + + } + + .legendDescription { + @include tableCell; + color: var(--text-secondary); + font-size: 16px; + line-height: 22px; + font-weight: 300; + } + } +} diff --git a/src/pages/Explore.tsx b/src/pages/Explore.tsx new file mode 100644 index 0000000..8e6d5c7 --- /dev/null +++ b/src/pages/Explore.tsx @@ -0,0 +1,131 @@ +import { Component, Show } from 'solid-js'; +import styles from './Explore.module.scss'; +import ExploreMenu from './ExploreMenu'; +import Feed from './Feed'; +import { useParams } from '@solidjs/router'; +import Branding from '../components/Branding/Branding'; +import PageNav from '../components/PageNav/PageNav'; +import { scopeLabels, timeframeLabels } from '../constants'; +import ExploreSidebar from '../components/ExploreSidebar/ExploreSidebar'; +import { useToastContext } from '../components/Toaster/Toaster'; +import { useSettingsContext } from '../contexts/SettingsContext'; +import StickySidebar from '../components/StickySidebar/StickySidebar'; +import Wormhole from '../components/Wormhole/Wormhole'; +import { toast as t, explore as tExplore, actions as tAction } from '../translations'; +import { useIntl } from '@cookbook/solid-intl'; +import Search from '../components/Search/Search'; + + +const scopes = ['follows', 'tribe', 'network', 'global']; +const timeframes = ['latest', 'trending', 'popular', 'mostzapped']; + +const titleCase = (text: string) => { + return text[0].toUpperCase() + text.slice(1).toLowerCase(); +} + +const Explore: Component = () => { + + const settings = useSettingsContext(); + const toaster = useToastContext(); + const intl = useIntl(); + + const params = useParams(); + + const hasParams = () => { + if (!params.scope || !params.timeframe) { + return false; + } + + return scopes.includes(params.scope) && + timeframes.includes(params.timeframe); + + }; + + const hasFeedAtHome = () => { + const hex = `${params.scope};${params.timeframe}`; + + return !!settings?.availableFeeds.find(f => f.hex === hex); + }; + + const addToHomeFeed = () => { + const hex = `${params.scope};${params.timeframe}`; + const name = titleCase(`${timeframeLabels[params.timeframe]}, ${scopeLabels[params.scope]}`); + const feed = { name, hex }; + + settings?.actions.addAvailableFeed(feed); + + toaster?.sendSuccess(intl.formatMessage( + t.addFeedToHomeSuccess, + { name }, + )); + }; + + return ( + <> + + } + > + + + + + + + + +
+ + {intl.formatMessage(tExplore.genericCaption)} +
} + > +
+ {intl.formatMessage( + tExplore.title, + { + timeframe: timeframeLabels[params.timeframe], + scope: scopeLabels[params.scope], + }, + )} +
+
+ + {intl.formatMessage(tAction.disabledAddFeedToHome)} +
+ } + > + + + + + + + + + + + } + > + + + + ) +} + +export default Explore; diff --git a/src/pages/ExploreMenu.module.scss b/src/pages/ExploreMenu.module.scss new file mode 100644 index 0000000..3d5b60f --- /dev/null +++ b/src/pages/ExploreMenu.module.scss @@ -0,0 +1,314 @@ +.fullHeader { + display: grid; + height: 120px; + align-items: center; + justify-content: left; + + >div { + font-weight: 300; + font-size: 32px; + line-height: 34px; + color: var(--brand-text); + } +} + +.statsHolder { + margin-bottom: 36px; +} + +.exploreMenu { + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + grid-column-gap: 26px; + grid-row-gap: 26px; +} + +.exploreBox { + box-sizing: border-box; + + width: 140px; + height: 140px; + + border: 1px solid var(--text-tertiary-2); + border-radius: 9px; + + display: flex; + align-items: flex-end; + justify-content: center; + + text-decoration: none; + + >div { + display: flex; + width: 100%; + height: 100%; + flex-direction: column; + align-items: center; + + .firstLine { + text-align: center; + font-size: 18px; + font-weight: 300; + line-height: 22px; + color: var(--text-tertiary); + } + + .secondLine { + text-align: center; + font-size: 18px; + line-height: 22px; + font-weight: 700; + color: var(--text-primary); + } + + .exploreBoxIcon { + align-self: center; + justify-self: center; + margin-top: 12px; + margin-bottom: 12px; + } + } +} + +@mixin tableCell { + display: table-cell; + padding: 0px 12px; + border-bottom: solid 1px var(--text-tertiary-2); + vertical-align: middle; +} + +.statsLegend { + display: table; + width: 100%; + margin-top: 53px; + + + .legendDetails { + display: table-row; + + .legendIcon { + @include tableCell; + width: 32px; + padding: 0px; + >div { + width: 32px; + height: 32px; + margin: 12px 0px; + } + } + + .legendName { + @include tableCell; + color: var(--text-primary); + font-size: 18px; + line-height: 22px; + font-weight: 700; + } + + .legendNumber { + @include tableCell; + color: var(--text-primary); + font-size: 24px; + line-height: 36px; + font-weight: 300; + + } + + .legendDescription { + @include tableCell; + color: var(--text-secondary); + font-size: 16px; + line-height: 22px; + font-weight: 300; + } + } +} + +@mixin exploreCategoryIcon { + width: 56px; + height: 56px; + background-color: var(--background-site); +} + +.global_trending_icon { + @include exploreCategoryIcon; + background-image: var(--icon-global-trending); + background-size: contain; + background-repeat: no-repeat; +} + +.global_latest_icon { + @include exploreCategoryIcon; + background-image: var(--icon-network-latest); + background-size: contain; + background-repeat: no-repeat; +} + +.global_popular_icon { + @include exploreCategoryIcon; + background-image: var(--icon-network-popular); + background-size: contain; + background-repeat: no-repeat; +} + + +.network_trending_icon { + @include exploreCategoryIcon; + background-image: var(--icon-network-trending); + background-size: contain; + background-repeat: no-repeat; +} + +.network_latest_icon { + @include exploreCategoryIcon; + background-image: var(--icon-network-latest); + background-size: contain; + background-repeat: no-repeat; +} + +.network_popular_icon { + @include exploreCategoryIcon; + background-image: var(--icon-network-popular); + background-size: contain; + background-repeat: no-repeat; +} + + +.tribe_trending_icon { + @include exploreCategoryIcon; + background-image: var(--icon-tribe-trending); + background-size: contain; + background-repeat: no-repeat; +} + +.tribe_latest_icon { + @include exploreCategoryIcon; + background-image: var(--icon-tribe-latest); + background-size: contain; + background-repeat: no-repeat; +} + +.tribe_popular_icon { + @include exploreCategoryIcon; + background-image: var(--icon-tribe-popular); + background-size: contain; + background-repeat: no-repeat; +} + + +.follows_trending_icon { + @include exploreCategoryIcon; + background-image: var(--icon-follows-trending); + background-size: contain; + background-repeat: no-repeat; +} + +.follows_latest_icon { + @include exploreCategoryIcon; + background-image: var(--icon-follows-latest);; + background-size: contain; + background-repeat: no-repeat; +} + +.follows_popular_icon { + @include exploreCategoryIcon; + background-image: var(--icon-follows-popular);; + background-size: contain; + background-repeat: no-repeat; +} + + +.followsIcon { + @include exploreCategoryIcon; + background-image: var(--icon-follows); + background-size: contain; + background-repeat: no-repeat; +} + +.tribeIcon { + @include exploreCategoryIcon; + background-image: var(--icon-tribe); + background-size: contain; + background-repeat: no-repeat; +} + +.networkIcon { + @include exploreCategoryIcon; + background-image: var(--icon-network); + background-size: contain; + background-repeat: no-repeat; +} + +.globalIcon { + @include exploreCategoryIcon; + background-image: var(--icon-global); + background-size: contain; + background-repeat: no-repeat; +} + +@media only screen and (max-width: 720px) { + .exploreMenu { + width: 100%; + display: grid; + grid-template-columns: 1fr 1fr 1fr; + grid-template-rows: 1fr 1fr 1fr 1fr; + grid-column-gap: 6px; + grid-row-gap: 26px; + grid-template-areas: + "followsLatest followsTrending followsPopular" + "tribeLatest tribeTrending tribePopular" + "networkLatest networkTrending networkPopular" + "globalLatest globalTrending globalPopular"; + } + + .global_trending_box { + grid-area: globalTrending; + } + + .global_latest_box { + grid-area: globalLatest; + } + + .global_popular_box { + grid-area: globalPopular; + } + + + .network_trending_box { + grid-area: networkTrending; + } + + .network_latest_box { + grid-area: networkLatest; + } + + .network_popular_box { + grid-area: networkPopular; + } + + + .tribe_trending_box { + grid-area: tribeTrending; + } + + .tribe_latest_box { + grid-area: tribeLatest; + } + + .tribe_popular_box { + grid-area: tribePopular; + } + + + .follows_trending_box { + grid-area: followsTrending; + } + + .follows_latest_box { + grid-area: followsLatest; + } + + .follows_popular_box { + grid-area: followsPopular; + } +} diff --git a/src/pages/ExploreMenu.tsx b/src/pages/ExploreMenu.tsx new file mode 100644 index 0000000..5f7f4da --- /dev/null +++ b/src/pages/ExploreMenu.tsx @@ -0,0 +1,45 @@ +import { Component, createEffect, onCleanup } from 'solid-js'; +import { isConnected } from '../sockets'; +import styles from './ExploreMenu.module.scss'; + +import NostrStats from '../components/NostrStats/NostrStats'; +import ExploreMenuItem from '../components/ExploreMenuItem/ExploreMenuItem'; +import { initialExploreData, useExploreContext } from '../contexts/ExploreContext'; +import { useAccountContext } from '../contexts/AccountContext'; + + +const ExploreMenu: Component = () => { + + const explore = useExploreContext(); + const account = useAccountContext(); + + const legend = () => explore?.legend || { ...initialExploreData.legend }; + const stats = () => explore?.stats || { ...initialExploreData.stats }; + + createEffect(() => { + if (isConnected()) { + explore?.actions.fetchLegendStats(account?.publicKey); + explore?.actions.openNetStatsStream(); + } + }); + + onCleanup(() => { + explore?.actions.closeNetStatsStream(); + }); + + return ( + <> +
+ +
+ + + + + + + + ) +} + +export default ExploreMenu; diff --git a/src/pages/Feed.module.scss b/src/pages/Feed.module.scss new file mode 100644 index 0000000..485b84c --- /dev/null +++ b/src/pages/Feed.module.scss @@ -0,0 +1,3 @@ +.feedContent { + position: relative; +} diff --git a/src/pages/Feed.tsx b/src/pages/Feed.tsx new file mode 100644 index 0000000..d858eb7 --- /dev/null +++ b/src/pages/Feed.tsx @@ -0,0 +1,39 @@ +import { Component, createEffect, For, Show } from 'solid-js'; +import styles from './Feed.module.scss'; +import { useParams } from '@solidjs/router'; +import Note from '../components/Note/Note'; +import Loader from '../components/Loader/Loader'; +import { useExploreContext } from '../contexts/ExploreContext'; +import Paginator from '../components/Paginator/Paginator'; + +const Feed: Component<{ scope: string, timeframe: string}> = () => { + + const explore = useExploreContext(); + + const params = useParams(); + + createEffect(() => { + if (params.scope && params.timeframe) { + explore?.actions.clearNotes(); + explore?.actions.fetchNotes( + `${params.scope};${params.timeframe}`, + ); + } + }); + + return ( +
+ 0} + fallback={} + > + + {(note) => } + + + +
+ ) +} + +export default Feed; diff --git a/src/pages/Help.module.scss b/src/pages/Help.module.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Help.tsx b/src/pages/Help.tsx new file mode 100644 index 0000000..f471b1d --- /dev/null +++ b/src/pages/Help.tsx @@ -0,0 +1,13 @@ +import { Component } from 'solid-js'; +import MissingPage from '../components/MissingPage/MissingPage'; + + +const Help: Component = () => { + return ( + <> + + + ); +} + +export default Help; diff --git a/src/pages/Home.module.scss b/src/pages/Home.module.scss new file mode 100644 index 0000000..9360baa --- /dev/null +++ b/src/pages/Home.module.scss @@ -0,0 +1,135 @@ +.homeContent { + position: relative; +} + +.paginate { + color: var(--text-tertiary-2); + position: absolute; + bottom: 1280px; + width: 640px; + height: 100px; +} + +.noContent, .endOfContent { + position: relative; + color: var(--text-secondary); + text-align: center; + margin-top: 80px; +} + +.normalCentralHeader { + display: block; +} + +.phoneCentralHeader { + display: none; +} + +.newContentItem { + width: 100%; + display: flex; + justify-content: center; + margin-top: 10px; + + >button { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 40px; + background: var(--background-card); + font-weight: 400; + font-size: 14px; + line-height: 18px; + border: none; + border-radius: 8px; + padding-block: 0; + padding-left: 2px; + margin: 0; + + .counter { + margin-left: 24px; + color: var(--text-secondary); + } + + &:hover { + background: var(--background-input); + .counter{ + color: var(--text-primary); + } + } + } +} + +.newContentNotification { + position: fixed; + top: 42px; + left: calc(calc(100vw - 1240px) / 2 + 176px + 32px); + width: 640px; + z-index: 20; + display: flex; + justify-content: center; + + >button { + display: flex; + align-items: center; + justify-content: center; + width: auto; + height: 40px; + background: var(--brand-gradient); + font-weight: 400; + font-size: 14px; + line-height: 18px; + border: none; + border-radius: 20px; + padding-block: 0; + padding-left: 4px; + margin: 0; + + .avatars { + display: flex; + align-items: center; + height: 40px; + .avatar { + border: solid 2px var(--text-primary); + border-radius: 50%; + width: 30px; + height: 30px; + transition: margin-right 0.2s; + margin-right: -9px; + } + } + + .counter { + margin-left: 24px; + } + } + +} +@media only screen and (max-width: 1300px) { + .newContentNotification { + left: calc(calc(100vw - 1032px) / 2 + 48px + 32px); + } +} + +@media only screen and (max-width: 1087px) { + .newContentNotification { + left: calc(calc(100vw - 720px) / 2 + 48px + 32px); + } +} + +@media only screen and (max-width: 720px) { + .newContentNotification { + left: 0; + width: 100%; + justify-content: center; + } + .normalCentralHeader { + display: none; + } + + .phoneCentralHeader { + display: block; + width: 100%; + } +} diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx new file mode 100644 index 0000000..c2fcdf2 --- /dev/null +++ b/src/pages/Home.tsx @@ -0,0 +1,230 @@ +import { + Component, + createEffect, + createSignal, + For, + Match, + onCleanup, + onMount, + Show, + Switch +} from 'solid-js'; +import Note from '../components/Note/Note'; +import styles from './Home.module.scss'; +import HomeHeader from '../components/HomeHeader/HomeHeader'; +import Loader from '../components/Loader/Loader'; +import Paginator from '../components/Paginator/Paginator'; +import HomeSidebar from '../components/HomeSidebar/HomeSidebar'; +import Branding from '../components/Branding/Branding'; +import HomeHeaderPhone from '../components/HomeHeaderPhone/HomeHeaderPhone'; +import Wormhole from '../components/Wormhole/Wormhole'; +import { scrollWindowTo } from '../lib/scroll'; +import StickySidebar from '../components/StickySidebar/StickySidebar'; +import { useHomeContext } from '../contexts/HomeContext'; +import { useIntl } from '@cookbook/solid-intl'; +import { createStore } from 'solid-js/store'; +import { PrimalUser } from '../types/primal'; +import Avatar from '../components/Avatar/Avatar'; +import { userName } from '../stores/profile'; +import { useAccountContext } from '../contexts/AccountContext'; +import { feedNewPosts, placeholders } from '../translations'; +import Search from '../components/Search/Search'; + + +const Home: Component = () => { + + const context = useHomeContext(); + const account = useAccountContext(); + const intl = useIntl(); + + const isPageLoading = () => context?.isFetching; + + let checkNewNotesTimer: number = 0; + + const [hasNewPosts, setHasNewPosts] = createSignal(false); + const [newNotesCount, setNewNotesCount] = createSignal(0); + const [newPostAuthors, setNewPostAuthors] = createStore([]); + + + const newPostCount = () => newNotesCount() < 100 ? newNotesCount() : 100; + + + onMount(() => { + scrollWindowTo(context?.scrollTop); + }); + + createEffect(() => { + const hex = context?.selectedFeed?.hex; + + if (checkNewNotesTimer) { + clearInterval(checkNewNotesTimer); + setHasNewPosts(false); + setNewNotesCount(0); + setNewPostAuthors(() => []); + } + + const timeout = 25_000 + Math.random() * 10_000; + + checkNewNotesTimer = setInterval(() => { + context?.actions.checkForNewNotes(hex); + }, timeout); + + }); + + createEffect(() => { + const count = context?.future.notes.length || 0; + if (count === 0) { + return + } + + if (!hasNewPosts()) { + setHasNewPosts(true); + } + + if (newPostAuthors.length < 3) { + const users = context?.future.notes.map(note => note.user) || []; + + const uniqueUsers = users.reduce((acc, user) => { + const isDuplicate = acc.find(u => u.pubkey === user.pubkey); + return isDuplicate ? acc : [ ...acc, user ]; + }, []).slice(0, 3); + + setNewPostAuthors(() => [...uniqueUsers]); + } + + setNewNotesCount(count); + + + }); + + onCleanup(()=> { + clearInterval(checkNewNotesTimer); + }); + + const loadNewContent = () => { + if (newNotesCount() > 100) { + location.reload(); + return; + } + context?.actions.loadFutureContent(); + scrollWindowTo(0, true); + setHasNewPosts(false); + setNewNotesCount(0); + setNewPostAuthors(() => []); + } + + return ( +
+ + + + + + + + +
+ +
+ +
+ +
+ + 40) && + !account?.showNewNoteForm + }> +
+ +
+
+ + + + + + +
+ +
+
+ + 0} + > + + {note => } + + + + + +
+ +
+
+ +
+ {intl.formatMessage(placeholders.endOfFeed)} +
+
+ +
+ +
+
+
+ +
+ ) +} + +export default Home; diff --git a/src/pages/Messages.module.scss b/src/pages/Messages.module.scss new file mode 100644 index 0000000..22600b5 --- /dev/null +++ b/src/pages/Messages.module.scss @@ -0,0 +1,427 @@ +@mixin messageContent { + padding-block: 8px; + padding-inline: 16px; + margin-bottom: 8px; + width: fit-content; + max-width: calc(640px + 12px - 40px); +} + +@mixin thread($align-end) { + display: flex; + flex-direction: column; + margin-top: -16px; + + @if $align-end { + align-items: flex-end; + } @else { + align-items: flex-start; + } + + .avatar { + margin-bottom: 8px; + } + .threadMessages { + display: flex; + flex-direction: column-reverse; + align-items: flex-start; + max-width: calc(100% - 48px); + + .message { + @include messageContent(); + + @if $align-end { + align-self: flex-end; + text-align: left; + border-radius: 8px 0px 8px 8px; + } @else { + align-items: flex-start; + text-align: left; + border-radius: 0px 8px 8px 8px; + } + + font-weight: 400; + font-size: 16px; + line-height: 24px; + color: var(--text-primary); + background-color: var(--subtile-devider); + } + } + .threadTime { + color: var(--text-tertiary-2); + font-weight: 400; + font-size: 12px; + line-height: 16px; + } +} + +.fullHeader { + display: grid; + height: 120px; + align-items: center; + justify-content: left; + padding-top: 6px; + + >div { + font-weight: 300; + font-size: 32px; + line-height: 34px; + color: var(--brand-text); + text-transform: lowercase; + } +} + +.messagesContent { + position: relative; + + .sendersHeader { + height: 40px; + width: 294px; + background-color: var(--background-input); + border-radius: 8px; + display: flex; + justify-content: space-between; + align-items: center; + padding-inline: 12px; + margin-bottom: 8px; + .senderCategorySelector { + display: flex; + .categorySelector { + border: none; + outline: none; + padding: 0; + margin: 0; + background: none; + color: var(--text-tertiary); + font-weight: 400; + font-size: 14px; + line-height: 16px; + text-transform: uppercase; + + &:focus { + background: none; + box-shadow: none; + outline: none; + } + + &.highlight, &:hover { + color: var(--text-primary); + } + + } + .separator { + border-left: 1px solid var(--subtile-devider); + margin-inline: 8px; + } + } + + .markAsRead { + border: none; + outline: none; + padding: 0; + margin: 0; + background: none; + color: var(--accent-1); + font-weight: 400; + font-size: 13px; + line-height: 16px; + width: auto; + + &:focus { + background: none; + box-shadow: none; + outline: none; + } + } + } + + .sendersList { + display: flex; + flex-direction: column; + overflow-y: scroll; + width: 308px; + height: calc(100vh - 176px); + padding-right: 8px; + + + .senderItem { + position: relative; + display: flex; + height: 65px; + background-color: var(--background-card); + padding-inline: 15px; + padding-block: 12px; + border-radius: 8px; + border: none; + margin-bottom: 8px; + align-items: center; + + &:hover, &.selected { + background-color: var(--background-input); + } + + .senderInfo { + margin-left: 12px; + display: flex; + flex-direction: column; + font-size: 16px; + line-height: 16px; + .firstLine { + display: flex; + justify-content: flex-start; + .senderName { + color: var(--text-primary); + font-weight: 700; + } + .lastMessageTime { + color: var(--text-tertiary-2); + font-weight: 400; + margin-left: 2px; + + &::before { + content: "|"; + padding: 0px 2px; + } + } + } + + .secondLine { + text-align: left; + color: var(--text-tertiary); + font-weight: 400; + font-size: 14px; + line-height: 16px; + margin-top: 4px; + padding: 0; + max-width: 200px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + } + } + } + } + + .conversation { + position: absolute; + top: 0; + left: 320px; + background-color: var(--background-card ); + border-radius: 8px; + width: calc(640px + 12px); + height: calc(100vh - 128px); + z-index: var(--z-index-lifted); + overflow: hidden; + padding: 12px; + display: flex; + flex-direction: column-reverse; + + .messages { + width: 100%; + height: calc(100% - 44px); + margin-bottom: 12px; + overflow-y: scroll; + display: flex; + flex-direction: column-reverse; + padding-right: 8px; + position: relative; + + .myThread { + @include thread(true); + .threadMessages { + .message { + background-color: var(--subtile-devider); + } + } + + .myThread { + margin-bottom: 20px; + } + } + + .theirThread { + @include thread(false); + .threadMessages { + .message { + background-color: var(--background-input); + } + } + + .theirThread { + margin-bottom: 20px; + } + } + } + + .newMessage { + height: 32px; + width: 100%; + position: relative; + vertical-align: bottom; + display: table-cell; + + .textAreaBorder { + padding: 1px; + background: var(--brand-gradient); + border-radius: 8px; + width: 510px; + height: 34px; + box-sizing: border-box; + + textarea { + // border: 1px solid var(--brand-gradient-vertical); + background: var(--background-site); + border-radius: 8px; + color: var(--text-primary); + font-weight: 400; + font-size: 14px; + line-height: 20px; + height: 32px; + margin: 0; + margin-right: 12px; + padding-inline: 8px; + padding-block: 8px; + width: 508px; + max-height: none; + + &:focus { + box-shadow: none; + } + } + } + + .secondaryButton { + position: absolute; + top: 0; + right: 14px; + width: 80px; + height: 32px; + border: none; + border-radius: 6px; + padding: 1px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: var(--text-tertiary-2); + >div { + width: 100%; + height: 100%; + vertical-align: middle; + border-radius: 6px; + background-color: var(--background-card); + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + } + } + + .primaryButton { + position: absolute; + top: 0; + right: 14px; + width: 80px; + height: 32px; + border: none; + border-radius: 6px; + padding: 0px; + font-size: 14px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: white; + >span { + opacity: 0.75; + } + } + } + } +} + +.senderBubble { + position: absolute; + text-align: center; + padding-top: 2px; + padding-inline: 4px; + top: 12px; + right: 12px; + min-width: 18px; + min-height: 18px; + border-radius: 8px; + font-weight: 500; + font-size: 12px; + line-height: 12px; + z-index: var(--z-index-lifted); + + background: var(--brand-gradient); + border: 1px solid var(--background-site); + + color: white; + text-shadow: 0.5px 0.5px 0px black; + + &.doubleSize { + right: -24px; + } + &.tripleSize { + right: -30px; + } +} + +.postLink { + text-decoration: none; + color: unset; + max-height: 650px; + overflow: hidden; +} + +.searchSuggestions { + width: 300px; + background-color: var(--background-site); + border: 1px solid var(--text-tertiary-2); + // box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.8); + border-radius: 4px; + + position: absolute; + bottom: 0px; + left: 0px; + z-index: var(--z-index-header); +} + + +.emojiSuggestions { + position: absolute; + display: grid; + grid-template-columns: 50px 50px 50px 50px 50px 50px; + width: 322px; + max-height: 200px; + overflow-y: scroll; + padding: 4px; + background-color: var(--background-site); + border: 1px solid var(--text-tertiary-2); + // box-shadow: 0px 4px 12px rgba(0, 0, 0, 0.8); + border-radius: 8px; + + bottom: 32px; + left: 0px; + z-index: var(--z-index-floater); + + .emojiOption { + margin-bottom: 5px; + padding: 2px; + background: none; + font-size: 16px; + line-height: 20px; + font-weight: 400; + border: none; + display: flex; + justify-content: center; + align-items: center; + + &:hover, &.highlight { + background-color: var(--text-tertiary-2); + } + + &:focus { + outline: none; + border: none; + } + } +} diff --git a/src/pages/Messages.tsx b/src/pages/Messages.tsx new file mode 100644 index 0000000..9f47160 --- /dev/null +++ b/src/pages/Messages.tsx @@ -0,0 +1,1141 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { nip19 } from 'nostr-tools'; +import { Component, createEffect, createSignal, For, onCleanup, onMount, Show } from 'solid-js'; +import Avatar from '../components/Avatar/Avatar'; +import { useAccountContext } from '../contexts/AccountContext'; +import { useMessagesContext } from '../contexts/MessagesContext'; +import { nip05Verification, truncateNpub, userName } from '../stores/profile'; +import { PrimalNote, PrimalUser } from '../types/primal'; +import { date } from '../lib/dates'; + +import styles from './Messages.module.scss'; +import EmbeddedNote from '../components/EmbeddedNote/EmbeddedNote'; +import { A, useNavigate, useParams } from '@solidjs/router'; +import { parseNote3 } from '../lib/notes'; +import { hexToNpub } from '../lib/keys'; +import Branding from '../components/Branding/Branding'; +import Wormhole from '../components/Wormhole/Wormhole'; +import Loader from '../components/Loader/Loader'; +import SearchOption from '../components/Search/SearchOption'; +import { debounce, isVisibleInContainer, uuidv4 } from '../utils'; +import { useSearchContext } from '../contexts/SearchContext'; +import { createStore } from 'solid-js/store'; +import { editMentionRegex } from '../constants'; +import Search from '../components/Search/Search'; +import { useProfileContext } from '../contexts/ProfileContext'; +import Paginator from '../components/Paginator/Paginator'; +import { getCaretCoordinates } from '../lib/textArea'; +import emojiSearch from '@jukben/emoji-search'; +import { + placeholders, + messages as tMessages, + actions as tActions, + search as tSearch, +} from '../translations'; + +type AutoSizedTextArea = HTMLTextAreaElement & { _baseScrollHeight: number }; + +let currentUrl = ''; + +type EmojiOption = { + keywords: string[], + char: string, + fitzpatrick_scale: boolean, + category: string, + name: string, +}; + +export const parseNoteLinks = (text: string, mentionedNotes: Record, mentionedUsers: Record, highlightOnly?: boolean) => { + + const regex = /\bnostr:((note|nevent)1\w+)\b|#\[(\d+)\]/g; + + return text.replace(regex, (url) => { + const [_, id] = url.split(':'); + + if (!id) { + return url; + } + + try { + const note = mentionedNotes[id]; + + const path = `/thread/${id}`; + + const link = highlightOnly ? + {url} : + note ? + + + : + {url}; + + // @ts-ignore + return link.outerHTML || url; + } catch (e) { + return `${url}`; + } + + }); + +}; + +export const parseNpubLinks = (text: string, mentionedUsers: Record, highlightOnly = false) => { + + const regex = /\bnostr:((npub|nprofile)1\w+)\b|#\[(\d+)\]/g; + + return text.replace(regex, (url) => { + const [_, id] = url.split(':'); + + if (!id) { + return url; + } + + try { + const profileId = nip19.decode(id).data as string | nip19.ProfilePointer; + + const hex = typeof profileId === 'string' ? profileId : profileId.pubkey; + const npub = hexToNpub(hex); + const path = `/profile/${npub}`; + + const user = mentionedUsers[hex]; + + let link = highlightOnly ? + @{truncateNpub(npub)} : + @{truncateNpub(npub)}; + + if (user) { + link = highlightOnly ? + @{userName(user)} : + @{userName(user)}; + } + + + // @ts-ignore + return link.outerHTML || url; + } catch (e) { + return `${url}`; + } + }); + +}; + +const emojiSearchLimit = 2; + +const Messages: Component = () => { + const instanceId = uuidv4(); + + const intl = useIntl(); + const messages = useMessagesContext(); + const account = useAccountContext(); + const profile = useProfileContext(); + + const navigate = useNavigate(); + + const params = useParams(); + + let conversationHolder: HTMLDivElement | undefined; + let newMessageInput: HTMLTextAreaElement | undefined; + let newMessageInputBorder: HTMLDivElement | undefined; + let newMessageWrapper: HTMLDivElement | undefined; + let sendersListElement: HTMLDivElement | undefined; + + let emojiOptions: HTMLDivElement | undefined; + + const [highlightedEmoji, setHighlightedEmoji] = createSignal(0); + const [isEmojiInput, setEmojiInput] = createSignal(false); + const [emojiQuery, setEmojiQuery] = createSignal(''); + const [emojiResults, setEmojiResults] = createStore([]); + let emojiCursorPosition = { top: 0, left: 0, height: 0 }; + + const senderNpub = () => { + if (!params.sender) { + return ''; + } + + if (params.sender.startsWith('npub')) { + return params.sender; + } + + return nip19.noteEncode(params.sender); + }; + + const orderedSenders = () => { + if (!messages || !messages.senders) { + return []; + } + const senders = messages.senders; + const counts = messages.messageCountPerSender; + + const ids = Object.keys(senders); + const latests = ids.map(id => ({ latest_at: counts[id]?.latest_at || null, id })); + + const ordered = latests.sort((a, b) => { + if (!a.latest_at) { + return -1; + } + + if (!b.latest_at) { + return 1; + } + + return b.latest_at - a.latest_at + }); + + return ordered.map(o => senders[o.id]); + }; + + const senderPubkey = () => { + if (!params.sender) { + return ''; + } + + let pubkey = params.sender; + + if (pubkey.startsWith('npub') || pubkey.startsWith('nevent')) { + const decoded = nip19.decode(pubkey); + + if (decoded.type === 'npub') { + pubkey = decoded.data; + } + + if (decoded.type === 'nevent') { + pubkey = decoded.data.id; + } + } + + return pubkey; + + } + + createEffect(() => { + if(params.sender && currentUrl !== params.sender) { + currentUrl = params.sender; + messages?.actions.selectSender(params.sender); + } + }); + + createEffect(() => { + if (messages?.selectedSender && + currentUrl !== messages?.selectedSender?.npub + ) { + navigate(`/messages/${messages?.selectedSender.npub}`); + return; + } + }); + + createEffect(() => { + if (params.sender || !messages?.senders) { + return; + } + + const senderIds = Object.keys(messages.senders); + senderIds.length > 0 && navigate(`/messages/${messages.senders[senderIds[0]].npub}`); + return; + + }); + + createEffect(() => { + const count = messages?.messageCount || 0; + + if (account?.isKeyLookupDone && account.hasPublicKey() && count === 0) { + messages?.actions.getMessagesPerSender(); + } + }); + + createEffect(() => { + const count = messages?.messageCount || 0; + + if (count > 0) { + messages?.actions.getMessagesPerSender(); + } + }) + + createEffect(() => { + if (messages?.isConversationLoaded) { + if (conversationHolder) { + conversationHolder.scrollTop = conversationHolder.scrollHeight; + } + + // messages.actions.resetConversationLoaded(); + } + }); + + const user = (pubkey: string) => { + return messages?.senders && messages.senders[pubkey]; + } + + const mgsFromSender = (sender: PrimalUser) => { + return messages?.messageCountPerSender[sender.pubkey]?.cnt || 0; + } + + const isSelectedSender = (senderId: string) => { + return senderNpub() === senderId || senderPubkey() === senderId; + }; + + const selectSender = (senderNpub: string) => { + messages?.actions.selectSender(senderNpub); + } + + const highlightHashtags = (text: string) => { + const regex = /(?:\s|^)#[^\s!@#$%^&*(),.?":{}|<>]+/ig; + + return text.replace(regex, (token) => { + const [space, term] = token.split('#'); + const embeded = ( + + {space} + #{term} + + ); + + // @ts-ignore + return embeded.outerHTML; + }); + } + + const parseMessage = (message: string) => { + if (!messages) { + return message; + } + return parseNoteLinks( + parseNpubLinks( + highlightHashtags( + parseNote3(message) + ), + messages?.referecedUsers, + ), + messages?.referecedNotes, + messages?.referecedUsers + ); + }; + + + const getScrollHeight = (elm: AutoSizedTextArea) => { + var savedValue = elm.value + elm.value = '' + elm._baseScrollHeight = elm.scrollHeight + elm.value = savedValue + } + + const [message, setMessage] = createSignal(''); + + const onExpandableTextareaInput = () => { + const maxHeight = 800; + + const elm = newMessageInput as AutoSizedTextArea; + + if(!elm || elm.nodeName !== 'TEXTAREA') { + return; + } + + const minRows = parseInt(elm.getAttribute('data-min-rows') || '0'); + + !elm._baseScrollHeight && getScrollHeight(elm); + + + if (elm.scrollHeight >= (maxHeight / 3)) { + return; + } + + elm.rows = minRows; + const rows = elm.value === '' ? 0 : Math.ceil((elm.scrollHeight - elm._baseScrollHeight) / 20); + + elm.rows = minRows + rows; + elm.style.height = `${32 + (20 * rows)}px`; + + if (newMessageWrapper) { + newMessageWrapper.style.height = `${32 + (20 * rows)}px`; + } + + if (newMessageInputBorder) { + newMessageInputBorder.style.height = `${34 + (20 * rows)}px`; + } + + // debounce(() => { + setMessage(elm.value) + // }, 300); + + } + + + const onKeyDown = (e: KeyboardEvent) => { + if (!newMessageInput || !newMessageWrapper) { + return false; + } + + const mentionSeparators = ['Enter', 'Space', 'Comma']; + + if (!isMentioning() && !isEmojiInput() && e.code === 'Enter' && !e.shiftKey) { + e.preventDefault(); + debounce(() => { + sendMessage(); + }, 300); + + return false; + } + + if (!isMentioning() && !isEmojiInput() && e.key === ':') { + emojiCursorPosition = getCaretCoordinates(newMessageInput, newMessageInput.selectionStart); + setEmojiInput(true); + return false; + } + + if (isEmojiInput()) { + + if (e.code === 'ArrowDown') { + e.preventDefault(); + setHighlightedEmoji(i => { + if (emojiResults.length === 0) { + return 0; + } + + return i < emojiResults.length - 7 ? i + 6 : 0; + }); + + const emojiHolder = document.getElementById(`${instanceId}-${highlightedEmoji()}`); + + if (emojiHolder && emojiOptions && !isVisibleInContainer(emojiHolder, emojiOptions)) { + emojiHolder.scrollIntoView({ block: 'end', behavior: 'smooth' }); + } + + return false; + } + + if (e.code === 'ArrowUp') { + e.preventDefault(); + setHighlightedEmoji(i => { + if (emojiResults.length === 0) { + return 0; + } + + return i >= 6 ? i - 6 : emojiResults.length - 1; + }); + + const emojiHolder = document.getElementById(`${instanceId}-${highlightedEmoji()}`); + + if (emojiHolder && emojiOptions && !isVisibleInContainer(emojiHolder, emojiOptions)) { + emojiHolder.scrollIntoView({ block: 'start', behavior: 'smooth' }); + } + + return false; + } + + if (e.code === 'ArrowRight') { + e.preventDefault(); + setHighlightedEmoji(i => { + if (emojiResults.length === 0) { + return 0; + } + + return i < emojiResults.length - 1 ? i + 1 : 0; + }); + + const emojiHolder = document.getElementById(`${instanceId}-${highlightedEmoji()}`); + + if (emojiHolder && emojiOptions && !isVisibleInContainer(emojiHolder, emojiOptions)) { + emojiHolder.scrollIntoView({ block: 'end', behavior: 'smooth' }); + } + + return false; + } + + if (e.code === 'ArrowLeft') { + e.preventDefault(); + setHighlightedEmoji(i => { + if (emojiResults.length === 0) { + return 0; + } + + return i > 0 ? i - 1 : emojiResults.length - 1; + }); + + const emojiHolder = document.getElementById(`${instanceId}-${highlightedEmoji()}`); + + if (emojiHolder && emojiOptions && !isVisibleInContainer(emojiHolder, emojiOptions)) { + emojiHolder.scrollIntoView({ block: 'start', behavior: 'smooth' }); + } + + return false; + } + + if (mentionSeparators.includes(e.code)) { + if (emojiQuery().trim().length === 0) { + setEmojiInput(false); + return false; + } + e.preventDefault(); + selectEmoji(emojiResults[highlightedEmoji()]); + setHighlightedEmoji(0); + return false; + } + + const cursor = newMessageInput.selectionStart; + const lastEmojiTrigger = newMessageInput.value.slice(0, cursor).lastIndexOf(':'); + + if (e.code === 'Backspace') { + setEmojiQuery(emojiQuery().slice(0, -1)); + + if (lastEmojiTrigger < 0 || cursor - lastEmojiTrigger <= 1) { + setEmojiInput(false); + return false; + } + } else { + setEmojiQuery(q => q + e.key); + return false; + } + + // if (emojiQuery().length === 0) { + // setEmojiInput(false); + // return false; + // } + + return false; + } + + if (!isMentioning() && e.key === '@') { + mentionCursorPosition = getCaretCoordinates(newMessageInput, newMessageInput.selectionStart); + setPreQuery(''); + setQuery(''); + setMentioning(true); + return false; + } + + if (!isMentioning() && e.code === 'Backspace' && newMessageInput) { + let cursor = newMessageInput.selectionStart; + const textSoFar = newMessageInput.value.slice(0, cursor); + const lastWord = textSoFar.split(/[\s,;\n\r]/).pop(); + + if (lastWord?.startsWith('@`')) { + const index = textSoFar.lastIndexOf(lastWord); + + const newText = textSoFar.slice(0, index) + newMessageInput.value.slice(cursor); + + setMessage(newText); + newMessageInput.value = newText; + + newMessageInput.selectionEnd = index; + } + } + + if (isMentioning()) { + + if (e.code === 'ArrowDown') { + e.preventDefault(); + setHighlightedUser(i => { + if (!search?.users || search.users.length === 0) { + return 0; + } + + return i < search.users.length - 1 ? i + 1 : 0; + }); + return false; + } + + if (e.code === 'ArrowUp') { + e.preventDefault(); + setHighlightedUser(i => { + if (!search?.users || search.users.length === 0) { + return 0; + } + + return i > 0 ? i - 1 : search.users.length - 1; + }); + return false; + } + + if (mentionSeparators.includes(e.code)) { + if (preQuery().trim().length === 0) { + setMentioning(false); + return false; + } + e.preventDefault(); + search?.users && selectUser(search.users[highlightedUser()]) + setMentioning(false); + return false; + } + + const cursor = newMessageInput.selectionStart; + const lastMentionTrigger = newMessageInput.value.slice(0, cursor).lastIndexOf('@'); + + if (e.code === 'Backspace') { + setPreQuery(preQuery().slice(0, -1)); + + if (lastMentionTrigger < 0 || cursor - lastMentionTrigger <= 1) { + setMentioning(false); + return false; + } + } else { + setPreQuery(q => q + e.key); + return false + } + + // if (preQuery().length === 0) { + // setMentioning(false); + // return false; + // } + + return false; + } + + return true; + }; + + // const onKeyDown = (e: KeyboardEvent) => { + // if (!newMessageInput) { + // return false; + // } + + // if (e.code === 'Enter' && !e.shiftKey) { + // e.preventDefault(); + // debounce(() => { + // sendMessage(); + // }, 300); + + // return false; + // } + + // if (!isMentioning() && !isEmojiInput() && e.key === ':') { + // emojiCursorPosition = getCaretCoordinates(newMessageInput, newMessageInput.selectionStart); + // setEmojiInput(true); + // return false; + // } + // }; + + onMount(() => { + newMessageWrapper?.addEventListener('input', () => onExpandableTextareaInput()); + newMessageInput && newMessageInput.addEventListener('keydown', onKeyDown); + }); + + onCleanup(() => { + newMessageWrapper?.removeEventListener('input', () => onExpandableTextareaInput()); + newMessageInput && newMessageInput.removeEventListener('keydown', onKeyDown); + }); + + const sendMessage = async () => { + if (!messages?.selectedSender || + !newMessageInput || + !newMessageInputBorder || + !newMessageWrapper) { + return; + } + + const text = message().trim(); + + if (text.length === 0) { + return; + } + setMessage(''); + + const content = prepareMessageForSending(text); + + const msg = { + id: `N_M_${messages.messages.length}`, + sender: account?.publicKey || '', + content, + created_at: Math.floor((new Date()).getTime() / 1000), + }; + + const success = await messages?.actions.sendMessage(messages.selectedSender, msg); + + if (success) { + newMessageInput.value = ''; + newMessageInput.style.height = '32px'; + newMessageInputBorder.style.height = '34px'; + newMessageWrapper.style.height = '32px'; + + setTimeout(() => { + const element = document.querySelector(`[data-user="${messages?.selectedSender?.pubkey}"]`); + + if (element && sendersListElement && !isVisibleInContainer(element, sendersListElement)) { + element.scrollIntoView(); + } + }, 100); + } + }; + + const [inputFocused, setInputFocused] = createSignal(false); + + const markAllAsRead = () => { + messages?.actions.resetAllMessages(); + }; + + const sendButtonClass = () => { + return inputFocused() && message().trim().length > 0 ? styles.primaryButton : styles.secondaryButton; + }; + + const addUserToSenders = (user: PrimalUser | string) => { + if (typeof user === 'string') { + return; + } + + messages?.actions.addSender(user); + } + +// MENTIONING + + const search = useSearchContext(); + + const [isMentioning, setMentioning] = createSignal(false); + const [preQuery, setPreQuery] = createSignal(''); + const [query, setQuery] = createSignal(''); + + const [highlightedUser, setHighlightedUser] = createSignal(0); + let mentionCursorPosition = { top: 0, left: 0, height: 0 }; + + let mentionOptions: HTMLDivElement | undefined; + + const prepareMessageForSending = (text: string) => { + + return text.replace(editMentionRegex, (url) => { + + const [_, name] = url.split('\`'); + const user = userRefs[name]; + + // @ts-ignore + return ` nostr:${user.npub}`; + }) + } + + createEffect(() => { + const preQ = preQuery(); + + debounce(() => { + setQuery(() => preQ) + }, 500); + }) + + createEffect(() => { + if (query().length === 0) { + search?.actions.getRecomendedUsers(); + return; + } + + search?.actions.findUsers(query()); + }); + + createEffect(() => { + if (isMentioning()) { + + mentionPositionOptions(); + + if (search?.users && search.users.length > 0) { + setHighlightedUser(0); + } + } + }); + + + const mentionPositionOptions = () => { + if (!newMessageInput || !mentionOptions || !newMessageWrapper) { + return; + } + + const taRect = newMessageInput.getBoundingClientRect(); + + let newBottom = taRect.height - mentionCursorPosition.top; + let newLeft = mentionCursorPosition.left; + + mentionOptions.style.bottom = `${newBottom}px`; + mentionOptions.style.left = `${newLeft}px`; + }; + + const selectEmoji = (emoji: EmojiOption) => { + if (!newMessageInput) { + return; + } + + const msg = message(); + + // Get cursor position to determine insertion point + let cursor = newMessageInput.selectionStart; + + // Get index of the token and insert emoji character + const index = msg.slice(0, cursor).lastIndexOf(':'); + const value = msg.slice(0, index) + emoji.char + msg.slice(cursor); + + // Reset query, update message and text area value + setMessage(value); + newMessageInput.value = message(); + + // Calculate new cursor position + newMessageInput.selectionEnd = index + 1; + newMessageInput.focus(); + + setEmojiInput(false); + setEmojiQuery(''); + setEmojiResults(() => []); + + // Dispatch input event to recalculate UI position + // const e = new Event('input', { bubbles: true, cancelable: true}); + // newMessageInput.dispatchEvent(e); + }; + + + const [userRefs, setUserRefs] = createStore>({}); + + + const selectUser = (user: PrimalUser | undefined) => { + if (!newMessageInput || !user) { + return; + } + + setMentioning(false); + + const name = userName(user); + + setUserRefs((refs) => ({ + ...refs, + [name]: user, + })); + + const msg = message(); + + // Get cursor position to determine insertion point + let cursor = newMessageInput.selectionStart; + + // Get index of the token and inster user's handle + const index = msg.slice(0, cursor).lastIndexOf('@'); + const value = msg.slice(0, index) + `@\`${name}\`` + msg.slice(cursor); + + // Reset query, update message and text area value + setQuery(''); + setMessage(value); + newMessageInput.value = message(); + + newMessageInput.focus(); + + // Calculate new cursor position + cursor = value.slice(0, cursor).lastIndexOf('@') + name.length + 3; + newMessageInput.selectionEnd = cursor; + + + // Dispatch input event to recalculate UI position + const e = new Event('input', { bubbles: true, cancelable: true}); + newMessageInput.dispatchEvent(e); + }; + // const selectUser = (user: PrimalUser) => { + + // if (!newMessageInput) { + // return; + // } + // const name = userName(user); + + // setUserRefs((refs) => ({ + // ...refs, + // [name]: user, + // })); + + // messages?.actions.addUserReference(user); + + // let value = message(); + + // value = value.slice(0, value.lastIndexOf('@')); + + // setQuery(''); + + // setMessage(`${value}@\`${name}\` `); + // newMessageInput.value = message(); + + // newMessageInput.focus(); + + + // // Dispatch input event to recalculate UI position + // const e = new Event('input', { bubbles: true, cancelable: true}); + // newMessageInput.dispatchEvent(e); + // }; + + createEffect(() => { + if (account?.hasPublicKey()) { + profile?.actions.setProfileKey(account.publicKey) + } + }); + + createEffect(() => { + if (messages?.selectedSender) { + + const element = document.querySelector(`[data-user="${messages.selectedSender.pubkey}"]`); + + if (element && sendersListElement && !isVisibleInContainer(element, sendersListElement)) { + element.scrollIntoView(); + } + + } + }); + + createEffect(() => { + if (emojiQuery().length > emojiSearchLimit) { + setEmojiResults(() => emojiSearch(emojiQuery())); + } + }); + + createEffect(() => { + if (isEmojiInput()) { + emojiPositionOptions(); + + if (emojiResults.length > 0) { + setHighlightedEmoji(0); + } + } + }); + + const emojiPositionOptions = () => { + if (!newMessageInput || !emojiOptions || !newMessageWrapper) { + return; + } + + const taRect = newMessageInput.getBoundingClientRect(); + + let newBottom = taRect.height - emojiCursorPosition.top; + let newLeft = emojiCursorPosition.left; + + emojiOptions.style.bottom = `${newBottom}px`; + emojiOptions.style.left = `${newLeft}px`; + }; + + + const onInput = () => { + newMessageInput && setMessage(newMessageInput.value) + } + + return ( +
+ + + + + + {}} + noLinks={true} + hideDefault={true} + onUserSelect={addUserToSenders} + /> + + +
+
+ {intl.formatMessage(tMessages.title)} +
+
+ +
+ +
+
+ +
+ +
+ +
+ +
+ + { + (sender) => ( + + ) + } + +
+ +
+
+
+ +
+ + + +
+ + {(user, index) => ( + } + statNumber={search?.scores[user.pubkey]} + statLabel={intl.formatMessage(tSearch.followers)} + onClick={() => selectUser(user)} + highlighted={highlightedUser() === index()} + /> + )} + +
+
+ + emojiSearchLimit}> +
+ + {(emoji, index) => ( + + )} + +
+
+
+
+ + + {messages?.isConversationLoaded ? + <> : + + } + } + > + {(thread) => ( + + + + +
+ + {(msg) => ( +
+ )} +
+
+ +
+ {date(thread.messages[0].created_at, 'long', messages?.now).label} +
+
+
+ } + > +
+ + + +
+ + {(msg) => ( +
+ )} +
+
+ +
+ {date(thread.messages[0].created_at, 'long', messages?.now).label} +
+
+
+ + )} + + + + +
+
+
+ + ); +} + +export default Messages; diff --git a/src/pages/NotFound.module.scss b/src/pages/NotFound.module.scss new file mode 100644 index 0000000..47a93f3 --- /dev/null +++ b/src/pages/NotFound.module.scss @@ -0,0 +1,3 @@ +.message { + color: var(--text-secondary) +} diff --git a/src/pages/NotFound.tsx b/src/pages/NotFound.tsx new file mode 100644 index 0000000..63503d7 --- /dev/null +++ b/src/pages/NotFound.tsx @@ -0,0 +1,21 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { Component } from 'solid-js'; +import MissingPage from '../components/MissingPage/MissingPage'; +import { placeholders } from '../translations'; + +import styles from './NotFound.module.scss'; + +const NotFound: Component = () => { + + const intl = useIntl(); + + return ( + +

+ {intl.formatMessage(placeholders.pageNotFound)} +

+
+ ); +} + +export default NotFound; diff --git a/src/pages/Notifications.module.scss b/src/pages/Notifications.module.scss new file mode 100644 index 0000000..f7142ac --- /dev/null +++ b/src/pages/Notifications.module.scss @@ -0,0 +1,95 @@ +.fullHeader { + display: grid; + height: 120px; + align-items: center; + justify-content: left; + + >div { + font-weight: 300; + font-size: 32px; + line-height: 34px; + color: var(--brand-text); + text-transform: lowercase; + } +} + +.separator { + width: 100%; + height: 1px; + background-color: var(--text-primary); +} + +.oldNotifications { + position: relative; +} + +.loader { + margin-top: 120px; + position: relative; +} + +.newContentNotification { + position: fixed; + top: 42px; + left: calc(calc(100vw - 1240px) / 2 + 176px + 32px); + width: 640px; + z-index: 20; + display: flex; + justify-content: center; + + >button { + display: flex; + align-items: center; + justify-content: center; + width: auto; + height: 40px; + background: var(--brand-gradient); + font-weight: 400; + font-size: 14px; + line-height: 18px; + border: none; + border-radius: 20px; + padding-block: 0; + padding-left: 2px; + margin: 0; + + .avatars { + display: flex; + align-items: center; + height: 40px; + .avatar { + border: solid 2px var(--text-primary); + border-radius: 50%; + width: 36px; + height: 36px; + transition: margin-right 0.2s; + margin-right: -16px; + } + } + + .counter { + margin-left: 24px; + } + } + +} + +@media only screen and (max-width: 1300px) { + .newContentNotification { + left: calc(calc(100vw - 1032px) / 2 + 48px + 32px); + } +} + +@media only screen and (max-width: 1087px) { + .newContentNotification { + left: calc(calc(100vw - 720px) / 2 + 48px + 32px); + } +} + +@media only screen and (max-width: 720px) { + .newContentNotification { + left: 0; + width: 100%; + justify-content: center; + } +} diff --git a/src/pages/Notifications.tsx b/src/pages/Notifications.tsx new file mode 100644 index 0000000..f7c6922 --- /dev/null +++ b/src/pages/Notifications.tsx @@ -0,0 +1,1154 @@ +import { useIntl } from '@cookbook/solid-intl'; +import { useSearchParams } from '@solidjs/router'; +import { nip19 } from 'nostr-tools'; +import { Component, createEffect, createMemo, createSignal, For, onCleanup, Show } from 'solid-js'; +import { createStore } from 'solid-js/store'; +import { APP_ID } from '../App'; +import Branding from '../components/Branding/Branding'; +import Loader from '../components/Loader/Loader'; +import NotificationItem from '../components/Notifications/NotificationItem'; +import NotificationItem2 from '../components/Notifications/NotificationItem2'; +import NotificationsSidebar from '../components/NotificatiosSidebar/NotificationsSidebar'; +import Paginator from '../components/Paginator/Paginator'; +import Search from '../components/Search/Search'; +import StickySidebar from '../components/StickySidebar/StickySidebar'; +import Wormhole from '../components/Wormhole/Wormhole'; +import { Kind, minKnownProfiles, NotificationType, notificationTypeUserProps } from '../constants'; +import { useAccountContext } from '../contexts/AccountContext'; +import { useNotificationsContext } from '../contexts/NotificationsContext'; +import { getLastSeen, getNotifications, getOldNotifications, setLastSeen, truncateNumber } from '../lib/notifications'; +import { subscribeTo } from '../sockets'; +import { convertToNotes } from '../stores/note'; +import { convertToUser, emptyUser } from '../stores/profile'; +import { FeedPage, NostrMentionContent, NostrNoteActionsContent, NostrNoteContent, NostrStatsContent, NostrUserContent, NostrUserStatsContent, NoteActions, PrimalNote, PrimalNotification, PrimalNotifUser, PrimalUser, SortedNotifications } from '../types/primal'; +import { notifications as t } from '../translations'; + +import styles from './Notifications.module.scss'; + +const Notifications: Component = () => { + + const account = useAccountContext(); + const notifications = useNotificationsContext(); + const intl = useIntl(); + + const [queryParams, setQueryParams] = useSearchParams(); + + const [notifSince, setNotifSince] = createSignal(); + + const [sortedNotifications, setSortedNotifications] = createStore({}); + + const [users, setUsers] = createStore>({}); + + const [userStats, setUserStats] = createStore>({}); + + const [allSet, setAllSet] = createSignal(false); + const [fetchingOldNotifs, setfetchingOldNotifs] = createSignal(false); + + + const newNotifCount = () => { + if (!notifications?.notificationCount) { + return 0; + } + + if (notifications.notificationCount > 100) { + return 100; + } + + return notifications.notificationCount; + }; + + type NotificationStore = { + notes: PrimalNote[], + users: PrimalUser[], + page: FeedPage, + reposts: Record | undefined, + } + + type OldNotificationStore = { + notes: PrimalNote[], + users: Record, + userStats: Record, + page: FeedPage & { notifications: PrimalNotification[]}, + reposts: Record | undefined, + notifications: PrimalNotification[], + } + + const [relatedNotes, setRelatedNotes] = createStore({ + notes: [], + users: [], + page: { messages: [], users: {}, postStats: {}, mentions: {}, noteActions: {} }, + reposts: {}, + }) + + const [oldNotifications, setOldNotifications] = createStore({ + notes: [], + users: {}, + userStats: {}, + page: { messages: [], users: {}, postStats: {}, notifications: [], mentions: {}, noteActions: {} }, + reposts: {}, + notifications: [], + }) + + const hasNewNotifications = createMemo(() => { + return Object.keys(sortedNotifications).length > 0; + }); + + const publicKey = () => { + const user = queryParams.user; + if (user) { + if (minKnownProfiles.names[user]) { + return minKnownProfiles.names[user]; + } + + if (user.startsWith('npub')) { + return nip19.decode(user).data; + } + + return user; + } + + return account?.publicKey; + } + + createEffect(() => { + const pk = publicKey(); + if (pk) { + const subid = `notif_ls_${APP_ID}` + + const unsub = subscribeTo(subid, async (type, _, content) => { + if (type === 'EVENT' && content?.kind === Kind.Timestamp) { + + const timestamp = parseInt(content.content); + + if (!isNaN(timestamp)) { + setNotifSince(timestamp); + } + + unsub(); + return; + } + + if (type === 'EOSE') { + if (!notifSince()) { + setNotifSince(0); + } + } + + }); + + getLastSeen(pk as string, subid); + } + }); + + createEffect(() => { + if (account?.hasPublicKey() && publicKey() === account.publicKey) { + const subid = `notif_sls_${APP_ID}`; + + const unsub = subscribeTo(subid, async (type, _, content) => { + if (type === 'EOSE') { + unsub(); + return; + } + + if (type === 'NOTICE') { + console.log('Error setting notifications lats seen'); + unsub(); + return; + } + + }); + + setTimeout(() => { + setLastSeen(subid, Math.floor((new Date()).getTime() / 1000)); + }, 1000); + + } + }); + + let newNotifs: Record = {}; + + // Fetch new notifications + const fetchNewNotifications = (pk: string) => { + const subid = `notif_${APP_ID}` + + const unsub = subscribeTo(subid, async (type, _, content) => { + if (type === 'EVENT') { + if (!content?.content) { + return; + } + + if (content.kind === Kind.Notification) { + + const notif = JSON.parse(content.content) as PrimalNotification; + + if (newNotifs[notif.type]) { + newNotifs[notif.type].push(notif); + } + else { + newNotifs[notif.type] = [notif]; + } + + return; + } + + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + setUsers((usrs) => ({ ...usrs, [user.pubkey]: { ...user } })); + + setRelatedNotes('page', 'users', + (usrs) => ({ ...usrs, [user.pubkey]: { ...user } }) + ); + return; + } + + if (content.kind === Kind.UserStats) { + const stat = content as NostrUserStatsContent; + const statContent = JSON.parse(content.content); + + setUserStats((stats) => ({ ...stats, [stat.pubkey]: { ...statContent } })); + return; + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + + setRelatedNotes('page', 'messages', + (msgs) => [ ...msgs, { ...message }] + ); + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + setRelatedNotes('page', 'postStats', + (stats) => ({ ...stats, [stat.event_id]: { ...stat } }) + ); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + setRelatedNotes('page', 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + + if (content.kind === Kind.NoteActions) { + const noteActionContent = content as NostrNoteActionsContent; + const noteActions = JSON.parse(noteActionContent.content) as NoteActions; + + setRelatedNotes('page', 'noteActions', + (actions) => ({ ...actions, [noteActions.event_id]: { ...noteActions } }) + ); + return; + } + + } + + if (type === 'EOSE') { + setSortedNotifications(() => newNotifs); + setRelatedNotes('notes', () => [...convertToNotes(relatedNotes.page)]) + setAllSet(true); + unsub(); + return; + } + + }); + + const since = queryParams.ignoreLastSeen ? 0 : notifSince(); + + newNotifs = {}; + getNotifications(account?.publicKey, pk as string, subid, since); + + }; + + createEffect(() => { + const pk = publicKey(); + + if (!pk || notifSince() === undefined) { + return; + } + + fetchNewNotifications(pk as string); + }); + + onCleanup(() => { + setLastNotification(undefined); + setOldNotifications('notifications', []); + setOldNotifications('page', () => ({ messages: [], users: {}, postStats: {}, notifications: [] })); + setNotifSince(0); + setSortedNotifications({}) + }); + + const sortNotifByRecency = (notifs: PrimalNotification[]) => { + return notifs.sort((a: PrimalNotification, b: PrimalNotification) => { + return b.created_at - a.created_at; + }); + } + + const fetchOldNotifications = (until: number) => { + const subid = `notif_old_${APP_ID}` + + const unsub = subscribeTo(subid, async (type, _, content) => { + if (type === 'EVENT') { + if (!content?.content) { + return; + } + + if (content.kind === Kind.Notification) { + const notif = JSON.parse(content.content) as PrimalNotification; + + const isLastNotif = + lastNotification()?.created_at === notif.created_at && + lastNotification()?.type === notif.type; + + if (!isLastNotif) { + setOldNotifications('page', 'notifications', + (notifs) => notifs ? [ ...notifs, notif] : [notif], + ); + } + + return; + } + + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + setOldNotifications('page', 'users', (usrs) => ({ ...usrs, [user.pubkey]: { ...user } })); + return; + } + + if (content.kind === Kind.UserStats) { + const stat = content as NostrUserStatsContent; + const statContent = JSON.parse(content.content); + + setOldNotifications('userStats', (stats) => ({ ...stats, [stat.pubkey]: { ...statContent } })); + return; + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + + setOldNotifications('page', 'messages', + (msgs) => [ ...msgs, { ...message }] + ); + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + setOldNotifications('page', 'postStats', + (stats) => ({ ...stats, [stat.event_id]: { ...stat } }) + ); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + setOldNotifications('page', 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + + if (content.kind === Kind.NoteActions) { + const noteActionContent = content as NostrNoteActionsContent; + const noteActions = JSON.parse(noteActionContent.content) as NoteActions; + + setOldNotifications('page', 'noteActions', + (actions) => ({ ...actions, [noteActions.event_id]: { ...noteActions } }) + ); + return; + } + + } + + if (type === 'EOSE') { + + // Sort notifications + const notifs = [...oldNotifications.page.notifications]; + + const sorted = sortNotifByRecency(notifs); + + setOldNotifications('notifications', (notifs) => [ ...notifs, ...sorted]) + + // Convert related notes + setOldNotifications('notes', (notes) => [...notes, ...convertToNotes(oldNotifications.page)]) + + const pageUsers = oldNotifications.page.users; + + const newUsers = Object.keys(pageUsers).reduce((acc, key) => { + return { ...acc, [pageUsers[key].pubkey]: { ...convertToUser(pageUsers[key])}}; + }, {}); + + setOldNotifications('users', (users) => ({ ...users, ...newUsers })); + + setfetchingOldNotifs(false); + unsub(); + return; + } + + }); + + setOldNotifications('page', () => ({ messages: [], users: {}, postStats: {}, notifications: [] })); + + const pk = publicKey(); + + if (pk) { + setfetchingOldNotifs(true); + getOldNotifications(account?.publicKey, pk as string, subid, until); + } + + } + + // Fetch old notifications + createEffect(() => { + if (account?.hasPublicKey() && !queryParams.ignoreLastSeen && notifSince() !== undefined) { + fetchOldNotifications(notifSince() || 0); + } + }); + + const getUsers = ( + notifs: PrimalNotification[], + type: NotificationType, + ) => { + const knownUsers = Object.keys(users); + const userProp = notificationTypeUserProps[type]; + + const pks = notifs.reduce((acc, n) => { + // @ts-ignore + const pubkey = n[userProp]; + + if (!pubkey) { + return acc; + } + return acc.includes(pubkey) ? acc : [...acc, pubkey]; + }, []); + + return pks.map((pk) => { + const user = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + return { ...user, ...userStats[pk]} as PrimalNotifUser; + }); + } + + const groupBy = (notifs: PrimalNotification[], keyName: string) => { + return notifs.reduce>( + (group: Record, notif) => { + // @ts-ignore + const key: string = notif[keyName] || 'none'; + + group[key] = group[key] ?? []; + group[key].push(notif); + + return group; + }, + {}, + ); + }; + + const newUserFollowedYou = () => { + const type = NotificationType.NEW_USER_FOLLOWED_YOU; + const notifs = sortedNotifications[type]; + + if (!notifs) { + return; + } + + return + }; + + const userUnfollowedYou = () => { + const type = NotificationType.USER_UNFOLLOWED_YOU; + const notifs = sortedNotifications[type]; + + if (!notifs) { + return; + } + + return + }; + + const yourPostWasLiked = () => { + const type = NotificationType.YOUR_POST_WAS_LIKED; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'your_post'); + + const keys = Object.keys(grouped); + + return + {key => { + return ( + n.post.id === key)} + /> + )}} + + }; + + // + const yourPostWasReposted = () => { + const type = NotificationType.YOUR_POST_WAS_REPOSTED; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'your_post'); + + const keys = Object.keys(grouped); + + return + {key => { + return ( + n.post.id === key)} + /> + )} + } + + }; + + const yourPostWasRepliedTo = () => { + const type = NotificationType.YOUR_POST_WAS_REPLIED_TO; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'reply'); + + const keys = Object.keys(grouped); + + + return + {key => { + return ( + n.post.id === key)} + /> + )} + } + + }; + + const yourPostWasZapped = () => { + const type = NotificationType.YOUR_POST_WAS_ZAPPED; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'your_post'); + + const keys = Object.keys(grouped); + + return + {key => { + const sats = grouped[key].reduce((acc, n) => { + return n.satszapped ? acc + n.satszapped : acc; + },0); + + return ( + n.post.id === key)} + iconInfo={`${truncateNumber(sats)}`} + iconTooltip={`${sats} sats`} + /> + )} + } + + }; + + const youWereMentioned = () => { + const type = NotificationType.YOU_WERE_MENTIONED_IN_POST; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'you_were_mentioned_in'); + + const keys = Object.keys(grouped); + + const notes = relatedNotes.notes.filter(n => keys.includes(n.post.id)); + + if (notes.length === 0) { + return; + } + + const knownUsers = Object.keys(users); + + const rUsers: Record = notes.reduce((acc, note) => { + const pk = note.user.pubkey; + + const rUser = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + const usrs = [{...rUser, ...userStats[pk]}]; + + return { ...acc, [note.post.id]: usrs}; + + }, {}); + + + return + {key => { + return ( + n.post.id === key)} + /> + )} + } + + }; + + const yourPostWasMentioned = () => { + const type = NotificationType.YOUR_POST_WAS_MENTIONED_IN_POST; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'your_post_were_mentioned_in'); + + const keys = Object.keys(grouped); + + + const notes = relatedNotes.notes.filter(n => keys.includes(n.post.id)); + + if (notes.length === 0) { + return; + } + + const knownUsers = Object.keys(users); + + const rUsers: Record = notes.reduce((acc, note) => { + const pk = note.user.pubkey; + + const rUser = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + const usrs = [{...rUser, ...userStats[pk]}]; + + return { ...acc, [note.post.id]: usrs}; + + }, {}); + + + return + {key => { + return ( + n.post.id === key)} + /> + )} + } + + }; + + const postYouWereMentionedInWasLiked = () => { + const type = NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_LIKED; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'post_you_were_mentioned_in'); + + const keys = Object.keys(grouped); + + + const notes = relatedNotes.notes.filter(n => keys.includes(n.post.id)); + + if (notes.length === 0) { + return; + } + + const knownUsers = Object.keys(users); + + const rUsers: Record = notes.reduce((acc, note) => { + const pk = note.user.pubkey; + + const rUser = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + const usrs = [{...rUser, ...userStats[pk]}]; + + return { ...acc, [note.post.id]: usrs}; + + }, {}); + + + return + {key => { + return ( + n.post.id === key)} + /> + )} + } + + }; + + const postYouWereMentionedInWasZapped = () => { + const type = NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'post_you_were_mentioned_in'); + + const keys = Object.keys(grouped); + + + const notes = relatedNotes.notes.filter(n => keys.includes(n.post.id)); + + if (notes.length === 0) { + return; + } + + const knownUsers = Object.keys(users); + + const rUsers: Record = notes.reduce((acc, note) => { + const pk = note.user.pubkey; + + const rUser = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + const usrs = [{...rUser, ...userStats[pk]}]; + + return { ...acc, [note.post.id]: usrs}; + + }, {}); + + + return + {key => { + const sats = grouped[key].reduce((acc, n) => { + return n.satszapped ? acc + n.satszapped : acc; + },0); + return ( + n.post.id === key)} + iconInfo={`${truncateNumber(sats)}`} + iconTooltip={`${sats} sats`} + /> + )} + } + + }; + + const postYouWereMentionedInWasReposted = () => { + const type = NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPOSTED; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'post_you_were_mentioned_in'); + + const keys = Object.keys(grouped); + + const notes = relatedNotes.notes.filter(n => keys.includes(n.post.id)); + + if (notes.length === 0) { + return; + } + + const knownUsers = Object.keys(users); + + const rUsers: Record = notes.reduce((acc, note) => { + const pk = note.user.pubkey; + + const rUser = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + const usrs = [{...rUser, ...userStats[pk]}]; + + return { ...acc, [note.post.id]: usrs}; + + }, {}); + + + return + {key => { + return ( + n.post.id === key)} + /> + )} + } + + }; + + const postYouWereMentionedInWasRepliedTo = () => { + const type = NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'reply'); + + const keys = Object.keys(grouped); + + const notes = relatedNotes.notes.filter(n => keys.includes(n.post.id)); + + if (notes.length === 0) { + return; + } + + const knownUsers = Object.keys(users); + + const rUsers: Record = notes.reduce((acc, note) => { + const pk = note.user.pubkey; + + const rUser = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + const usrs = [{...rUser, ...userStats[pk]}]; + + return { ...acc, [note.post.id]: usrs}; + + }, {}); + + + return + {key => { + return ( + n.post.id === key)} + /> + )} + } + + }; + + + const postYourPostWasMentionedInWasLiked = () => { + const type = NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_LIKED; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'post_your_post_was_mentioned_in'); + + const keys = Object.keys(grouped); + + const notes = relatedNotes.notes.filter(n => keys.includes(n.post.id)); + + if (notes.length === 0) { + return; + } + + const knownUsers = Object.keys(users); + + const rUsers: Record = notes.reduce((acc, note) => { + const pk = note.user.pubkey; + + const rUser = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + const usrs = [{...rUser, ...userStats[pk]}]; + + return { ...acc, [note.post.id]: usrs}; + + }, {}); + + + return + {key => { + return ( + n.post.id === key)} + /> + )} + } + + }; + + const postYourPostWasMentionedInWasZapped = () => { + const type = NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'post_your_post_was_mentioned_in'); + + const keys = Object.keys(grouped); + + const notes = relatedNotes.notes.filter(n => keys.includes(n.post.id)); + + if (notes.length === 0) { + return; + } + + const knownUsers = Object.keys(users); + + const rUsers: Record = notes.reduce((acc, note) => { + const pk = note.user.pubkey; + + const rUser = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + const usrs = [{...rUser, ...userStats[pk]}]; + + return { ...acc, [note.post.id]: usrs}; + + }, {}); + + + return + {key => { + const sats = grouped[key].reduce((acc, n) => { + return n.satszapped ? acc + n.satszapped : acc; + },0); + return ( + n.post.id === key)} + iconInfo={`${truncateNumber(sats)}`} + iconTooltip={`${sats} sats`} + /> + )} + } + + }; + + const postYourPostWasMentionedInWasReposted = () => { + const type = NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPOSTED; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'post_your_post_was_mentioned_in'); + + const keys = Object.keys(grouped); + + const notes = relatedNotes.notes.filter(n => keys.includes(n.post.id)); + + if (notes.length === 0) { + return; + } + + const knownUsers = Object.keys(users); + + const rUsers: Record = notes.reduce((acc, note) => { + const pk = note.user.pubkey; + + const rUser = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + const usrs = [{...rUser, ...userStats[pk]}]; + + return { ...acc, [note.post.id]: usrs}; + + }, {}); + + + return + {key => { + return ( + n.post.id === key)} + /> + )} + } + + }; + + const postYourPostWasMentionedInWasRepliedTo = () => { + const type = NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO; + const notifs = sortedNotifications[type] || []; + + const grouped = groupBy(notifs, 'reply'); + + const keys = Object.keys(grouped); + + const notes = relatedNotes.notes.filter(n => keys.includes(n.post.id)); + + if (notes.length === 0) { + return; + } + + const knownUsers = Object.keys(users); + + const rUsers: Record = notes.reduce((acc, note) => { + const pk = note.user.pubkey; + + const rUser = knownUsers.includes(pk) ? + convertToUser(users[pk]) : + emptyUser(pk); + + const usrs = [{...rUser, ...userStats[pk]}]; + + return { ...acc, [note.post.id]: usrs}; + + }, {}); + + + return + {key => { + return ( + n.post.id === key)} + /> + )} + } + + }; + + const [lastNotification, setLastNotification] = createSignal(); + + const fetchMoreNotifications = () => { + const lastNotif = oldNotifications.notifications[oldNotifications.notifications.length - 1]; + + if (!lastNotif || lastNotif.created_at === lastNotification()?.created_at) { + return; + } + + setLastNotification(lastNotif); + + const until = lastNotif.created_at; + + if (until > 0) { + fetchOldNotifications(until); + } + } + + const loadNewContent = () => { + fetchNewNotifications(publicKey() as string); + setLastSeen(`notif_sls_${APP_ID}`, Math.floor((new Date()).getTime() / 1000)); + } + + return ( +
+ + + + + + + + +
+
+ {intl.formatMessage(t.title)} +
+
+ + + 0 && !account?.showNewNoteForm}> +
+ +
+
+ + + + +
+ } + > + + + + + {newUserFollowedYou()} + {userUnfollowedYou()} + + {yourPostWasZapped()} + + {yourPostWasRepliedTo()} + {yourPostWasReposted()} + {yourPostWasLiked()} + + {youWereMentioned()} + {yourPostWasMentioned()} + + {postYouWereMentionedInWasZapped()} + {postYouWereMentionedInWasRepliedTo()} + {postYouWereMentionedInWasReposted()} + {postYouWereMentionedInWasLiked()} + + {postYourPostWasMentionedInWasZapped()} + {postYourPostWasMentionedInWasRepliedTo()} + {postYourPostWasMentionedInWasReposted()} + {postYourPostWasMentionedInWasLiked()} + + +
+
+ + +
+ +
+
+ + 0}> +
+ + {notif => ( + + )} + + +
+
+ + + + ); +} + +export default Notifications; diff --git a/src/pages/Profile.module.scss b/src/pages/Profile.module.scss new file mode 100644 index 0000000..2b5c8ed --- /dev/null +++ b/src/pages/Profile.module.scss @@ -0,0 +1,418 @@ +.fullHeader { + position: relative; + background-color: var(--background-card); + padding-bottom: 20px; + border-radius: 0 0 8px 8px; +} + +.banner { + width: 100%; + height: 214px; + + >img { + width: 100%; + height: 214px; + object-fit: cover; + } +} + +.userImage { + position: absolute; + top: 148px; + left: 15px; + .avatar { + border: solid 4px var(--background-card); + border-radius: 50%; + background-color: var(--background-card); + } +} + +.verifiedIconL { + width: 22px; + height: 22px; + display: inline-block; + margin: 0px 12px 0px 6px; + background-color: var(--accent-2); + -webkit-mask: url(../assets/icons/verified.svg) no-repeat 0px / 22px; + mask: url(../assets/icons/verified.svg) no-repeat 0px / 22px; +} + +.verifiedIconS { + width: 12px; + height: 12px; + display: inline-block; + margin: 0px 2px; + background-color: var(--text-tertiary-2); + -webkit-mask: url(../assets/icons/verified.svg) no-repeat 0px / 12px; + mask: url(../assets/icons/verified.svg) no-repeat 0px / 12px; +} + +.keyIcon { + min-width: 16px; + height: 16px; + display: inline-block; + margin: 0px; + background-color: var(--text-tertiary-2); + -webkit-mask: url(../assets/icons/key.svg) no-repeat 0 0 / 16px 16px; + mask: url(../assets/icons/key.svg) no-repeat 0 0 / 16px 16px; +} + +.copyIcon { + width: 16px; + height: 16px; + display: inline-block; + margin: 0px 2px; + background-color: var(--text-tertiary-2); + -webkit-mask: url(../assets/icons/copy.svg) no-repeat 0 0 / 16px 16px; + mask: url(../assets/icons/copy.svg) no-repeat 0 0 / 16px 16px; +} + +.linkIcon { + width: 16px; + height: 16px; + display: inline-block; + margin: 0px 6px 0px 0px; + background-color: var(--text-tertiary-2); + -webkit-mask: url(../assets/icons/link.svg) no-repeat 0 0 / 16px 16px; + mask: url(../assets/icons/link.svg) no-repeat 0 0 / 16px 16px; +} + +.profileActions { + display: flex; + justify-content: right; + padding-top: 20px; + padding-right: 8px; + padding-bottom: 36px; +} + +@mixin smallButton { + display: flex; + align-items: center; + justify-content: center; + width: 40px; + height: 40px; + border: none; + border-radius: 6px; + margin: 0px 6px; + padding: 0px; +} + +.smallSecondaryButton { + @include smallButton(); + + background-color: var(--background-card); + background: linear-gradient(var(--background-card), var(--background-card)) padding-box, + var(--brand-gradient-vertical) border-box; + border: 1px solid transparent; +} + +.smallPrimaryButton { + @include smallButton(); + background: var(--brand-gradient-vertical); + + .addFeedIcon { + background-color: white; + } +} + +.zapIcon { + width: 18px; + height: 18px; + display: inline-block; + margin: 0px; + background-color: var(--text-secondary); + -webkit-mask: url(../assets/icons/zaps.svg) no-repeat 0px / 18px; + mask: url(../assets/icons/zaps.svg) no-repeat 0px / 18px; +} + +.messageIcon { + width: 18px; + height: 18px; + display: inline-block; + margin: 0px; + background-color: var(--text-secondary); + -webkit-mask: url(../assets/icons/messages.svg) no-repeat 0px / 18px; + mask: url(../assets/icons/messages.svg) no-repeat 0px / 18px; +} + +.addFeedIcon { + width: 18px; + height: 18px; + display: inline-block; + margin: 0px; + background-color: var(--text-secondary); + -webkit-mask: url(../assets/icons/feed_add.svg) no-repeat 0px / 18px; + mask: url(../assets/icons/feed_add.svg) no-repeat 0px / 18px; +} + +.removeFeedIcon { + width: 18px; + height: 18px; + display: inline-block; + margin: 0px; + background-color: var(--text-secondary); + -webkit-mask: url(../assets/icons/feed_remove.svg) no-repeat 0px / 18px; + mask: url(../assets/icons/feed_remove.svg) no-repeat 0px / 18px; +} + +.primaryButton { + width: 90px; + height: 40px; + border: none; + border-radius: 6px; + margin: 0px 8px; + padding: 0px; + font-size: 16px; + line-height: 20px; + font-weight: 700; + background: var(--brand-gradient-vertical); + color: white; +} + + +.profileVerification { + margin-top: 12px; + margin-inline: 20px; + .avatarName { + display: flex; + align-items: center; + color: var(--text-primary); + font-size: 20px; + line-height: 20px; + font-weight: 700; + height: 26px; + } + .verificationInfo { + display: flex; + align-items: center; + color: var(--text-tertiary-2); + font-weight: 400; + font-size: 12px; + line-height: 16px; + margin-top: 10px; + .verified { + display: flex; + align-items: center; + .nip05 { + margin-right: 36px; + } + } + } + .publicKey { + display: flex; + height: 16px; + align-items: center; + color: var(--text-tertiary-2); + font-weight: 400; + font-size: 12px; + line-height: 16px; + + .npub { + color: var(--text-tertiary-2); + text-align: left; + border: none; + margin: 0; + padding: 0; + background-color: unset; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + font-weight: 400; + font-size: 12px; + line-height: 16px; + display: flex; + + .copyIcon { + background-color: var(--accent-2); + } + + &:hover { + .copyIcon { + background-color: var(--text-primary); + } + } + } + } + +} + +.profileLinks { + display: flex; + align-items: center; + justify-content: space-between; + margin-inline: 20px; + margin-block: 12px; + + .website { + font-weight: 400; + font-size: 14px; + line-height: 20px; + display: flex; + align-items: center; + } + + .joined { + font-weight: 400; + font-size: 14px; + line-height: 20px; + text-align: right; + color: var(--text-tertiary-2); + } +} + +.profileAbout { + margin-top: 12px; + margin-inline: 20px; + font-weight: 400; + font-size: 14px; + line-height: 20px; + color: var(--text-primary); +} + +.userStats { + display: flex; + justify-content: left; + align-items: center; + margin-inline: 20px; + + .userStat { + display: flex; + justify-content: left; + align-items: baseline; + margin-right: 28px; + + .statNumber { + font-weight: 400; + font-size: 34px; + line-height: 34px; + color: var(--text-primary); + } + + .statName { + font-weight: 300; + font-size: 16px; + line-height: 19px; + color: var(--text-tertiary-2); + margin-left: 8px; + text-transform: lowercase; + } + + } +} + +.userFeed { + position: relative; +} + +.bannerPlaceholder { + width: 100%; + height: 214px; + background-color: var(--background-input); +} + +.followsBadge { + background-color: var(--background-input); + width: 80px; + height: 16px; + border-radius: 4px; + font-weight: 300; + font-size: 12px; + line-height: 16px; + color: var(--text-tertiary-2); + text-transform: lowercase; + display: flex; + align-items: center; + justify-content: center; +} + +.phoneAvatar { + display: none; +} +.desktopAvatar { + display: block; +} +.addToFeedButton { + display: block; +} + +@media only screen and (max-width: 720px) { + + .banner { + width: 100%; + height: 125px; + + >img { + width: 100%; + height: 125px; + object-fit: cover; + } + } + + .userImage { + position: absolute; + top: 96px; + left: 15px; + } + + .phoneAvatar { + display: block; + } + .desktopAvatar { + display: none; + } + .addToFeedButton { + display: none; + } + .joined { + display: none; + } + + .profileActions { + padding-top: 12px; + padding-bottom: 0px; + } + + .userStats { + justify-content: space-between; + .userStat { + margin-right: 15px; + flex-direction: column; + justify-content: center; + align-items: center; + + .statNumber { + font-size: 28px; + line-height: 34px; + } + + .statName { + font-size: 14px; + line-height: 16px; + } + + } + } + + .profileVerification { + .verificationInfo { + flex-direction: column; + justify-content: flex-start; + align-items: start; + >div { + margin-bottom: 12px; + font-weight: 400; + font-size: 14px; + line-height: 16px; + } + } + } + .profileAbout { + margin-top: 0px; + } +} + +.cacheFlag { + img { + border: 1px solid red; + } +} diff --git a/src/pages/Profile.tsx b/src/pages/Profile.tsx new file mode 100644 index 0000000..6128402 --- /dev/null +++ b/src/pages/Profile.tsx @@ -0,0 +1,404 @@ +import { RouteDataFuncArgs, useNavigate, useParams, useRouteData } from '@solidjs/router'; +import { nip19 } from 'nostr-tools'; +import { + Component, + createEffect, + createMemo, + createSignal, + For, + Resource, + Show +} from 'solid-js'; +import Avatar from '../components/Avatar/Avatar'; +import Branding from '../components/Branding/Branding'; +import Note from '../components/Note/Note'; +import { hexToNpub } from '../lib/keys'; +import { humanizeNumber } from '../lib/stats'; +import { nip05Verification, truncateNpub } from '../stores/profile'; +import Paginator from '../components/Paginator/Paginator'; +import { useToastContext } from '../components/Toaster/Toaster'; +import { useSettingsContext } from '../contexts/SettingsContext'; +import { useProfileContext } from '../contexts/ProfileContext'; +import { useAccountContext } from '../contexts/AccountContext'; +import Wormhole from '../components/Wormhole/Wormhole'; +import { useIntl } from '@cookbook/solid-intl'; +import { urlify, sanitize, replaceLinkPreviews } from '../lib/notes'; +import { shortDate } from '../lib/dates'; + +import styles from './Profile.module.scss'; +import StickySidebar from '../components/StickySidebar/StickySidebar'; +import ProfileSidebar from '../components/ProfileSidebar/ProfileSidebar'; +import { VanityProfiles } from '../types/primal'; +import PageTitle from '../components/PageTitle/PageTitle'; +import FollowButton from '../components/FollowButton/FollowButton'; +import Search from '../components/Search/Search'; +import { useMediaContext } from '../contexts/MediaContext'; +import { profile as t, actions as tActions } from '../translations'; + +const Profile: Component = () => { + + const settings = useSettingsContext(); + const toaster = useToastContext(); + const profile = useProfileContext(); + const account = useAccountContext(); + const media = useMediaContext(); + const intl = useIntl(); + const navigate = useNavigate(); + + const params = useParams(); + + const routeData = useRouteData<(opts: RouteDataFuncArgs) => Resource>(); + + const getHex = () => { + if (params.vanityName && routeData()) { + const name = params.vanityName.toLowerCase(); + const hex = routeData()?.names[name]; + + if (hex) { + return hex; + } + + navigate('/404'); + } + + if (params.vanityName) { + return ''; + } + + let hex = params.npub || account?.publicKey; + + if (params.npub?.startsWith('npub')) { + hex = nip19.decode(params.npub).data as string; + } + + return hex; + } + + const setProfile = (hex: string | undefined) => { + // if (hex === profile?.profileKey) { + // return; + // } + + profile?.actions.setProfileKey(hex); + profile?.actions.clearNotes(); + profile?.actions.fetchNotes(hex); + } + + // const react = createReaction(() => { + // setProfile(getHex()); + // }); + + // onMount(() => { + // // If connection doesn't exist at mount time, + // // create a one-time reaction, when connection is established + // // to fetch profile data. + // if (!isConnected()) { + // react(() => isConnected()); + // return; + // } + + // // Otherwise, fetch profile data. + // setProfile(getHex()); + // }); + + createEffect(() => { + if (account?.isKeyLookupDone) { + setProfile(getHex()); + } + }); + + const profileNpub = createMemo(() => { + return hexToNpub(profile?.profileKey); + }); + + const profileName = () => { + return profile?.userProfile?.displayName || + profile?.userProfile?.name || + truncateNpub(profileNpub()); + } + + const addToHome = () => { + const feed = { + name: `${profileName()}'s feed`, + hex: profile?.profileKey, + npub: profileNpub(), + }; + + settings?.actions.addAvailableFeed(feed); + toaster?.sendSuccess(`${profileName()}'s feed added to home page`); + }; + + const removeFromHome = () => { + const feed = { + name: `${profileName()}'s feed`, + hex: profile?.profileKey, + npub: profileNpub(), + }; + + settings?.actions.removeAvailableFeed(feed); + toaster?.sendSuccess(`${profileName()}'s feed removed from home page`); + }; + + const hasFeedAtHome = () => { + return !!settings?.availableFeeds.find(f => f.hex === profile?.profileKey); + }; + + const copyNpub = () => { + navigator.clipboard.writeText(profile?.userProfile?.npub || profileNpub()); + } + + const imgError = (event: any) => { + // Temprary solution until we decide what to to when banner is missing. + + // const image = event.target; + // image.onerror = ""; + // image.src = defaultAvatar; + + const banner = document.getElementById('profile_banner'); + + if (banner) { + banner.innerHTML = `
`; + } + + return true; + } + + const rectifyUrl = (url: string) => { + if (!url.startsWith('http://') && !url.startsWith('https://')) { + return `http://${url}`; + } + + return url; + } + + const onNotImplemented = () => { + toaster?.notImplemented(); + } + + const isFollowingYou = () => { + return account?.publicKey && profile?.following.includes(account.publicKey); + } + + const [isBannerCached, setisBannerCached] = createSignal(false); + + const banner = () => { + const src= profile?.userProfile?.banner; + const url = media?.actions.getMediaUrl(src, 'm', true); + + setisBannerCached(!!url); + + return url ?? src; + } + + const flagBannerForWarning = () => { + const dev = JSON.parse(localStorage.getItem('devMode') || 'false'); + + // @ts-ignore + if (isBannerCached() || !dev) { + return ''; + } + + return styles.cacheFlag; + } + + return ( + <> + + + + + + + + + + + + + + +
+
+
} + > + + +
+ + +
+
+
+ +
+ +
+ +
+
+
+
+ +
+ + + +
+ +
+ + } + > + +
+
+ + + +
+ + +
+
+ {profileName()} + +
+
+ +
+ {intl.formatMessage(t.followsYou)} +
+
+
+
+ +
+
+
{nip05Verification(profile?.userProfile)}
+
+
+
+
+ +
+
+
+
+ +
+
+ +
+ +
+ + {intl.formatMessage( + t.jointDate, + { + date: shortDate(profile?.userStats.time_joined), + }, + )} + +
+
+ +
+
+
+ {humanizeNumber(profile?.userStats?.follows_count || 0)} +
+
+ {intl.formatMessage(t.stats.follow)} +
+
+
+
+ {humanizeNumber(profile?.userStats?.followers_count || 0)} +
+
+ {intl.formatMessage(t.stats.followers)} +
+
+
+
+ {humanizeNumber(profile?.userStats?.note_count || 0)} +
+
+ {intl.formatMessage(t.stats.notes)} +
+
+ +
+ + + +
+ + {note => ( + + )} + + +
+ + ) +} + +export default Profile; diff --git a/src/pages/Search.module.scss b/src/pages/Search.module.scss new file mode 100644 index 0000000..99b312c --- /dev/null +++ b/src/pages/Search.module.scss @@ -0,0 +1,78 @@ +.fullHeader { + display: grid; + height: 120px; + align-items: center; + justify-content: left; + margin-bottom: -3px; + position: relative; + + .caption { + font-weight: 300; + font-size: 32px; + line-height: 34px; + color: var(--brand-text); + text-transform: lowercase; + } + + .addToFeed { + display: flex; + position: absolute; + bottom: 0px; + width: 100%; + height: 35px; + justify-content: flex-end; + align-items: flex-end; + + .noAdd { + display: flex; + align-items: center; + font-size: 16px; + line-height: 25px; + font-weight: 400; + color: var(--text-primary); + opacity: 0.6; + transition: opacity 0.4s; + } + + .addButton { + display: flex; + align-items: center; + margin: 0; + padding: 0; + border: none; + background-color: unset; + width: auto; + font-size: 16px; + line-height: 25px; + font-weight: 400; + color: var(--text-primary); + opacity: 0.6; + transition: opacity 0.4s; + + >span { + font-weight: 800; + margin-right: 5px; + } + + &:hover { + opacity: 1; + transition: opacity 0.4s; + } + + &:focus { + box-shadow: none; + } + } + } +} +.searchContent { + position: relative; +} + +.noResults { + font-weight: 300; + font-size: 22px; + line-height: 24px; + color: var(--text-tertiary); + text-transform: lowercase; +} diff --git a/src/pages/Search.tsx b/src/pages/Search.tsx new file mode 100644 index 0000000..6addbc3 --- /dev/null +++ b/src/pages/Search.tsx @@ -0,0 +1,136 @@ +import { + Component, + createEffect, + For, + Show, +} from 'solid-js'; +import Note from '../components/Note/Note'; +import Branding from '../components/Branding/Branding'; +import Wormhole from '../components/Wormhole/Wormhole'; +import StickySidebar from '../components/StickySidebar/StickySidebar'; +import { useAccountContext } from '../contexts/AccountContext'; +import { useIntl } from '@cookbook/solid-intl'; +import { isConnected } from '../sockets'; +import { useParams } from '@solidjs/router'; +import styles from './Search.module.scss'; +import { useSearchContext } from '../contexts/SearchContext'; +import SearchSidebar from '../components/SearchSidebar/SearchSidebar'; +import Loader from '../components/Loader/Loader'; +import { useToastContext } from '../components/Toaster/Toaster'; +import { useSettingsContext } from '../contexts/SettingsContext'; +import SearchComponent from '../components/Search/Search'; +import { toast as t, search as tSearch, actions as tActions } from '../translations'; + +const Search: Component = () => { + const params = useParams(); + const search = useSearchContext(); + const account = useAccountContext(); + const toaster = useToastContext(); + const settings = useSettingsContext(); + const intl = useIntl(); + + const query = () => decodeURI(params.query).replaceAll('%23', '#'); + + createEffect(() => { + if (isConnected() && query().length > 0 && search?.contentQuery !== query()) { + search?.actions.setContentQuery(query()); + search?.actions.findContent(query()); + search?.actions.findContentUsers(query(), account?.publicKey); + } + }); + + const hasFeedAtHome = () => { + const hex = `search;${decodeURI(params.query)}`; + + return !!settings?.availableFeeds.find(f => f.hex === hex); + }; + + const addToHomeFeed = () => { + const q = decodeURI(params.query).replaceAll('%23', '#') + const hex = `search;${q}`; + const name = intl.formatMessage( + tSearch.feedLabel, + { query: q || '' }, + ); + + const feed = { name, hex }; + + settings?.actions.addAvailableFeed(feed); + + toaster?.sendSuccess(intl.formatMessage( + t.addFeedToHomeSuccess, + { name }, + )); + }; + + return ( + <> + + + + + + + + + + + + +
+
+ {intl.formatMessage( + tSearch.title, + { query: query() || '' }, + )} +
+
+ + {intl.formatMessage(tActions.disabledAddFeedToHome)} +
+ } + > + + +
+ + +
+ } + > + 0} + fallback={ +
+ { + intl.formatMessage(tSearch.noResults) + } +
+ } + > + + {note => } + +
+
+
+ + ) +} + +export default Search; diff --git a/src/pages/Settings.module.scss b/src/pages/Settings.module.scss new file mode 100644 index 0000000..567efbc --- /dev/null +++ b/src/pages/Settings.module.scss @@ -0,0 +1,42 @@ +.settingsContainer { + background-color: var(--background-card); + padding-inline: 28px; + min-height: 100vh; + padding-bottom: 20px; +} + +.fullHeader { + display: grid; + height: 128px; + align-items: center; + justify-content: left; + + >div { + font-weight: 300; + font-size: 32px; + line-height: 34px; + color: var(--brand-text); + text-transform: lowercase; + } +} + +.comingSoon { + font-weight: 300; + font-size: 18px; + line-height: 34px; + color: var(--text-secondary); +} + +.settingsCaption { + font-size: 18px; + font-weight: 800; + line-height: 20px; + color: var(--text-secondary); + margin-bottom: 20px; +} + +.devider { + width: 100%; + border-bottom: solid 1px var(--subtile-devider); + margin-block: 32px; +} diff --git a/src/pages/Settings.tsx b/src/pages/Settings.tsx new file mode 100644 index 0000000..6db67bc --- /dev/null +++ b/src/pages/Settings.tsx @@ -0,0 +1,74 @@ +import { Component } from 'solid-js'; +import Branding from '../components/Branding/Branding'; +import styles from './Settings.module.scss'; + +import FeedSorter from '../components/FeedSorter/FeedSorter'; +import ThemeChooser from '../components/ThemeChooser/ThemeChooser'; +import Wormhole from '../components/Wormhole/Wormhole'; +import { useIntl } from '@cookbook/solid-intl'; +import SettingsZap from '../components/SettingsZap/SettingsZap'; +import Search from '../components/Search/Search'; +import SettingsNotifications from '../components/SettingsNotifications/SettingsNotifications'; +import { settings as t } from '../translations'; + +const Settings: Component = () => { + + const intl = useIntl(); + + return ( +
+ + + + + + + + +
+
+ {intl.formatMessage(t.title)} +
+
+
+ {intl.formatMessage(t.theme)} +
+ + + +
+ +
+ {intl.formatMessage(t.feeds)} +
+ +
+ +
+ +
+ +
+ {intl.formatMessage(t.feeds)} +
+ +
+ +
+ +
+ +
+ {intl.formatMessage(t.notifications.title)} +
+ +
+ +
+
+ ) +} + +export default Settings; diff --git a/src/pages/Thread.module.scss b/src/pages/Thread.module.scss new file mode 100644 index 0000000..90faedf --- /dev/null +++ b/src/pages/Thread.module.scss @@ -0,0 +1,61 @@ +.repliesHolder { + position: relative; + padding-bottom: 60px; +} +.noContent { + position: relative; + color: var(--text-secondary); + text-align: center; + margin-top: 80px; +} + +.border { + height: 36px; + padding: 1px; + background: var(--brand-gradient); + border-radius: 6px; + margin-left: 10px; + + input { + height: 34px; + font-size: 18px; + line-height: 20px; + margin: 0px; + border-radius: 6px; + border: none; + background-color: var(--background-site); + } +} + +.replyBox { + margin-top: 4px; + padding: 30px 22px; + background-color: var(--background-card); +} + +@media only screen and (max-width: 720px) { + .border { + height: 36px; + padding: 1px; + background: var(--brand-gradient); + border-radius: 6px; + margin-left: 10px; + + input { + height: 34px; + font-size: 18px; + line-height: 20px; + margin: 0px; + border-radius: 6px; + border: none; + background-color: var(--background-site); + } + } + + .replyBox { + margin-top: 4px; + padding: 30px 12px; + width: 100%; + background-color: var(--background-card); + } +} diff --git a/src/pages/Thread.tsx b/src/pages/Thread.tsx new file mode 100644 index 0000000..0990c0e --- /dev/null +++ b/src/pages/Thread.tsx @@ -0,0 +1,174 @@ +import { Component, createEffect, For, onCleanup, Show } from 'solid-js'; +import Note from '../components/Note/Note'; +import styles from './Thread.module.scss'; +import { useParams } from '@solidjs/router'; +import { PrimalNote } from '../types/primal'; +import NotePrimary from '../components/Note/NotePrimary/NotePrimary'; +import PeopleList from '../components/PeopleList/PeopleList'; +import PageNav from '../components/PageNav/PageNav'; +import ReplyToNote from '../components/ReplyToNote/ReplyToNote'; + +import Loader from '../components/Loader/Loader'; +import { nip19 } from 'nostr-tools'; +import { useThreadContext } from '../contexts/ThreadContext'; +import Wormhole from '../components/Wormhole/Wormhole'; +import { useAccountContext } from '../contexts/AccountContext'; +import { sortByRecency } from '../stores/note'; +import { scrollWindowTo } from '../lib/scroll'; +import { useIntl } from '@cookbook/solid-intl'; +import Search from '../components/Search/Search'; +import { thread as t } from '../translations'; + + +const Thread: Component = () => { + const account = useAccountContext(); + const params = useParams(); + const intl = useIntl(); + + const postId = () => { + if (params.postId.startsWith('note')) { + return params.postId; + } + + return nip19.noteEncode(params.postId); + }; + + const threadContext = useThreadContext(); + + const primaryNote = () => { + // const id = postId(); + // const savedNote = threadContext?.primaryNote; + + + // if (savedNote?.post.noteId === postId()) { + // return savedNote; + // } + + return threadContext?.notes.find(n => n.post.noteId === postId()); + }; + + const parentNotes = () => { + const note = primaryNote(); + + if (!note) { + return []; + } + + return sortByRecency( + threadContext?.notes.filter(n => + n.post.id !== note.post.id && n.post.created_at <= note.post.created_at, + ) || [], + true, + ); + }; + + const replyNotes = () => { + const note = primaryNote(); + + if (!note) { + return []; + } + + return threadContext?.notes.filter(n => + n.post.id !== note.post.id && n.post.created_at >= note.post.created_at, + ) || []; + }; + + const people = () => threadContext?.users || []; + const isFetching = () => threadContext?.isFetching; + + createEffect(() => { + threadContext?.actions.fetchNotes(postId()); + }); + + let observer: IntersectionObserver | undefined; + + createEffect(() => { + if (primaryNote() && !threadContext?.isFetching) { + const pn = document.getElementById('primary_note'); + + if (!pn) { + return; + } + + observer = new IntersectionObserver(entries => { + const rect = pn.getBoundingClientRect(); + entries.forEach((entry) => { + if (!entry.isIntersecting) { + scrollWindowTo(rect.top); + } + observer?.unobserve(pn); + }); + }); + + observer?.observe(pn); + } + }); + + onCleanup(() => { + const pn = document.getElementById('primary_note'); + + pn && observer?.unobserve(pn); + }); + + return ( +
+ + + + + + + + + + + + + + + {note => +
+ +
+ } +
+
+ + +
+ + + + +
+
+ +
+
} + > + + {note => +
+ +
+ } +
+ +
+ + ) +} + +export default Thread; diff --git a/src/services/StoreService.ts b/src/services/StoreService.ts new file mode 100644 index 0000000..8d218dc --- /dev/null +++ b/src/services/StoreService.ts @@ -0,0 +1,113 @@ +import { nip19 } from "nostr-tools"; +import { createStore } from "solid-js/store"; +import { APP_ID } from "../App"; +import { emptyPage, Kind } from "../constants"; +import { convertToNotes, sortingPlan } from "../stores/note"; +import { FeedPage, NostrEventContent, NostrMentionContent, NostrNoteActionsContent, NostrNoteContent, NostrStatsContent, NostrUserContent, NoteActions, PrimalNote } from "../types/primal"; + +type FeedStore = { + lastNote?: PrimalNote, + notes: PrimalNote[], + isFetching: boolean, +} + +type PrimalStore = { + page: Record, + feed: Record, +}; + + +export const [store, updateStore] = createStore({ + page: {}, + feed: {}, +}); + +export const getStoreKey = (subId: string) => { + return subId.replace(APP_ID, ''); +}; + +export const updatePage = (subId: string, content: NostrEventContent) => { + + const storeKey = getStoreKey(subId); + const feed = store.feed[storeKey]; + + if (content.kind === Kind.Metadata) { + const user = content as NostrUserContent; + + + updateStore('page', storeKey, 'users', + (usrs) => ({ ...usrs, [user.pubkey]: { ...user } }) + ); + return; + } + + if ([Kind.Text, Kind.Repost].includes(content.kind)) { + const message = content as NostrNoteContent; + const messageId = nip19.noteEncode(message.id); + + const isLastNote = message.kind === Kind.Text ? + feed.lastNote?.post?.noteId === messageId : + feed.lastNote?.repost?.note.noteId === messageId; + + if (!isLastNote) { + updateStore('page', storeKey, 'messages', + (msgs) => [ ...msgs, { ...message }] + ); + } + + return; + } + + if (content.kind === Kind.NoteStats) { + const statistic = content as NostrStatsContent; + const stat = JSON.parse(statistic.content); + + updateStore('page', storeKey, 'postStats', + (stats) => ({ ...stats, [stat.event_id]: { ...stat } }) + ); + return; + } + + if (content.kind === Kind.Mentions) { + const mentionContent = content as NostrMentionContent; + const mention = JSON.parse(mentionContent.content); + + updateStore('page', storeKey, 'mentions', + (mentions) => ({ ...mentions, [mention.id]: { ...mention } }) + ); + return; + } + + if (content.kind === Kind.NoteActions) { + const noteActionContent = content as NostrNoteActionsContent; + const noteActions = JSON.parse(noteActionContent.content) as NoteActions; + + updateStore('page', storeKey, 'noteActions', + (actions) => ({ ...actions, [noteActions.event_id]: { ...noteActions } }) + ); + return; + } +}; + +export const savePage = (subId: string, sortBy = 'latest') => { + const storeKey = getStoreKey(subId); + const sortingFunction = sortingPlan(sortBy); + + const newPosts = sortingFunction(convertToNotes(store.page[storeKey])); + + saveNotes(newPosts, storeKey); +}; + +export const saveNotes = (notes: PrimalNote[], subId: string) => { + const storeKey = getStoreKey(subId); + + updateStore('feed', storeKey, 'notes', (nts) => [ ...nts, ...notes ]); + updateStore('feed', storeKey, 'isFetching', () => false); +}; + + +export const clearPage = (subId: string) => { + const storeKey = getStoreKey(subId); + + updateStore('page', storeKey, () => ({ ...emptyPage })); +}; diff --git a/src/sockets.tsx b/src/sockets.tsx new file mode 100644 index 0000000..62446af --- /dev/null +++ b/src/sockets.tsx @@ -0,0 +1,102 @@ +import { createSignal } from "solid-js"; +import { NostrEvent, NostrEOSE, NostrEventType, NostrEventContent } from "./types/primal"; + +export const [socket, setSocket] = createSignal(); + +export const [isConnected, setConnected] = createSignal(false); + +export const isNotConnected = () => !isConnected(); + +const onOpen = () => { + setConnected(true); +} + +const onClose = () => { + setConnected(false); + + socket()?.removeEventListener('open', onOpen); + socket()?.removeEventListener('close', onClose); + socket()?.removeEventListener('error', onError); + + setTimeout(() => { + connect(); + }, 200); +} + +const onError = (error: Event) => { + console.log("ws error: ", error); +}; + +export const connect = () => { + if (isNotConnected()) { + const cacheServer = localStorage.getItem('cacheServer') ?? + 'wss://cache3.primal.net/cache17'; + + setSocket(new WebSocket(cacheServer)); + console.log('CACHE SOCKET: ', socket()); + + socket()?.addEventListener('open', onOpen); + socket()?.addEventListener('close', onClose); + socket()?.addEventListener('error', onError); + } +}; + +export const disconnect = () => { + socket()?.close(); +}; + +export const reset = () => { + disconnect(); + setTimeout(connect, 1000); +}; + +export const sendMessage = (message: string) => { + isConnected() && socket()?.send(message); +} + +export const refreshSocketListeners = ( + ws: WebSocket | undefined, + listeners: Record any>, + ) => { + + if (!ws) { + return; + } + + Object.keys(listeners).forEach((event: string) => { + ws.removeEventListener(event, listeners[event]); + ws.addEventListener(event, listeners[event]); + }); +}; + +export const removeSocketListeners = ( + ws: WebSocket | undefined, + listeners: Record any>, + ) => { + + if (!ws) { + return; + } + + Object.keys(listeners).forEach((event: string) => { + ws.removeEventListener(event, listeners[event]); + }); +}; + +export const subscribeTo = (subId: string, cb: (type: NostrEventType, subId: string, content?: NostrEventContent) => void ) => { + const listener = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + const [type, subscriptionId, content] = message; + + if (subId === subscriptionId) { + cb(type, subscriptionId, content); + } + + }; + + socket()?.addEventListener('message', listener); + + return () => { + socket()?.removeEventListener('message', listener); + }; +}; diff --git a/src/stores/note.ts b/src/stores/note.ts new file mode 100644 index 0000000..0d800dd --- /dev/null +++ b/src/stores/note.ts @@ -0,0 +1,349 @@ +import { nip19 } from "nostr-tools"; +import { Kind } from "../constants"; +import { hexToNpub } from "../lib/keys"; +import { sanitize } from "../lib/notes"; +import { RepostInfo, NostrNoteContent, FeedPage, PrimalNote, PrimalRepost, NostrEventContent, NostrEOSE, NostrEvent, PrimalUser } from "../types/primal"; +import { convertToUser, emptyUser } from "./profile"; + + +export const getRepostInfo: RepostInfo = (page, message) => { + const user = page?.users[message.pubkey]; + const userMeta = JSON.parse(user?.content || '{}'); + const stat = page?.postStats[message.id]; + + + const noActions = { + event_id: message.id, + liked: false, + replied: false, + reposted: false, + zapped: false, + }; + + return { + user: { + id: user?.id || '', + pubkey: user?.pubkey || message.pubkey, + npub: hexToNpub(user?.pubkey || message.pubkey), + name: (userMeta.name || user?.pubkey) as string, + about: (userMeta.about || '') as string, + picture: (userMeta.picture || '') as string, + nip05: (userMeta.nip05 || '') as string, + banner: (userMeta.banner || '') as string, + displayName: (userMeta.display_name || '') as string, + location: (userMeta.location || '') as string, + lud06: (userMeta.lud06 || '') as string, + lud16: (userMeta.lud16 || '') as string, + website: (userMeta.website || '') as string, + tags: user?.tags || [], + }, + note: { + id: message.id, + pubkey: message.pubkey, + created_at: message.created_at || 0, + tags: message.tags, + content: sanitize(message.content), + sig: message.sig, + likes: stat?.likes || 0, + mentions: stat?.mentions || 0, + reposts: stat?.reposts || 0, + replies: stat?.replies || 0, + zaps: stat?.zaps || 0, + score: stat?.score || 0, + score24h: stat?.score24h || 0, + satszapped: stat?.satszapped || 0, + noteId: nip19.noteEncode(message.id), + noteActions: (page.noteActions && page.noteActions[message.id]) || noActions, + }, + } +}; + +export const parseEmptyReposts = (page: FeedPage) => { + let reposts: Record = {}; + + page.messages.forEach(message => { + if (message.kind === 6 && message.content.length === 0) { + const tag = message.tags.find(t => t[0] === 'e'); + if (tag) { + reposts[tag[1]] = message.id; + } + } + }); + + return reposts; +}; + +const parseKind6 = (message: NostrNoteContent) => { + try { + return JSON.parse(message.content); + } catch (e) { + return { + kind: 1, + content: '', + id: message.id, + created_at: message.created_at, + pubkey: message.pubkey, + sig: message.sig, + tags: message.tags, + } + } +}; + +// const getNoteReferences = (message: NostrNoteContent) => { +// const regex = /\#\[([0-9]*)\]/g; +// let refs = []; +// let match; + +// while((match = regex.exec(message.content)) !== null) { +// refs.push(match[1]); +// } + +// return refs.reduce((acc, ref) => { +// const tag = message.tags[parseInt(ref)] || []; + +// return tag[0] === 'e' ? [...acc, tag[1]] : acc; +// }, []); +// }; + +// const getUserReferences = (message: NostrNoteContent) => { +// const regex = /\#\[([0-9]*)\]/g; +// let refs = []; +// let match; + +// while((match = regex.exec(message.content)) !== null) { +// refs.push(match[1]); +// } + +// return refs.reduce((acc, ref) => { +// const tag: string[] = message.tags[parseInt(ref)] || []; + +// return tag[0] === 'p' ? [...acc, tag[1]] : acc; +// }, []); +// }; + +type ConvertToNotes = (page: FeedPage | undefined) => PrimalNote[]; + +export const convertToNotes: ConvertToNotes = (page) => { + + if (page === undefined) { + return []; + } + + const mentions = page.mentions || {}; + + return page.messages.map((message) => { + const msg: NostrNoteContent = message.kind === Kind.Repost ? parseKind6(message) : message; + + const user = page?.users[msg.pubkey]; + const stat = page?.postStats[msg.id]; + + const userMeta = JSON.parse(user?.content || '{}'); + + const mentionIds = Object.keys(mentions) //message.tags.reduce((acc, t) => t[0] === 'e' ? [...acc, t[1]] : acc, []); + const userMentionIds = message.tags.reduce((acc, t) => t[0] === 'p' ? [...acc, t[1]] : acc, []); + + let mentionedNotes: Record = {}; + let mentionedUsers: Record = {}; + + if (mentionIds.length > 0) { + for (let i = 0;i 0) { + for (let i = 0;i { + + const aData: Record = a.repost ? a.repost.note : a.post; + const bData: Record = b.repost ? b.repost.note : b.post; + + return bData[property] - aData[property]; +}; + +export const sortByRecency = (posts: PrimalNote[], reverse = false) => { + return posts.sort((a: PrimalNote, b: PrimalNote) => { + const order = sortBy(a, b, 'created_at'); + + return reverse ? -1 * order : order; + }); +}; + +export const sortByScore24h = (posts: PrimalNote[], reverse = false) => { + return posts.sort((a: PrimalNote, b: PrimalNote) => { + const order = sortBy(a, b, 'score24h'); + + return reverse ? -1 * order : order; + }); +}; + +export const sortByScore = (posts: PrimalNote[], reverse = false) => { + return posts.sort((a: PrimalNote, b: PrimalNote) => { + const order = sortBy(a, b, 'score'); + + return reverse ? -1 * order : order; + }); +}; + +export const sortByZapped = (posts: PrimalNote[], reverse = false) => { + return posts.sort((a: PrimalNote, b: PrimalNote) => { + const order = sortBy(a, b, 'satszapped'); + + return reverse ? -1 * order : order; + }); +}; + +export const sortingPlan = (topic: string = '') => { + const sortingFunctions: Record = { + trending: sortByScore24h, + popular: sortByScore, + latest: sortByRecency, + mostzapped: sortByZapped, + mostzapped4h: sortByZapped, + } + + const plan = topic || 'latest'; + + return sortingFunctions[plan] || sortingFunctions['latest']; +}; + + +export const paginationPlan = (criteria: string) => { + const pagCriteria: Record = { + trending: 'score24h', + popular: 'score', + latest: 'created_at', + mostzapped: 'satszapped', + mostzapped4h: 'satszapped', + } + + const plan = criteria || 'latest'; + + return pagCriteria[plan] || pagCriteria['latest']; +} + +type NoteStore = { + notes: PrimalNote[], + page: FeedPage, + lastNote: PrimalNote | undefined, + reposts: Record | undefined, +} + +export const referencesToTags = (value: string) => { + const regex = + /\bnostr:((note|npub|nevent|nprofile)1\w+)\b|#\[(\d+)\]/g; + + let refs: string[] = []; + let tags: string[][] = []; + let match; + + while((match = regex.exec(value)) !== null) { + refs.push(match[0]); + } + + refs.forEach((ref) => { + const decoded = nip19.decode(ref.split('nostr:')[1]); + + if (decoded.type === 'npub') { + tags.push(['p', decoded.data, '', 'mention']) + return; + } + + if (decoded.type === 'nprofile') { + const relay = decoded.data.relays ? decoded.data.relays[0] : ''; + tags.push(['p', decoded.data.pubkey, relay, 'mention']); + return; + } + + if (decoded.type === 'note') { + tags.push(['e', decoded.data, '', 'mention']); + return; + } + + if (decoded.type === 'nevent') { + const relay = decoded.data.relays ? decoded.data.relays[0] : ''; + tags.push(['e', decoded.data.id, relay, 'mention']); + return; + } + }); + + return tags; + +}; diff --git a/src/stores/profile.ts b/src/stores/profile.ts new file mode 100644 index 0000000..87253ac --- /dev/null +++ b/src/stores/profile.ts @@ -0,0 +1,96 @@ +import { hexToNpub } from "../lib/keys"; +import { NostrUserContent, PrimalUser } from "../types/primal"; + +export const truncateNpub = (npub: string) => { + if (npub.length < 24) { + return npub; + } + return `${npub.slice(0, 15)}..${npub.slice(-10)}`; +}; + +export const truncateName = (name: string, limit = 20) => { + if (name.length < limit) { + return name; + } + return `${name.slice(0, limit)}...`; +}; + +export const convertToUser: (user: NostrUserContent) => PrimalUser = (user: NostrUserContent) => { + const userMeta = JSON.parse(user.content || '{}'); + + return { + id: user.id, + pubkey: user.pubkey, + tags: user.tags, + npub: hexToNpub(user.pubkey), + name: (userMeta.name || '') as string, + about: (userMeta.about || '') as string, + picture: (userMeta.picture || '') as string, + nip05: (userMeta.nip05 || '') as string, + banner: (userMeta.banner || '') as string, + displayName: (userMeta.display_name || '') as string, + location: (userMeta.location || '') as string, + lud06: (userMeta.lud06 || '') as string, + lud16: (userMeta.lud16 || '') as string, + website: (userMeta.website || '') as string, + }; +} + +export const emptyUser = (pubkey: string) => { + return { + id: '', + pubkey, + tags: [], + npub: hexToNpub(pubkey), + name: '', + about: '', + picture: '', + nip05: '', + banner: '', + displayName: '', + location: '', + lud06: '', + lud16: '', + website: '', + } as PrimalUser; +}; + +export const userName = (user: PrimalUser | undefined) => { + if (!user) { + return ''; + } + const name = user.name || + user.display_name || + user.displayName || + user.npub; + + return name ? + truncateName(name) : + truncateNpub(hexToNpub(user.pubkey) || ''); +}; + +export const authorName = (user: PrimalUser | undefined) => { + if (!user) { + return ''; + } + const name = user.display_name || + user.displayName || + user.name || + user.npub; + + return name ? + truncateName(name) : + truncateNpub(hexToNpub(user.pubkey) || ''); +}; + +export const nip05Verification = (user: PrimalUser | undefined) => { + if (!user) { + return ''; + } + + if (user.nip05.startsWith('_@')) { + return user.nip05.slice(2); + } + + return user.nip05; +}; diff --git a/src/stores/trending.ts b/src/stores/trending.ts new file mode 100644 index 0000000..511c61e --- /dev/null +++ b/src/stores/trending.ts @@ -0,0 +1,65 @@ +import { createStore, SetStoreFunction } from "solid-js/store"; +import { sortByScore24h, convertToNotes } from "../stores/note"; +import { NostrNoteContent, NostrUserContent, NostrStatsContent, FeedPage, PrimalNote, NostrEventContent, Kind } from "../types/primal"; + +export type TrendingNotesData = FeedPage & { notes: PrimalNote[]}; + +export const emptyNotes: TrendingNotesData = { + messages: [], + users: {}, + notes: [], + postStats: {}, +}; + +export const [trendingNotes, setTrendingNotes] = + createStore(emptyNotes); + +const proccessNote = (post: NostrNoteContent) => { + setTrendingNotes('messages', (msgs) => [ ...msgs, post]); +}; + +const proccessUser = (user: NostrUserContent) => { + setTrendingNotes('users', (users) => ({ ...users, [user.pubkey]: user})) +}; + +const proccessStat = (stat: NostrStatsContent) => { + const content = JSON.parse(stat.content); + setTrendingNotes('postStats', (stats) => ({ ...stats, [content.event_id]: content })) +}; + +export const processTrendingNotes = (type: string, content: NostrEventContent | undefined) => { + if (type === 'EOSE') { + const newNotes = sortByScore24h(convertToNotes(trendingNotes)); + + setTrendingNotes('notes', () => [...newNotes]); + + return; + } + + if (type === 'EVENT') { + if (content && content.kind === Kind.Metadata) { + proccessUser(content); + } + if (content && content.kind === Kind.Text) { + proccessNote(content); + } + if (content && content.kind === Kind.Repost) { + proccessNote(content); + } + if (content && content.kind === Kind.NoteStats) { + proccessStat(content); + } + } +}; + +export type TrendingNotesStore = { + data: TrendingNotesData, + setTrendingNotes: SetStoreFunction, + processTrendingNotes: (type: string, content: NostrEventContent | undefined) => void, +} + +export default { + data: trendingNotes, + setTrendingNotes, + processTrendingNotes, +}; diff --git a/src/translations.ts b/src/translations.ts new file mode 100644 index 0000000..307affb --- /dev/null +++ b/src/translations.ts @@ -0,0 +1,773 @@ +import { MessageDescriptor } from "@cookbook/solid-intl"; +import { NotificationType } from "./constants"; +import { ScopeDescriptor } from "./types/primal"; + +export const account = { + follow: { + id: 'actions.follow', + defaultMessage: 'follow', + description: 'Follow button label', + }, + unfollow: { + id: 'actions.unfollow', + defaultMessage: 'unfollow', + description: 'Unfollow button label', + }, + needToLogin: { + id: 'account.needToLogin', + defaultMessage: 'You need to be signed in to perform this action', + description: 'Message to user that an action cannot be preformed without a public key', + }, +}; + +export const actions = { + cancel: { + id: 'actions.cancel', + defaultMessage: 'cancel', + description: 'Cancel action, button label', + }, + addFeedToHome: { + id: 'actions.addFeedToHome', + defaultMessage: 'add this feed to my home page', + description: 'Add feed to home, button label', + }, + addFeedToHomeNamed: { + id: 'actions.addFeedToHomeNamed', + defaultMessage: 'add {name} feed to home page', + description: 'Add named feed to home, button label', + }, + disabledAddFeedToHome: { + id: 'actions.disabledHomeFeedAdd', + defaultMessage: 'Available on your home page', + description: 'Add feed to home label, when feed is already added', + }, + removeFromHomeFeedNamed: { + id: 'actions.removeFromHomeFeedNamed', + defaultMessage: 'remove {name} feed from your home page', + description: 'Remove named feed from home, button label', + }, + noteCopyNostrLink: { + id: 'actions.noteCopyNostrLink', + defaultMessage: 'Copy Nostr link', + description: 'Label for the copy Nostr note link context menu item', + }, + noteCopyPrimalLink: { + id: 'actions.noteCopyPrimalLink', + defaultMessage: 'Copy Primal link', + description: 'Label for the copy Primal note link context menu item', + }, + notePostNew: { + id: 'actions.notePostNew', + defaultMessage: 'post', + description: 'Send new note, button label', + }, + noteReply: { + id: 'actions.noteReply', + defaultMessage: 'reply to {name}', + description: 'Reply to button label', + }, + sendDirectMessage: { + id: 'actions.sendDirectMessage', + defaultMessage: 'send', + description: 'Send direct message action, button label', + }, +}; + +export const branding = { + id: 'branding', + defaultMessage: 'Primal', + description: 'Brand name', +}; + +export const exploreSidebarCaption = { + id: 'explore.sidebar.caption', + defaultMessage: 'trending users', + description: 'Caption for the explore page sidebar showing a list of trending users', +}; + +export const explore = { + genericCaption: { + id: 'explore.genericCaption', + defaultMessage: 'explore nostr', + description: 'Generic caption for the explore page', + }, + title: { + id: 'explore.title', + defaultMessage: '{timeframe}: {scope}', + description: 'Title of the explore page', + }, + statDisplay: { + users: { + id: 'explore.stats.users', + defaultMessage:'Users', + description: 'Label for number of users stats', + }, + pubkeys: { + id: 'explore.stats.pubkeys', + defaultMessage: 'Public Keys', + description: 'Label for number of pubkeys stats', + }, + zaps: { + id: 'explore.stats.zaps', + defaultMessage: 'Zaps', + description: 'Label for number of zaps stats', + }, + btcZapped: { + id: 'explore.stats.btcZapped', + defaultMessage: 'BTC Zapped', + description: 'Label for number of zapped bitcoins stats', + }, + pubnotes: { + id: 'explore.stats.pubnotes', + defaultMessage: 'Public Notes', + description: 'Label for number of public notes stats', + }, + reposts: { + id: 'explore.stats.reposts', + defaultMessage: 'Reposts', + description: 'Label for number of repost stats', + }, + reactions: { + id: 'explore.stats.reactions', + defaultMessage: 'Reactions', + description: 'Label for number of reactions stats', + }, + any: { + id: 'explore.stats.any', + defaultMessage: 'All Events', + description: 'Label for number of all stats', + }, + } +}; + +export const feedNewPosts = { + id: 'feed.newPosts', + defaultMessage: `{number, plural, + =0 {} + one {# new post} + =100 {99+ new posts} + other {# new posts}}`, + description: 'Label for a button to load new posts', +}; + +export const feedback = { + dropzone: { + id: 'feedback.dropzone', + defaultMessage: 'drop file to upload', + description: 'Label accompanying the draging file' + }, + uploading: { + id: 'feedback.uploading', + defaultMessage: 'uploading...', + description: 'Label accompanying the uploading spinner' + }, +}; + +export const messages = { + title: { + id: 'messages.title', + defaultMessage: 'Messages', + description: 'Title of messages page', + }, + follows: { + id: 'messages.follows', + defaultMessage: 'follows', + description: 'DM relation selection label for follows', + }, + other: { + id: 'messages.other', + defaultMessage: 'other', + description: 'DM relation selection label for other', + }, + markAsRead: { + id: 'messages.markAsRead', + defaultMessage: 'Mark All Read', + description: 'DM mark as read label', + }, +}; + +export const navBar = { + home: { + id: 'navbar.home', + defaultMessage: 'Home', + description: 'Label for the nav bar item link to Home page', + }, + explore: { + id: 'navbar.explore', + defaultMessage: 'Explore', + description: 'Label for the nav bar item link to Explore page', + }, + messages: { + id: 'navbar.messages', + defaultMessage: 'Messages', + description: 'Label for the nav bar item link to Messages page', + }, + notifications: { + id: 'navbar.notifications', + defaultMessage: 'Notifications', + description: 'Label for the nav bar item link to Notifications page', + }, + downloads: { + id: 'navbar.downloads', + defaultMessage: 'Downloads', + description: 'Label for the nav bar item link to Downloads page', + }, + settings: { + id: 'navbar.settings', + defaultMessage: 'Settings', + description: 'Label for the nav bar item link to Settings page', + }, + help: { + id: 'navbar.help', + defaultMessage: 'Help', + description: 'Label for the nav bar item link to Help page', + }, +}; + +export const note = { + newPreview: { + id: 'note.newPreview', + defaultMessage: 'Note preview', + description: 'Caption for preview when creating a new note' + }, + mentionIndication: { + id: 'note.mentionIndication', + defaultMessage: '\[post by {name}\]', + description: 'Label indicating that a note has been metioned in the small note display' + }, + reposted: { + id: 'note.reposted', + defaultMessage: 'Reposted', + description: 'Label indicating that the note is a repost', + }, +}; + +export const notificationTypeTranslations: Record = { + [NotificationType.NEW_USER_FOLLOWED_YOU]: 'followed you', + [NotificationType.USER_UNFOLLOWED_YOU]: 'unfollowed you', + + [NotificationType.YOUR_POST_WAS_ZAPPED]: 'zapped your post', + [NotificationType.YOUR_POST_WAS_LIKED]: 'liked your post', + [NotificationType.YOUR_POST_WAS_REPOSTED]: 'reposted your post', + [NotificationType.YOUR_POST_WAS_REPLIED_TO]: 'replied to your post', + + [NotificationType.YOU_WERE_MENTIONED_IN_POST]: 'mentioned you in a post', + [NotificationType.YOUR_POST_WAS_MENTIONED_IN_POST]: 'mentioned your post', + + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_ZAPPED]: 'zapped a post you were mentioned in', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_LIKED]: 'liked a post you were mentioned in', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPOSTED]: 'reposted a post you were mentioned in', + [NotificationType.POST_YOU_WERE_MENTIONED_IN_WAS_REPLIED_TO]: 'replied to a post you were mentioned in', + + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_ZAPPED]: 'zapped a post your post was mentioned in', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_LIKED]: 'liked a post your post was mentioned in', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPOSTED]: 'reposted a post your post was mentioned in', + [NotificationType.POST_YOUR_POST_WAS_MENTIONED_IN_WAS_REPLIED_TO]: 'replied to a post your post was mentioned in', +} + +export const notificationsNew: Record = Object.values(NotificationType).reduce((acc, type) => ({ + ...acc, + [type]: { + id: `notifications.new.${type}`, + defaultMessage: `{number, plural, + =0 {} + one {and # other} + other {and # others}} + ${notificationTypeTranslations[type]}`, + description: `New Notifiaction label for notifications of type ${type}`, + }, +}), {}); + +export const notificationsOld: Record = Object.values(NotificationType).reduce((acc, type) => ({ + ...acc, + [type]: { + id: `notifications.old.${type}`, + defaultMessage: `${notificationTypeTranslations[type]}`, + description: `Old Notifiaction label for notifications of type ${type}`, + }, +}), {}); + +export const notificationsSidebar = { + activities: { + id: 'notifications.sidebar.activities', + defaultMessage: 'Reactions', + description: 'Sidebar activities stats caption on the notification page', + }, + heading: { + id: 'notificationsSidebar.heading', + defaultMessage: 'Summary', + description: 'Sidebar caption on the notification page', + }, + empty: { + id: 'notificationsSidebar.empty', + defaultMessage: 'No new notifications', + description: 'Sidebar caption indicating no new notifications', + }, + followers: { + id: 'notificationsSidebar.followers', + defaultMessage: 'Followers', + description: 'Sidebar follower stats caption on the notification page', + }, + gainedFollowers: { + id: 'notificationsSidebar.gainedFollowers', + defaultMessage: `new {number, plural, + =0 {} + one {follower} + other {followers}}`, + description: 'Sidebar new follower stats description on the notification page', + }, + lostFollowers: { + id: 'notificationsSidebar.lostFollowers', + defaultMessage: `lost {number, plural, + =0 {} + one {follower} + other {followers}}`, + description: 'Sidebar lost follwers stats description on the notification page', + }, + likes: { + id: 'notifications.sidebar.likes', + defaultMessage: `{number, plural, + =0 {} + one {like} + other {likes}}`, + description: 'Sidebar likes stats caption on the notification page', + }, + mentions: { + id: 'notifications.sidebar.mentions', + defaultMessage: 'Mentions', + description: 'Sidebar mentions stats caption on the notification page', + }, + mentionsYou: { + id: 'notifications.sidebar.mentionsYou', + defaultMessage: `{number, plural, + =0 {} + one {mention} + other {mentions}} of you`, + description: 'Sidebar mentions you stats description on the notification page', + }, + mentionsYourPost: { + id: 'notifications.sidebar.mentionsYourPost', + defaultMessage: `{number, plural, + =0 {} + one {mention of your post} + other {mentions of your posts}}`, + description: 'Sidebar mentions your post stats description on the notification page', + }, + replies: { + id: 'notifications.sidebar.replies', + defaultMessage: `{number, plural, + =0 {} + one {reply} + other {replies}}`, + description: 'Sidebar replies stats caption on the notification page', + }, + reposts: { + id: 'notifications.sidebar.reposts', + defaultMessage: `{number, plural, + =0 {} + one {repost} + other {reposts}}`, + description: 'Sidebar reposts stats caption on the notification page', + }, + other: { + id: 'notifications.sidebar.other', + defaultMessage: 'Other', + description: 'Sidebar other stats caption on the notification page', + }, + zaps: { + id: 'notificationsSidebar.zaps', + defaultMessage: 'Zaps', + description: 'Sidebar zaps stats caption on the notification page', + }, + zapNumber: { + id: 'notificationsSidebar.zapNumber', + defaultMessage: `{number, plural, + =0 {} + one {zap} + other {zaps}}`, + description: 'Sidebar zaps stats description on the notification page', + }, + statsNumber: { + id: 'notificationsSidebar.statsNumber', + defaultMessage: `{number, plural, + =0 {} + one {sat} + other {sats}}`, + description: 'Sidebar sats stats description on the notification page', + }, +}; + +export const notifications = { + title: { + id: 'pages.notifications.title', + defaultMessage: 'Notifications', + description: 'Title of the notifications page', + }, + newNotifs: { + id: 'notification.newNotifs', + defaultMessage: `{number, plural, + =0 {} + one {# new notification} + =100 {99+ new notifications} + other {# new notifications}}`, + description: 'Label for a button to load new notifications', + }, +}; + +export const placeholders = { + comingSoon: { + id: 'placeholders.comingSoon', + defaultMessage: 'Coming soon', + description: 'Placholder text for missing content', + }, + endOfFeed: { + id: 'placeholders.endOfFeed', + defaultMessage: 'Your reached the end. You are a quick reader', + description: 'Message displayed when user reaches the end of the feed', + }, + guestUserGreeting: { + id: 'placeholders.guestUserGreeting', + defaultMessage: 'Welcome to nostr!', + description: 'Header placeholder for guest user', + }, + noteCallToAction: { + id: 'placeholders.callToAction.note', + defaultMessage: 'say something on nostr...', + description: 'Placeholder for new note call-to-action', + }, + pageWIPTitle: { + id: 'pages.wip.title', + defaultMessage: '{title}', + description: 'Title of page under construction', + }, + welcomeMessage: { + id: 'placeholders.welcomeMessage', + defaultMessage: 'Welcome to nostr!', + description: 'Default welcome message', + }, + findUser: { + id: 'placeholders.findUser', + defaultMessage: 'find user', + description: 'Find user input placeholder', + }, + findUsers: { + id: 'placeholders.findUsers', + defaultMessage: 'find users', + description: 'Find users input placeholder', + }, + search: { + id: 'placeholders.search', + defaultMessage: 'search', + description: 'Search input placeholder', + }, + selectFeed: { + id: 'placeholders.selectFeed', + defaultMessage: 'Select feed', + description: 'Placeholder for feed selection', + }, + pageNotFound: { + id: 'placeholders.pageNotFound', + defaultMessage: 'Page not found', + description: 'Placholder text for missing page', + }, +}; + +export const profile = { + sidebarCaption: { + id: 'profile.sidebar.caption', + defaultMessage: 'Popular posts', + description: 'Caption for the profile page sidebar showing a list of trending notes by the profile', + }, + sidebarNoNotes: { + id: 'profile.sidebar.noNotes', + defaultMessage: 'No trending posts', + description: 'Placeholde for profile sidebar when the profile is missing trending notes', + }, + title: { + id: 'profile.title', + defaultMessage: '{name} - Nostr Profile', + description: 'Page title for Profile page' + }, + followsYou: { + id: 'profile.followsYou', + defaultMessage: 'Follows you', + description: 'Label indicating that a profile is following your profile', + }, + jointDate: { + id: 'profile.joinDate', + defaultMessage: 'Joined Nostr on {date}', + description: 'Label indicating when the profile joined Nostr (oldest event)', + }, + stats: { + follow: { + id: 'profile.followStats', + defaultMessage: 'Following', + description: 'Label for following profile stat', + }, + followers: { + id: 'profile.stats.followers', + defaultMessage: 'Followers', + description: 'Label for followers profile stat', + }, + notes: { + id: 'profile.stats.notes', + defaultMessage: 'Posts', + description: 'Label for notes profile stat', + }, + }, +}; + +export const search = { + followers: { + id: 'search.followers', + defaultMessage: 'followers', + description: 'Followers label for user search results', + }, + invalid: { + id: 'search.invalid', + defaultMessage: 'Please enter search term.', + description: 'Alert letting the user know that the search term is empty', + }, + emptyQueryResult: { + id: 'search.emptyQueryResult', + defaultMessage: 'type to', + description: 'Label shown is search resuls when no term is provided', + }, + searchNostr: { + id: 'search.searchNostr', + defaultMessage: 'search nostr', + description: 'Label explaining full search action', + }, + sidebarCaption: { + id: 'search.sidebarCaption', + defaultMessage: 'Users found', + description: 'Caption for the search page sidebar showing a list of users', + }, + feedLabel: { + id: 'search.feedLabel', + defaultMessage: 'Search: {query}', + description: 'Label for a search results feed', + }, + title: { + id: 'search.title', + defaultMessage: 'search for "{query}"', + description: 'Title of the Search page', + }, + noResults: { + id: 'search.noResults', + defaultMessage: 'No results found', + description: 'Message shown when no search results were found' + }, +}; + +export const settings = { + title: { + id: 'settings.title', + defaultMessage: 'Settings', + description: 'Title of the settings page', + }, + theme: { + id: 'settings.sections.theme', + defaultMessage: 'Theme', + description: 'Title of the theme section on the settings page', + }, + feeds: { + id: 'settings.sections.feeds', + defaultMessage: 'Home page feeds', + description: 'Title of the feeds section on the settings page', + }, + zaps: { + id: 'settings.sections.zaps', + defaultMessage: 'Zaps', + description: 'Title of the zaps section on the settings page', + }, + notifications: { + title: { + id: 'pages.settings.sections.notifications', + defaultMessage: 'Notifications', + description: 'Title of the notifications section on the settings page', + }, + core: { + id: 'settings.sections.notifications.core', + defaultMessage: 'Core notifications:', + description: 'Title of the notification settings sub-section for core notifications', + }, + yourMentions: { + id: 'settings.sections.notifications.yourMentions', + defaultMessage: 'A post you were mentioned in was:', + description: 'Title of the notification settings sub-section for posts you were mentioned in', + }, + yourPostMentions: { + id: 'settings.sections.notifications.yourPostMentions', + defaultMessage: 'A post your post was mentioned in was:', + description: 'Title of the notification settings sub-section for posts your post was mentioned in', + }, + } +}; + +export const scopeDescriptors: Record = { + follows: { + caption: { + id: 'explore.scopes.follows.caption', + defaultMessage: 'Follows', + description: 'Caption for the follows scope', + }, + label: { + id: 'explore.scopes.follows.label', + defaultMessage: 'my follows', + description: 'Label for the follows scope', + }, + description: { + id: 'explore.scopes.follows.description', + defaultMessage: 'accounts you follow', + description: 'Description of the follows scope description', + }, + }, + tribe: { + caption: { + id: 'explore.scopes.tribe.caption', + defaultMessage: 'Tribe', + description: 'Caption for the tribe scope', + }, + label: { + id: 'explore.scopes.tribe.label', + defaultMessage: 'my tribe', + description: 'Label for the tribe scope', + }, + description: { + id: 'explore.scopes.tribe.description', + defaultMessage: 'accounts you follow + your followers', + description: 'Description of the tribe scope description', + }, + }, + network: { + caption: { + id: 'explore.scopes.network.caption', + defaultMessage: 'Network', + description: 'Caption for the network scope', + }, + label: { + id: 'explore.scopes.network.label', + defaultMessage: 'my network', + description: 'Label for the network scope', + }, + description: { + id: 'explore.scopes.network.description', + defaultMessage: 'accounts you follow + everyone they follow', + description: 'Description of the network scope description', + }, + }, + global: { + caption: { + id: 'explore.scopes.global.caption', + defaultMessage: 'Global', + description: 'Caption for the global scope', + }, + label: { + id: 'explore.scopes.global.label', + defaultMessage: 'global', + description: 'Label for the global scope', + }, + description: { + id: 'explore.scopes.global.description', + defaultMessage: 'all accounts on nostr', + description: 'Description of the global scope description', + }, + }, +}; + +export const timeframeDescriptors: Record = { + latest: { + id: 'explore.timeframes.latest.caption', + defaultMessage: 'latest', + description: 'Caption for the latest timeframe', + }, + trending: { + id: 'explore.timeframes.trending.caption', + defaultMessage: 'trending', + description: 'Caption for the trending timeframe', + }, + popular: { + id: 'explore.timeframes.popular.caption', + defaultMessage: 'popular', + description: 'Caption for the popular timeframe', + }, + mostzapped: { + id: 'explore.timeframes.mostzapped.caption', + defaultMessage: 'zapped', + description: 'Caption for the mostzapped timeframe', + }, +}; + +export const toastZapFail = { + id: 'toast.zapFail', + defaultMessage: 'We were unable to send this Zap', + description: 'Toast message indicating failed zap', +}; + +export const thread = { + sidebar: { + id: 'thread.sidebar.title', + defaultMessage: 'People in this thread', + description: 'Title of the Thread page sidebar', + }, +}; + +export const toast = { + addFeedToHomeSuccess: { + id: 'toasts.addFeedToHome.success', + defaultMessage: '"{name}" has been added to your home page', + description: 'Toast message confirming successfull adding of the feed to home to the list of available feeds', + }, + fileTypeUpsupported: { + id: 'toast.unsupportedFileType', + defaultMessage: 'You can only upload images and videos. This file type is not supported.', + description: 'Feedback when user tries to upload an unsupported file type', + }, + noRelays: { + id: 'toast.noRelays', + defaultMessage: 'You need to declare at least one relay to perform this action', + description: 'Toast message indicating user has no relays configured', + }, + noRelaysConnected: { + id: 'toast.noRelaysConnected', + defaultMessage: '"We are trying to connect to your relays. Please try again in a few moments.', + description: 'Toast message indicating user is not connected to aany relay', + }, + noteNostrLinkCoppied: { + id: 'noteNostrLinkCoppied', + defaultMessage: 'Note\'s nostr link copied', + description: 'Confirmation message that the note\'s link has been copied', + }, + notePrimalLinkCoppied: { + id: 'notePrimalLinkCoppied', + defaultMessage: 'Note\'s Primal link copied', + description: 'Confirmation message that the note\'s link has been copied', + }, + repostSuccess: { + id: 'toast.repostSuccess', + defaultMessage: 'Reposted successfully', + description: 'Toast message indicating successfull repost', + }, + repostFailed: { + id: 'toast.repostFailed', + defaultMessage: 'Failed to repost', + description: 'Toast message indicating failed repost', + }, + zapAsGuest: { + id: 'toast.zapAsGuest', + defaultMessage: 'You must be logged-in to perform a zap', + description: 'Toast message indicating user must be logged-in to perform a zap', + }, + zapUnavailable: { + id: 'toast.zapUnavailable', + defaultMessage: 'Author of this post cannot be zapped', + description: 'Toast message indicating user cannot receieve a zap', + }, +}; + +export const zapCustomOption = { + id: 'zap.custom.option', + defaultMessage: `Zap {user} `, + description: 'Caption for custom zap amount modal', +}; diff --git a/src/types/primal.d.ts b/src/types/primal.d.ts new file mode 100644 index 0000000..ef30b17 --- /dev/null +++ b/src/types/primal.d.ts @@ -0,0 +1,516 @@ +import { MessageDescriptor } from "@cookbook/solid-intl"; +import { Relay } from "nostr-tools"; +import { JSX } from "solid-js"; +import { SetStoreFunction } from "solid-js/store"; +import { Kind } from "../constants"; + + +export type NostrNoteContent = { + kind: Kind.Text | Kind.Repost, + content: string, + id: string, + created_at?: number, + pubkey: string, + sig: string, + tags: string[][], +}; + +export type NostrUserContent = { + kind: Kind.Metadata, + content: string, + id: string, + created_at?: number, + pubkey: string, + sig: string, + tags: string[][], +}; + +export type NostrStatsContent = { + kind: Kind.NoteStats, + content: string, + pubkey?: string, + created_at?: number, +}; + +export type NostrNetStatsContent = { + kind: Kind.NetStats, + content: string, + pubkey?: string, + created_at?: number, +}; + +export type NostrLegendStatsContent = { + kind: Kind.LegendStats, + content: string, + pubkey?: string, + created_at?: number, +}; + +export type NostrUserStatsContent = { + kind: Kind.UserStats, + content: string, + pubkey: string, + created_at: number, +}; + +export type NostrMentionContent = { + kind: Kind.Mentions, + content: string, + pubkey?: string, + created_at?: number, +}; + +export type NostrOldestEventContent = { + kind: Kind.OldestEvent, + content: string, + pubkey?: string, + created_at?: number, +}; + +export type NostrContactsContent = { + kind: Kind.Contacts, + content: string, + pubkey?: string, + created_at?: number, + tags: string[][], +}; + +export type NostrScoredUsersContent = { + kind: Kind.UserScore, + content: string, + created_at?: number, + pubkey?: string, +}; + +export type NostrNotificationContent = { + kind: Kind.Notification, + content: string, + created_at?: number, + pubkey?: string, +}; + +export type NostrNotificationLastSeenContent = { + kind: Kind.Timestamp, + content: string, + created_at?: number, + pubkey?: string, +}; + +export type NostrNotificationStatsContent = { + kind: Kind.NotificationStats, + content: string, + created_at?: number, + pubkey?: string, +}; + +export type NostrNoteActionsContent = { + kind: Kind.NoteActions, + content: string, + created_at?: number, + pubkey?: string, +}; + +export type NostrMessageStatsContent = { + kind: Kind.MessageStats, + cnt: string, + content?: string, + created_at?: number, + pubkey?: string, +}; + +export type NostrMessagePerSenderStatsContent = { + kind: Kind.MesagePerSenderStats, + content: string, + created_at?: number, + pubkey?: string, +}; + +export type NostrMessageEncryptedContent = { + kind: Kind.EncryptedDirectMessage, + content: string, + created_at: number, + pubkey: string, + id: string, +}; + +export type NostrFeedRange = { + kind: Kind.FeedRange, + content: string, +}; + +export type NostrMediaInfo = { + kind: Kind.MediaInfo, + content: string, +}; + +export type NostrMediaUploaded = { + kind: Kind.Uploaded, + content: string, +}; + +export type NostrEventContent = + NostrNoteContent | + NostrUserContent | + NostrStatsContent | + NostrNetStatsContent | + NostrLegendStatsContent | + NostrUserStatsContent | + NostrMentionContent | + NostrOldestEventContent | + NostrContactsContent | + NostrScoredUsersContent | + NostrNotificationContent | + NostrNotificationLastSeenContent | + NostrNotificationStatsContent | + NostrNoteActionsContent | + NostrMessageStatsContent | + NostrMessagePerSenderStatsContent | + NostrMessageEncryptedContent | + NostrFeedRange | + NostrMediaInfo | + NostrMediaUploaded; + +export type NostrEvent = [ + type: "EVENT", + subkey: string, + content: NostrEventContent, +]; + +export type NostrEOSE = [ + type: "EOSE", + subkey: string, +]; + +export type NoteActions = { + event_id: string, + liked: boolean, + replied: boolean, + reposted: boolean, + zapped: boolean, +}; + +export type FeedStore = { + posts: PrimalNote[], + isFetching: boolean, + scrollTop: number, + activeUser: PrimalUser | undefined, + publicKey: string | undefined, + selectedFeed: PrimalFeed | undefined, + availableFeeds: PrimalFeed[], + showNewNoteForm: boolean, + theme: string, + trendingNotes: TrendingNotesStore, + zappedNotes: TrendingNotesStore, + exploredNotes: PrimalNote[] | [], + threadedNotes: PrimalNote[] | [], +}; + +export type NostrPostStats = { + [eventId: string]: { + likes: number, + mentions: number, + reposts: number, + replies: number, + zaps: number, + satszapped: number, + score: number, + score24h: number, + }, +}; + +export type FeedPage = { + users: { + [pubkey: string]: NostrUserContent, + }, + messages: NostrNoteContent[], + postStats: NostrPostStats, + mentions?: Record, + noteActions: Record, +}; + +export type TrendingNotesStore = { + users: { + [pubkey: string]: NostrUserContent, + }, + messages: NostrNoteContent[], + notes: PrimalNote[], + postStats: NostrPostStats, +}; + +export type PrimalContextStore = { + + data: FeedStore, + page: FeedPage, + relays: Relay[], + // likes: string[], + actions?: { + clearThreadedNotes: () => void, + setThreadedNotes: (newNotes: PrimalNote[]) => void, + setData: SetStoreFunction, + clearExploredNotes: () => void, + setExploredNotes: (newNotes: PrimalNote[]) => void, + clearTrendingNotes: () => void, + clearZappedNotes: () => void, + setTheme: (newTheme: string) => void, + showNewNoteForm: () => void, + hideNewNoteForm: () => void, + fetchHomeFeed: () => void, + selectFeed: (profile: PrimalFeed | undefined) => void, + clearData: () => void, + loadNextPage: () => void, + savePosts: (posts: PrimalNote[]) => void, + clearPage: () => void, + setActiveUser: (user: PrimalUser) => void, + updatedFeedScroll: (scrollTop: number) => void, + proccessEventContent: ( + content: NostrUserContent | NostrNoteContent | NostrStatsContent, + type: string + ) => void, + }, +}; + +export type NostrRelay = { read: boolean, write: boolean }; + +export type NostrRelays = Record; + +export type NostrRelayEvent = { + kind: number, + content: string, + created_at: number, + tags: string[][], +}; +export type NostrRelaySignedEvent = NostrRelayEvent & { + id: string, + pubkey: string, + sig: string, +}; + +interface SendPaymentResponse { + preimage: string; +} + +export type NostrWindow = Window & typeof globalThis & { + nostr?: { + getPublicKey: () => Promise, + getRelays: () => Promise, + signEvent: (event: NostrRelayEvent) => Promise, + nip04: { + encrypt: (pubkey: string, message: string) => Promise, + decrypt: (pubkey: string, message: string) => Promise, + }, + }, + webln?: { + enable: () => Promise, + sendPayment: (req: string) => Promise; + }, +}; + +export type PrimalWindow = Window & typeof globalThis & { + loadPrimalStores: () => void, + primal?: any, +}; + +export type NostrEventType = "EVENT" | "EOSE" | "NOTICE"; + +export type NostrMessage = [ + type: NostrEventType, + subkey: string, + info: { + kind: number, + content: string, + }, +]; + +export type PrimalUser = { + id: string, + pubkey: string, + npub: string, + name: string, + about: string, + picture: string, + nip05: string, + banner: string, + display_name?: string, + displayName: string, + location: string, + lud06: string, + lud16: string, + website: string, + tags: string[][], +}; + +export type PrimalNoteData = { + id: string, + pubkey: string, + created_at: number, + tags: string[][], + content: string, + sig: string, + likes: number, + mentions: number, + reposts: number, + replies: number, + zaps: number, + score: number, + score24h: number, + satszapped: number, + noteId: string, + noteActions: NoteActions, +} + +export type PrimalNote = { + user: PrimalUser, + post: PrimalNoteData, + repost?: PrimalRepost, + msg: NostrNoteContent, + mentionedNotes?: Record, + mentionedUsers?: Record, +}; + +export type PrimalFeed = { + name: string, + npub?: string, + hex?: string, +}; + +export type PrimalScopeFeed = { + name: string, + scope?: string, + timeframe?: string, +}; + +// export type PrimalFeed = PrimalUserFeed & PrimalScopeFeed; + +export type PrimalNetStats = { + users: number, + pubkeys: number, + pubnotes: number, + reactions: number, + reposts: number, + any: number, + zaps: number, + satszapped: number, +}; + +export type PrimalResponse = { + op: string, + netstats?: PrimalNetStats; +}; + +export type PrimalLegend = { + your_follows: number, + your_inner_network: number, + your_outer_network: number, +}; + +export type FeedOption = { + label: string, + value: string | undefined, +}; + +export type PrimalRepost = { + user: PrimalUser, + note: PrimalNoteData, +} + +export type RepostInfo = (page: FeedPage, message: NostrNoteContent) => PrimalRepost; + +export type ExploreFeedPayload = { + timeframe: string, + scope: string, + limit: number, + user_pubkey?: string, + since? : number, + until?: number, + created_after?: number, +} + +export type UserReference = { + id: string, + pubkey: string, + kind: number, + tags: string[][], + npub?: string, + name?: string, + about?: string, + picture?: string, + nip05?: string, + banner?: string, + display_name?: string, + displayName?: string, + location?: string, + lud06?: string, + lud16?: string, + website?: string, + content?: string, + created_at?: number, + sig?: string, +}; + +export type ContextChildren = + number | + boolean | + Node | + JSX.ArrayElement | + JSX.FunctionElement | + (string & {}) | null | undefined; + + +export type PrimalTheme = { name: string, label: string, logo: string, dark?: boolean}; + +export type ChildrenProp = { children: number | boolean | Node | JSX.ArrayElement | JSX.FunctionElement | (string & {}) | null | undefined; }; + +export type VanityProfiles = { names: Record }; + +export type PrimalNotifUser = PrimalUser & { followers_count: number }; + +export type PrimalNotification = { + pubkey: string, + created_at: number, + type: number, + your_post?: string, + follower?: string, + you_were_mentioned_in?: string, + your_post_were_mentioned_in?: string, + post_you_were_mentioned_in?: string, + post_your_post_was_mentioned_in?: string, + who_liked_it?: string, + who_zapped_it?: string, + who_reposted_it?: string, + who_replied_to_it?: string, + satszapped?: number, +}; + +export type SortedNotifications = Record; + +export type UserRelation = 'follows' | 'other' | 'any'; + +export type EmojiOption = { + keywords: string[], + char: string, + fitzpatrick_scale: boolean, + category: string, + name: string, +}; + +export type MediaSize = 'o' | 's' | 'm' | 'l'; + +export type MediaVariant = { + s: MediaSize, + a: 0 | 1, + w: number, + h: number, + mt: string, + media_url: string, +} + +export type MediaEvent = { + event_id: string, + resources: { url: string, variants: MediaVariant[] }[], +} + +export type ScopeDescriptor = { + caption: MessageDescriptor, + label: MessageDescriptor, + description: MessageDescriptor, +} diff --git a/src/uploadSocket.tsx b/src/uploadSocket.tsx new file mode 100644 index 0000000..bb16f54 --- /dev/null +++ b/src/uploadSocket.tsx @@ -0,0 +1,102 @@ +import { createSignal } from "solid-js"; +import { NostrEvent, NostrEOSE, NostrEventType, NostrEventContent } from "./types/primal"; + +export const [socket, setSocket] = createSignal(); + +export const [isConnected, setConnected] = createSignal(false); + +export const isNotConnected = () => !isConnected(); + +const onOpen = () => { + setConnected(true); +} + +const onClose = () => { + setConnected(false); + + socket()?.removeEventListener('open', onOpen); + socket()?.removeEventListener('close', onClose); + socket()?.removeEventListener('error', onError); + + setTimeout(() => { + connect(); + }, 200); +} + +const onError = (error: Event) => { + console.log("ws error: ", error); +}; + +export const connect = () => { + if (isNotConnected()) { + const cacheServer = localStorage.getItem('uploadServer') ?? + 'wss://uploads.primal.net/v1'; + + setSocket(new WebSocket(cacheServer)); + console.log('UPLOAD SOCKET: ', socket()); + + socket()?.addEventListener('open', onOpen); + socket()?.addEventListener('close', onClose); + socket()?.addEventListener('error', onError); + } +}; + +export const disconnect = () => { + socket()?.close(); +}; + +export const reset = () => { + disconnect(); + setTimeout(connect, 1000); +}; + +export const sendMessage = (message: string) => { + isConnected() && socket()?.send(message); +} + +export const refreshSocketListeners = ( + ws: WebSocket | undefined, + listeners: Record any>, + ) => { + + if (!ws) { + return; + } + + Object.keys(listeners).forEach((event: string) => { + ws.removeEventListener(event, listeners[event]); + ws.addEventListener(event, listeners[event]); + }); +}; + +export const removeSocketListeners = ( + ws: WebSocket | undefined, + listeners: Record any>, + ) => { + + if (!ws) { + return; + } + + Object.keys(listeners).forEach((event: string) => { + ws.removeEventListener(event, listeners[event]); + }); +}; + +export const subscribeTo = (subId: string, cb: (type: NostrEventType, subId: string, content?: NostrEventContent) => void ) => { + const listener = (event: MessageEvent) => { + const message: NostrEvent | NostrEOSE = JSON.parse(event.data); + const [type, subscriptionId, content] = message; + + if (subId === subscriptionId) { + cb(type, subscriptionId, content); + } + + }; + + socket()?.addEventListener('message', listener); + + return () => { + socket()?.removeEventListener('message', listener); + }; +}; diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 0000000..803366b --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,23 @@ +let debounceTimer: number = 0; + +export const debounce = (callback: TimerHandler, time: number) => { + if (debounceTimer) { + window.clearTimeout(debounceTimer); + } + + debounceTimer = window.setTimeout(callback, time); +} + +export const isVisibleInContainer = (element: Element, container: Element) => { + const { bottom, height, top } = element.getBoundingClientRect(); + const containerRect = container.getBoundingClientRect(); + + return top <= containerRect.top ? containerRect.top - top <= height : bottom - containerRect.bottom <= height; +}; + +export const uuidv4 = () => { + // @ts-ignore + return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => + (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) + ); +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..30ac248 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + "types": ["vite/client"], + "noEmit": true, + "isolatedModules": true, + "resolveJsonModule": true + } +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..476f5ba --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite'; +import solidPlugin from 'vite-plugin-solid'; + +export default defineConfig({ + plugins: [solidPlugin()], + server: { + port: 3000, + }, + build: { + target: 'esnext', + sourcemap: true, + }, +});