├── .dependencies.txt ├── .do ├── app.yaml └── deploy.template.yaml ├── .docker ├── demo-dockerfile ├── demo.json └── prod-dockerfile ├── .dockerignore ├── .editorconfig ├── .github ├── dependabot.yml └── workflows │ ├── codeql-analysis.yml │ └── go.yml ├── .gitignore ├── FEDERATION.md ├── LICENSE ├── MANIFESTO.md ├── README.md ├── _embed ├── setup │ ├── _footer.html │ ├── _header.html │ ├── _navigation.html │ ├── domains.html │ ├── index.html │ ├── oauth.html │ ├── server.html │ ├── users-local.html │ └── users.html └── templates │ ├── admin-common │ ├── menubar.html │ └── template.hjson │ ├── admin-connections │ ├── index.html │ └── template.hjson │ ├── admin-domain │ ├── index.html │ ├── template.hjson │ └── themes.html │ ├── admin-followers │ ├── edit.html │ ├── index.html │ └── template.hjson │ ├── admin-following │ ├── index.html │ └── template.hjson │ ├── admin-groups │ ├── edit.html │ ├── index.html │ ├── list.html │ └── template.hjson │ ├── admin-navigation │ ├── index.html │ └── template.hjson │ ├── admin-rules │ ├── index.html │ ├── list.html │ └── template.hjson │ ├── admin-search │ ├── index.html │ └── template.hjson │ ├── admin-searchTags │ ├── edit.html │ ├── index.html │ ├── list.html │ ├── status-widget.html │ ├── template.hjson │ └── view.html │ ├── admin-sso │ ├── index.html │ ├── template.hjson │ └── themes.html │ ├── admin-startup │ ├── page.html │ ├── template.hjson │ ├── theme.html │ └── welcome.html │ ├── admin-syndication │ ├── index.html │ └── template.hjson │ ├── admin-users │ ├── edit.html │ ├── index.html │ ├── list.html │ ├── template.hjson │ └── view.html │ ├── admin-webhooks │ ├── edit.html │ ├── index.html │ └── template.hjson │ ├── base-intent │ ├── follow-email-sent.html │ ├── follow-email.html │ ├── intent.html │ └── template.hjson │ ├── base-social │ ├── like-button.html │ ├── tags.html │ └── template.hjson │ ├── base-widget-editor │ ├── hyperscript │ │ └── widgetEditor._hs │ ├── stylesheet │ │ └── editor.css │ ├── template.hjson │ ├── widget.html │ └── widgets-list.html │ ├── email-follower-activity │ ├── body.html │ └── email.hjson │ ├── email-follower-confirmation │ ├── body.html │ └── email.hjson │ ├── email-user-password-reset │ ├── body.html │ └── email.hjson │ ├── email-user-welcome │ ├── body.html │ └── email.hjson │ ├── registration-simple │ ├── confirm.html │ ├── registration.hjson │ ├── secret.html │ └── view.html │ ├── registration-stripe │ ├── registration.hjson │ └── view.html │ ├── registration-webhook │ ├── confirm.html │ └── registration.hjson │ ├── stream-article-base │ ├── children-sort.html │ ├── children.html │ ├── edit.html │ ├── editor.html │ ├── heading.html │ ├── stylesheet │ │ ├── tables.css │ │ └── viewer.css │ ├── template.hjson │ ├── view.html │ └── widgets.html │ ├── stream-article-editorjs │ ├── editor.html │ └── template.hjson │ ├── stream-article-html │ ├── editor.html │ └── template.hjson │ ├── stream-article-markdown │ ├── editor.html │ └── template.hjson │ ├── stream-collection │ ├── content.html │ ├── edit.html │ ├── heading.html │ ├── stylesheet │ │ ├── sidebar.css │ │ └── widgets.css │ ├── template.hjson │ ├── view.html │ └── widgets.html │ ├── stream-folder │ ├── template.hjson │ └── view.html │ ├── stream-outbox-message │ ├── create.html │ ├── edit.html │ ├── replies.html │ ├── responses-announces.html │ ├── responses-likes.html │ ├── responses-replies.html │ ├── template.hjson │ └── view.html │ ├── stream-outbox-reply │ ├── create.html │ └── template.hjson │ ├── stream-photo-album │ ├── children.html │ ├── edit.html │ ├── template.hjson │ └── view.html │ ├── stream-photograph │ ├── template.hjson │ └── view.html │ ├── stream-redirect │ ├── template.hjson │ └── view.html │ ├── theme-codex │ ├── content │ │ ├── about.md │ │ ├── dolor.md │ │ ├── home.json │ │ ├── ipsum.md │ │ ├── join-the-team.md │ │ ├── lorem.md │ │ └── set.md │ ├── includes-foot.html │ ├── includes-head.html │ ├── page.html │ ├── resources │ │ └── startup │ │ │ ├── about.jpg │ │ │ ├── icon.jpg │ │ │ ├── icon.png │ │ │ ├── splash.html │ │ │ └── splash.png │ ├── stylesheet │ │ ├── layout.css │ │ ├── page.css │ │ └── responsive.css │ └── theme.hjson │ ├── theme-default │ ├── content │ │ ├── about.md │ │ ├── home.json │ │ └── join-the-team.md │ ├── includes-foot.html │ ├── includes-head.html │ ├── page.html │ ├── resources │ │ └── startup │ │ │ ├── about.jpg │ │ │ ├── ben.png │ │ │ ├── icon.jpg │ │ │ ├── icon.png │ │ │ ├── splash.html │ │ │ └── splash.png │ ├── stylesheet │ │ ├── layout.css │ │ ├── menu-bar.css │ │ └── page.css │ └── theme.hjson │ ├── theme-global │ ├── embed │ │ └── embed.js │ ├── hyperscript │ │ ├── autosave._hs │ │ ├── autosize._hs │ │ ├── blockselect._hs │ │ ├── colorpicker._hs │ │ ├── date._hs │ │ ├── hotkey._hs │ │ ├── menu._hs │ │ ├── modal._hs │ │ ├── multiselect._hs │ │ ├── popup._hs │ │ ├── refreshPeers._hs │ │ ├── saveButton._hs │ │ ├── select._hs │ │ ├── selectText._hs │ │ ├── showIf._hs │ │ ├── showLimit._hs │ │ ├── sortcontainer._hs │ │ ├── tabs._hs │ │ ├── toggle._hs │ │ ├── tooltips._hs │ │ ├── turboclick._hs │ │ ├── uploader._hs │ │ └── validator._hs │ ├── includes-foot.html │ ├── includes-head.html │ ├── javascript │ │ ├── a11y.js │ │ ├── extensions.js │ │ └── intent.js │ ├── oauth.html │ ├── registration │ │ └── register._hs │ ├── reset-code-inactive.html │ ├── reset-code-invalid.html │ ├── reset-code.html │ ├── reset-confirm.html │ ├── reset-password.html │ ├── resources │ │ ├── autolinker-4.0.0 │ │ │ └── autolinker.min.js │ │ ├── bootstrap-icons-1.10.3 │ │ │ ├── bootstrap-icons.css │ │ │ ├── bootstrap-icons.json │ │ │ ├── bootstrap-icons.scss │ │ │ └── fonts │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ └── bootstrap-icons.woff2 │ │ ├── bootstrap-icons-1.11.3 │ │ │ ├── 0-circle-fill.svg │ │ │ ├── 0-circle.svg │ │ │ ├── 0-square-fill.svg │ │ │ ├── 0-square.svg │ │ │ ├── 1-circle-fill.svg │ │ │ ├── 1-circle.svg │ │ │ ├── 1-square-fill.svg │ │ │ ├── 1-square.svg │ │ │ ├── 123.svg │ │ │ ├── 2-circle-fill.svg │ │ │ ├── 2-circle.svg │ │ │ ├── 2-square-fill.svg │ │ │ ├── 2-square.svg │ │ │ ├── 3-circle-fill.svg │ │ │ ├── 3-circle.svg │ │ │ ├── 3-square-fill.svg │ │ │ ├── 3-square.svg │ │ │ ├── 4-circle-fill.svg │ │ │ ├── 4-circle.svg │ │ │ ├── 4-square-fill.svg │ │ │ ├── 4-square.svg │ │ │ ├── 5-circle-fill.svg │ │ │ ├── 5-circle.svg │ │ │ ├── 5-square-fill.svg │ │ │ ├── 5-square.svg │ │ │ ├── 6-circle-fill.svg │ │ │ ├── 6-circle.svg │ │ │ ├── 6-square-fill.svg │ │ │ ├── 6-square.svg │ │ │ ├── 7-circle-fill.svg │ │ │ ├── 7-circle.svg │ │ │ ├── 7-square-fill.svg │ │ │ ├── 7-square.svg │ │ │ ├── 8-circle-fill.svg │ │ │ ├── 8-circle.svg │ │ │ ├── 8-square-fill.svg │ │ │ ├── 8-square.svg │ │ │ ├── 9-circle-fill.svg │ │ │ ├── 9-circle.svg │ │ │ ├── 9-square-fill.svg │ │ │ ├── 9-square.svg │ │ │ ├── activity.svg │ │ │ ├── airplane-engines-fill.svg │ │ │ ├── airplane-engines.svg │ │ │ ├── airplane-fill.svg │ │ │ ├── airplane.svg │ │ │ ├── alarm-fill.svg │ │ │ ├── alarm.svg │ │ │ ├── alexa.svg │ │ │ ├── align-bottom.svg │ │ │ ├── align-center.svg │ │ │ ├── align-end.svg │ │ │ ├── align-middle.svg │ │ │ ├── align-start.svg │ │ │ ├── align-top.svg │ │ │ ├── alipay.svg │ │ │ ├── alphabet-uppercase.svg │ │ │ ├── alphabet.svg │ │ │ ├── alt.svg │ │ │ ├── amazon.svg │ │ │ ├── amd.svg │ │ │ ├── android.svg │ │ │ ├── android2.svg │ │ │ ├── app-indicator.svg │ │ │ ├── app.svg │ │ │ ├── apple.svg │ │ │ ├── archive-fill.svg │ │ │ ├── archive.svg │ │ │ ├── arrow-90deg-down.svg │ │ │ ├── arrow-90deg-left.svg │ │ │ ├── arrow-90deg-right.svg │ │ │ ├── arrow-90deg-up.svg │ │ │ ├── arrow-bar-down.svg │ │ │ ├── arrow-bar-left.svg │ │ │ ├── arrow-bar-right.svg │ │ │ ├── arrow-bar-up.svg │ │ │ ├── arrow-clockwise.svg │ │ │ ├── arrow-counterclockwise.svg │ │ │ ├── arrow-down-circle-fill.svg │ │ │ ├── arrow-down-circle.svg │ │ │ ├── arrow-down-left-circle-fill.svg │ │ │ ├── arrow-down-left-circle.svg │ │ │ ├── arrow-down-left-square-fill.svg │ │ │ ├── arrow-down-left-square.svg │ │ │ ├── arrow-down-left.svg │ │ │ ├── arrow-down-right-circle-fill.svg │ │ │ ├── arrow-down-right-circle.svg │ │ │ ├── arrow-down-right-square-fill.svg │ │ │ ├── arrow-down-right-square.svg │ │ │ ├── arrow-down-right.svg │ │ │ ├── arrow-down-short.svg │ │ │ ├── arrow-down-square-fill.svg │ │ │ ├── arrow-down-square.svg │ │ │ ├── arrow-down-up.svg │ │ │ ├── arrow-down.svg │ │ │ ├── arrow-left-circle-fill.svg │ │ │ ├── arrow-left-circle.svg │ │ │ ├── arrow-left-right.svg │ │ │ ├── arrow-left-short.svg │ │ │ ├── arrow-left-square-fill.svg │ │ │ ├── arrow-left-square.svg │ │ │ ├── arrow-left.svg │ │ │ ├── arrow-repeat.svg │ │ │ ├── arrow-return-left.svg │ │ │ ├── arrow-return-right.svg │ │ │ ├── arrow-right-circle-fill.svg │ │ │ ├── arrow-right-circle.svg │ │ │ ├── arrow-right-short.svg │ │ │ ├── arrow-right-square-fill.svg │ │ │ ├── arrow-right-square.svg │ │ │ ├── arrow-right.svg │ │ │ ├── arrow-through-heart-fill.svg │ │ │ ├── arrow-through-heart.svg │ │ │ ├── arrow-up-circle-fill.svg │ │ │ ├── arrow-up-circle.svg │ │ │ ├── arrow-up-left-circle-fill.svg │ │ │ ├── arrow-up-left-circle.svg │ │ │ ├── arrow-up-left-square-fill.svg │ │ │ ├── arrow-up-left-square.svg │ │ │ ├── arrow-up-left.svg │ │ │ ├── arrow-up-right-circle-fill.svg │ │ │ ├── arrow-up-right-circle.svg │ │ │ ├── arrow-up-right-square-fill.svg │ │ │ ├── arrow-up-right-square.svg │ │ │ ├── arrow-up-right.svg │ │ │ ├── arrow-up-short.svg │ │ │ ├── arrow-up-square-fill.svg │ │ │ ├── arrow-up-square.svg │ │ │ ├── arrow-up.svg │ │ │ ├── arrows-angle-contract.svg │ │ │ ├── arrows-angle-expand.svg │ │ │ ├── arrows-collapse-vertical.svg │ │ │ ├── arrows-collapse.svg │ │ │ ├── arrows-expand-vertical.svg │ │ │ ├── arrows-expand.svg │ │ │ ├── arrows-fullscreen.svg │ │ │ ├── arrows-move.svg │ │ │ ├── arrows-vertical.svg │ │ │ ├── arrows.svg │ │ │ ├── aspect-ratio-fill.svg │ │ │ ├── aspect-ratio.svg │ │ │ ├── asterisk.svg │ │ │ ├── at.svg │ │ │ ├── award-fill.svg │ │ │ ├── award.svg │ │ │ ├── back.svg │ │ │ ├── backpack-fill.svg │ │ │ ├── backpack.svg │ │ │ ├── backpack2-fill.svg │ │ │ ├── backpack2.svg │ │ │ ├── backpack3-fill.svg │ │ │ ├── backpack3.svg │ │ │ ├── backpack4-fill.svg │ │ │ ├── backpack4.svg │ │ │ ├── backspace-fill.svg │ │ │ ├── backspace-reverse-fill.svg │ │ │ ├── backspace-reverse.svg │ │ │ ├── backspace.svg │ │ │ ├── badge-3d-fill.svg │ │ │ ├── badge-3d.svg │ │ │ ├── badge-4k-fill.svg │ │ │ ├── badge-4k.svg │ │ │ ├── badge-8k-fill.svg │ │ │ ├── badge-8k.svg │ │ │ ├── badge-ad-fill.svg │ │ │ ├── badge-ad.svg │ │ │ ├── badge-ar-fill.svg │ │ │ ├── badge-ar.svg │ │ │ ├── badge-cc-fill.svg │ │ │ ├── badge-cc.svg │ │ │ ├── badge-hd-fill.svg │ │ │ ├── badge-hd.svg │ │ │ ├── badge-sd-fill.svg │ │ │ ├── badge-sd.svg │ │ │ ├── badge-tm-fill.svg │ │ │ ├── badge-tm.svg │ │ │ ├── badge-vo-fill.svg │ │ │ ├── badge-vo.svg │ │ │ ├── badge-vr-fill.svg │ │ │ ├── badge-vr.svg │ │ │ ├── badge-wc-fill.svg │ │ │ ├── badge-wc.svg │ │ │ ├── bag-check-fill.svg │ │ │ ├── bag-check.svg │ │ │ ├── bag-dash-fill.svg │ │ │ ├── bag-dash.svg │ │ │ ├── bag-fill.svg │ │ │ ├── bag-heart-fill.svg │ │ │ ├── bag-heart.svg │ │ │ ├── bag-plus-fill.svg │ │ │ ├── bag-plus.svg │ │ │ ├── bag-x-fill.svg │ │ │ ├── bag-x.svg │ │ │ ├── bag.svg │ │ │ ├── balloon-fill.svg │ │ │ ├── balloon-heart-fill.svg │ │ │ ├── balloon-heart.svg │ │ │ ├── balloon.svg │ │ │ ├── ban-fill.svg │ │ │ ├── ban.svg │ │ │ ├── bandaid-fill.svg │ │ │ ├── bandaid.svg │ │ │ ├── bank.svg │ │ │ ├── bank2.svg │ │ │ ├── bar-chart-fill.svg │ │ │ ├── bar-chart-line-fill.svg │ │ │ ├── bar-chart-line.svg │ │ │ ├── bar-chart-steps.svg │ │ │ ├── bar-chart.svg │ │ │ ├── basket-fill.svg │ │ │ ├── basket.svg │ │ │ ├── basket2-fill.svg │ │ │ ├── basket2.svg │ │ │ ├── basket3-fill.svg │ │ │ ├── basket3.svg │ │ │ ├── battery-charging.svg │ │ │ ├── battery-full.svg │ │ │ ├── battery-half.svg │ │ │ ├── battery.svg │ │ │ ├── behance.svg │ │ │ ├── bell-fill.svg │ │ │ ├── bell-slash-fill.svg │ │ │ ├── bell-slash.svg │ │ │ ├── bell.svg │ │ │ ├── bezier.svg │ │ │ ├── bezier2.svg │ │ │ ├── bicycle.svg │ │ │ ├── bing.svg │ │ │ ├── binoculars-fill.svg │ │ │ ├── binoculars.svg │ │ │ ├── blockquote-left.svg │ │ │ ├── blockquote-right.svg │ │ │ ├── bluetooth.svg │ │ │ ├── body-text.svg │ │ │ ├── book-fill.svg │ │ │ ├── book-half.svg │ │ │ ├── book.svg │ │ │ ├── bookmark-check-fill.svg │ │ │ ├── bookmark-check.svg │ │ │ ├── bookmark-dash-fill.svg │ │ │ ├── bookmark-dash.svg │ │ │ ├── bookmark-fill.svg │ │ │ ├── bookmark-heart-fill.svg │ │ │ ├── bookmark-heart.svg │ │ │ ├── bookmark-plus-fill.svg │ │ │ ├── bookmark-plus.svg │ │ │ ├── bookmark-star-fill.svg │ │ │ ├── bookmark-star.svg │ │ │ ├── bookmark-x-fill.svg │ │ │ ├── bookmark-x.svg │ │ │ ├── bookmark.svg │ │ │ ├── bookmarks-fill.svg │ │ │ ├── bookmarks.svg │ │ │ ├── bookshelf.svg │ │ │ ├── boombox-fill.svg │ │ │ ├── boombox.svg │ │ │ ├── bootstrap-fill.svg │ │ │ ├── bootstrap-icons.svg │ │ │ ├── bootstrap-reboot.svg │ │ │ ├── bootstrap.svg │ │ │ ├── border-all.svg │ │ │ ├── border-bottom.svg │ │ │ ├── border-center.svg │ │ │ ├── border-inner.svg │ │ │ ├── border-left.svg │ │ │ ├── border-middle.svg │ │ │ ├── border-outer.svg │ │ │ ├── border-right.svg │ │ │ ├── border-style.svg │ │ │ ├── border-top.svg │ │ │ ├── border-width.svg │ │ │ ├── border.svg │ │ │ ├── bounding-box-circles.svg │ │ │ ├── bounding-box.svg │ │ │ ├── box-arrow-down-left.svg │ │ │ ├── box-arrow-down-right.svg │ │ │ ├── box-arrow-down.svg │ │ │ ├── box-arrow-in-down-left.svg │ │ │ ├── box-arrow-in-down-right.svg │ │ │ ├── box-arrow-in-down.svg │ │ │ ├── box-arrow-in-left.svg │ │ │ ├── box-arrow-in-right.svg │ │ │ ├── box-arrow-in-up-left.svg │ │ │ ├── box-arrow-in-up-right.svg │ │ │ ├── box-arrow-in-up.svg │ │ │ ├── box-arrow-left.svg │ │ │ ├── box-arrow-right.svg │ │ │ ├── box-arrow-up-left.svg │ │ │ ├── box-arrow-up-right.svg │ │ │ ├── box-arrow-up.svg │ │ │ ├── box-fill.svg │ │ │ ├── box-seam-fill.svg │ │ │ ├── box-seam.svg │ │ │ ├── box.svg │ │ │ ├── box2-fill.svg │ │ │ ├── box2-heart-fill.svg │ │ │ ├── box2-heart.svg │ │ │ ├── box2.svg │ │ │ ├── boxes.svg │ │ │ ├── braces-asterisk.svg │ │ │ ├── braces.svg │ │ │ ├── bricks.svg │ │ │ ├── briefcase-fill.svg │ │ │ ├── briefcase.svg │ │ │ ├── brightness-alt-high-fill.svg │ │ │ ├── brightness-alt-high.svg │ │ │ ├── brightness-alt-low-fill.svg │ │ │ ├── brightness-alt-low.svg │ │ │ ├── brightness-high-fill.svg │ │ │ ├── brightness-high.svg │ │ │ ├── brightness-low-fill.svg │ │ │ ├── brightness-low.svg │ │ │ ├── brilliance.svg │ │ │ ├── broadcast-pin.svg │ │ │ ├── broadcast.svg │ │ │ ├── browser-chrome.svg │ │ │ ├── browser-edge.svg │ │ │ ├── browser-firefox.svg │ │ │ ├── browser-safari.svg │ │ │ ├── brush-fill.svg │ │ │ ├── brush.svg │ │ │ ├── bucket-fill.svg │ │ │ ├── bucket.svg │ │ │ ├── bug-fill.svg │ │ │ ├── bug.svg │ │ │ ├── building-add.svg │ │ │ ├── building-check.svg │ │ │ ├── building-dash.svg │ │ │ ├── building-down.svg │ │ │ ├── building-exclamation.svg │ │ │ ├── building-fill-add.svg │ │ │ ├── building-fill-check.svg │ │ │ ├── building-fill-dash.svg │ │ │ ├── building-fill-down.svg │ │ │ ├── building-fill-exclamation.svg │ │ │ ├── building-fill-gear.svg │ │ │ ├── building-fill-lock.svg │ │ │ ├── building-fill-slash.svg │ │ │ ├── building-fill-up.svg │ │ │ ├── building-fill-x.svg │ │ │ ├── building-fill.svg │ │ │ ├── building-gear.svg │ │ │ ├── building-lock.svg │ │ │ ├── building-slash.svg │ │ │ ├── building-up.svg │ │ │ ├── building-x.svg │ │ │ ├── building.svg │ │ │ ├── buildings-fill.svg │ │ │ ├── buildings.svg │ │ │ ├── bullseye.svg │ │ │ ├── bus-front-fill.svg │ │ │ ├── bus-front.svg │ │ │ ├── c-circle-fill.svg │ │ │ ├── c-circle.svg │ │ │ ├── c-square-fill.svg │ │ │ ├── c-square.svg │ │ │ ├── cake-fill.svg │ │ │ ├── cake.svg │ │ │ ├── cake2-fill.svg │ │ │ ├── cake2.svg │ │ │ ├── calculator-fill.svg │ │ │ ├── calculator.svg │ │ │ ├── calendar-check-fill.svg │ │ │ ├── calendar-check.svg │ │ │ ├── calendar-date-fill.svg │ │ │ ├── calendar-date.svg │ │ │ ├── calendar-day-fill.svg │ │ │ ├── calendar-day.svg │ │ │ ├── calendar-event-fill.svg │ │ │ ├── calendar-event.svg │ │ │ ├── calendar-fill.svg │ │ │ ├── calendar-heart-fill.svg │ │ │ ├── calendar-heart.svg │ │ │ ├── calendar-minus-fill.svg │ │ │ ├── calendar-minus.svg │ │ │ ├── calendar-month-fill.svg │ │ │ ├── calendar-month.svg │ │ │ ├── calendar-plus-fill.svg │ │ │ ├── calendar-plus.svg │ │ │ ├── calendar-range-fill.svg │ │ │ ├── calendar-range.svg │ │ │ ├── calendar-week-fill.svg │ │ │ ├── calendar-week.svg │ │ │ ├── calendar-x-fill.svg │ │ │ ├── calendar-x.svg │ │ │ ├── calendar.svg │ │ │ ├── calendar2-check-fill.svg │ │ │ ├── calendar2-check.svg │ │ │ ├── calendar2-date-fill.svg │ │ │ ├── calendar2-date.svg │ │ │ ├── calendar2-day-fill.svg │ │ │ ├── calendar2-day.svg │ │ │ ├── calendar2-event-fill.svg │ │ │ ├── calendar2-event.svg │ │ │ ├── calendar2-fill.svg │ │ │ ├── calendar2-heart-fill.svg │ │ │ ├── calendar2-heart.svg │ │ │ ├── calendar2-minus-fill.svg │ │ │ ├── calendar2-minus.svg │ │ │ ├── calendar2-month-fill.svg │ │ │ ├── calendar2-month.svg │ │ │ ├── calendar2-plus-fill.svg │ │ │ ├── calendar2-plus.svg │ │ │ ├── calendar2-range-fill.svg │ │ │ ├── calendar2-range.svg │ │ │ ├── calendar2-week-fill.svg │ │ │ ├── calendar2-week.svg │ │ │ ├── calendar2-x-fill.svg │ │ │ ├── calendar2-x.svg │ │ │ ├── calendar2.svg │ │ │ ├── calendar3-event-fill.svg │ │ │ ├── calendar3-event.svg │ │ │ ├── calendar3-fill.svg │ │ │ ├── calendar3-range-fill.svg │ │ │ ├── calendar3-range.svg │ │ │ ├── calendar3-week-fill.svg │ │ │ ├── calendar3-week.svg │ │ │ ├── calendar3.svg │ │ │ ├── calendar4-event.svg │ │ │ ├── calendar4-range.svg │ │ │ ├── calendar4-week.svg │ │ │ ├── calendar4.svg │ │ │ ├── camera-fill.svg │ │ │ ├── camera-reels-fill.svg │ │ │ ├── camera-reels.svg │ │ │ ├── camera-video-fill.svg │ │ │ ├── camera-video-off-fill.svg │ │ │ ├── camera-video-off.svg │ │ │ ├── camera-video.svg │ │ │ ├── camera.svg │ │ │ ├── camera2.svg │ │ │ ├── capslock-fill.svg │ │ │ ├── capslock.svg │ │ │ ├── capsule-pill.svg │ │ │ ├── capsule.svg │ │ │ ├── car-front-fill.svg │ │ │ ├── car-front.svg │ │ │ ├── card-checklist.svg │ │ │ ├── card-heading.svg │ │ │ ├── card-image.svg │ │ │ ├── card-list.svg │ │ │ ├── card-text.svg │ │ │ ├── caret-down-fill.svg │ │ │ ├── caret-down-square-fill.svg │ │ │ ├── caret-down-square.svg │ │ │ ├── caret-down.svg │ │ │ ├── caret-left-fill.svg │ │ │ ├── caret-left-square-fill.svg │ │ │ ├── caret-left-square.svg │ │ │ ├── caret-left.svg │ │ │ ├── caret-right-fill.svg │ │ │ ├── caret-right-square-fill.svg │ │ │ ├── caret-right-square.svg │ │ │ ├── caret-right.svg │ │ │ ├── caret-up-fill.svg │ │ │ ├── caret-up-square-fill.svg │ │ │ ├── caret-up-square.svg │ │ │ ├── caret-up.svg │ │ │ ├── cart-check-fill.svg │ │ │ ├── cart-check.svg │ │ │ ├── cart-dash-fill.svg │ │ │ ├── cart-dash.svg │ │ │ ├── cart-fill.svg │ │ │ ├── cart-plus-fill.svg │ │ │ ├── cart-plus.svg │ │ │ ├── cart-x-fill.svg │ │ │ ├── cart-x.svg │ │ │ ├── cart.svg │ │ │ ├── cart2.svg │ │ │ ├── cart3.svg │ │ │ ├── cart4.svg │ │ │ ├── cash-coin.svg │ │ │ ├── cash-stack.svg │ │ │ ├── cash.svg │ │ │ ├── cassette-fill.svg │ │ │ ├── cassette.svg │ │ │ ├── cast.svg │ │ │ ├── cc-circle-fill.svg │ │ │ ├── cc-circle.svg │ │ │ ├── cc-square-fill.svg │ │ │ ├── cc-square.svg │ │ │ ├── chat-dots-fill.svg │ │ │ ├── chat-dots.svg │ │ │ ├── chat-fill.svg │ │ │ ├── chat-heart-fill.svg │ │ │ ├── chat-heart.svg │ │ │ ├── chat-left-dots-fill.svg │ │ │ ├── chat-left-dots.svg │ │ │ ├── chat-left-fill.svg │ │ │ ├── chat-left-heart-fill.svg │ │ │ ├── chat-left-heart.svg │ │ │ ├── chat-left-quote-fill.svg │ │ │ ├── chat-left-quote.svg │ │ │ ├── chat-left-text-fill.svg │ │ │ ├── chat-left-text.svg │ │ │ ├── chat-left.svg │ │ │ ├── chat-quote-fill.svg │ │ │ ├── chat-quote.svg │ │ │ ├── chat-right-dots-fill.svg │ │ │ ├── chat-right-dots.svg │ │ │ ├── chat-right-fill.svg │ │ │ ├── chat-right-heart-fill.svg │ │ │ ├── chat-right-heart.svg │ │ │ ├── chat-right-quote-fill.svg │ │ │ ├── chat-right-quote.svg │ │ │ ├── chat-right-text-fill.svg │ │ │ ├── chat-right-text.svg │ │ │ ├── chat-right.svg │ │ │ ├── chat-square-dots-fill.svg │ │ │ ├── chat-square-dots.svg │ │ │ ├── chat-square-fill.svg │ │ │ ├── chat-square-heart-fill.svg │ │ │ ├── chat-square-heart.svg │ │ │ ├── chat-square-quote-fill.svg │ │ │ ├── chat-square-quote.svg │ │ │ ├── chat-square-text-fill.svg │ │ │ ├── chat-square-text.svg │ │ │ ├── chat-square.svg │ │ │ ├── chat-text-fill.svg │ │ │ ├── chat-text.svg │ │ │ ├── chat.svg │ │ │ ├── check-all.svg │ │ │ ├── check-circle-fill.svg │ │ │ ├── check-circle.svg │ │ │ ├── check-lg.svg │ │ │ ├── check-square-fill.svg │ │ │ ├── check-square.svg │ │ │ ├── check.svg │ │ │ ├── check2-all.svg │ │ │ ├── check2-circle.svg │ │ │ ├── check2-square.svg │ │ │ ├── check2.svg │ │ │ ├── chevron-bar-contract.svg │ │ │ ├── chevron-bar-down.svg │ │ │ ├── chevron-bar-expand.svg │ │ │ ├── chevron-bar-left.svg │ │ │ ├── chevron-bar-right.svg │ │ │ ├── chevron-bar-up.svg │ │ │ ├── chevron-compact-down.svg │ │ │ ├── chevron-compact-left.svg │ │ │ ├── chevron-compact-right.svg │ │ │ ├── chevron-compact-up.svg │ │ │ ├── chevron-contract.svg │ │ │ ├── chevron-double-down.svg │ │ │ ├── chevron-double-left.svg │ │ │ ├── chevron-double-right.svg │ │ │ ├── chevron-double-up.svg │ │ │ ├── chevron-down.svg │ │ │ ├── chevron-expand.svg │ │ │ ├── chevron-left.svg │ │ │ ├── chevron-right.svg │ │ │ ├── chevron-up.svg │ │ │ ├── circle-fill.svg │ │ │ ├── circle-half.svg │ │ │ ├── circle-square.svg │ │ │ ├── circle.svg │ │ │ ├── clipboard-check-fill.svg │ │ │ ├── clipboard-check.svg │ │ │ ├── clipboard-data-fill.svg │ │ │ ├── clipboard-data.svg │ │ │ ├── clipboard-fill.svg │ │ │ ├── clipboard-heart-fill.svg │ │ │ ├── clipboard-heart.svg │ │ │ ├── clipboard-minus-fill.svg │ │ │ ├── clipboard-minus.svg │ │ │ ├── clipboard-plus-fill.svg │ │ │ ├── clipboard-plus.svg │ │ │ ├── clipboard-pulse.svg │ │ │ ├── clipboard-x-fill.svg │ │ │ ├── clipboard-x.svg │ │ │ ├── clipboard.svg │ │ │ ├── clipboard2-check-fill.svg │ │ │ ├── clipboard2-check.svg │ │ │ ├── clipboard2-data-fill.svg │ │ │ ├── clipboard2-data.svg │ │ │ ├── clipboard2-fill.svg │ │ │ ├── clipboard2-heart-fill.svg │ │ │ ├── clipboard2-heart.svg │ │ │ ├── clipboard2-minus-fill.svg │ │ │ ├── clipboard2-minus.svg │ │ │ ├── clipboard2-plus-fill.svg │ │ │ ├── clipboard2-plus.svg │ │ │ ├── clipboard2-pulse-fill.svg │ │ │ ├── clipboard2-pulse.svg │ │ │ ├── clipboard2-x-fill.svg │ │ │ ├── clipboard2-x.svg │ │ │ ├── clipboard2.svg │ │ │ ├── clock-fill.svg │ │ │ ├── clock-history.svg │ │ │ ├── clock.svg │ │ │ ├── cloud-arrow-down-fill.svg │ │ │ ├── cloud-arrow-down.svg │ │ │ ├── cloud-arrow-up-fill.svg │ │ │ ├── cloud-arrow-up.svg │ │ │ ├── cloud-check-fill.svg │ │ │ ├── cloud-check.svg │ │ │ ├── cloud-download-fill.svg │ │ │ ├── cloud-download.svg │ │ │ ├── cloud-drizzle-fill.svg │ │ │ ├── cloud-drizzle.svg │ │ │ ├── cloud-fill.svg │ │ │ ├── cloud-fog-fill.svg │ │ │ ├── cloud-fog.svg │ │ │ ├── cloud-fog2-fill.svg │ │ │ ├── cloud-fog2.svg │ │ │ ├── cloud-hail-fill.svg │ │ │ ├── cloud-hail.svg │ │ │ ├── cloud-haze-fill.svg │ │ │ ├── cloud-haze.svg │ │ │ ├── cloud-haze2-fill.svg │ │ │ ├── cloud-haze2.svg │ │ │ ├── cloud-lightning-fill.svg │ │ │ ├── cloud-lightning-rain-fill.svg │ │ │ ├── cloud-lightning-rain.svg │ │ │ ├── cloud-lightning.svg │ │ │ ├── cloud-minus-fill.svg │ │ │ ├── cloud-minus.svg │ │ │ ├── cloud-moon-fill.svg │ │ │ ├── cloud-moon.svg │ │ │ ├── cloud-plus-fill.svg │ │ │ ├── cloud-plus.svg │ │ │ ├── cloud-rain-fill.svg │ │ │ ├── cloud-rain-heavy-fill.svg │ │ │ ├── cloud-rain-heavy.svg │ │ │ ├── cloud-rain.svg │ │ │ ├── cloud-slash-fill.svg │ │ │ ├── cloud-slash.svg │ │ │ ├── cloud-sleet-fill.svg │ │ │ ├── cloud-sleet.svg │ │ │ ├── cloud-snow-fill.svg │ │ │ ├── cloud-snow.svg │ │ │ ├── cloud-sun-fill.svg │ │ │ ├── cloud-sun.svg │ │ │ ├── cloud-upload-fill.svg │ │ │ ├── cloud-upload.svg │ │ │ ├── cloud.svg │ │ │ ├── clouds-fill.svg │ │ │ ├── clouds.svg │ │ │ ├── cloudy-fill.svg │ │ │ ├── cloudy.svg │ │ │ ├── code-slash.svg │ │ │ ├── code-square.svg │ │ │ ├── code.svg │ │ │ ├── coin.svg │ │ │ ├── collection-fill.svg │ │ │ ├── collection-play-fill.svg │ │ │ ├── collection-play.svg │ │ │ ├── collection.svg │ │ │ ├── columns-gap.svg │ │ │ ├── columns.svg │ │ │ ├── command.svg │ │ │ ├── compass-fill.svg │ │ │ ├── compass.svg │ │ │ ├── cone-striped.svg │ │ │ ├── cone.svg │ │ │ ├── controller.svg │ │ │ ├── cookie.svg │ │ │ ├── copy.svg │ │ │ ├── cpu-fill.svg │ │ │ ├── cpu.svg │ │ │ ├── credit-card-2-back-fill.svg │ │ │ ├── credit-card-2-back.svg │ │ │ ├── credit-card-2-front-fill.svg │ │ │ ├── credit-card-2-front.svg │ │ │ ├── credit-card-fill.svg │ │ │ ├── credit-card.svg │ │ │ ├── crop.svg │ │ │ ├── crosshair.svg │ │ │ ├── crosshair2.svg │ │ │ ├── cup-fill.svg │ │ │ ├── cup-hot-fill.svg │ │ │ ├── cup-hot.svg │ │ │ ├── cup-straw.svg │ │ │ ├── cup.svg │ │ │ ├── currency-bitcoin.svg │ │ │ ├── currency-dollar.svg │ │ │ ├── currency-euro.svg │ │ │ ├── currency-exchange.svg │ │ │ ├── currency-pound.svg │ │ │ ├── currency-rupee.svg │ │ │ ├── currency-yen.svg │ │ │ ├── cursor-fill.svg │ │ │ ├── cursor-text.svg │ │ │ ├── cursor.svg │ │ │ ├── dash-circle-dotted.svg │ │ │ ├── dash-circle-fill.svg │ │ │ ├── dash-circle.svg │ │ │ ├── dash-lg.svg │ │ │ ├── dash-square-dotted.svg │ │ │ ├── dash-square-fill.svg │ │ │ ├── dash-square.svg │ │ │ ├── dash.svg │ │ │ ├── database-add.svg │ │ │ ├── database-check.svg │ │ │ ├── database-dash.svg │ │ │ ├── database-down.svg │ │ │ ├── database-exclamation.svg │ │ │ ├── database-fill-add.svg │ │ │ ├── database-fill-check.svg │ │ │ ├── database-fill-dash.svg │ │ │ ├── database-fill-down.svg │ │ │ ├── database-fill-exclamation.svg │ │ │ ├── database-fill-gear.svg │ │ │ ├── database-fill-lock.svg │ │ │ ├── database-fill-slash.svg │ │ │ ├── database-fill-up.svg │ │ │ ├── database-fill-x.svg │ │ │ ├── database-fill.svg │ │ │ ├── database-gear.svg │ │ │ ├── database-lock.svg │ │ │ ├── database-slash.svg │ │ │ ├── database-up.svg │ │ │ ├── database-x.svg │ │ │ ├── database.svg │ │ │ ├── device-hdd-fill.svg │ │ │ ├── device-hdd.svg │ │ │ ├── device-ssd-fill.svg │ │ │ ├── device-ssd.svg │ │ │ ├── diagram-2-fill.svg │ │ │ ├── diagram-2.svg │ │ │ ├── diagram-3-fill.svg │ │ │ ├── diagram-3.svg │ │ │ ├── diamond-fill.svg │ │ │ ├── diamond-half.svg │ │ │ ├── diamond.svg │ │ │ ├── dice-1-fill.svg │ │ │ ├── dice-1.svg │ │ │ ├── dice-2-fill.svg │ │ │ ├── dice-2.svg │ │ │ ├── dice-3-fill.svg │ │ │ ├── dice-3.svg │ │ │ ├── dice-4-fill.svg │ │ │ ├── dice-4.svg │ │ │ ├── dice-5-fill.svg │ │ │ ├── dice-5.svg │ │ │ ├── dice-6-fill.svg │ │ │ ├── dice-6.svg │ │ │ ├── disc-fill.svg │ │ │ ├── disc.svg │ │ │ ├── discord.svg │ │ │ ├── display-fill.svg │ │ │ ├── display.svg │ │ │ ├── displayport-fill.svg │ │ │ ├── displayport.svg │ │ │ ├── distribute-horizontal.svg │ │ │ ├── distribute-vertical.svg │ │ │ ├── door-closed-fill.svg │ │ │ ├── door-closed.svg │ │ │ ├── door-open-fill.svg │ │ │ ├── door-open.svg │ │ │ ├── dot.svg │ │ │ ├── download.svg │ │ │ ├── dpad-fill.svg │ │ │ ├── dpad.svg │ │ │ ├── dribbble.svg │ │ │ ├── dropbox.svg │ │ │ ├── droplet-fill.svg │ │ │ ├── droplet-half.svg │ │ │ ├── droplet.svg │ │ │ ├── duffle-fill.svg │ │ │ ├── duffle.svg │ │ │ ├── ear-fill.svg │ │ │ ├── ear.svg │ │ │ ├── earbuds.svg │ │ │ ├── easel-fill.svg │ │ │ ├── easel.svg │ │ │ ├── easel2-fill.svg │ │ │ ├── easel2.svg │ │ │ ├── easel3-fill.svg │ │ │ ├── easel3.svg │ │ │ ├── egg-fill.svg │ │ │ ├── egg-fried.svg │ │ │ ├── egg.svg │ │ │ ├── eject-fill.svg │ │ │ ├── eject.svg │ │ │ ├── emoji-angry-fill.svg │ │ │ ├── emoji-angry.svg │ │ │ ├── emoji-astonished-fill.svg │ │ │ ├── emoji-astonished.svg │ │ │ ├── emoji-dizzy-fill.svg │ │ │ ├── emoji-dizzy.svg │ │ │ ├── emoji-expressionless-fill.svg │ │ │ ├── emoji-expressionless.svg │ │ │ ├── emoji-frown-fill.svg │ │ │ ├── emoji-frown.svg │ │ │ ├── emoji-grimace-fill.svg │ │ │ ├── emoji-grimace.svg │ │ │ ├── emoji-grin-fill.svg │ │ │ ├── emoji-grin.svg │ │ │ ├── emoji-heart-eyes-fill.svg │ │ │ ├── emoji-heart-eyes.svg │ │ │ ├── emoji-kiss-fill.svg │ │ │ ├── emoji-kiss.svg │ │ │ ├── emoji-laughing-fill.svg │ │ │ ├── emoji-laughing.svg │ │ │ ├── emoji-neutral-fill.svg │ │ │ ├── emoji-neutral.svg │ │ │ ├── emoji-smile-fill.svg │ │ │ ├── emoji-smile-upside-down-fill.svg │ │ │ ├── emoji-smile-upside-down.svg │ │ │ ├── emoji-smile.svg │ │ │ ├── emoji-sunglasses-fill.svg │ │ │ ├── emoji-sunglasses.svg │ │ │ ├── emoji-surprise-fill.svg │ │ │ ├── emoji-surprise.svg │ │ │ ├── emoji-tear-fill.svg │ │ │ ├── emoji-tear.svg │ │ │ ├── emoji-wink-fill.svg │ │ │ ├── emoji-wink.svg │ │ │ ├── envelope-arrow-down-fill.svg │ │ │ ├── envelope-arrow-down.svg │ │ │ ├── envelope-arrow-up-fill.svg │ │ │ ├── envelope-arrow-up.svg │ │ │ ├── envelope-at-fill.svg │ │ │ ├── envelope-at.svg │ │ │ ├── envelope-check-fill.svg │ │ │ ├── envelope-check.svg │ │ │ ├── envelope-dash-fill.svg │ │ │ ├── envelope-dash.svg │ │ │ ├── envelope-exclamation-fill.svg │ │ │ ├── envelope-exclamation.svg │ │ │ ├── envelope-fill.svg │ │ │ ├── envelope-heart-fill.svg │ │ │ ├── envelope-heart.svg │ │ │ ├── envelope-open-fill.svg │ │ │ ├── envelope-open-heart-fill.svg │ │ │ ├── envelope-open-heart.svg │ │ │ ├── envelope-open.svg │ │ │ ├── envelope-paper-fill.svg │ │ │ ├── envelope-paper-heart-fill.svg │ │ │ ├── envelope-paper-heart.svg │ │ │ ├── envelope-paper.svg │ │ │ ├── envelope-plus-fill.svg │ │ │ ├── envelope-plus.svg │ │ │ ├── envelope-slash-fill.svg │ │ │ ├── envelope-slash.svg │ │ │ ├── envelope-x-fill.svg │ │ │ ├── envelope-x.svg │ │ │ ├── envelope.svg │ │ │ ├── eraser-fill.svg │ │ │ ├── eraser.svg │ │ │ ├── escape.svg │ │ │ ├── ethernet.svg │ │ │ ├── ev-front-fill.svg │ │ │ ├── ev-front.svg │ │ │ ├── ev-station-fill.svg │ │ │ ├── ev-station.svg │ │ │ ├── exclamation-circle-fill.svg │ │ │ ├── exclamation-circle.svg │ │ │ ├── exclamation-diamond-fill.svg │ │ │ ├── exclamation-diamond.svg │ │ │ ├── exclamation-lg.svg │ │ │ ├── exclamation-octagon-fill.svg │ │ │ ├── exclamation-octagon.svg │ │ │ ├── exclamation-square-fill.svg │ │ │ ├── exclamation-square.svg │ │ │ ├── exclamation-triangle-fill.svg │ │ │ ├── exclamation-triangle.svg │ │ │ ├── exclamation.svg │ │ │ ├── exclude.svg │ │ │ ├── explicit-fill.svg │ │ │ ├── explicit.svg │ │ │ ├── exposure.svg │ │ │ ├── eye-fill.svg │ │ │ ├── eye-slash-fill.svg │ │ │ ├── eye-slash.svg │ │ │ ├── eye.svg │ │ │ ├── eyedropper.svg │ │ │ ├── eyeglasses.svg │ │ │ ├── facebook.svg │ │ │ ├── fan.svg │ │ │ ├── fast-forward-btn-fill.svg │ │ │ ├── fast-forward-btn.svg │ │ │ ├── fast-forward-circle-fill.svg │ │ │ ├── fast-forward-circle.svg │ │ │ ├── fast-forward-fill.svg │ │ │ ├── fast-forward.svg │ │ │ ├── feather.svg │ │ │ ├── feather2.svg │ │ │ ├── file-arrow-down-fill.svg │ │ │ ├── file-arrow-down.svg │ │ │ ├── file-arrow-up-fill.svg │ │ │ ├── file-arrow-up.svg │ │ │ ├── file-bar-graph-fill.svg │ │ │ ├── file-bar-graph.svg │ │ │ ├── file-binary-fill.svg │ │ │ ├── file-binary.svg │ │ │ ├── file-break-fill.svg │ │ │ ├── file-break.svg │ │ │ ├── file-check-fill.svg │ │ │ ├── file-check.svg │ │ │ ├── file-code-fill.svg │ │ │ ├── file-code.svg │ │ │ ├── file-diff-fill.svg │ │ │ ├── file-diff.svg │ │ │ ├── file-earmark-arrow-down-fill.svg │ │ │ ├── file-earmark-arrow-down.svg │ │ │ ├── file-earmark-arrow-up-fill.svg │ │ │ ├── file-earmark-arrow-up.svg │ │ │ ├── file-earmark-bar-graph-fill.svg │ │ │ ├── file-earmark-bar-graph.svg │ │ │ ├── file-earmark-binary-fill.svg │ │ │ ├── file-earmark-binary.svg │ │ │ ├── file-earmark-break-fill.svg │ │ │ ├── file-earmark-break.svg │ │ │ ├── file-earmark-check-fill.svg │ │ │ ├── file-earmark-check.svg │ │ │ ├── file-earmark-code-fill.svg │ │ │ ├── file-earmark-code.svg │ │ │ ├── file-earmark-diff-fill.svg │ │ │ ├── file-earmark-diff.svg │ │ │ ├── file-earmark-easel-fill.svg │ │ │ ├── file-earmark-easel.svg │ │ │ ├── file-earmark-excel-fill.svg │ │ │ ├── file-earmark-excel.svg │ │ │ ├── file-earmark-fill.svg │ │ │ ├── file-earmark-font-fill.svg │ │ │ ├── file-earmark-font.svg │ │ │ ├── file-earmark-image-fill.svg │ │ │ ├── file-earmark-image.svg │ │ │ ├── file-earmark-lock-fill.svg │ │ │ ├── file-earmark-lock.svg │ │ │ ├── file-earmark-lock2-fill.svg │ │ │ ├── file-earmark-lock2.svg │ │ │ ├── file-earmark-medical-fill.svg │ │ │ ├── file-earmark-medical.svg │ │ │ ├── file-earmark-minus-fill.svg │ │ │ ├── file-earmark-minus.svg │ │ │ ├── file-earmark-music-fill.svg │ │ │ ├── file-earmark-music.svg │ │ │ ├── file-earmark-pdf-fill.svg │ │ │ ├── file-earmark-pdf.svg │ │ │ ├── file-earmark-person-fill.svg │ │ │ ├── file-earmark-person.svg │ │ │ ├── file-earmark-play-fill.svg │ │ │ ├── file-earmark-play.svg │ │ │ ├── file-earmark-plus-fill.svg │ │ │ ├── file-earmark-plus.svg │ │ │ ├── file-earmark-post-fill.svg │ │ │ ├── file-earmark-post.svg │ │ │ ├── file-earmark-ppt-fill.svg │ │ │ ├── file-earmark-ppt.svg │ │ │ ├── file-earmark-richtext-fill.svg │ │ │ ├── file-earmark-richtext.svg │ │ │ ├── file-earmark-ruled-fill.svg │ │ │ ├── file-earmark-ruled.svg │ │ │ ├── file-earmark-slides-fill.svg │ │ │ ├── file-earmark-slides.svg │ │ │ ├── file-earmark-spreadsheet-fill.svg │ │ │ ├── file-earmark-spreadsheet.svg │ │ │ ├── file-earmark-text-fill.svg │ │ │ ├── file-earmark-text.svg │ │ │ ├── file-earmark-word-fill.svg │ │ │ ├── file-earmark-word.svg │ │ │ ├── file-earmark-x-fill.svg │ │ │ ├── file-earmark-x.svg │ │ │ ├── file-earmark-zip-fill.svg │ │ │ ├── file-earmark-zip.svg │ │ │ ├── file-earmark.svg │ │ │ ├── file-easel-fill.svg │ │ │ ├── file-easel.svg │ │ │ ├── file-excel-fill.svg │ │ │ ├── file-excel.svg │ │ │ ├── file-fill.svg │ │ │ ├── file-font-fill.svg │ │ │ ├── file-font.svg │ │ │ ├── file-image-fill.svg │ │ │ ├── file-image.svg │ │ │ ├── file-lock-fill.svg │ │ │ ├── file-lock.svg │ │ │ ├── file-lock2-fill.svg │ │ │ ├── file-lock2.svg │ │ │ ├── file-medical-fill.svg │ │ │ ├── file-medical.svg │ │ │ ├── file-minus-fill.svg │ │ │ ├── file-minus.svg │ │ │ ├── file-music-fill.svg │ │ │ ├── file-music.svg │ │ │ ├── file-pdf-fill.svg │ │ │ ├── file-pdf.svg │ │ │ ├── file-person-fill.svg │ │ │ ├── file-person.svg │ │ │ ├── file-play-fill.svg │ │ │ ├── file-play.svg │ │ │ ├── file-plus-fill.svg │ │ │ ├── file-plus.svg │ │ │ ├── file-post-fill.svg │ │ │ ├── file-post.svg │ │ │ ├── file-ppt-fill.svg │ │ │ ├── file-ppt.svg │ │ │ ├── file-richtext-fill.svg │ │ │ ├── file-richtext.svg │ │ │ ├── file-ruled-fill.svg │ │ │ ├── file-ruled.svg │ │ │ ├── file-slides-fill.svg │ │ │ ├── file-slides.svg │ │ │ ├── file-spreadsheet-fill.svg │ │ │ ├── file-spreadsheet.svg │ │ │ ├── file-text-fill.svg │ │ │ ├── file-text.svg │ │ │ ├── file-word-fill.svg │ │ │ ├── file-word.svg │ │ │ ├── file-x-fill.svg │ │ │ ├── file-x.svg │ │ │ ├── file-zip-fill.svg │ │ │ ├── file-zip.svg │ │ │ ├── file.svg │ │ │ ├── files-alt.svg │ │ │ ├── files.svg │ │ │ ├── filetype-aac.svg │ │ │ ├── filetype-ai.svg │ │ │ ├── filetype-bmp.svg │ │ │ ├── filetype-cs.svg │ │ │ ├── filetype-css.svg │ │ │ ├── filetype-csv.svg │ │ │ ├── filetype-doc.svg │ │ │ ├── filetype-docx.svg │ │ │ ├── filetype-exe.svg │ │ │ ├── filetype-gif.svg │ │ │ ├── filetype-heic.svg │ │ │ ├── filetype-html.svg │ │ │ ├── filetype-java.svg │ │ │ ├── filetype-jpg.svg │ │ │ ├── filetype-js.svg │ │ │ ├── filetype-json.svg │ │ │ ├── filetype-jsx.svg │ │ │ ├── filetype-key.svg │ │ │ ├── filetype-m4p.svg │ │ │ ├── filetype-md.svg │ │ │ ├── filetype-mdx.svg │ │ │ ├── filetype-mov.svg │ │ │ ├── filetype-mp3.svg │ │ │ ├── filetype-mp4.svg │ │ │ ├── filetype-otf.svg │ │ │ ├── filetype-pdf.svg │ │ │ ├── filetype-php.svg │ │ │ ├── filetype-png.svg │ │ │ ├── filetype-ppt.svg │ │ │ ├── filetype-pptx.svg │ │ │ ├── filetype-psd.svg │ │ │ ├── filetype-py.svg │ │ │ ├── filetype-raw.svg │ │ │ ├── filetype-rb.svg │ │ │ ├── filetype-sass.svg │ │ │ ├── filetype-scss.svg │ │ │ ├── filetype-sh.svg │ │ │ ├── filetype-sql.svg │ │ │ ├── filetype-svg.svg │ │ │ ├── filetype-tiff.svg │ │ │ ├── filetype-tsx.svg │ │ │ ├── filetype-ttf.svg │ │ │ ├── filetype-txt.svg │ │ │ ├── filetype-wav.svg │ │ │ ├── filetype-woff.svg │ │ │ ├── filetype-xls.svg │ │ │ ├── filetype-xlsx.svg │ │ │ ├── filetype-xml.svg │ │ │ ├── filetype-yml.svg │ │ │ ├── film.svg │ │ │ ├── filter-circle-fill.svg │ │ │ ├── filter-circle.svg │ │ │ ├── filter-left.svg │ │ │ ├── filter-right.svg │ │ │ ├── filter-square-fill.svg │ │ │ ├── filter-square.svg │ │ │ ├── filter.svg │ │ │ ├── fingerprint.svg │ │ │ ├── fire.svg │ │ │ ├── flag-fill.svg │ │ │ ├── flag.svg │ │ │ ├── floppy-fill.svg │ │ │ ├── floppy.svg │ │ │ ├── floppy2-fill.svg │ │ │ ├── floppy2.svg │ │ │ ├── flower1.svg │ │ │ ├── flower2.svg │ │ │ ├── flower3.svg │ │ │ ├── folder-check.svg │ │ │ ├── folder-fill.svg │ │ │ ├── folder-minus.svg │ │ │ ├── folder-plus.svg │ │ │ ├── folder-symlink-fill.svg │ │ │ ├── folder-symlink.svg │ │ │ ├── folder-x.svg │ │ │ ├── folder.svg │ │ │ ├── folder2-open.svg │ │ │ ├── folder2.svg │ │ │ ├── font │ │ │ │ ├── bootstrap-icons.css │ │ │ │ ├── bootstrap-icons.json │ │ │ │ ├── bootstrap-icons.min.css │ │ │ │ ├── bootstrap-icons.scss │ │ │ │ └── fonts │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ └── bootstrap-icons.woff2 │ │ │ ├── fonts.svg │ │ │ ├── forward-fill.svg │ │ │ ├── forward.svg │ │ │ ├── front.svg │ │ │ ├── fuel-pump-diesel-fill.svg │ │ │ ├── fuel-pump-diesel.svg │ │ │ ├── fuel-pump-fill.svg │ │ │ ├── fuel-pump.svg │ │ │ ├── fullscreen-exit.svg │ │ │ ├── fullscreen.svg │ │ │ ├── funnel-fill.svg │ │ │ ├── funnel.svg │ │ │ ├── gear-fill.svg │ │ │ ├── gear-wide-connected.svg │ │ │ ├── gear-wide.svg │ │ │ ├── gear.svg │ │ │ ├── gem.svg │ │ │ ├── gender-ambiguous.svg │ │ │ ├── gender-female.svg │ │ │ ├── gender-male.svg │ │ │ ├── gender-neuter.svg │ │ │ ├── gender-trans.svg │ │ │ ├── geo-alt-fill.svg │ │ │ ├── geo-alt.svg │ │ │ ├── geo-fill.svg │ │ │ ├── geo.svg │ │ │ ├── gift-fill.svg │ │ │ ├── gift.svg │ │ │ ├── git.svg │ │ │ ├── github.svg │ │ │ ├── gitlab.svg │ │ │ ├── globe-americas.svg │ │ │ ├── globe-asia-australia.svg │ │ │ ├── globe-central-south-asia.svg │ │ │ ├── globe-europe-africa.svg │ │ │ ├── globe.svg │ │ │ ├── globe2.svg │ │ │ ├── google-play.svg │ │ │ ├── google.svg │ │ │ ├── gpu-card.svg │ │ │ ├── graph-down-arrow.svg │ │ │ ├── graph-down.svg │ │ │ ├── graph-up-arrow.svg │ │ │ ├── graph-up.svg │ │ │ ├── grid-1x2-fill.svg │ │ │ ├── grid-1x2.svg │ │ │ ├── grid-3x2-gap-fill.svg │ │ │ ├── grid-3x2-gap.svg │ │ │ ├── grid-3x2.svg │ │ │ ├── grid-3x3-gap-fill.svg │ │ │ ├── grid-3x3-gap.svg │ │ │ ├── grid-3x3.svg │ │ │ ├── grid-fill.svg │ │ │ ├── grid.svg │ │ │ ├── grip-horizontal.svg │ │ │ ├── grip-vertical.svg │ │ │ ├── h-circle-fill.svg │ │ │ ├── h-circle.svg │ │ │ ├── h-square-fill.svg │ │ │ ├── h-square.svg │ │ │ ├── hammer.svg │ │ │ ├── hand-index-fill.svg │ │ │ ├── hand-index-thumb-fill.svg │ │ │ ├── hand-index-thumb.svg │ │ │ ├── hand-index.svg │ │ │ ├── hand-thumbs-down-fill.svg │ │ │ ├── hand-thumbs-down.svg │ │ │ ├── hand-thumbs-up-fill.svg │ │ │ ├── hand-thumbs-up.svg │ │ │ ├── handbag-fill.svg │ │ │ ├── handbag.svg │ │ │ ├── hash.svg │ │ │ ├── hdd-fill.svg │ │ │ ├── hdd-network-fill.svg │ │ │ ├── hdd-network.svg │ │ │ ├── hdd-rack-fill.svg │ │ │ ├── hdd-rack.svg │ │ │ ├── hdd-stack-fill.svg │ │ │ ├── hdd-stack.svg │ │ │ ├── hdd.svg │ │ │ ├── hdmi-fill.svg │ │ │ ├── hdmi.svg │ │ │ ├── headphones.svg │ │ │ ├── headset-vr.svg │ │ │ ├── headset.svg │ │ │ ├── heart-arrow.svg │ │ │ ├── heart-fill.svg │ │ │ ├── heart-half.svg │ │ │ ├── heart-pulse-fill.svg │ │ │ ├── heart-pulse.svg │ │ │ ├── heart.svg │ │ │ ├── heartbreak-fill.svg │ │ │ ├── heartbreak.svg │ │ │ ├── hearts.svg │ │ │ ├── heptagon-fill.svg │ │ │ ├── heptagon-half.svg │ │ │ ├── heptagon.svg │ │ │ ├── hexagon-fill.svg │ │ │ ├── hexagon-half.svg │ │ │ ├── hexagon.svg │ │ │ ├── highlighter.svg │ │ │ ├── highlights.svg │ │ │ ├── hospital-fill.svg │ │ │ ├── hospital.svg │ │ │ ├── hourglass-bottom.svg │ │ │ ├── hourglass-split.svg │ │ │ ├── hourglass-top.svg │ │ │ ├── hourglass.svg │ │ │ ├── house-add-fill.svg │ │ │ ├── house-add.svg │ │ │ ├── house-check-fill.svg │ │ │ ├── house-check.svg │ │ │ ├── house-dash-fill.svg │ │ │ ├── house-dash.svg │ │ │ ├── house-door-fill.svg │ │ │ ├── house-door.svg │ │ │ ├── house-down-fill.svg │ │ │ ├── house-down.svg │ │ │ ├── house-exclamation-fill.svg │ │ │ ├── house-exclamation.svg │ │ │ ├── house-fill.svg │ │ │ ├── house-gear-fill.svg │ │ │ ├── house-gear.svg │ │ │ ├── house-heart-fill.svg │ │ │ ├── house-heart.svg │ │ │ ├── house-lock-fill.svg │ │ │ ├── house-lock.svg │ │ │ ├── house-slash-fill.svg │ │ │ ├── house-slash.svg │ │ │ ├── house-up-fill.svg │ │ │ ├── house-up.svg │ │ │ ├── house-x-fill.svg │ │ │ ├── house-x.svg │ │ │ ├── house.svg │ │ │ ├── houses-fill.svg │ │ │ ├── houses.svg │ │ │ ├── hr.svg │ │ │ ├── hurricane.svg │ │ │ ├── hypnotize.svg │ │ │ ├── image-alt.svg │ │ │ ├── image-fill.svg │ │ │ ├── image.svg │ │ │ ├── images.svg │ │ │ ├── inbox-fill.svg │ │ │ ├── inbox.svg │ │ │ ├── inboxes-fill.svg │ │ │ ├── inboxes.svg │ │ │ ├── incognito.svg │ │ │ ├── indent.svg │ │ │ ├── infinity.svg │ │ │ ├── info-circle-fill.svg │ │ │ ├── info-circle.svg │ │ │ ├── info-lg.svg │ │ │ ├── info-square-fill.svg │ │ │ ├── info-square.svg │ │ │ ├── info.svg │ │ │ ├── input-cursor-text.svg │ │ │ ├── input-cursor.svg │ │ │ ├── instagram.svg │ │ │ ├── intersect.svg │ │ │ ├── journal-album.svg │ │ │ ├── journal-arrow-down.svg │ │ │ ├── journal-arrow-up.svg │ │ │ ├── journal-bookmark-fill.svg │ │ │ ├── journal-bookmark.svg │ │ │ ├── journal-check.svg │ │ │ ├── journal-code.svg │ │ │ ├── journal-medical.svg │ │ │ ├── journal-minus.svg │ │ │ ├── journal-plus.svg │ │ │ ├── journal-richtext.svg │ │ │ ├── journal-text.svg │ │ │ ├── journal-x.svg │ │ │ ├── journal.svg │ │ │ ├── journals.svg │ │ │ ├── joystick.svg │ │ │ ├── justify-left.svg │ │ │ ├── justify-right.svg │ │ │ ├── justify.svg │ │ │ ├── kanban-fill.svg │ │ │ ├── kanban.svg │ │ │ ├── key-fill.svg │ │ │ ├── key.svg │ │ │ ├── keyboard-fill.svg │ │ │ ├── keyboard.svg │ │ │ ├── ladder.svg │ │ │ ├── lamp-fill.svg │ │ │ ├── lamp.svg │ │ │ ├── laptop-fill.svg │ │ │ ├── laptop.svg │ │ │ ├── layer-backward.svg │ │ │ ├── layer-forward.svg │ │ │ ├── layers-fill.svg │ │ │ ├── layers-half.svg │ │ │ ├── layers.svg │ │ │ ├── layout-sidebar-inset-reverse.svg │ │ │ ├── layout-sidebar-inset.svg │ │ │ ├── layout-sidebar-reverse.svg │ │ │ ├── layout-sidebar.svg │ │ │ ├── layout-split.svg │ │ │ ├── layout-text-sidebar-reverse.svg │ │ │ ├── layout-text-sidebar.svg │ │ │ ├── layout-text-window-reverse.svg │ │ │ ├── layout-text-window.svg │ │ │ ├── layout-three-columns.svg │ │ │ ├── layout-wtf.svg │ │ │ ├── life-preserver.svg │ │ │ ├── lightbulb-fill.svg │ │ │ ├── lightbulb-off-fill.svg │ │ │ ├── lightbulb-off.svg │ │ │ ├── lightbulb.svg │ │ │ ├── lightning-charge-fill.svg │ │ │ ├── lightning-charge.svg │ │ │ ├── lightning-fill.svg │ │ │ ├── lightning.svg │ │ │ ├── line.svg │ │ │ ├── link-45deg.svg │ │ │ ├── link.svg │ │ │ ├── linkedin.svg │ │ │ ├── list-check.svg │ │ │ ├── list-columns-reverse.svg │ │ │ ├── list-columns.svg │ │ │ ├── list-nested.svg │ │ │ ├── list-ol.svg │ │ │ ├── list-stars.svg │ │ │ ├── list-task.svg │ │ │ ├── list-ul.svg │ │ │ ├── list.svg │ │ │ ├── lock-fill.svg │ │ │ ├── lock.svg │ │ │ ├── luggage-fill.svg │ │ │ ├── luggage.svg │ │ │ ├── lungs-fill.svg │ │ │ ├── lungs.svg │ │ │ ├── magic.svg │ │ │ ├── magnet-fill.svg │ │ │ ├── magnet.svg │ │ │ ├── mailbox-flag.svg │ │ │ ├── mailbox.svg │ │ │ ├── mailbox2-flag.svg │ │ │ ├── mailbox2.svg │ │ │ ├── map-fill.svg │ │ │ ├── map.svg │ │ │ ├── markdown-fill.svg │ │ │ ├── markdown.svg │ │ │ ├── marker-tip.svg │ │ │ ├── mask.svg │ │ │ ├── mastodon.svg │ │ │ ├── medium.svg │ │ │ ├── megaphone-fill.svg │ │ │ ├── megaphone.svg │ │ │ ├── memory.svg │ │ │ ├── menu-app-fill.svg │ │ │ ├── menu-app.svg │ │ │ ├── menu-button-fill.svg │ │ │ ├── menu-button-wide-fill.svg │ │ │ ├── menu-button-wide.svg │ │ │ ├── menu-button.svg │ │ │ ├── menu-down.svg │ │ │ ├── menu-up.svg │ │ │ ├── messenger.svg │ │ │ ├── meta.svg │ │ │ ├── mic-fill.svg │ │ │ ├── mic-mute-fill.svg │ │ │ ├── mic-mute.svg │ │ │ ├── mic.svg │ │ │ ├── microsoft-teams.svg │ │ │ ├── microsoft.svg │ │ │ ├── minecart-loaded.svg │ │ │ ├── minecart.svg │ │ │ ├── modem-fill.svg │ │ │ ├── modem.svg │ │ │ ├── moisture.svg │ │ │ ├── moon-fill.svg │ │ │ ├── moon-stars-fill.svg │ │ │ ├── moon-stars.svg │ │ │ ├── moon.svg │ │ │ ├── mortarboard-fill.svg │ │ │ ├── mortarboard.svg │ │ │ ├── motherboard-fill.svg │ │ │ ├── motherboard.svg │ │ │ ├── mouse-fill.svg │ │ │ ├── mouse.svg │ │ │ ├── mouse2-fill.svg │ │ │ ├── mouse2.svg │ │ │ ├── mouse3-fill.svg │ │ │ ├── mouse3.svg │ │ │ ├── music-note-beamed.svg │ │ │ ├── music-note-list.svg │ │ │ ├── music-note.svg │ │ │ ├── music-player-fill.svg │ │ │ ├── music-player.svg │ │ │ ├── newspaper.svg │ │ │ ├── nintendo-switch.svg │ │ │ ├── node-minus-fill.svg │ │ │ ├── node-minus.svg │ │ │ ├── node-plus-fill.svg │ │ │ ├── node-plus.svg │ │ │ ├── noise-reduction.svg │ │ │ ├── nut-fill.svg │ │ │ ├── nut.svg │ │ │ ├── nvidia.svg │ │ │ ├── nvme-fill.svg │ │ │ ├── nvme.svg │ │ │ ├── octagon-fill.svg │ │ │ ├── octagon-half.svg │ │ │ ├── octagon.svg │ │ │ ├── opencollective.svg │ │ │ ├── optical-audio-fill.svg │ │ │ ├── optical-audio.svg │ │ │ ├── option.svg │ │ │ ├── outlet.svg │ │ │ ├── p-circle-fill.svg │ │ │ ├── p-circle.svg │ │ │ ├── p-square-fill.svg │ │ │ ├── p-square.svg │ │ │ ├── paint-bucket.svg │ │ │ ├── palette-fill.svg │ │ │ ├── palette.svg │ │ │ ├── palette2.svg │ │ │ ├── paperclip.svg │ │ │ ├── paragraph.svg │ │ │ ├── pass-fill.svg │ │ │ ├── pass.svg │ │ │ ├── passport-fill.svg │ │ │ ├── passport.svg │ │ │ ├── patch-check-fill.svg │ │ │ ├── patch-check.svg │ │ │ ├── patch-exclamation-fill.svg │ │ │ ├── patch-exclamation.svg │ │ │ ├── patch-minus-fill.svg │ │ │ ├── patch-minus.svg │ │ │ ├── patch-plus-fill.svg │ │ │ ├── patch-plus.svg │ │ │ ├── patch-question-fill.svg │ │ │ ├── patch-question.svg │ │ │ ├── pause-btn-fill.svg │ │ │ ├── pause-btn.svg │ │ │ ├── pause-circle-fill.svg │ │ │ ├── pause-circle.svg │ │ │ ├── pause-fill.svg │ │ │ ├── pause.svg │ │ │ ├── paypal.svg │ │ │ ├── pc-display-horizontal.svg │ │ │ ├── pc-display.svg │ │ │ ├── pc-horizontal.svg │ │ │ ├── pc.svg │ │ │ ├── pci-card-network.svg │ │ │ ├── pci-card-sound.svg │ │ │ ├── pci-card.svg │ │ │ ├── peace-fill.svg │ │ │ ├── peace.svg │ │ │ ├── pen-fill.svg │ │ │ ├── pen.svg │ │ │ ├── pencil-fill.svg │ │ │ ├── pencil-square.svg │ │ │ ├── pencil.svg │ │ │ ├── pentagon-fill.svg │ │ │ ├── pentagon-half.svg │ │ │ ├── pentagon.svg │ │ │ ├── people-fill.svg │ │ │ ├── people.svg │ │ │ ├── percent.svg │ │ │ ├── person-add.svg │ │ │ ├── person-arms-up.svg │ │ │ ├── person-badge-fill.svg │ │ │ ├── person-badge.svg │ │ │ ├── person-bounding-box.svg │ │ │ ├── person-check-fill.svg │ │ │ ├── person-check.svg │ │ │ ├── person-circle.svg │ │ │ ├── person-dash-fill.svg │ │ │ ├── person-dash.svg │ │ │ ├── person-down.svg │ │ │ ├── person-exclamation.svg │ │ │ ├── person-fill-add.svg │ │ │ ├── person-fill-check.svg │ │ │ ├── person-fill-dash.svg │ │ │ ├── person-fill-down.svg │ │ │ ├── person-fill-exclamation.svg │ │ │ ├── person-fill-gear.svg │ │ │ ├── person-fill-lock.svg │ │ │ ├── person-fill-slash.svg │ │ │ ├── person-fill-up.svg │ │ │ ├── person-fill-x.svg │ │ │ ├── person-fill.svg │ │ │ ├── person-gear.svg │ │ │ ├── person-heart.svg │ │ │ ├── person-hearts.svg │ │ │ ├── person-lines-fill.svg │ │ │ ├── person-lock.svg │ │ │ ├── person-plus-fill.svg │ │ │ ├── person-plus.svg │ │ │ ├── person-raised-hand.svg │ │ │ ├── person-rolodex.svg │ │ │ ├── person-slash.svg │ │ │ ├── person-square.svg │ │ │ ├── person-standing-dress.svg │ │ │ ├── person-standing.svg │ │ │ ├── person-up.svg │ │ │ ├── person-vcard-fill.svg │ │ │ ├── person-vcard.svg │ │ │ ├── person-video.svg │ │ │ ├── person-video2.svg │ │ │ ├── person-video3.svg │ │ │ ├── person-walking.svg │ │ │ ├── person-wheelchair.svg │ │ │ ├── person-workspace.svg │ │ │ ├── person-x-fill.svg │ │ │ ├── person-x.svg │ │ │ ├── person.svg │ │ │ ├── phone-fill.svg │ │ │ ├── phone-flip.svg │ │ │ ├── phone-landscape-fill.svg │ │ │ ├── phone-landscape.svg │ │ │ ├── phone-vibrate-fill.svg │ │ │ ├── phone-vibrate.svg │ │ │ ├── phone.svg │ │ │ ├── pie-chart-fill.svg │ │ │ ├── pie-chart.svg │ │ │ ├── piggy-bank-fill.svg │ │ │ ├── piggy-bank.svg │ │ │ ├── pin-angle-fill.svg │ │ │ ├── pin-angle.svg │ │ │ ├── pin-fill.svg │ │ │ ├── pin-map-fill.svg │ │ │ ├── pin-map.svg │ │ │ ├── pin.svg │ │ │ ├── pinterest.svg │ │ │ ├── pip-fill.svg │ │ │ ├── pip.svg │ │ │ ├── play-btn-fill.svg │ │ │ ├── play-btn.svg │ │ │ ├── play-circle-fill.svg │ │ │ ├── play-circle.svg │ │ │ ├── play-fill.svg │ │ │ ├── play.svg │ │ │ ├── playstation.svg │ │ │ ├── plug-fill.svg │ │ │ ├── plug.svg │ │ │ ├── plugin.svg │ │ │ ├── plus-circle-dotted.svg │ │ │ ├── plus-circle-fill.svg │ │ │ ├── plus-circle.svg │ │ │ ├── plus-lg.svg │ │ │ ├── plus-slash-minus.svg │ │ │ ├── plus-square-dotted.svg │ │ │ ├── plus-square-fill.svg │ │ │ ├── plus-square.svg │ │ │ ├── plus.svg │ │ │ ├── postage-fill.svg │ │ │ ├── postage-heart-fill.svg │ │ │ ├── postage-heart.svg │ │ │ ├── postage.svg │ │ │ ├── postcard-fill.svg │ │ │ ├── postcard-heart-fill.svg │ │ │ ├── postcard-heart.svg │ │ │ ├── postcard.svg │ │ │ ├── power.svg │ │ │ ├── prescription.svg │ │ │ ├── prescription2.svg │ │ │ ├── printer-fill.svg │ │ │ ├── printer.svg │ │ │ ├── projector-fill.svg │ │ │ ├── projector.svg │ │ │ ├── puzzle-fill.svg │ │ │ ├── puzzle.svg │ │ │ ├── qr-code-scan.svg │ │ │ ├── qr-code.svg │ │ │ ├── question-circle-fill.svg │ │ │ ├── question-circle.svg │ │ │ ├── question-diamond-fill.svg │ │ │ ├── question-diamond.svg │ │ │ ├── question-lg.svg │ │ │ ├── question-octagon-fill.svg │ │ │ ├── question-octagon.svg │ │ │ ├── question-square-fill.svg │ │ │ ├── question-square.svg │ │ │ ├── question.svg │ │ │ ├── quora.svg │ │ │ ├── quote.svg │ │ │ ├── r-circle-fill.svg │ │ │ ├── r-circle.svg │ │ │ ├── r-square-fill.svg │ │ │ ├── r-square.svg │ │ │ ├── radar.svg │ │ │ ├── radioactive.svg │ │ │ ├── rainbow.svg │ │ │ ├── receipt-cutoff.svg │ │ │ ├── receipt.svg │ │ │ ├── reception-0.svg │ │ │ ├── reception-1.svg │ │ │ ├── reception-2.svg │ │ │ ├── reception-3.svg │ │ │ ├── reception-4.svg │ │ │ ├── record-btn-fill.svg │ │ │ ├── record-btn.svg │ │ │ ├── record-circle-fill.svg │ │ │ ├── record-circle.svg │ │ │ ├── record-fill.svg │ │ │ ├── record.svg │ │ │ ├── record2-fill.svg │ │ │ ├── record2.svg │ │ │ ├── recycle.svg │ │ │ ├── reddit.svg │ │ │ ├── regex.svg │ │ │ ├── repeat-1.svg │ │ │ ├── repeat.svg │ │ │ ├── reply-all-fill.svg │ │ │ ├── reply-all.svg │ │ │ ├── reply-fill.svg │ │ │ ├── reply.svg │ │ │ ├── rewind-btn-fill.svg │ │ │ ├── rewind-btn.svg │ │ │ ├── rewind-circle-fill.svg │ │ │ ├── rewind-circle.svg │ │ │ ├── rewind-fill.svg │ │ │ ├── rewind.svg │ │ │ ├── robot.svg │ │ │ ├── rocket-fill.svg │ │ │ ├── rocket-takeoff-fill.svg │ │ │ ├── rocket-takeoff.svg │ │ │ ├── rocket.svg │ │ │ ├── router-fill.svg │ │ │ ├── router.svg │ │ │ ├── rss-fill.svg │ │ │ ├── rss.svg │ │ │ ├── rulers.svg │ │ │ ├── safe-fill.svg │ │ │ ├── safe.svg │ │ │ ├── safe2-fill.svg │ │ │ ├── safe2.svg │ │ │ ├── save-fill.svg │ │ │ ├── save.svg │ │ │ ├── save2-fill.svg │ │ │ ├── save2.svg │ │ │ ├── scissors.svg │ │ │ ├── scooter.svg │ │ │ ├── screwdriver.svg │ │ │ ├── sd-card-fill.svg │ │ │ ├── sd-card.svg │ │ │ ├── search-heart-fill.svg │ │ │ ├── search-heart.svg │ │ │ ├── search.svg │ │ │ ├── segmented-nav.svg │ │ │ ├── send-arrow-down-fill.svg │ │ │ ├── send-arrow-down.svg │ │ │ ├── send-arrow-up-fill.svg │ │ │ ├── send-arrow-up.svg │ │ │ ├── send-check-fill.svg │ │ │ ├── send-check.svg │ │ │ ├── send-dash-fill.svg │ │ │ ├── send-dash.svg │ │ │ ├── send-exclamation-fill.svg │ │ │ ├── send-exclamation.svg │ │ │ ├── send-fill.svg │ │ │ ├── send-plus-fill.svg │ │ │ ├── send-plus.svg │ │ │ ├── send-slash-fill.svg │ │ │ ├── send-slash.svg │ │ │ ├── send-x-fill.svg │ │ │ ├── send-x.svg │ │ │ ├── send.svg │ │ │ ├── server.svg │ │ │ ├── shadows.svg │ │ │ ├── share-fill.svg │ │ │ ├── share.svg │ │ │ ├── shield-check.svg │ │ │ ├── shield-exclamation.svg │ │ │ ├── shield-fill-check.svg │ │ │ ├── shield-fill-exclamation.svg │ │ │ ├── shield-fill-minus.svg │ │ │ ├── shield-fill-plus.svg │ │ │ ├── shield-fill-x.svg │ │ │ ├── shield-fill.svg │ │ │ ├── shield-lock-fill.svg │ │ │ ├── shield-lock.svg │ │ │ ├── shield-minus.svg │ │ │ ├── shield-plus.svg │ │ │ ├── shield-shaded.svg │ │ │ ├── shield-slash-fill.svg │ │ │ ├── shield-slash.svg │ │ │ ├── shield-x.svg │ │ │ ├── shield.svg │ │ │ ├── shift-fill.svg │ │ │ ├── shift.svg │ │ │ ├── shop-window.svg │ │ │ ├── shop.svg │ │ │ ├── shuffle.svg │ │ │ ├── sign-dead-end-fill.svg │ │ │ ├── sign-dead-end.svg │ │ │ ├── sign-do-not-enter-fill.svg │ │ │ ├── sign-do-not-enter.svg │ │ │ ├── sign-intersection-fill.svg │ │ │ ├── sign-intersection-side-fill.svg │ │ │ ├── sign-intersection-side.svg │ │ │ ├── sign-intersection-t-fill.svg │ │ │ ├── sign-intersection-t.svg │ │ │ ├── sign-intersection-y-fill.svg │ │ │ ├── sign-intersection-y.svg │ │ │ ├── sign-intersection.svg │ │ │ ├── sign-merge-left-fill.svg │ │ │ ├── sign-merge-left.svg │ │ │ ├── sign-merge-right-fill.svg │ │ │ ├── sign-merge-right.svg │ │ │ ├── sign-no-left-turn-fill.svg │ │ │ ├── sign-no-left-turn.svg │ │ │ ├── sign-no-parking-fill.svg │ │ │ ├── sign-no-parking.svg │ │ │ ├── sign-no-right-turn-fill.svg │ │ │ ├── sign-no-right-turn.svg │ │ │ ├── sign-railroad-fill.svg │ │ │ ├── sign-railroad.svg │ │ │ ├── sign-stop-fill.svg │ │ │ ├── sign-stop-lights-fill.svg │ │ │ ├── sign-stop-lights.svg │ │ │ ├── sign-stop.svg │ │ │ ├── sign-turn-left-fill.svg │ │ │ ├── sign-turn-left.svg │ │ │ ├── sign-turn-right-fill.svg │ │ │ ├── sign-turn-right.svg │ │ │ ├── sign-turn-slight-left-fill.svg │ │ │ ├── sign-turn-slight-left.svg │ │ │ ├── sign-turn-slight-right-fill.svg │ │ │ ├── sign-turn-slight-right.svg │ │ │ ├── sign-yield-fill.svg │ │ │ ├── sign-yield.svg │ │ │ ├── signal.svg │ │ │ ├── signpost-2-fill.svg │ │ │ ├── signpost-2.svg │ │ │ ├── signpost-fill.svg │ │ │ ├── signpost-split-fill.svg │ │ │ ├── signpost-split.svg │ │ │ ├── signpost.svg │ │ │ ├── sim-fill.svg │ │ │ ├── sim-slash-fill.svg │ │ │ ├── sim-slash.svg │ │ │ ├── sim.svg │ │ │ ├── sina-weibo.svg │ │ │ ├── skip-backward-btn-fill.svg │ │ │ ├── skip-backward-btn.svg │ │ │ ├── skip-backward-circle-fill.svg │ │ │ ├── skip-backward-circle.svg │ │ │ ├── skip-backward-fill.svg │ │ │ ├── skip-backward.svg │ │ │ ├── skip-end-btn-fill.svg │ │ │ ├── skip-end-btn.svg │ │ │ ├── skip-end-circle-fill.svg │ │ │ ├── skip-end-circle.svg │ │ │ ├── skip-end-fill.svg │ │ │ ├── skip-end.svg │ │ │ ├── skip-forward-btn-fill.svg │ │ │ ├── skip-forward-btn.svg │ │ │ ├── skip-forward-circle-fill.svg │ │ │ ├── skip-forward-circle.svg │ │ │ ├── skip-forward-fill.svg │ │ │ ├── skip-forward.svg │ │ │ ├── skip-start-btn-fill.svg │ │ │ ├── skip-start-btn.svg │ │ │ ├── skip-start-circle-fill.svg │ │ │ ├── skip-start-circle.svg │ │ │ ├── skip-start-fill.svg │ │ │ ├── skip-start.svg │ │ │ ├── skype.svg │ │ │ ├── slack.svg │ │ │ ├── slash-circle-fill.svg │ │ │ ├── slash-circle.svg │ │ │ ├── slash-lg.svg │ │ │ ├── slash-square-fill.svg │ │ │ ├── slash-square.svg │ │ │ ├── slash.svg │ │ │ ├── sliders.svg │ │ │ ├── sliders2-vertical.svg │ │ │ ├── sliders2.svg │ │ │ ├── smartwatch.svg │ │ │ ├── snapchat.svg │ │ │ ├── snow.svg │ │ │ ├── snow2.svg │ │ │ ├── snow3.svg │ │ │ ├── sort-alpha-down-alt.svg │ │ │ ├── sort-alpha-down.svg │ │ │ ├── sort-alpha-up-alt.svg │ │ │ ├── sort-alpha-up.svg │ │ │ ├── sort-down-alt.svg │ │ │ ├── sort-down.svg │ │ │ ├── sort-numeric-down-alt.svg │ │ │ ├── sort-numeric-down.svg │ │ │ ├── sort-numeric-up-alt.svg │ │ │ ├── sort-numeric-up.svg │ │ │ ├── sort-up-alt.svg │ │ │ ├── sort-up.svg │ │ │ ├── soundwave.svg │ │ │ ├── sourceforge.svg │ │ │ ├── speaker-fill.svg │ │ │ ├── speaker.svg │ │ │ ├── speedometer.svg │ │ │ ├── speedometer2.svg │ │ │ ├── spellcheck.svg │ │ │ ├── spotify.svg │ │ │ ├── square-fill.svg │ │ │ ├── square-half.svg │ │ │ ├── square.svg │ │ │ ├── stack-overflow.svg │ │ │ ├── stack.svg │ │ │ ├── star-fill.svg │ │ │ ├── star-half.svg │ │ │ ├── star.svg │ │ │ ├── stars.svg │ │ │ ├── steam.svg │ │ │ ├── stickies-fill.svg │ │ │ ├── stickies.svg │ │ │ ├── sticky-fill.svg │ │ │ ├── sticky.svg │ │ │ ├── stop-btn-fill.svg │ │ │ ├── stop-btn.svg │ │ │ ├── stop-circle-fill.svg │ │ │ ├── stop-circle.svg │ │ │ ├── stop-fill.svg │ │ │ ├── stop.svg │ │ │ ├── stoplights-fill.svg │ │ │ ├── stoplights.svg │ │ │ ├── stopwatch-fill.svg │ │ │ ├── stopwatch.svg │ │ │ ├── strava.svg │ │ │ ├── stripe.svg │ │ │ ├── subscript.svg │ │ │ ├── substack.svg │ │ │ ├── subtract.svg │ │ │ ├── suit-club-fill.svg │ │ │ ├── suit-club.svg │ │ │ ├── suit-diamond-fill.svg │ │ │ ├── suit-diamond.svg │ │ │ ├── suit-heart-fill.svg │ │ │ ├── suit-heart.svg │ │ │ ├── suit-spade-fill.svg │ │ │ ├── suit-spade.svg │ │ │ ├── suitcase-fill.svg │ │ │ ├── suitcase-lg-fill.svg │ │ │ ├── suitcase-lg.svg │ │ │ ├── suitcase.svg │ │ │ ├── suitcase2-fill.svg │ │ │ ├── suitcase2.svg │ │ │ ├── sun-fill.svg │ │ │ ├── sun.svg │ │ │ ├── sunglasses.svg │ │ │ ├── sunrise-fill.svg │ │ │ ├── sunrise.svg │ │ │ ├── sunset-fill.svg │ │ │ ├── sunset.svg │ │ │ ├── superscript.svg │ │ │ ├── symmetry-horizontal.svg │ │ │ ├── symmetry-vertical.svg │ │ │ ├── table.svg │ │ │ ├── tablet-fill.svg │ │ │ ├── tablet-landscape-fill.svg │ │ │ ├── tablet-landscape.svg │ │ │ ├── tablet.svg │ │ │ ├── tag-fill.svg │ │ │ ├── tag.svg │ │ │ ├── tags-fill.svg │ │ │ ├── tags.svg │ │ │ ├── taxi-front-fill.svg │ │ │ ├── taxi-front.svg │ │ │ ├── telegram.svg │ │ │ ├── telephone-fill.svg │ │ │ ├── telephone-forward-fill.svg │ │ │ ├── telephone-forward.svg │ │ │ ├── telephone-inbound-fill.svg │ │ │ ├── telephone-inbound.svg │ │ │ ├── telephone-minus-fill.svg │ │ │ ├── telephone-minus.svg │ │ │ ├── telephone-outbound-fill.svg │ │ │ ├── telephone-outbound.svg │ │ │ ├── telephone-plus-fill.svg │ │ │ ├── telephone-plus.svg │ │ │ ├── telephone-x-fill.svg │ │ │ ├── telephone-x.svg │ │ │ ├── telephone.svg │ │ │ ├── tencent-qq.svg │ │ │ ├── terminal-dash.svg │ │ │ ├── terminal-fill.svg │ │ │ ├── terminal-plus.svg │ │ │ ├── terminal-split.svg │ │ │ ├── terminal-x.svg │ │ │ ├── terminal.svg │ │ │ ├── text-center.svg │ │ │ ├── text-indent-left.svg │ │ │ ├── text-indent-right.svg │ │ │ ├── text-left.svg │ │ │ ├── text-paragraph.svg │ │ │ ├── text-right.svg │ │ │ ├── text-wrap.svg │ │ │ ├── textarea-resize.svg │ │ │ ├── textarea-t.svg │ │ │ ├── textarea.svg │ │ │ ├── thermometer-half.svg │ │ │ ├── thermometer-high.svg │ │ │ ├── thermometer-low.svg │ │ │ ├── thermometer-snow.svg │ │ │ ├── thermometer-sun.svg │ │ │ ├── thermometer.svg │ │ │ ├── threads-fill.svg │ │ │ ├── threads.svg │ │ │ ├── three-dots-vertical.svg │ │ │ ├── three-dots.svg │ │ │ ├── thunderbolt-fill.svg │ │ │ ├── thunderbolt.svg │ │ │ ├── ticket-detailed-fill.svg │ │ │ ├── ticket-detailed.svg │ │ │ ├── ticket-fill.svg │ │ │ ├── ticket-perforated-fill.svg │ │ │ ├── ticket-perforated.svg │ │ │ ├── ticket.svg │ │ │ ├── tiktok.svg │ │ │ ├── toggle-off.svg │ │ │ ├── toggle-on.svg │ │ │ ├── toggle2-off.svg │ │ │ ├── toggle2-on.svg │ │ │ ├── toggles.svg │ │ │ ├── toggles2.svg │ │ │ ├── tools.svg │ │ │ ├── tornado.svg │ │ │ ├── train-freight-front-fill.svg │ │ │ ├── train-freight-front.svg │ │ │ ├── train-front-fill.svg │ │ │ ├── train-front.svg │ │ │ ├── train-lightrail-front-fill.svg │ │ │ ├── train-lightrail-front.svg │ │ │ ├── translate.svg │ │ │ ├── transparency.svg │ │ │ ├── trash-fill.svg │ │ │ ├── trash.svg │ │ │ ├── trash2-fill.svg │ │ │ ├── trash2.svg │ │ │ ├── trash3-fill.svg │ │ │ ├── trash3.svg │ │ │ ├── tree-fill.svg │ │ │ ├── tree.svg │ │ │ ├── trello.svg │ │ │ ├── triangle-fill.svg │ │ │ ├── triangle-half.svg │ │ │ ├── triangle.svg │ │ │ ├── trophy-fill.svg │ │ │ ├── trophy.svg │ │ │ ├── tropical-storm.svg │ │ │ ├── truck-flatbed.svg │ │ │ ├── truck-front-fill.svg │ │ │ ├── truck-front.svg │ │ │ ├── truck.svg │ │ │ ├── tsunami.svg │ │ │ ├── tv-fill.svg │ │ │ ├── tv.svg │ │ │ ├── twitch.svg │ │ │ ├── twitter-x.svg │ │ │ ├── twitter.svg │ │ │ ├── type-bold.svg │ │ │ ├── type-h1.svg │ │ │ ├── type-h2.svg │ │ │ ├── type-h3.svg │ │ │ ├── type-h4.svg │ │ │ ├── type-h5.svg │ │ │ ├── type-h6.svg │ │ │ ├── type-italic.svg │ │ │ ├── type-strikethrough.svg │ │ │ ├── type-underline.svg │ │ │ ├── type.svg │ │ │ ├── ubuntu.svg │ │ │ ├── ui-checks-grid.svg │ │ │ ├── ui-checks.svg │ │ │ ├── ui-radios-grid.svg │ │ │ ├── ui-radios.svg │ │ │ ├── umbrella-fill.svg │ │ │ ├── umbrella.svg │ │ │ ├── unindent.svg │ │ │ ├── union.svg │ │ │ ├── unity.svg │ │ │ ├── universal-access-circle.svg │ │ │ ├── universal-access.svg │ │ │ ├── unlock-fill.svg │ │ │ ├── unlock.svg │ │ │ ├── upc-scan.svg │ │ │ ├── upc.svg │ │ │ ├── upload.svg │ │ │ ├── usb-c-fill.svg │ │ │ ├── usb-c.svg │ │ │ ├── usb-drive-fill.svg │ │ │ ├── usb-drive.svg │ │ │ ├── usb-fill.svg │ │ │ ├── usb-micro-fill.svg │ │ │ ├── usb-micro.svg │ │ │ ├── usb-mini-fill.svg │ │ │ ├── usb-mini.svg │ │ │ ├── usb-plug-fill.svg │ │ │ ├── usb-plug.svg │ │ │ ├── usb-symbol.svg │ │ │ ├── usb.svg │ │ │ ├── valentine.svg │ │ │ ├── valentine2.svg │ │ │ ├── vector-pen.svg │ │ │ ├── view-list.svg │ │ │ ├── view-stacked.svg │ │ │ ├── vignette.svg │ │ │ ├── vimeo.svg │ │ │ ├── vinyl-fill.svg │ │ │ ├── vinyl.svg │ │ │ ├── virus.svg │ │ │ ├── virus2.svg │ │ │ ├── voicemail.svg │ │ │ ├── volume-down-fill.svg │ │ │ ├── volume-down.svg │ │ │ ├── volume-mute-fill.svg │ │ │ ├── volume-mute.svg │ │ │ ├── volume-off-fill.svg │ │ │ ├── volume-off.svg │ │ │ ├── volume-up-fill.svg │ │ │ ├── volume-up.svg │ │ │ ├── vr.svg │ │ │ ├── wallet-fill.svg │ │ │ ├── wallet.svg │ │ │ ├── wallet2.svg │ │ │ ├── watch.svg │ │ │ ├── water.svg │ │ │ ├── webcam-fill.svg │ │ │ ├── webcam.svg │ │ │ ├── wechat.svg │ │ │ ├── whatsapp.svg │ │ │ ├── wifi-1.svg │ │ │ ├── wifi-2.svg │ │ │ ├── wifi-off.svg │ │ │ ├── wifi.svg │ │ │ ├── wikipedia.svg │ │ │ ├── wind.svg │ │ │ ├── window-dash.svg │ │ │ ├── window-desktop.svg │ │ │ ├── window-dock.svg │ │ │ ├── window-fullscreen.svg │ │ │ ├── window-plus.svg │ │ │ ├── window-sidebar.svg │ │ │ ├── window-split.svg │ │ │ ├── window-stack.svg │ │ │ ├── window-x.svg │ │ │ ├── window.svg │ │ │ ├── windows.svg │ │ │ ├── wordpress.svg │ │ │ ├── wrench-adjustable-circle-fill.svg │ │ │ ├── wrench-adjustable-circle.svg │ │ │ ├── wrench-adjustable.svg │ │ │ ├── wrench.svg │ │ │ ├── x-circle-fill.svg │ │ │ ├── x-circle.svg │ │ │ ├── x-diamond-fill.svg │ │ │ ├── x-diamond.svg │ │ │ ├── x-lg.svg │ │ │ ├── x-octagon-fill.svg │ │ │ ├── x-octagon.svg │ │ │ ├── x-square-fill.svg │ │ │ ├── x-square.svg │ │ │ ├── x.svg │ │ │ ├── xbox.svg │ │ │ ├── yelp.svg │ │ │ ├── yin-yang.svg │ │ │ ├── youtube.svg │ │ │ ├── zoom-in.svg │ │ │ └── zoom-out.svg │ │ ├── emissary │ │ │ ├── Emissary-Icon-Black.svg │ │ │ └── Emissary-Icon-White.svg │ │ ├── htmx │ │ │ ├── ext │ │ │ │ ├── ajax-header.js │ │ │ │ ├── alpine-morph.js │ │ │ │ ├── class-tools.js │ │ │ │ ├── client-side-templates.js │ │ │ │ ├── debug.js │ │ │ │ ├── disable-element.js │ │ │ │ ├── event-header.js │ │ │ │ ├── head-support.js │ │ │ │ ├── include-vals.js │ │ │ │ ├── json-enc.js │ │ │ │ ├── loading-states.js │ │ │ │ ├── method-override.js │ │ │ │ ├── morphdom-swap.js │ │ │ │ ├── multi-swap.js │ │ │ │ ├── path-deps.js │ │ │ │ ├── path-params.js │ │ │ │ ├── preload.js │ │ │ │ ├── rails-method.js │ │ │ │ ├── remove-me.js │ │ │ │ ├── response-targets.js │ │ │ │ ├── restored.js │ │ │ │ ├── sse.js │ │ │ │ └── ws.js │ │ │ ├── htmx.js │ │ │ └── htmx.min.js │ │ ├── hyperscript │ │ │ ├── _hyperscript.min.js │ │ │ └── eventsource.js │ │ ├── sortable-1.15.0 │ │ │ └── Sortable.min.js │ │ └── vanillaCaret │ │ │ ├── about.txt │ │ │ └── vanillaCaret.min.js │ ├── signin.html │ ├── stylesheet │ │ ├── 00-normalize.css │ │ ├── 01-colors.css │ │ ├── 02-accessibility.css │ │ ├── 02-animations.css │ │ ├── 02-backgrounds.css │ │ ├── 02-content.css │ │ ├── 02-forms.css │ │ ├── 02-typography.css │ │ ├── 03-widgets-alert.css │ │ ├── 03-widgets-card.css │ │ ├── 03-widgets-draggable.css │ │ ├── 03-widgets-hover.css │ │ ├── 03-widgets-menu.css │ │ ├── 03-widgets-modal.css │ │ ├── 03-widgets-picture.css │ │ ├── 03-widgets-popUp.css │ │ ├── 03-widgets-slideshow.css │ │ ├── 03-widgets-tables.css │ │ ├── 03-widgets-tabs.css │ │ ├── 03-widgets-tags.css │ │ ├── 03-widgets-tooltips.css │ │ ├── 03-widgets-uploader.css │ │ ├── 05-geometry.css │ │ ├── 05-margins.css │ │ ├── 05-padding.css │ │ ├── 05-positioning.css │ │ ├── 09-columns.css │ │ ├── 09-display.css │ │ ├── 09-flexbox.css │ │ └── 09-width.css │ └── theme.hjson │ ├── user-inbox │ ├── actor-button-block.html │ ├── actor-button-follow.html │ ├── actor-button-mute.html │ ├── actor-button-none.html │ ├── actor-button.html │ ├── attachments.html │ ├── filter.html │ ├── follow-button.html │ ├── follower-activitypub.html │ ├── follower-email.html │ ├── follower-websub.html │ ├── follower.html │ ├── followers-list.html │ ├── followers.html │ ├── following-add.html │ ├── following-edit.html │ ├── following-list.html │ ├── following-search-results.html │ ├── following-search.html │ ├── following.html │ ├── hyperscript │ │ ├── listitem._hs │ │ └── message._hs │ ├── inbox.html │ ├── list-before.html │ ├── list-magazine.html │ ├── list-newspaper.html │ ├── list-social.html │ ├── list.html │ ├── message-mute-button.html │ ├── message.html │ ├── origin.html │ ├── profile.html │ ├── responses-announces.html │ ├── responses-likes.html │ ├── responses-list.html │ ├── responses-replies-list.html │ ├── responses-replies-recursive.html │ ├── responses-replies.html │ ├── rule-add.html │ ├── rule-edit-actor.html │ ├── rule-edit-admin.html │ ├── rule-edit-content.html │ ├── rule-edit-domain.html │ ├── rule-edit-remote.html │ ├── rule-edit.html │ ├── rule.html │ ├── rules-list.html │ ├── rules.html │ ├── sidebar-remote.html │ ├── sidebar.html │ ├── stylesheet │ │ ├── app.css │ │ ├── draggable.css │ │ ├── icons.css │ │ └── menu.css │ └── template.hjson │ ├── user-outbox │ ├── activitypub-profile.html │ ├── block.html │ ├── delete.html │ ├── follow-activitypub.html │ ├── follow-heading.html │ ├── follow.html │ ├── follower-confirm.html │ ├── follower-unsubscribe.html │ ├── icon-edit.html │ ├── icon-preview.html │ ├── liked-list.html │ ├── liked.html │ ├── links.html │ ├── outbox-list.html │ ├── outbox.html │ ├── replied-list.html │ ├── replied.html │ ├── sidebar.html │ ├── stylesheet │ │ └── app.css │ └── template.hjson │ ├── widget-breadrumbs │ ├── widget.hjson │ └── widget.html │ ├── widget-byline │ ├── widget.hjson │ └── widget.html │ ├── widget-hr │ ├── widget.hjson │ └── widget.html │ ├── widget-html │ ├── widget.hjson │ └── widget.html │ ├── widget-mentions │ ├── widget.hjson │ └── widget.html │ ├── widget-navigation-list │ ├── children.html │ ├── grandparents.html │ ├── parents.html │ ├── siblings.html │ ├── widget.hjson │ └── widget.html │ ├── widget-scrollspy │ ├── hyperscript │ │ └── scrollspy._hs │ ├── widget.hjson │ └── widget.html │ ├── widget-share │ ├── widget.hjson │ └── widget.html │ └── widget-title │ ├── widget.hjson │ └── widget.html ├── build ├── build.go ├── build_follower_test.go ├── builder_.go ├── builder_admin_domain.go ├── builder_admin_domains_test.go ├── builder_admin_groups.go ├── builder_admin_navigation.go ├── builder_admin_rule.go ├── builder_admin_syndication.go ├── builder_admin_tags.go ├── builder_admin_users.go ├── builder_admin_webhooks.go ├── builder_attachment.go ├── builder_common.go ├── builder_common_with_template.go ├── builder_follower.go ├── builder_inbox.go ├── builder_model.go ├── builder_oAuthAuthorization.go ├── builder_outbox.go ├── builder_outbox_test.go ├── builder_registration.go ├── builder_stream.go ├── builder_widget.go ├── constants.go ├── factory.go ├── functions.go ├── functions_test.go ├── interfaces.go ├── pipeline.go ├── pipeline_behavior.go ├── pipeline_result.go ├── queryBuilder.go ├── searchBuilder.go ├── step_.go ├── step_AddModelObject.go ├── step_AddStream.go ├── step_AsConfirmation.go ├── step_AsModal.go ├── step_AsTooltip.go ├── step_CacheURL.go ├── step_Delete.go ├── step_DeleteArchive.go ├── step_DeleteAttachments.go ├── step_Do.go ├── step_Dump.go ├── step_EditConnection.go ├── step_EditContent.go ├── step_EditModelObject.go ├── step_EditRegistration.go ├── step_EditTable.go ├── step_EditTemplate.go ├── step_EditWidget.go ├── step_Error.go ├── step_ForwardTo.go ├── step_GetArchive.go ├── step_Halt.go ├── step_IfCondition.go ├── step_InlineError.go ├── step_InlineSaveButton.go ├── step_InlineSuccess.go ├── step_MakeArchive.go ├── step_ProcessContent.go ├── step_ProcessTags.go ├── step_PromoteDraft.go ├── step_RedirectTo.go ├── step_RefreshPage.go ├── step_ReloadPage.go ├── step_RemoveEvent.go ├── step_Save.go ├── step_SaveAndPublish.go ├── step_SearchIndex.go ├── step_SendEmail.go ├── step_SetData.go ├── step_SetHeader.go ├── step_SetPassword.go ├── step_SetQueryParam.go ├── step_SetRenderData.go ├── step_SetResponse.go ├── step_SetSimpleSharing.go ├── step_SetState.go ├── step_SetThumbnail.go ├── step_Sleep.go ├── step_Sort.go ├── step_SortAttachments.go ├── step_SortWidgets.go ├── step_TriggerEvent.go ├── step_UnPublish.go ├── step_UploadAttachments.go ├── step_ViewCSS.go ├── step_ViewFeed.go ├── step_ViewHTML.go ├── step_WebSub.go ├── step_WebSub_test.go ├── step_WithAttachment.go ├── step_WithChildren.go ├── step_WithDraft.go ├── step_WithFolder.go ├── step_WithFollower.go ├── step_WithFollowing.go ├── step_WithMessage.go ├── step_WithNextSibling.go ├── step_WithParent.go ├── step_WithPrevSibling.go ├── step_WithResponse.go ├── step_WithRule.go ├── utilities.go └── utilities_test.go ├── config ├── commandline.go ├── config.go ├── config_accessors.go ├── config_test.go ├── constants.go ├── database.go ├── domain.go ├── domain_accessors.go ├── domain_test.go ├── folder.go ├── folder_accessors.go ├── folder_test.go ├── option.go ├── owner.go ├── owner_accessors.go ├── owner_test.go ├── provider.go ├── provider_accessors.go ├── provider_test.go ├── smtp.go ├── smtp_accessors.go ├── smtp_test.go ├── storage.go ├── storage_file.go ├── storage_mongo.go └── test_test.go ├── consumer ├── consumer.go ├── createWebSubFollower.go ├── deleteEmptySearchQuery.go ├── factory.go ├── geocode.go ├── indexAllStreams.go ├── indexAllUsers.go ├── makeStreamArchive.go ├── processMedia.go ├── receiveWebMention.go ├── recycle.go ├── schedule.go ├── scheduleDaily.go ├── scheduleHourly.go ├── sendActivityPubMessage.go ├── sendSearchResults-Global.go ├── sendSearchResults-SearchQuery.go ├── sendWebMention.go ├── sendWebSubMessage.go ├── shuffle.go ├── streamSyndicate.go ├── utilities.go └── wrappers.go ├── docker-compose-production.yml ├── docker-compose.yml ├── domain ├── collections.go ├── domain.go ├── factory.go ├── httpRequest.go ├── realtimeBroker.go └── realtimeClient.go ├── go.mod ├── go.sum ├── handler ├── activitypub │ ├── collection.go │ └── utils.go ├── activitypub_domain │ ├── actor.go │ ├── context.go │ ├── inbox.go │ ├── outbox.go │ ├── receive_any.go │ ├── receive_follow_any.go │ ├── receive_undo_follow.go │ ├── router.go │ └── utilities.go ├── activitypub_search │ ├── actor.go │ ├── context.go │ ├── inbox.go │ ├── outbox.go │ ├── receive_any.go │ ├── receive_follow_any.go │ ├── receive_undo_follow.go │ ├── router.go │ └── utilities.go ├── activitypub_stream │ ├── children.go │ ├── context.go │ ├── followers.go │ ├── inbox.go │ ├── outbox.go │ ├── receive_any.go │ ├── receive_delete_any.go │ ├── receive_delete_person.go │ ├── receive_follow_any.go │ ├── receive_undo_follow.go │ ├── responses.go │ ├── router.go │ ├── stream.go │ └── utilities.go ├── activitypub_user │ ├── blocked.go │ ├── featured.go │ ├── followers.go │ ├── following.go │ ├── inbox.go │ ├── key.go │ ├── outbox.go │ ├── profile.go │ ├── receive_accept_follow.go │ ├── receive_block_any.go │ ├── receive_create_any.go │ ├── receive_delete_any.go │ ├── receive_delete_person.go │ ├── receive_follow_any.go │ ├── receive_like_any.go │ ├── receive_undo_block.go │ ├── receive_undo_follow.go │ ├── receive_undo_like.go │ ├── router.go │ ├── user_responses.go │ └── utilities.go ├── admin.go ├── attachment.go ├── blocked.go ├── bundles.go ├── close_window.go ├── favicon.go ├── follow_email.go ├── following.go ├── giphy.go ├── handler.go ├── host.go ├── inbox.go ├── intent_continue.go ├── intent_create.go ├── intent_discovery.go ├── intent_dislike.go ├── intent_follow.go ├── intent_header.go ├── intent_like.go ├── intent_outbound.go ├── jsonld.go ├── mastodon.go ├── mastodon │ ├── accounts.go │ ├── announcements.go │ ├── application.go │ ├── authorizer.go │ ├── blocks.go │ ├── bookmarks.go │ ├── conversations.go │ ├── customEmoji.go │ ├── directory.go │ ├── domain_blocks.go │ ├── emails.go │ ├── endorsements.go │ ├── favourites.go │ ├── featured_tags.go │ ├── filters.go │ ├── follow_requests.go │ ├── followed_tags.go │ ├── instance.go │ ├── lists.go │ ├── markers.go │ ├── media.go │ ├── mutes.go │ ├── notifications.go │ ├── oauth.go │ ├── oembed.go │ ├── polls.go │ ├── preferences.go │ ├── profile.go │ ├── reports.go │ ├── scheduled_statuses.go │ ├── search.go │ ├── status.go │ ├── suggestions.go │ ├── tags.go │ ├── timelines.go │ ├── trends.go │ └── utils.go ├── modelService.go ├── nodeInfo.go ├── oauth-client.go ├── oauth-server.go ├── oembed.go ├── oembed_test.go ├── ostatus.go ├── outbox.go ├── qrcode.go ├── registration.go ├── resources.go ├── search.go ├── service_actor.go ├── setup_domain.go ├── setup_oauth.go ├── setup_server.go ├── setup_users.go ├── signin.go ├── signin_masquerade.go ├── single-signon.go ├── sse.go ├── startup.go ├── stream.go ├── stripe │ └── webhook.go ├── tbd.go ├── template.go ├── unsplash │ └── unsplash.go ├── utilities.go ├── validate.go ├── webfinger.go ├── webmention.go ├── websub.go ├── wrappers.go └── writeCloser.go ├── middleware ├── authenticated.go ├── cache.go ├── csrf.go ├── debug.go ├── domain.go ├── https.go ├── localhost.go ├── middleware.go ├── mimeType.go └── owner.go ├── model ├── action.go ├── activityStreams.go ├── attachment.go ├── attachmentRules.go ├── attachmentRules_accessors.go ├── attachment_accessors.go ├── attachment_constants.go ├── attachment_test.go ├── authorization.go ├── bundle.go ├── connection.go ├── connection_accessors.go ├── connection_constants.go ├── connection_test.go ├── content.go ├── content_accessors.go ├── content_constants.go ├── content_test.go ├── domain.go ├── domain_accessors.go ├── domain_constants.go ├── domain_test.go ├── email.go ├── encryptionKey.go ├── encryptionKey_constants.go ├── folder.go ├── folderList.go ├── folder_accessors.go ├── folder_constants.go ├── folder_test.go ├── follower.go ├── followerSummary.go ├── follower_accessors.go ├── follower_constants.go ├── follower_test.go ├── following.go ├── followingSummary.go ├── following_accessors.go ├── following_constants.go ├── following_test.go ├── group.go ├── group_accessors.go ├── group_test.go ├── idOnly.go ├── interfaces.go ├── jsonld.go ├── jwt.go ├── linkDocument.go ├── linkDocument_accessors.go ├── linkDocument_test.go ├── linkOrigin.go ├── linkOrigin_accessors.go ├── linkOrigin_constants.go ├── linkOrigin_test.go ├── linkPerson.go ├── linkPerson_accessors.go ├── linkPerson_test.go ├── link_constants.go ├── magic.go ├── mention.go ├── mention_accessors.go ├── mention_constants.go ├── mention_test.go ├── message.go ├── message_accessors.go ├── message_constants.go ├── message_test.go ├── mimeType.go ├── model.go ├── oauthAuthorizationRequest.go ├── oauthClient.go ├── oauthClient_accessors.go ├── oauthUserToken.go ├── oauthUserTokenRequest.go ├── oauthUserTokenRevokeRequest.go ├── oauthUserToken_accessors.go ├── outboxMessage.go ├── outboxMessageSummary.go ├── outboxMessage_accessors.go ├── outboxMessage_test.go ├── passwordReset.go ├── place.go ├── place_accessors.go ├── place_test.go ├── registration.go ├── registrationTxn.go ├── response.go ├── response_accessors.go ├── response_test.go ├── role.go ├── rule.go ├── ruleSummary.go ├── rule_accessors.go ├── rule_constants.go ├── rule_filters.go ├── rule_test.go ├── searchQuery.go ├── searchResult.go ├── searchTag.go ├── searchTag_accessors.go ├── searchTag_constants.go ├── searchTag_test.go ├── state.go ├── step │ ├── addModelObject.go │ ├── addStream.go │ ├── asConfirmation.go │ ├── asModal.go │ ├── asTooltip.go │ ├── cacheUrl.go │ ├── delete.go │ ├── deleteArchive.go │ ├── deleteAttachments.go │ ├── do.go │ ├── dump.go │ ├── editConnection.go │ ├── editContent.go │ ├── editModelObject.go │ ├── editRegistration.go │ ├── editTable.go │ ├── editTemplate.go │ ├── editWidget.go │ ├── forwardTo.go │ ├── functions.go │ ├── getArchive.go │ ├── halt.go │ ├── ifCondition.go │ ├── inlineError.go │ ├── inlineSaveButton.go │ ├── inlineSuccess.go │ ├── makeArchive.go │ ├── processContent.go │ ├── processTags.go │ ├── promoteDraft.go │ ├── redirectTo.go │ ├── refreshPage.go │ ├── reloadPage.go │ ├── removeEvent.go │ ├── save.go │ ├── saveAndPublish.go │ ├── searchIndex.go │ ├── sendEmail.go │ ├── setData.go │ ├── setHeader.go │ ├── setPassword.go │ ├── setQueryParam.go │ ├── setRenderData.go │ ├── setResponse.go │ ├── setSimpleSharing.go │ ├── setState.go │ ├── setThumbnail.go │ ├── sleep.go │ ├── sort.go │ ├── sortAttachments.go │ ├── sortWidgets.go │ ├── step.go │ ├── triggerEvent.go │ ├── unPublish.go │ ├── uploadAttachments.go │ ├── utils.go │ ├── viewCSS.go │ ├── viewFeed.go │ ├── viewHTML.go │ ├── webSub.go │ ├── withAttachment.go │ ├── withChildren.go │ ├── withDraft.go │ ├── withFolder.go │ ├── withFollower.go │ ├── withFollowing.go │ ├── withMessage.go │ ├── withNextSibling.go │ ├── withParent.go │ ├── withPrevSibling.go │ ├── withResponse.go │ └── withRule.go ├── stream.go ├── streamActor.go ├── streamSummary.go ├── streamWidget.go ├── streamWidget_accessors.go ├── stream_accessors.go ├── stream_test.go ├── template.go ├── test_test.go ├── theme.go ├── user.go ├── userResponseSummary.go ├── userSummary.go ├── user_accessors.go ├── user_constants.go ├── user_test.go ├── utils.go ├── utils_test.go ├── webhook.go ├── webhook_accessors.go ├── webhook_constants.go ├── webhook_test.go └── widget.go ├── protocols └── websub │ └── README.md ├── queries ├── activitystream.go ├── aggregates.go ├── block.go ├── counter.go ├── folder.go ├── followers.go ├── following.go ├── general.go ├── messages.go ├── queries.go ├── recycle.go ├── responses.go ├── searchResults.go ├── searchTags.go ├── shuffle.go ├── stream.go ├── streamWatcher.go ├── upgrade.go ├── upgrades │ ├── eachRecord.go │ ├── indexes.go │ ├── v001.go │ ├── v002.go │ ├── v003.go │ ├── v004.go │ ├── v005.go │ ├── v006.go │ ├── v007.go │ ├── v008.go │ ├── v009.go │ ├── v010.go │ ├── v011.go │ ├── v012.go │ ├── v013.go │ ├── v014.go │ ├── v015.go │ ├── v016.go │ ├── v017.go │ ├── v018.go │ └── v019.go ├── userWatcher.go └── utils.go ├── server.go ├── server ├── factory.go └── server.go ├── service ├── activityStream.go ├── attachment.go ├── bundle.go ├── config.go ├── connection.go ├── content.go ├── domain.go ├── domainEmail.go ├── domain_activityPub.go ├── encryptionKey.go ├── filesystem.go ├── folder.go ├── folderLookupProvider.go ├── follower.go ├── following_.go ├── following_activityPub.go ├── following_connect.go ├── following_disconnect.go ├── following_threads.go ├── following_threads_test.go ├── following_webSub.go ├── geocode.go ├── geocode_test.go ├── group.go ├── groupLookupProvider.go ├── icons.go ├── inbox.go ├── interfaces.go ├── jwt.go ├── jwt_test.go ├── locator.go ├── locator_test.go ├── lookupProvider.go ├── mention.go ├── mention_test.go ├── modelService.go ├── oauthClient.go ├── oauthUserToken.go ├── outbox.go ├── outbox_publish.go ├── provider.go ├── providers │ ├── arcGis.go │ ├── factory.go │ ├── giphy.go │ ├── googleMaps.go │ ├── null.go │ ├── openStreetMap.go │ ├── provider.go │ ├── stripe.go │ ├── stripe_test.go │ └── unsplash.go ├── registration.go ├── response.go ├── rss.go ├── rule.go ├── ruleFilter.go ├── ruleFilterOption.go ├── ruleFilter_send.go ├── ruleJSONLDGetter.go ├── rule_activitypub.go ├── rule_publish.go ├── scheduler.go ├── searchDomain.go ├── searchNotifier.go ├── searchQuery.go ├── searchResult.go ├── searchTag.go ├── serverEmail.go ├── service.go ├── steranko.go ├── stream.go ├── streamArchive.go ├── streamArchiveOptions.go ├── streamDraft.go ├── streamJSONLDGetter.go ├── stream_activitypub.go ├── stream_mastodon.go ├── stream_publish.go ├── stream_syndication.go ├── stream_test.go ├── stream_webfinger.go ├── template.go ├── theme.go ├── theme_lookupProvider.go ├── user.go ├── user_activitypub.go ├── utilities.go ├── utilities_test.go ├── webhook.go └── widget.go └── tools ├── ascache ├── client-loadOption.go ├── client-statistics.go ├── client.go ├── clientOption.go ├── constants.go ├── refresh.go ├── tasks.go └── value.go ├── ascacherules ├── client.go ├── constants.go └── utils.go ├── ascontextmaker ├── client-loadOption.go ├── client.go └── clientOption.go ├── ascrawler ├── client.go └── clientOption.go ├── ashash ├── client.go ├── client_test.go └── innerClient_test.go ├── asnormalizer ├── README.md ├── actor.go ├── announce.go ├── attachment.go ├── client.go ├── context.go ├── dislike.go ├── image.go ├── like.go ├── object.go ├── tags.go └── utils.go ├── cacheheader ├── constants.go ├── header.go ├── headerOption.go └── header_test.go ├── camper ├── README.md ├── camper.go ├── intentTypes.go ├── meta │ └── logo.webp ├── options.go ├── transactions.go ├── utils.go └── utils_test.go ├── channels ├── channels.go └── merge.go ├── convert ├── activitypub.go ├── convert.go ├── gorillafeed.go ├── jsonfeed.go ├── microformat.go ├── rss.go └── sanitize.go ├── counter ├── counter.go └── counter_test.go ├── dataset ├── dataset.go ├── icons.go └── providers.go ├── datetime ├── datetime.go └── datetime_test.go ├── formdata └── parse.go ├── groupie └── groupie.go ├── hmac └── hmac.go ├── honeypot ├── README.md └── validate.go ├── httpcache ├── adapter-otter.go ├── adapter-redis.go ├── adapter.go ├── adapter_test.go ├── cache.go ├── constants.go ├── middleware.go ├── option.go └── roudtripper.go ├── id ├── convert.go ├── id.go ├── slice.go ├── slice_test.go └── slice_tools.go ├── jsontemplate ├── README.md ├── constants.go ├── option.go ├── template.go └── template_test.go ├── nodeinfo ├── client.go ├── constants.go ├── nodeinfo.go └── wellknown.go ├── parse ├── constants.go ├── option.go ├── parse.go ├── parser.go ├── parser_test.go ├── split.go ├── split_test.go └── utils.go ├── random ├── random.go └── random_test.go ├── s3uri ├── option.go ├── s3uri.go └── s3uri_test.go ├── set ├── map.go ├── map_test.go ├── set.go ├── set_test.go ├── slice.go ├── tools.go └── value.go ├── sorted ├── contains.go ├── contains_test.go ├── sorted.go ├── unique.go └── unique_test.go ├── striputm ├── README.md └── striputm.go ├── templatemap ├── map.go └── map_test.go ├── templates ├── functions.go └── interfaces.go ├── tinyDate ├── format.go └── format_test.go ├── tools.go └── val ├── enum.go └── val.go /.do/app.yaml: -------------------------------------------------------------------------------- 1 | spec: 2 | name: emissary 3 | services: 4 | - name: server 5 | git: 6 | branch: main 7 | repo_clone_url: https://github.com/EmissarySocial/emissary.git 8 | dockerfile_path: ".docker/prod-dockerfile" 9 | envs: 10 | - key: EMISSARY_CONFIG 11 | value: "mongodb://" 12 | type: SECRET 13 | -------------------------------------------------------------------------------- /.do/deploy.template.yaml: -------------------------------------------------------------------------------- 1 | spec: 2 | name: sample-golang 3 | services: 4 | - name: emissary_server 5 | git: 6 | branch: main 7 | repo_clone_url: https://github.com/EmissarySocial/emissary.git 8 | dockerfile_path: ".docker/prod-dockerfile" 9 | envs: 10 | - key: EMISSARY_CONFIG 11 | value: "mongodb://" 12 | type: SECRET 13 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Unix-style newlines with a newline ending every file 7 | [*] 8 | charset = utf-8 9 | end_of_line = lf 10 | insert_final_newline = true 11 | indent_size = 4 12 | indent_style = tab 13 | trim_trailing_whitespace = true -------------------------------------------------------------------------------- /_embed/templates/admin-common/template.hjson: -------------------------------------------------------------------------------- 1 | { 2 | templateId:"admin-common" 3 | templateRole:"admin" 4 | containedBy:["admin"] 5 | } -------------------------------------------------------------------------------- /_embed/templates/admin-followers/edit.html: -------------------------------------------------------------------------------- 1 | {{.Object | json }} -------------------------------------------------------------------------------- /_embed/templates/admin-groups/edit.html: -------------------------------------------------------------------------------- 1 |
2 |

{{icon "users"}} Edit Group: "{{.Label}}"

3 |
4 | ID: {{.GroupID}} 5 |
6 | View Users → 7 |
8 |
-------------------------------------------------------------------------------- /_embed/templates/admin-rules/index.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | {{template "menubar" .}} 4 | 5 |
6 | 9 | {{.View "list"}} 10 |
11 |
12 | -------------------------------------------------------------------------------- /_embed/templates/admin-rules/list.html: -------------------------------------------------------------------------------- 1 | {{- $rules := .ServerWideRules.Slice -}} 2 | 3 | {{- range $rules -}} 4 |
5 | {{.Type}}: {{.Trigger}} 6 |
7 | {{- end -}} 8 | -------------------------------------------------------------------------------- /_embed/templates/admin-search/template.hjson: -------------------------------------------------------------------------------- 1 | { 2 | templateId:admin-search 3 | templateRole:admin 4 | model:search 5 | extends: ["admin-common"] 6 | containedBy:["admin"] 7 | label:Search 8 | description: Manage Search Engine Settings 9 | 10 | actions: { 11 | index: {do:"view-html"} 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /_embed/templates/admin-searchTags/edit.html: -------------------------------------------------------------------------------- 1 |

{{icon "tag"}} Edit Tag #{{.Name}}

2 | -------------------------------------------------------------------------------- /_embed/templates/base-social/tags.html: -------------------------------------------------------------------------------- 1 | {{- range $tag := .Tag.SliceOfDocuments -}} 2 | 3 | {{- if ne "" $tag.Name -}} 4 | {{$tag.Name}} 5 | {{if ne "" $tag.Content}}:{{end}} 6 | {{- end -}} 7 | {{$tag.Content}} 8 | 9 | {{- end -}} -------------------------------------------------------------------------------- /_embed/templates/base-social/template.hjson: -------------------------------------------------------------------------------- 1 | { 2 | templateId:"base-social" 3 | actions:{ 4 | 5 | follow-button: { 6 | steps: [ 7 | {do:"view-html"} 8 | ] 9 | } 10 | 11 | like-button: { 12 | roles:["authenticated"] 13 | steps:[ 14 | {do:"set-response"} 15 | {do:"view-html", "method":"both"} 16 | ] 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /_embed/templates/base-widget-editor/widget.html: -------------------------------------------------------------------------------- 1 |
2 | {{icon "drag-handle"}} 3 | {{.Label}} 4 | {{- if .Widget.IsEditable -}} 5 | 6 | {{- end -}} 7 |
8 | -------------------------------------------------------------------------------- /_embed/templates/email-follower-activity/email.hjson: -------------------------------------------------------------------------------- 1 | { 2 | emailId: follower-activity 3 | emailRole: follower-activity 4 | model: Follower 5 | subject: New Activity From {{.Name}} 6 | to: "{{.Email}}" 7 | headers: { 8 | "List-Unsubscribe": "{{.Unsubscribe}}" 9 | } 10 | } -------------------------------------------------------------------------------- /_embed/templates/email-follower-confirmation/email.hjson: -------------------------------------------------------------------------------- 1 | { 2 | emailId: follower-confirmation 3 | emailRole: follower-confirmation 4 | model: Follower 5 | to: "{{.Email}}" 6 | subject: Confirm Email Updates from {{.Name}} 7 | } -------------------------------------------------------------------------------- /_embed/templates/email-user-password-reset/email.hjson: -------------------------------------------------------------------------------- 1 | { 2 | emailId: user-password-reset 3 | emailRole: user-password-reset 4 | model: User 5 | to: "{{.Email}}" 6 | subject: Reset Your Password on {{.Domain_Name}} 7 | } -------------------------------------------------------------------------------- /_embed/templates/email-user-welcome/email.hjson: -------------------------------------------------------------------------------- 1 | { 2 | emailId: user-welcome 3 | emailRole: user-welcome 4 | model: User 5 | to: "{{.Email}}" 6 | subject: Welcome to {{.Domain_Name}} 7 | } -------------------------------------------------------------------------------- /_embed/templates/registration-simple/confirm.html: -------------------------------------------------------------------------------- 1 | {{- $message := .RegistrationData "confirmation" -}} 2 | 3 |
{{- $message | markdown -}}
-------------------------------------------------------------------------------- /_embed/templates/registration-simple/secret.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_embed/templates/registration-webhook/confirm.html: -------------------------------------------------------------------------------- 1 | SUCCESS -------------------------------------------------------------------------------- /_embed/templates/stream-article-base/editor.html: -------------------------------------------------------------------------------- 1 | [EDITOR CONTENT GOES HERE] 2 | Overrided the "editor" action for each concrete implementation of this template. -------------------------------------------------------------------------------- /_embed/templates/stream-article-base/heading.html: -------------------------------------------------------------------------------- 1 |

{{.Label}}

2 | 3 | {{- if ne "" .Summary -}} 4 |
{{.Summary}}
5 | {{- end -}} 6 | -------------------------------------------------------------------------------- /_embed/templates/stream-collection/stylesheet/sidebar.css: -------------------------------------------------------------------------------- 1 | .sidebar { 2 | width:20%; 3 | margin-right:20px; 4 | position:relative; 5 | } 6 | 7 | .sidebar > div { 8 | position:-webkit-sticky; 9 | position:sticky; 10 | top:100px; 11 | } 12 | -------------------------------------------------------------------------------- /_embed/templates/theme-codex/includes-foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-codex/includes-head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /_embed/templates/theme-codex/resources/startup/about.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-codex/resources/startup/about.jpg -------------------------------------------------------------------------------- /_embed/templates/theme-codex/resources/startup/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-codex/resources/startup/icon.jpg -------------------------------------------------------------------------------- /_embed/templates/theme-codex/resources/startup/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-codex/resources/startup/icon.png -------------------------------------------------------------------------------- /_embed/templates/theme-codex/resources/startup/splash.html: -------------------------------------------------------------------------------- 1 | Codex is a general-purpose theme with a large side navigation bar for organizing big websites. It works with any number of active users, and includes light and dark modes that fade into the background to let your content shine. Codex is a companion of the default Minimus theme, and tends to get updates more quickly than others. 2 | -------------------------------------------------------------------------------- /_embed/templates/theme-codex/resources/startup/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-codex/resources/startup/splash.png -------------------------------------------------------------------------------- /_embed/templates/theme-default/resources/startup/about.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-default/resources/startup/about.jpg -------------------------------------------------------------------------------- /_embed/templates/theme-default/resources/startup/ben.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-default/resources/startup/ben.png -------------------------------------------------------------------------------- /_embed/templates/theme-default/resources/startup/icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-default/resources/startup/icon.jpg -------------------------------------------------------------------------------- /_embed/templates/theme-default/resources/startup/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-default/resources/startup/icon.png -------------------------------------------------------------------------------- /_embed/templates/theme-default/resources/startup/splash.html: -------------------------------------------------------------------------------- 1 |

Minimus is a simple theme for general purpose websites. It features a top-navigation bar that holds three to six menu items, and includes both light and dark themes.

2 | -------------------------------------------------------------------------------- /_embed/templates/theme-default/resources/startup/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-default/resources/startup/splash.png -------------------------------------------------------------------------------- /_embed/templates/theme-global/hyperscript/autosize._hs: -------------------------------------------------------------------------------- 1 | behavior Autosize 2 | 3 | on load or input 4 | set my *height to "auto" 5 | set my *height to my scrollHeight px 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/hyperscript/refreshPeers._hs: -------------------------------------------------------------------------------- 1 | behavior refreshPeers(id) 2 | 3 | init 4 | set @data-peer to id 5 | 6 | on refreshPeers 7 | 8 | repeat for peer in <[data-peer=`${id}`]/> 9 | 10 | if the peer is not me 11 | send refresh to peer 12 | end 13 | 14 | end 15 | 16 | end 17 | 18 | end -------------------------------------------------------------------------------- /_embed/templates/theme-global/hyperscript/selectText._hs: -------------------------------------------------------------------------------- 1 | behavior selectText 2 | 3 | init 4 | set my *cursor to "pointer" 5 | end 6 | 7 | on click 8 | set selection to window.getSelection() 9 | selection.removeAllRanges() 10 | 11 | set range to document.createRange() 12 | range.selectNodeContents(me) 13 | selection.addRange(range) 14 | end 15 | end -------------------------------------------------------------------------------- /_embed/templates/theme-global/hyperscript/sortcontainer._hs: -------------------------------------------------------------------------------- 1 | behavior sortContainer 2 | 3 | on load 4 | wait 0.5s 5 | if Sortable is not null then 6 | make a Sortable from me, {animation:150, whisperClass:'draggable-whisper'} 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/includes-foot.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/includes-head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.10.3/fonts/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-global/resources/bootstrap-icons-1.10.3/fonts/bootstrap-icons.woff -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.10.3/fonts/bootstrap-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-global/resources/bootstrap-icons-1.10.3/fonts/bootstrap-icons.woff2 -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/1-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/1-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/1-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/7-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/7-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/7-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/align-bottom.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/align-center.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/align-end.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/align-middle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/align-start.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/align-top.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/alt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/amd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/app.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/archive-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-90deg-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-90deg-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-90deg-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-90deg-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-clockwise.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-down-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-down-left-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-down-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-down-right-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-down-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-down-short.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-left-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-left-short.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-right-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-right-short.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-up-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-up-left-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-up-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-up-right-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-up-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-up-short.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/arrows.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/asterisk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/back.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bag-dash-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bag-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bag-heart-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bag.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/ban-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/ban.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bar-chart-line-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bar-chart-line.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/battery.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bell-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bookmark-dash-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bookmark-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bookmark-heart-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bookmark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bookshelf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/border-all.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bounding-box.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/box2-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/box2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/brilliance.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/bucket-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/calendar-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/calendar-minus-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/calendar-range-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/calendar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/calendar3-event-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/calendar3-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/calendar3-range-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/camera-video-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/capsule.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-down-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-down-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-left-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-left-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-right-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-right-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-up-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-up-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/caret-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/cash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chat-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chat-left-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chat-left-heart-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chat-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chat-right-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chat-right-heart-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chat-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chat-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/check-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/check-lg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/check2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chevron-compact-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chevron-compact-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chevron-compact-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chevron-compact-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/chevron-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/circle-half.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/clock-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/clock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/cloud-fog2-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/cloudy-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/code.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/columns.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/compass-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/compass.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/cone.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/credit-card-2-back-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/credit-card-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/crop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/currency-yen.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/cursor-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/cursor.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/dash-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/dash-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/dash-lg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/dash-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/dash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/diamond-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/dice-1-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/dice-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/dice-2-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/dice-3-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/disc-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/display-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/displayport-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/door-closed-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/door-closed.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/dot.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/easel3-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/easel3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/egg-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/eject-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/emoji-expressionless-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/envelope-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/exclamation-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/exclamation-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/exclamation-lg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/exclamation.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/exclude.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/explicit-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/exposure.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/eye-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-arrow-up-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-break-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-check-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-earmark-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-earmark-minus-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-earmark-ruled-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-earmark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-minus-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-person.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-play-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-plus-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-post-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-ppt-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-ruled-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file-spreadsheet-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/file.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/files-alt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/film.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/filter-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/filter-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/filter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/font/fonts/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/font/fonts/bootstrap-icons.woff -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/font/fonts/bootstrap-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/font/fonts/bootstrap-icons.woff2 -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/fonts.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/forward-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/front.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/funnel-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/gender-female.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/gender-male.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/gender-neuter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/geo-alt-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/h-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/h-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/h-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/headphones.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/heart-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/heartbreak-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/hexagon-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/hexagon-half.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/hexagon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/hr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/hurricane.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/image-alt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/key-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/ladder.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/laptop-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/laptop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/layout-sidebar-reverse.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/layout-sidebar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/layout-split.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/lightning-charge-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/lightning-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/list-nested.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/list.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/lock-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/lock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/magnet-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/magnet.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/mask.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/microsoft.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/mouse-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/mouse.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/mouse2-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/music-note.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/nut-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/option.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/paperclip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/paragraph.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/pass-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/pause-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/pause-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/peace-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/pentagon-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/person-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/person-dash-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/person-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/person-heart.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/phone-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/phone-landscape-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/phone.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/pie-chart-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/pie-chart.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/pip-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/play-btn-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/play-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/play-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/play-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/plus-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/plus-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/plus-lg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/plus-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/power.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/record-btn-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/record-btn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/record-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/record-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/record-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/record.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/record2-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/record2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/reply-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/rulers.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/save2-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/segmented-nav.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/share-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/shift-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/shift.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/sign-intersection-t-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/signpost-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/signpost-split-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/signpost.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/skip-end-btn-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/skip-end-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/skip-end-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/skip-end.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/skip-start-btn-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/skip-start-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/skip-start-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/skip-start.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/slash-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/slash-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/slash-lg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/slash-square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/slash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/square-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/square-half.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/square.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/stop-btn-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/stop-circle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/stop-circle.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/stop-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/stop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/strava.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/substack.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/subtract.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/suit-diamond-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/suit-heart-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/symmetry-horizontal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/symmetry-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/table.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/tablet-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/tablet-landscape-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/tablet-landscape.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/tablet.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/tag-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/three-dots-vertical.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/three-dots.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/tiktok.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/toggle-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/toggle-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/toggle2-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/toggle2-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/triangle-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/tv-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/twitch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/twitter-x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/type-h1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/type-h4.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/type-italic.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/type-underline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/union.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/unlock-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/unlock.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/usb-c-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/usb-c.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/usb-drive-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/usb-drive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/usb-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/usb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/vinyl-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/vinyl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/voicemail.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/volume-off-fill.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/windows.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/x-lg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/bootstrap-icons-1.11.3/x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/htmx/ext/ajax-header.js: -------------------------------------------------------------------------------- 1 | htmx.defineExtension('ajax-header', { 2 | onEvent: function (name, evt) { 3 | if (name === "htmx:configRequest") { 4 | evt.detail.headers['X-Requested-With'] = 'XMLHttpRequest'; 5 | } 6 | } 7 | }); -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/htmx/ext/debug.js: -------------------------------------------------------------------------------- 1 | htmx.defineExtension('debug', { 2 | onEvent: function (name, evt) { 3 | if (console.debug) { 4 | console.debug(name, evt); 5 | } else if (console) { 6 | console.log("DEBUG:", name, evt); 7 | } else { 8 | throw "NO CONSOLE SUPPORTED" 9 | } 10 | } 11 | }); 12 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/resources/vanillaCaret/about.txt: -------------------------------------------------------------------------------- 1 | This code comes from https://github.com/abhas9/vanilla-caret-js 2 | MIT Licensed -------------------------------------------------------------------------------- /_embed/templates/theme-global/stylesheet/02-backgrounds.css: -------------------------------------------------------------------------------- 1 | .bg-stripes { 2 | background: repeating-linear-gradient( 3 | 45deg, 4 | rgba(127, 127, 127, 0.2), 5 | rgba(127, 127, 127, 0.2) 10px, 6 | rgba(255, 255, 255, 0.6) 10px, 7 | rgba(255, 255, 255, 0.6) 20px 8 | ); 9 | } -------------------------------------------------------------------------------- /_embed/templates/theme-global/stylesheet/02-content.css: -------------------------------------------------------------------------------- 1 | .content { 2 | position:relative; 3 | } 4 | 5 | .content img { 6 | max-width:100%; 7 | margin:0px; 8 | } 9 | 10 | .content figure { 11 | margin: 0px; 12 | max-width: 100%; 13 | } 14 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/stylesheet/03-widgets-draggable.css: -------------------------------------------------------------------------------- 1 | /****************************************** 2 | * DRAG AND DROP 3 | ******************************************/ 4 | 5 | .draggable { 6 | cursor: grab; 7 | } 8 | 9 | .draggable-whisper { 10 | cursor: grabbing; 11 | opacity:0.1; 12 | } 13 | -------------------------------------------------------------------------------- /_embed/templates/theme-global/stylesheet/03-widgets-uploader.css: -------------------------------------------------------------------------------- 1 | .uploader { 2 | border: 1px solid var(--gray40); 3 | font-family: sans-serif; 4 | cursor: pointer; 5 | background-color: var(--gray05); 6 | text-align:center; 7 | } 8 | 9 | .uploader.highlight { 10 | border: green 1px outset; 11 | } 12 | 13 | .uploader input[type="file"] { 14 | opacity:0; 15 | position:absolute; 16 | } -------------------------------------------------------------------------------- /_embed/templates/user-inbox/follower.html: -------------------------------------------------------------------------------- 1 | {{- if eq "ACTIVITYPUB" .Method -}} 2 | {{- template "follower-activitypub" . -}} 3 | {{- else if eq "EMAIL" .Method -}} 4 | {{- template "follower-email" . -}} 5 | {{- else if eq "WEBSUB" -}} 6 | {{- template "follower-websub" . -}} 7 | {{- else -}} 8 | There is a problem with this "Follower" record that prevents it from being displayed. 9 | {{- end -}} -------------------------------------------------------------------------------- /_embed/templates/user-inbox/profile.html: -------------------------------------------------------------------------------- 1 | {{- $url := .QueryParam "url" -}} 2 | {{- $profile := .ActivityStream $url -}} 3 | 4 |
{{ $profile | json }}
5 | -------------------------------------------------------------------------------- /_embed/templates/user-inbox/rule-edit-actor.html: -------------------------------------------------------------------------------- 1 | {{- if .Object.IsNew -}} 2 |
3 | ← Add an Inbox Rule 4 |
5 | {{- end -}} 6 | 7 |

{{icon "person"}} Match a Person

-------------------------------------------------------------------------------- /_embed/templates/user-inbox/rule-edit-content.html: -------------------------------------------------------------------------------- 1 | {{- if .Object.IsNew -}} 2 |
3 | ← Add an Inbox Rule 4 |
5 | {{- end -}} 6 | 7 |

{{icon "hashtag"}} Match Tags & Keywords

8 | -------------------------------------------------------------------------------- /_embed/templates/user-inbox/rule-edit-domain.html: -------------------------------------------------------------------------------- 1 | {{- if .Object.IsNew -}} 2 |
3 | ← Add an Inbox Rule 4 |
5 | {{- end -}} 6 | 7 |

{{icon "server"}} Match a Website or Server

8 | -------------------------------------------------------------------------------- /_embed/templates/user-inbox/sidebar-remote.html: -------------------------------------------------------------------------------- 1 | {{- $folders := .FoldersWithSelection}} 2 | {{- template "sidebar" $folders -}} -------------------------------------------------------------------------------- /_embed/templates/user-inbox/stylesheet/draggable.css: -------------------------------------------------------------------------------- 1 | .folder { 2 | position:relative; 3 | } 4 | 5 | .folder-handle { 6 | position:absolute; 7 | right:2px; 8 | top:2px; 9 | cursor: grab; 10 | } 11 | 12 | .folder-whisper { 13 | background-color: var(--gray50); 14 | color:var(--gray50); 15 | cursor: grabbing; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /_embed/templates/user-inbox/stylesheet/icons.css: -------------------------------------------------------------------------------- 1 | i.bi {min-width:calc(1.5 * var(--rhythm))px;} -------------------------------------------------------------------------------- /_embed/templates/user-outbox/follow-heading.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 |

Follow {{.DisplayName}}

7 | 8 |
9 |
10 |
-------------------------------------------------------------------------------- /_embed/templates/user-outbox/icon-preview.html: -------------------------------------------------------------------------------- 1 |
2 | {{- if ne .ActivityPubIconURL "" -}} 3 | 4 | {{- end -}} 5 |
6 | -------------------------------------------------------------------------------- /_embed/templates/user-outbox/links.html: -------------------------------------------------------------------------------- 1 |

Personal Links

2 | 3 |

Add up to six links to be displayed on your profile page.

4 | 5 |
6 | {{- .View "links-table" -}} 7 |
8 | 9 | -------------------------------------------------------------------------------- /_embed/templates/widget-breadrumbs/widget.hjson: -------------------------------------------------------------------------------- 1 | { 2 | widgetId:"breadcrumbs" 3 | label:"Breadcrumbs" 4 | description:"Displays breadcrumbs for this stream's path within the site hierarchy" 5 | } -------------------------------------------------------------------------------- /_embed/templates/widget-breadrumbs/widget.html: -------------------------------------------------------------------------------- 1 | {{- $breadcrumbs := .Breadcrumbs -}} 2 | 3 | {{- if gt (len $breadcrumbs) 0 -}} 4 | 11 | {{- end -}} -------------------------------------------------------------------------------- /_embed/templates/widget-byline/widget.hjson: -------------------------------------------------------------------------------- 1 | { 2 | widgetId:"byline" 3 | label:"Byline" 4 | description:"Displays author and publishing information" 5 | } -------------------------------------------------------------------------------- /_embed/templates/widget-hr/widget.hjson: -------------------------------------------------------------------------------- 1 | { 2 | widgetId:"hr" 3 | label:"Horizontal Line" 4 | description:"It's just a horizontal line. That's all" 5 | } -------------------------------------------------------------------------------- /_embed/templates/widget-hr/widget.html: -------------------------------------------------------------------------------- 1 |
-------------------------------------------------------------------------------- /_embed/templates/widget-html/widget.html: -------------------------------------------------------------------------------- 1 | {{.Widget.Data.html | html}} -------------------------------------------------------------------------------- /_embed/templates/widget-mentions/widget.hjson: -------------------------------------------------------------------------------- 1 | { 2 | widgetId:"mentions" 3 | label:"Mentions" 4 | description:"Displays all mentions of this page" 5 | } -------------------------------------------------------------------------------- /_embed/templates/widget-navigation-list/children.html: -------------------------------------------------------------------------------- 1 | {{- if eq "All" (.Widget.Data.GetString "children") -}} 2 | 3 | {{- $children := .Children.Slice -}} 4 | {{- range $index, $child := $children -}} 5 | 8 | {{- end -}} 9 | 10 | {{- end -}} -------------------------------------------------------------------------------- /_embed/templates/widget-scrollspy/widget.hjson: -------------------------------------------------------------------------------- 1 | { 2 | widgetId:"scrollspy" 3 | label:"Scrollspy" 4 | description:"Adds an intra-page navigation menu to this stream" 5 | bundles:{ 6 | hyperscript:{ 7 | content-type:"text/hyperscript" 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /_embed/templates/widget-share/widget.hjson: -------------------------------------------------------------------------------- 1 | { 2 | widgetId:"share" 3 | label:"Share Button" 4 | description:"Adds a 'share' button that uses the native OS share facilities" 5 | } -------------------------------------------------------------------------------- /_embed/templates/widget-share/widget.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_embed/templates/widget-title/widget.hjson: -------------------------------------------------------------------------------- 1 | { 2 | widgetId:"title" 3 | label:"Title Block" 4 | description:"Displays a semantically meaningful title for this stream" 5 | } -------------------------------------------------------------------------------- /_embed/templates/widget-title/widget.html: -------------------------------------------------------------------------------- 1 |

{{.Label}}

2 | 3 | {{- if ne "" .Summary -}} 4 |
{{.Summary}}
5 | {{- end -}} 6 | -------------------------------------------------------------------------------- /build/build_follower_test.go: -------------------------------------------------------------------------------- 1 | package build 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | ) 8 | 9 | // TestFollower asserts that builder.Follower implements the Builder interface 10 | func TestFollower(t *testing.T) { 11 | builder := Builder(Follower{}) 12 | require.NotNil(t, builder) 13 | } 14 | -------------------------------------------------------------------------------- /build/builder_admin_domains_test.go: -------------------------------------------------------------------------------- 1 | package build 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | ) 8 | 9 | func TestAdminDomains(t *testing.T) { 10 | 11 | // Require that Domain builder implements the PropertyFormGetter interface 12 | var i interface{} = Domain{} 13 | _, ok := i.(PropertyFormGetter) 14 | require.True(t, ok) 15 | } 16 | -------------------------------------------------------------------------------- /build/builder_outbox_test.go: -------------------------------------------------------------------------------- 1 | package build 2 | 3 | import "testing" 4 | 5 | func TestOutboxBuilder(t *testing.T) { 6 | var _ StateSetter = Outbox{} 7 | } 8 | -------------------------------------------------------------------------------- /build/constants.go: -------------------------------------------------------------------------------- 1 | package build 2 | 3 | // ActionMethod enumerates the HTTP methods that can be performed on Actions 4 | type ActionMethod uint8 5 | 6 | // ActionMethodGet signifies a GET operation on an action 7 | const ActionMethodGet ActionMethod = 0 8 | 9 | // ActionMethodPost signifies a POST operation on an action 10 | const ActionMethodPost ActionMethod = 1 11 | -------------------------------------------------------------------------------- /build/functions.go: -------------------------------------------------------------------------------- 1 | package build 2 | 3 | import ( 4 | "html/template" 5 | 6 | "github.com/EmissarySocial/emissary/tools/templates" 7 | "github.com/benpate/icon" 8 | ) 9 | 10 | func FuncMap(icons icon.Provider) template.FuncMap { 11 | return templates.FuncMap(icons) 12 | } 13 | -------------------------------------------------------------------------------- /config/database.go: -------------------------------------------------------------------------------- 1 | package config 2 | 3 | import "github.com/benpate/rosetta/schema" 4 | 5 | func DatabaseConnectInfo() schema.Element { 6 | return schema.Object{ 7 | Properties: schema.ElementMap{ 8 | "connectString": schema.String{Required: true}, 9 | "database": schema.String{Required: true}, 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /config/folder.go: -------------------------------------------------------------------------------- 1 | package config 2 | 3 | const FolderAdapterEmbed = "EMBED" 4 | 5 | const FolderAdapterFile = "FILE" 6 | 7 | const FolderAdapterGit = "GIT" 8 | 9 | const FolderAdapterS3 = "S3" 10 | -------------------------------------------------------------------------------- /config/option.go: -------------------------------------------------------------------------------- 1 | package config 2 | 3 | type Option func(*Config) 4 | 5 | // WithHTTPPort overrides the HTTP port used by the server 6 | func WithHTTPPort(port int) Option { 7 | return func(config *Config) { 8 | config.HTTPPort = port 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /consumer/factory.go: -------------------------------------------------------------------------------- 1 | package consumer 2 | 3 | import ( 4 | "iter" 5 | 6 | "github.com/EmissarySocial/emissary/domain" 7 | "github.com/benpate/turbine/queue" 8 | ) 9 | 10 | type ServerFactory interface { 11 | RangeDomains() iter.Seq[*domain.Factory] 12 | ByHostname(hostname string) (*domain.Factory, error) 13 | Queue() *queue.Queue 14 | } 15 | -------------------------------------------------------------------------------- /consumer/processMedia.go: -------------------------------------------------------------------------------- 1 | package consumer 2 | 3 | import ( 4 | "github.com/EmissarySocial/emissary/domain" 5 | "github.com/benpate/rosetta/mapof" 6 | "github.com/benpate/turbine/queue" 7 | ) 8 | 9 | func ProcessMedia(factory *domain.Factory, args mapof.Any) queue.Result { 10 | 11 | return queue.Success() 12 | } 13 | -------------------------------------------------------------------------------- /domain/domain.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package domain contains the domain-level Factory, along with 3 | the realtime client/server for SSE connections. 4 | 5 | The domain.Factory creates, caches, and produces all of the services 6 | that are used by an individual domain. 7 | */ 8 | package domain 9 | -------------------------------------------------------------------------------- /handler/activitypub_domain/router.go: -------------------------------------------------------------------------------- 1 | package activitypub_domain 2 | 3 | import ( 4 | "github.com/benpate/hannibal/inbox" 5 | ) 6 | 7 | // inboxRouter defines the package-level router for search/ActivityPub requests 8 | var inboxRouter inbox.Router[Context] = inbox.NewRouter[Context]() 9 | -------------------------------------------------------------------------------- /handler/activitypub_search/router.go: -------------------------------------------------------------------------------- 1 | package activitypub_search 2 | 3 | import ( 4 | "github.com/benpate/hannibal/inbox" 5 | ) 6 | 7 | // inboxRouter defines the package-level router for search/ActivityPub requests 8 | var inboxRouter inbox.Router[Context] = inbox.NewRouter[Context]() 9 | -------------------------------------------------------------------------------- /handler/activitypub_stream/router.go: -------------------------------------------------------------------------------- 1 | package activitypub_stream 2 | 3 | import ( 4 | "github.com/benpate/hannibal/inbox" 5 | ) 6 | 7 | // streamRouter defines the package-level router for stream/ActivityPub requests 8 | var streamRouter inbox.Router[Context] = inbox.NewRouter[Context]() 9 | -------------------------------------------------------------------------------- /handler/activitypub_user/router.go: -------------------------------------------------------------------------------- 1 | package activitypub_user 2 | 3 | import ( 4 | "github.com/EmissarySocial/emissary/domain" 5 | "github.com/EmissarySocial/emissary/model" 6 | "github.com/benpate/hannibal/inbox" 7 | ) 8 | 9 | var inboxRouter inbox.Router[Context] = inbox.NewRouter[Context]() 10 | 11 | type Context struct { 12 | factory *domain.Factory 13 | user *model.User 14 | } 15 | -------------------------------------------------------------------------------- /handler/blocked.go: -------------------------------------------------------------------------------- 1 | package handler 2 | 3 | import ( 4 | "net/http" 5 | 6 | "github.com/labstack/echo/v4" 7 | ) 8 | 9 | func Blocked(ctx echo.Context) error { 10 | return ctx.HTML(http.StatusNotFound, `
🖕
`) 11 | } 12 | -------------------------------------------------------------------------------- /handler/tbd.go: -------------------------------------------------------------------------------- 1 | package handler 2 | 3 | import ( 4 | "net/http" 5 | 6 | "github.com/labstack/echo/v4" 7 | ) 8 | 9 | // TBD represents a placeholder handler that will be removed before release. 10 | func TBD(ctx echo.Context) error { 11 | return ctx.String(http.StatusNotImplemented, "Not Implemented") 12 | } 13 | -------------------------------------------------------------------------------- /handler/writeCloser.go: -------------------------------------------------------------------------------- 1 | package handler 2 | 3 | import "io" 4 | 5 | // AsWriteCloser is a hacky kludge that lets us use an io.Writer as an io.WriteCloser 6 | type AsWriteCloser struct { 7 | io.Writer 8 | } 9 | 10 | func (writeCloser AsWriteCloser) Close() error { 11 | // no op 12 | return nil 13 | } 14 | -------------------------------------------------------------------------------- /middleware/cache.go: -------------------------------------------------------------------------------- 1 | package middleware 2 | 3 | import "github.com/labstack/echo/v4" 4 | 5 | func CacheControl(cacheControl string) echo.MiddlewareFunc { 6 | 7 | return func(next echo.HandlerFunc) echo.HandlerFunc { 8 | 9 | return func(ctx echo.Context) error { 10 | ctx.Response().Header().Set("Cache-Control", cacheControl) 11 | return next(ctx) 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /middleware/middleware.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package middleware contains HTTP middleware that is specific to Emissary. 3 | These functions wrap regular HTTP handlers, and are used to mix in additional 4 | functionality into multiple handlers. 5 | */ 6 | package middleware 7 | -------------------------------------------------------------------------------- /model/domain_constants.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | // DomainColorModeAuto represents color mode that is determined automatically by the client's settings 4 | const DomainColorModeAuto = "AUTO" 5 | 6 | // DomainColorModeLight represents light color mode 7 | const DomainColorModeLight = "LIGHT" 8 | 9 | // DomainColorModeDark represents dark color mode 10 | const DomainColorModeDark = "DARK" 11 | -------------------------------------------------------------------------------- /model/encryptionKey_constants.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | // EncryptionKeyTypeUser identifies an EncryptionKey that is owned by a User/Actor 4 | const EncryptionKeyTypeUser = "User" 5 | 6 | // EncryptionKeyTypeStream identifies an EncryptionKey that is owned by a Stream/Actor 7 | const EncryptionKeyTypeStream = "Stream" 8 | -------------------------------------------------------------------------------- /model/folder_constants.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | const FolderLayoutChat = "CHAT" 4 | 5 | const FolderLayoutSocial = "SOCIAL" 6 | 7 | const FolderLayoutNewspaper = "NEWSPAPER" 8 | 9 | const FolderLayoutMagazine = "MAGAZINE" 10 | 11 | const FolderFilterAll = "ALL" 12 | 13 | const FolderFilterUnread = "UNREAD" 14 | -------------------------------------------------------------------------------- /model/jsonld.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | import "github.com/benpate/rosetta/mapof" 4 | 5 | type JSONLD mapof.Any 6 | 7 | func (j JSONLD) GetJSONLD() mapof.Any { 8 | return mapof.Any(j) 9 | } 10 | 11 | func (j JSONLD) Created() int64 { 12 | return mapof.Any(j).GetInt64("published") 13 | } 14 | -------------------------------------------------------------------------------- /model/step/functions.go: -------------------------------------------------------------------------------- 1 | package step 2 | 3 | import ( 4 | "html/template" 5 | 6 | "github.com/EmissarySocial/emissary/tools/templates" 7 | ) 8 | 9 | func FuncMap() template.FuncMap { 10 | return templates.FuncMap(nil) 11 | } 12 | -------------------------------------------------------------------------------- /model/step/utils.go: -------------------------------------------------------------------------------- 1 | package step 2 | 3 | // first is a cheapy little function to pick the first "non-zero" value from 4 | // a list of values. 5 | func first[T comparable](values ...T) T { 6 | 7 | var zero T 8 | 9 | for _, value := range values { 10 | if value != zero { 11 | return value 12 | } 13 | } 14 | 15 | return zero 16 | } 17 | -------------------------------------------------------------------------------- /model/user_constants.go: -------------------------------------------------------------------------------- 1 | package model 2 | 3 | // UserMapIDStripe identifies the Stripe CustomerID for a User 4 | // https://docs.stripe.com/api/customers/object#customer_object-id 5 | const UserMapIDStripe = "STRIPE" 6 | -------------------------------------------------------------------------------- /protocols/websub/README.md: -------------------------------------------------------------------------------- 1 | Right now, WebSub support is scattered throughout the code. It should eventually be centralized here, or even published as a separate package. 2 | 3 | Check out: 4 | 5 | /handler/websub.go - Incoming messages about updates on other servers. 6 | /render/step_WebSub.go - WebSub connection negotiation for content on this server. 7 | /service/following_webSub.go - Connecting to external WebSub services. -------------------------------------------------------------------------------- /queries/counter.go: -------------------------------------------------------------------------------- 1 | package queries 2 | 3 | type Counter struct { 4 | Count int `bson:"count"` 5 | } 6 | 7 | type GroupedCounter struct { 8 | Group string `bson:"_id"` 9 | Count int `bson:"count"` 10 | } 11 | -------------------------------------------------------------------------------- /queries/upgrades/v016.go: -------------------------------------------------------------------------------- 1 | package upgrades 2 | 3 | import ( 4 | "context" 5 | "fmt" 6 | 7 | "go.mongodb.org/mongo-driver/bson" 8 | "go.mongodb.org/mongo-driver/mongo" 9 | ) 10 | 11 | // Version16... 12 | func Version16(ctx context.Context, session *mongo.Database) error { 13 | 14 | fmt.Println("... Version 16") 15 | _, _ = session.Collection("JWT").DeleteMany(ctx, bson.M{}) 16 | return nil 17 | } 18 | -------------------------------------------------------------------------------- /queries/upgrades/v018.go: -------------------------------------------------------------------------------- 1 | package upgrades 2 | 3 | import ( 4 | "context" 5 | "fmt" 6 | 7 | "go.mongodb.org/mongo-driver/mongo" 8 | ) 9 | 10 | // Version18... 11 | func Version18(ctx context.Context, session *mongo.Database) error { 12 | 13 | fmt.Println("... Version 18") 14 | return nil 15 | } 16 | -------------------------------------------------------------------------------- /queries/upgrades/v019.go: -------------------------------------------------------------------------------- 1 | package upgrades 2 | 3 | import ( 4 | "context" 5 | "fmt" 6 | 7 | "go.mongodb.org/mongo-driver/mongo" 8 | ) 9 | 10 | // Version19... 11 | func Version19(ctx context.Context, session *mongo.Database) error { 12 | 13 | fmt.Println("... Version 19") 14 | return nil 15 | } 16 | -------------------------------------------------------------------------------- /server/server.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package server contains the server.Factory, which is the root level factory 3 | for the system. It builds and caches all of the global services required to 4 | host one or more domains. For example, Themes, Templates, and Widgets are 5 | all defined server-wide, so the server.Factory is responsible for them. 6 | */ 7 | package server 8 | -------------------------------------------------------------------------------- /service/config.go: -------------------------------------------------------------------------------- 1 | package service 2 | 3 | // Config service (will) manage server-wide configuration 4 | type Config struct { 5 | } 6 | -------------------------------------------------------------------------------- /service/geocode_test.go: -------------------------------------------------------------------------------- 1 | package service 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/codingsince1985/geo-golang/openstreetmap" 7 | "github.com/davecgh/go-spew/spew" 8 | ) 9 | 10 | func TestOpenStreetMap(t *testing.T) { 11 | 12 | coder := openstreetmap.Geocoder() 13 | 14 | coordinates, err := coder.Geocode("1600 Amphitheatre Parkway, Mountain View, CA 94043") 15 | 16 | spew.Dump(coordinates, err) 17 | } 18 | -------------------------------------------------------------------------------- /service/interfaces.go: -------------------------------------------------------------------------------- 1 | package service 2 | 3 | import ( 4 | "io" 5 | 6 | "github.com/benpate/data" 7 | "go.mongodb.org/mongo-driver/bson/primitive" 8 | ) 9 | 10 | type AuthorSetter interface { 11 | SetAuthor(object data.Object, authorID primitive.ObjectID) error 12 | } 13 | 14 | type TemplateLike interface { 15 | Execute(writer io.Writer, data any) error 16 | } 17 | -------------------------------------------------------------------------------- /service/providers/factory.go: -------------------------------------------------------------------------------- 1 | package providers 2 | 3 | type Factory interface { 4 | Hostname() string 5 | } 6 | -------------------------------------------------------------------------------- /service/providers/stripe_test.go: -------------------------------------------------------------------------------- 1 | package providers 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | ) 8 | 9 | func TestStripe(t *testing.T) { 10 | 11 | var stripe any = NewStripe() 12 | provider := stripe.(ManualProvider) 13 | 14 | require.NotNil(t, provider) 15 | } 16 | -------------------------------------------------------------------------------- /service/scheduler.go: -------------------------------------------------------------------------------- 1 | package service 2 | 3 | type Scheduler struct { 4 | } 5 | -------------------------------------------------------------------------------- /service/stream_test.go: -------------------------------------------------------------------------------- 1 | package service 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | ) 8 | 9 | func TestStreamService(t *testing.T) { 10 | var service any = &Stream{} 11 | _, ok := service.(ModelService) 12 | require.True(t, ok) 13 | } 14 | -------------------------------------------------------------------------------- /tools/ascache/tasks.go: -------------------------------------------------------------------------------- 1 | package ascache 2 | 3 | type TaskClearExpired struct { 4 | } 5 | 6 | func (task TaskClearExpired) Run() error { 7 | return nil 8 | } 9 | -------------------------------------------------------------------------------- /tools/ascacherules/utils.go: -------------------------------------------------------------------------------- 1 | package ascacherules 2 | 3 | import "golang.org/x/exp/constraints" 4 | 5 | func clamp[T constraints.Ordered](min T, mid T, max T) T { 6 | 7 | if min > max { 8 | return max 9 | } 10 | 11 | if min > mid { 12 | return min 13 | } 14 | 15 | if mid > max { 16 | return max 17 | } 18 | 19 | return mid 20 | } 21 | -------------------------------------------------------------------------------- /tools/ascontextmaker/clientOption.go: -------------------------------------------------------------------------------- 1 | package ascontextmaker 2 | 3 | type ClientOption func(*Client) 4 | 5 | // WithMaxDepth sets the maximum number of replies that the context maker 6 | // will follow before giving up. (Default is 16) 7 | func WithMaxDepth(maxDepth int) ClientOption { 8 | return func(client *Client) { 9 | client.maxDepth = maxDepth 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tools/ascrawler/clientOption.go: -------------------------------------------------------------------------------- 1 | package ascrawler 2 | 3 | type ClientOption func(*Client) 4 | 5 | func WithMaxDepth(maxDepth int) ClientOption { 6 | return func(client *Client) { 7 | client.maxDepth = maxDepth 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /tools/asnormalizer/README.md: -------------------------------------------------------------------------------- 1 | #ActivityStream Normalizer 2 | 3 | This is an opinionated library that normalizes ActivityStreams 2.0 objects into a standard format that works for Emissary. -------------------------------------------------------------------------------- /tools/camper/meta/logo.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EmissarySocial/emissary/690d47347cab1608f68c9136feffc6710b5df675/tools/camper/meta/logo.webp -------------------------------------------------------------------------------- /tools/camper/utils.go: -------------------------------------------------------------------------------- 1 | package camper 2 | 3 | import "strings" 4 | 5 | func CanonicalCapitalization(intent string) string { 6 | 7 | if intent == "" { 8 | return "" 9 | } 10 | 11 | return strings.ToUpper(intent[0:1]) + strings.ToLower(intent[1:]) 12 | } 13 | -------------------------------------------------------------------------------- /tools/channels/channels.go: -------------------------------------------------------------------------------- 1 | // Package channels includes some nifty tools for manipulating channels 2 | package channels 3 | -------------------------------------------------------------------------------- /tools/convert/convert.go: -------------------------------------------------------------------------------- 1 | // Package convert contains Emissary-specific conversions to and from various export formats. 2 | // TODO: LOW: These should probably be folded in to their respective adapters. 3 | package convert 4 | -------------------------------------------------------------------------------- /tools/convert/sanitize.go: -------------------------------------------------------------------------------- 1 | package convert 2 | 3 | import "github.com/microcosm-cc/bluemonday" 4 | 5 | func SanitizeHTML(value string) string { 6 | return bluemonday.UGCPolicy().Sanitize(value) 7 | } 8 | 9 | func SanitizeText(value string) string { 10 | return bluemonday.StrictPolicy().Sanitize(value) 11 | } 12 | -------------------------------------------------------------------------------- /tools/dataset/dataset.go: -------------------------------------------------------------------------------- 1 | // Package dataset contains some sets of static data that are embedded into Emissary. 2 | package dataset 3 | -------------------------------------------------------------------------------- /tools/groupie/groupie.go: -------------------------------------------------------------------------------- 1 | package groupie 2 | 3 | type Groupie struct { 4 | lastValue any 5 | } 6 | 7 | func New() *Groupie { 8 | return &Groupie{} 9 | } 10 | 11 | func (g *Groupie) Header(value any) bool { 12 | 13 | if g.lastValue == value { 14 | return false 15 | } 16 | 17 | g.lastValue = value 18 | return true 19 | } 20 | -------------------------------------------------------------------------------- /tools/honeypot/README.md: -------------------------------------------------------------------------------- 1 | ## honeypot 2 | 3 | Honeypot is a simple check on form submissions, to ensure that required fields have been populated, and "honeypot" fields have not been touched. -------------------------------------------------------------------------------- /tools/httpcache/adapter-redis.go: -------------------------------------------------------------------------------- 1 | package httpcache 2 | 3 | // TBD. This is aspirational, but doesn't exist yet. In theory, we'll be able to implement this, then 4 | // work it into production code later. 5 | -------------------------------------------------------------------------------- /tools/httpcache/adapter.go: -------------------------------------------------------------------------------- 1 | package httpcache 2 | 3 | import "time" 4 | 5 | type Adapter interface { 6 | Get(key string) (string, bool) 7 | Set(key string, value string, ttl time.Duration) bool 8 | Delete(key string) 9 | Close() 10 | } 11 | -------------------------------------------------------------------------------- /tools/httpcache/constants.go: -------------------------------------------------------------------------------- 1 | package httpcache 2 | 3 | // metadataMarker is used to mark a cache entry that contains response metadata 4 | const metadataMarker = "::META" 5 | 6 | // headSeparator is used to separate URL from the header values in a cache key 7 | const headSeparator = "::HEAD::" 8 | -------------------------------------------------------------------------------- /tools/httpcache/option.go: -------------------------------------------------------------------------------- 1 | package httpcache 2 | 3 | import "time" 4 | 5 | type Option func(*HTTPCache) 6 | 7 | // WithTTL sets the default TTL for this cache, which is used 8 | // if the response does not contain a Cache-Control header. 9 | func WithTTL(ttl time.Duration) Option { 10 | return func(cache *HTTPCache) { 11 | cache.ttl = ttl 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tools/jsontemplate/constants.go: -------------------------------------------------------------------------------- 1 | package jsontemplate 2 | 3 | // beginScript is the beginning/opening HTML script tag 4 | const beginScript = "" 8 | -------------------------------------------------------------------------------- /tools/jsontemplate/option.go: -------------------------------------------------------------------------------- 1 | package jsontemplate 2 | 3 | type Option func(*Template) 4 | 5 | // WithStrictMode sets the strict mode option for the template, using the standard Go unmarshaller for JSON 6 | func WithStrictMode() Option { 7 | return func(t *Template) { 8 | t.strictMode = true 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /tools/set/set_test.go: -------------------------------------------------------------------------------- 1 | package set 2 | 3 | // testPerson implements Value[string] interface, and can be used to test set structures. 4 | type testPerson struct { 5 | id string 6 | name string 7 | email string 8 | } 9 | 10 | func (p testPerson) ID() string { 11 | return p.id 12 | } 13 | -------------------------------------------------------------------------------- /tools/set/value.go: -------------------------------------------------------------------------------- 1 | package set 2 | 3 | // Value interface represents a keyed value that can be stored in a set 4 | type Value interface { 5 | ID() string 6 | } 7 | -------------------------------------------------------------------------------- /tools/sorted/sorted.go: -------------------------------------------------------------------------------- 1 | // Package sorted provides utility functions for working with sorted slices. 2 | // Because we can assume that the inputs are sorted, these functions are moderately 3 | // more efficient than their unsorted counterparts, and it was a fun exercise to 4 | // write them. 5 | 6 | package sorted 7 | -------------------------------------------------------------------------------- /tools/striputm/README.md: -------------------------------------------------------------------------------- 1 | This is an experimental library for removing UTM tracking codes from (everything?) -------------------------------------------------------------------------------- /tools/templates/interfaces.go: -------------------------------------------------------------------------------- 1 | package templates 2 | 3 | type Replacer interface { 4 | Replace(string) string 5 | } 6 | -------------------------------------------------------------------------------- /tools/val/val.go: -------------------------------------------------------------------------------- 1 | // Package val is a light and cheap collection of validators. 2 | package val 3 | --------------------------------------------------------------------------------