From a249fd8bee7e15706aec3a2f762804d6c95d0013 Mon Sep 17 00:00:00 2001 From: Henry Date: Fri, 8 Oct 2021 14:39:31 +0200 Subject: [PATCH] fix SPDX headers and add reuse API badge --- .dockerignore | 4 + .env_example | 4 + .github/workflows/go.yml | 4 + .gitignore | 4 + .goreleaser.yml | 4 + Dockerfile | 4 + LICENSES/CC-BY-4.0.txt | 156 ++++++++++++++++++ LICENSES/CC0-1.0.txt | 121 ++++++++++++++ LICENSES/MIT.txt | 9 + LICENSES/Unlicense.txt | 10 ++ README.md | 9 +- cmd/insert-user/generate-fake-id.sh | 5 + cmd/insert-user/main.go | 2 + cmd/server/dev.go | 4 + cmd/server/main.go | 2 + cmd/server/prod.go | 4 + docker-compose.yml | 4 + docs/README.md | 6 + docs/architecture.md | 6 + docs/deployment.md | 6 + docs/development.md | 6 + docs/files/debian-postinstall.sh | 4 + docs/files/debian-preremove.sh | 4 + docs/files/example-nginx.conf | 6 +- docs/files/example-systemd.service | 4 + docs/images/invites-chart.graphml.license | 3 + docs/images/invites-chart.png.license | 3 + docs/images/login-chart.graphml.license | 3 + docs/images/login-chart.png.license | 3 + docs/images/screenshot.png.license | 3 + docs/testing.md | 6 + errors.go | 2 + go.mod | 4 + go.sum.license | 3 + internal/aliases/confirm.go | 2 + internal/aliases/confirm_test.go | 2 + internal/aliases/names.go | 2 + internal/aliases/names_test.go | 2 + internal/broadcasts/attendants.go | 2 + internal/broadcasts/doc.go | 2 + internal/broadcasts/endpoints.go | 2 + internal/broadcasts/endpoints_test.go | 2 + internal/devtools/counterfeiter.go | 4 + internal/devtools/stringer.go | 4 + internal/maybemod/keys/keys.go | 2 + internal/maybemod/multicloser/multicloser.go | 2 + internal/maybemod/multierror/multierr.go | 2 + internal/maybemod/testutils/logging.go | 2 + internal/maybemod/testutils/mergeErrChans.go | 2 + internal/maybemuxrpc/plugin.go | 2 + internal/network/conntracker.go | 2 + internal/network/conntracker_acceptAll.go | 2 + internal/network/errors.go | 2 + internal/network/interface.go | 2 + internal/network/isserver_test.go | 2 + internal/network/mocked/endpoints.go | 4 + internal/network/msaddr_test.go | 4 + internal/network/new.go | 2 + internal/network/websocket.go | 2 + internal/netwraputil/spoof.go | 2 + internal/netwraputil/spoof_test.go | 2 + internal/randutil/string.go | 4 + internal/repo/repo.go | 2 + internal/repo/secret.go | 2 + internal/signinwithssb/bridge.go | 2 + internal/signinwithssb/bridge_test.go | 2 + internal/signinwithssb/challenges.go | 2 + internal/signinwithssb/simple_test.go | 2 + muxrpc/handlers/alias/handler.go | 2 + muxrpc/handlers/doc.go | 4 + muxrpc/handlers/gossip/ping.go | 2 + muxrpc/handlers/signinwithssb/withssb.go | 2 + muxrpc/handlers/tunnel/server/attendants.go | 2 + muxrpc/handlers/tunnel/server/connect.go | 2 + muxrpc/handlers/tunnel/server/plugin.go | 2 + muxrpc/handlers/tunnel/server/state.go | 2 + muxrpc/handlers/whoami/whoami.go | 2 + muxrpc/test/go/alias_test.go | 2 + muxrpc/test/go/attendants_test.go | 2 + muxrpc/test/go/deny_test.go | 2 + muxrpc/test/go/endpoints_test.go | 2 + muxrpc/test/go/roomstate_test.go | 2 + muxrpc/test/go/simple_test.go | 2 + muxrpc/test/go/utils_test.go | 2 + muxrpc/test/go/websocket_test.go | 4 + muxrpc/test/nodejs/.gitignore | 4 + muxrpc/test/nodejs/aliases_test.go | 4 + muxrpc/test/nodejs/package-lock.json.license | 3 + muxrpc/test/nodejs/package.json.license | 3 + muxrpc/test/nodejs/sbot_client.js | 4 + muxrpc/test/nodejs/sbot_serv.js | 4 + muxrpc/test/nodejs/setup_test.go | 2 + .../testscripts/client-opening-tunnel.js | 4 + muxrpc/test/nodejs/testscripts/client.js | 4 + .../test/nodejs/testscripts/legacy_client.js | 4 + .../legacy_client_opening_tunnel.js | 4 + .../test/nodejs/testscripts/legacy_server.js | 4 + .../testscripts/minimal-before-setup.js | 4 + .../test/nodejs/testscripts/modern_aliases.js | 4 + .../test/nodejs/testscripts/modern_client.js | 4 + .../modern_client_opening_tunnel.js | 4 + .../nodejs/testscripts/secretstack-legacy.js | 4 + .../nodejs/testscripts/secretstack-modern.js | 4 + .../testscripts/secretstack_testplugin.js | 4 + muxrpc/test/nodejs/testscripts/template.js | 4 + muxrpc/test/nodejs/tunnel_connect_test.go | 2 + roomdb/interface.go | 2 + roomdb/mockdb/aliases.go | 4 + roomdb/mockdb/auth.go | 4 + roomdb/mockdb/auth_fallback.go | 4 + roomdb/mockdb/denied.go | 4 + roomdb/mockdb/fixed_pages.go | 4 + roomdb/mockdb/invites.go | 4 + roomdb/mockdb/members.go | 4 + roomdb/mockdb/pages.go | 4 + roomdb/mockdb/roomconfig.go | 4 + roomdb/privacymode_string.go | 4 + roomdb/role_string.go | 4 + roomdb/sqlite/aliases.go | 2 + roomdb/sqlite/aliases_test.go | 2 + roomdb/sqlite/auth_fallback.go | 2 + roomdb/sqlite/auth_fallback_test.go | 4 + roomdb/sqlite/auth_withssb.go | 2 + roomdb/sqlite/denied.go | 2 + roomdb/sqlite/denied_test.go | 2 + roomdb/sqlite/generate_models.sh | 5 + roomdb/sqlite/invites.go | 4 + roomdb/sqlite/invites_test.go | 4 + roomdb/sqlite/members.go | 4 + roomdb/sqlite/members_test.go | 4 + roomdb/sqlite/migrations.go | 4 + roomdb/sqlite/migrations/01-consolidated.sql | 4 + roomdb/sqlite/migrations/02-notices.sql | 4 + roomdb/sqlite/migrations/03-config.sql | 4 + roomdb/sqlite/migrations/03-siwssb-tokens.sql | 4 + .../migrations/04-overhaul-fallback-auth.sql | 4 + roomdb/sqlite/models/SIWSSB_sessions.go | 4 + roomdb/sqlite/models/aliases.go | 4 + roomdb/sqlite/models/boil_queries.go | 4 + roomdb/sqlite/models/boil_table_names.go | 4 + roomdb/sqlite/models/boil_types.go | 4 + roomdb/sqlite/models/config.go | 4 + roomdb/sqlite/models/denied_keys.go | 4 + roomdb/sqlite/models/fallback_passwords.go | 4 + roomdb/sqlite/models/fallback_reset_tokens.go | 4 + roomdb/sqlite/models/invites.go | 4 + roomdb/sqlite/models/members.go | 4 + roomdb/sqlite/models/notices.go | 4 + roomdb/sqlite/models/pins.go | 4 + roomdb/sqlite/new.go | 2 + roomdb/sqlite/new_test.go | 4 + roomdb/sqlite/notices.go | 4 + roomdb/sqlite/notices_test.go | 4 + roomdb/sqlite/roomconfig.go | 2 + roomdb/sqlite/roomconfig_test.go | 2 + roomdb/sqlite/sqlboiler.toml | 4 + roomdb/types.go | 2 + roomsrv/init_handlers.go | 2 + roomsrv/init_network.go | 2 + roomsrv/init_unixsock.go | 2 + roomsrv/manifest.go | 2 + roomsrv/options.go | 2 + roomsrv/server.go | 2 + roomstate/roomstate.go | 4 + start.sh | 4 + web/assets/alias-uri.js | 4 + web/assets/auth-withssb-uri.js | 4 + .../android-chrome-192x192.png.license | 3 + .../android-chrome-512x512.png.license | 3 + .../favicon/apple-touch-icon.png.license | 3 + web/assets/favicon/favicon-16x16.png.license | 3 + web/assets/favicon/favicon-32x32.png.license | 3 + web/assets/favicon/favicon.ico.license | 3 + web/assets/favicon/site.webmanifest.license | 3 + web/assets/fixfouc.css | 8 +- web/assets/img/test-hermie.png.license | 3 + web/assets/invite-uri.js | 4 + web/assets/style.css | 8 +- web/embedded_dev.go | 2 + web/embedded_prod.go | 2 + web/errors/badrequest.go | 2 + web/errors/errhandler.go | 4 + web/errors/flashes.go | 4 + web/handlers/admin/aliases.go | 2 + web/handlers/admin/aliases_test.go | 4 + web/handlers/admin/dashboard.go | 2 + web/handlers/admin/dashboard_test.go | 4 + web/handlers/admin/denied_keys.go | 2 + web/handlers/admin/denied_keys_test.go | 2 + web/handlers/admin/handler.go | 2 + web/handlers/admin/invites.go | 4 + web/handlers/admin/invites_test.go | 4 + web/handlers/admin/members.go | 2 + web/handlers/admin/members_test.go | 4 + web/handlers/admin/notices.go | 4 + web/handlers/admin/notices_test.go | 4 + web/handlers/admin/set_language_test.go | 4 + web/handlers/admin/settings.go | 2 + web/handlers/admin/settings_test.go | 4 + web/handlers/admin/setup_test.go | 2 + web/handlers/aliases.go | 4 + web/handlers/aliases_test.go | 4 + web/handlers/auth/withssb.go | 2 + web/handlers/auth_test.go | 2 + web/handlers/basic_test.go | 2 + web/handlers/http.go | 2 + web/handlers/invites.go | 4 + web/handlers/invites_test.go | 4 + web/handlers/language_template.go | 4 + web/handlers/members_password.go | 4 + web/handlers/members_password_test.go | 4 + web/handlers/notices.go | 4 + web/handlers/notices_test.go | 4 + web/handlers/set_language_test.go | 4 + web/handlers/setup_test.go | 2 + web/i18n/defaults/active.de.toml | 4 + web/i18n/defaults/active.en.toml | 4 + web/i18n/dev.go | 2 + web/i18n/helper.go | 2 + web/i18n/i18ntesting/i18n_helper_test.go | 4 + web/i18n/i18ntesting/testing.go | 4 + web/i18n/prod.go | 2 + web/members/helper.go | 2 + web/members/testing.go | 2 + web/router/admin.go | 2 + web/router/auth.go | 2 + web/router/complete.go | 2 + web/styles/gen_dev.go | 4 + web/styles/gen_prod.go | 4 + web/styles/input.css | 6 + web/styles/package-lock.json.license | 3 + web/styles/package.json.license | 3 + web/styles/postcss.config.js | 4 + web/styles/tailwind.config.js | 4 + .../admin/aliases-revoke-confirm.tmpl | 6 + web/templates/admin/dashboard.tmpl | 6 + .../admin/denied-keys-remove-confirm.tmpl | 6 + web/templates/admin/denied-keys.tmpl | 6 + web/templates/admin/invite-created.tmpl | 6 + web/templates/admin/invite-list.tmpl | 6 + .../admin/invite-revoke-confirm.tmpl | 6 + web/templates/admin/member-list.tmpl | 6 + web/templates/admin/member.tmpl | 6 + .../admin/members-remove-confirm.tmpl | 6 + .../members-show-password-reset-token.tmpl | 6 + web/templates/admin/menu.tmpl | 6 + web/templates/admin/notice-edit.tmpl | 6 + web/templates/admin/settings.tmpl | 6 + web/templates/alias.tmpl | 6 + web/templates/auth/decide_method.tmpl | 6 + web/templates/auth/fallback_sign_in.tmpl | 6 + web/templates/auth/withssb_server_start.tmpl | 6 + web/templates/base.tmpl | 6 + web/templates/change-member-password.tmpl | 6 + web/templates/error.tmpl | 6 + web/templates/flashes.tmpl | 6 + web/templates/invite/consumed.tmpl | 6 + web/templates/invite/facade-fallback.tmpl | 6 + web/templates/invite/facade.tmpl | 6 + web/templates/invite/insert-id.tmpl | 6 + web/templates/landing/index.tmpl | 6 + web/templates/menu.tmpl | 6 + web/templates/notice/list.tmpl | 6 + web/templates/notice/show.tmpl | 6 + web/utils.go | 2 + web/webassert/asserts.go | 4 + 266 files changed, 1228 insertions(+), 5 deletions(-) create mode 100644 LICENSES/CC-BY-4.0.txt create mode 100644 LICENSES/CC0-1.0.txt create mode 100644 LICENSES/MIT.txt create mode 100644 LICENSES/Unlicense.txt create mode 100644 docs/images/invites-chart.graphml.license create mode 100644 docs/images/invites-chart.png.license create mode 100644 docs/images/login-chart.graphml.license create mode 100644 docs/images/login-chart.png.license create mode 100644 docs/images/screenshot.png.license create mode 100644 go.sum.license create mode 100644 muxrpc/test/nodejs/package-lock.json.license create mode 100644 muxrpc/test/nodejs/package.json.license create mode 100644 web/assets/favicon/android-chrome-192x192.png.license create mode 100644 web/assets/favicon/android-chrome-512x512.png.license create mode 100644 web/assets/favicon/apple-touch-icon.png.license create mode 100644 web/assets/favicon/favicon-16x16.png.license create mode 100644 web/assets/favicon/favicon-32x32.png.license create mode 100644 web/assets/favicon/favicon.ico.license create mode 100644 web/assets/favicon/site.webmanifest.license create mode 100644 web/assets/img/test-hermie.png.license create mode 100644 web/styles/package-lock.json.license create mode 100644 web/styles/package.json.license diff --git a/.dockerignore b/.dockerignore index a2b80a6..d20f0a0 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: Unlicense + node_moduels ssb-go-room-secrets ssb-go-room-secrets/**/* diff --git a/.env_example b/.env_example index d0726d7..79f23d1 100644 --- a/.env_example +++ b/.env_example @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: Unlicense + HTTPS_DOMAIN=yourhttpsdomainhere ALIASES_AS_SUBDOMAINS=true # uncomment variable if you want to store data in a custom directory (required for default docker-compose setup) diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index e6a6ffc..62b7a36 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + name: Go on: diff --git a/.gitignore b/.gitignore index 6475f8b..809baf8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: Unlicense + # vim .*.sw[a-z] diff --git a/.goreleaser.yml b/.goreleaser.yml index dda364e..144176b 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + before: hooks: - go mod tidy diff --git a/Dockerfile b/Dockerfile index ffaf68b..fbdc027 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: Unlicense + FROM golang:1.16-alpine RUN apk add --no-cache \ diff --git a/LICENSES/CC-BY-4.0.txt b/LICENSES/CC-BY-4.0.txt new file mode 100644 index 0000000..13ca539 --- /dev/null +++ b/LICENSES/CC-BY-4.0.txt @@ -0,0 +1,156 @@ +Creative Commons Attribution 4.0 International + + Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. + +Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors. + +Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public. + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +Section 1 – Definitions. + + a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + + d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + + g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + + i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + + 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. Downstream recipients. + + A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + +b. Other rights. + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified form), You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; + + b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + + a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. + + b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. + + c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + + a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + + d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +Section 8 – Interpretation. + + a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + + c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + + d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 0000000..0e259d4 --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 0000000..2071b23 --- /dev/null +++ b/LICENSES/MIT.txt @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/LICENSES/Unlicense.txt b/LICENSES/Unlicense.txt new file mode 100644 index 0000000..cde4ac6 --- /dev/null +++ b/LICENSES/Unlicense.txt @@ -0,0 +1,10 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. + +In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/README.md b/README.md index 6eeaac5..ac0ef1d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ + + # Go-SSB Room -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fssb-ngi-pointer%2Fgo-ssb-room.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fssb-ngi-pointer%2Fgo-ssb-room?ref=badge_shield) +[![REUSE status](https://api.reuse.software/badge/github.com/ssb-ngi-pointer/go-ssb-room)](https://api.reuse.software/info/github.com/ssb-ngi-pointer/go-ssb-room) This repository contains code for a [Secure Scuttlebutt](https://ssb.nz) [Room (v1+v2) server](https://github.com/ssb-ngi-pointer/rooms2), written in Go. @@ -39,4 +45,3 @@ For an in-depth codebase walkthrough, see the [development.md](./docs/developmen MIT -[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fssb-ngi-pointer%2Fgo-ssb-room.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fssb-ngi-pointer%2Fgo-ssb-room?ref=badge_large) diff --git a/cmd/insert-user/generate-fake-id.sh b/cmd/insert-user/generate-fake-id.sh index e97b695..95239c3 100755 --- a/cmd/insert-user/generate-fake-id.sh +++ b/cmd/insert-user/generate-fake-id.sh @@ -1,3 +1,8 @@ #!/bin/bash + +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + id=$(dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64 -w0) echo "@${id}.ed25519" diff --git a/cmd/insert-user/main.go b/cmd/insert-user/main.go index d8c70cd..e9f6dd5 100644 --- a/cmd/insert-user/main.go +++ b/cmd/insert-user/main.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // insert-user is a utility to create a new member and fallback password for them diff --git a/cmd/server/dev.go b/cmd/server/dev.go index 232fd0b..2b4b4bd 100644 --- a/cmd/server/dev.go +++ b/cmd/server/dev.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // +build dev package main diff --git a/cmd/server/main.go b/cmd/server/main.go index f3cbc59..ca022fe 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // go-roomsrv hosts the database and p2p server for replication. diff --git a/cmd/server/prod.go b/cmd/server/prod.go index d004331..497e951 100644 --- a/cmd/server/prod.go +++ b/cmd/server/prod.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // +build !dev package main diff --git a/docker-compose.yml b/docker-compose.yml index be9b351..f8b07fe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + version: '3' services: room: diff --git a/docs/README.md b/docs/README.md index 9b4133e..18e31f1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,3 +1,9 @@ + + ## Table of contents - [**Deployment**](./deployment.md) diff --git a/docs/architecture.md b/docs/architecture.md index 2782ab8..289fa40 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,3 +1,9 @@ + + # Architecture ## Invite flow diff --git a/docs/deployment.md b/docs/deployment.md index c91d97c..ac3e6d9 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -1,3 +1,9 @@ + + # Getting Started There are two paths to starting your own room: creating a build from source, or downloading one of the premade releases. diff --git a/docs/development.md b/docs/development.md index b523851..ea9a537 100644 --- a/docs/development.md +++ b/docs/development.md @@ -1,3 +1,9 @@ + + ## Development notes To get started, you need a recent version of [Go](https://golang.org). v1.16 and onward should be sufficient. diff --git a/docs/files/debian-postinstall.sh b/docs/files/debian-postinstall.sh index c1b2151..88d18b9 100644 --- a/docs/files/debian-postinstall.sh +++ b/docs/files/debian-postinstall.sh @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + # create a user to run the server as adduser --system --home /var/lib/go-ssb-room go-ssb-room chown go-ssb-room /var/lib/go-ssb-room diff --git a/docs/files/debian-preremove.sh b/docs/files/debian-preremove.sh index d46bc72..44cd860 100644 --- a/docs/files/debian-preremove.sh +++ b/docs/files/debian-preremove.sh @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + systemctl stop go-ssb-room systemctl disable go-ssb-room # TODO: we might want to have a proper config file so users dont need to tweak this file, then we can also remove and upgrade it properly diff --git a/docs/files/example-nginx.conf b/docs/files/example-nginx.conf index 3b37223..eaf7843 100644 --- a/docs/files/example-nginx.conf +++ b/docs/files/example-nginx.conf @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: Unlicense + server { server_name hermies.club; @@ -66,4 +70,4 @@ server { listen [::]:80 default_server; server_name hermies.club; return 404; # managed by Certbot -} \ No newline at end of file +} diff --git a/docs/files/example-systemd.service b/docs/files/example-systemd.service index d874452..7594797 100644 --- a/docs/files/example-systemd.service +++ b/docs/files/example-systemd.service @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: Unlicense + [Unit] Description="The showcase v2 room" After=network.target diff --git a/docs/images/invites-chart.graphml.license b/docs/images/invites-chart.graphml.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/docs/images/invites-chart.graphml.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/docs/images/invites-chart.png.license b/docs/images/invites-chart.png.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/docs/images/invites-chart.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/docs/images/login-chart.graphml.license b/docs/images/login-chart.graphml.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/docs/images/login-chart.graphml.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/docs/images/login-chart.png.license b/docs/images/login-chart.png.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/docs/images/login-chart.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/docs/images/screenshot.png.license b/docs/images/screenshot.png.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/docs/images/screenshot.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/docs/testing.md b/docs/testing.md index 9370652..c9dcb1c 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -1,3 +1,9 @@ + + # Testing `go-ssb-room` has a variety of tests to ensure that functionality that once worked, keeps working (it does not regress.) These tests are scattered around the repositories modules, but diff --git a/errors.go b/errors.go index ca8b9ca..e0ea3d6 100644 --- a/errors.go +++ b/errors.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package tunnel diff --git a/go.mod b/go.mod index ce69112..4441b89 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: Unlicense + module github.com/ssb-ngi-pointer/go-ssb-room/v2 go 1.16 diff --git a/go.sum.license b/go.sum.license new file mode 100644 index 0000000..eaac9fa --- /dev/null +++ b/go.sum.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: Unlicense \ No newline at end of file diff --git a/internal/aliases/confirm.go b/internal/aliases/confirm.go index 304df5b..44736b6 100644 --- a/internal/aliases/confirm.go +++ b/internal/aliases/confirm.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package aliases implements the validation and signing features of https://ssb-ngi-pointer.github.io/rooms2/#alias diff --git a/internal/aliases/confirm_test.go b/internal/aliases/confirm_test.go index c9e4f13..607bb0f 100644 --- a/internal/aliases/confirm_test.go +++ b/internal/aliases/confirm_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package aliases diff --git a/internal/aliases/names.go b/internal/aliases/names.go index 8939d64..56a064f 100644 --- a/internal/aliases/names.go +++ b/internal/aliases/names.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package aliases diff --git a/internal/aliases/names_test.go b/internal/aliases/names_test.go index af12205..ff2785b 100644 --- a/internal/aliases/names_test.go +++ b/internal/aliases/names_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package aliases diff --git a/internal/broadcasts/attendants.go b/internal/broadcasts/attendants.go index 7f34a3c..a4f2bda 100644 --- a/internal/broadcasts/attendants.go +++ b/internal/broadcasts/attendants.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package broadcasts diff --git a/internal/broadcasts/doc.go b/internal/broadcasts/doc.go index 2d89af7..601776d 100644 --- a/internal/broadcasts/doc.go +++ b/internal/broadcasts/doc.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package broadcasts implements custom typed one-to-n facilities for broadcasting messages/calls to multiple subscribers. diff --git a/internal/broadcasts/endpoints.go b/internal/broadcasts/endpoints.go index 5b513b7..d50605a 100644 --- a/internal/broadcasts/endpoints.go +++ b/internal/broadcasts/endpoints.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package broadcasts diff --git a/internal/broadcasts/endpoints_test.go b/internal/broadcasts/endpoints_test.go index e0d4d7c..afe80ea 100644 --- a/internal/broadcasts/endpoints_test.go +++ b/internal/broadcasts/endpoints_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package broadcasts diff --git a/internal/devtools/counterfeiter.go b/internal/devtools/counterfeiter.go index ee230ac..19a2d27 100644 --- a/internal/devtools/counterfeiter.go +++ b/internal/devtools/counterfeiter.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // +build tools package devtools diff --git a/internal/devtools/stringer.go b/internal/devtools/stringer.go index aad9ba3..265ca4a 100644 --- a/internal/devtools/stringer.go +++ b/internal/devtools/stringer.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // +build tools package devtools diff --git a/internal/maybemod/keys/keys.go b/internal/maybemod/keys/keys.go index d892c4f..9f3857c 100644 --- a/internal/maybemod/keys/keys.go +++ b/internal/maybemod/keys/keys.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package keys could be it's own thing between go-ssb and this but not today diff --git a/internal/maybemod/multicloser/multicloser.go b/internal/maybemod/multicloser/multicloser.go index da5bc8b..8dddfaa 100644 --- a/internal/maybemod/multicloser/multicloser.go +++ b/internal/maybemod/multicloser/multicloser.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package multicloser diff --git a/internal/maybemod/multierror/multierr.go b/internal/maybemod/multierror/multierr.go index b11f33e..d6c0d0d 100644 --- a/internal/maybemod/multierror/multierr.go +++ b/internal/maybemod/multierror/multierr.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package multierror diff --git a/internal/maybemod/testutils/logging.go b/internal/maybemod/testutils/logging.go index 2da613a..dd68210 100644 --- a/internal/maybemod/testutils/logging.go +++ b/internal/maybemod/testutils/logging.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package testutils diff --git a/internal/maybemod/testutils/mergeErrChans.go b/internal/maybemod/testutils/mergeErrChans.go index 13409b8..83a85ce 100644 --- a/internal/maybemod/testutils/mergeErrChans.go +++ b/internal/maybemod/testutils/mergeErrChans.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package testutils diff --git a/internal/maybemuxrpc/plugin.go b/internal/maybemuxrpc/plugin.go index 33ce509..b34fbf0 100644 --- a/internal/maybemuxrpc/plugin.go +++ b/internal/maybemuxrpc/plugin.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package maybemuxrpc diff --git a/internal/network/conntracker.go b/internal/network/conntracker.go index e76f993..5e6dd58 100644 --- a/internal/network/conntracker.go +++ b/internal/network/conntracker.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package network diff --git a/internal/network/conntracker_acceptAll.go b/internal/network/conntracker_acceptAll.go index 706925a..9e2ef46 100644 --- a/internal/network/conntracker_acceptAll.go +++ b/internal/network/conntracker_acceptAll.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package network diff --git a/internal/network/errors.go b/internal/network/errors.go index 3f445af..6e00916 100644 --- a/internal/network/errors.go +++ b/internal/network/errors.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package network diff --git a/internal/network/interface.go b/internal/network/interface.go index d206376..b389d07 100644 --- a/internal/network/interface.go +++ b/internal/network/interface.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package network diff --git a/internal/network/isserver_test.go b/internal/network/isserver_test.go index 69232a8..721433a 100644 --- a/internal/network/isserver_test.go +++ b/internal/network/isserver_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package network_test diff --git a/internal/network/mocked/endpoints.go b/internal/network/mocked/endpoints.go index bb8cac5..a26dcf2 100644 --- a/internal/network/mocked/endpoints.go +++ b/internal/network/mocked/endpoints.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by counterfeiter. DO NOT EDIT. package mocked diff --git a/internal/network/msaddr_test.go b/internal/network/msaddr_test.go index 38fdfee..f56c73f 100644 --- a/internal/network/msaddr_test.go +++ b/internal/network/msaddr_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package network import ( diff --git a/internal/network/new.go b/internal/network/new.go index d337ce5..9d6b3cb 100644 --- a/internal/network/new.go +++ b/internal/network/new.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package network diff --git a/internal/network/websocket.go b/internal/network/websocket.go index aa408ba..5f6f0e8 100644 --- a/internal/network/websocket.go +++ b/internal/network/websocket.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package network diff --git a/internal/netwraputil/spoof.go b/internal/netwraputil/spoof.go index 5df0346..b8b77a6 100644 --- a/internal/netwraputil/spoof.go +++ b/internal/netwraputil/spoof.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package netwraputil diff --git a/internal/netwraputil/spoof_test.go b/internal/netwraputil/spoof_test.go index 04b7ad1..90549c2 100644 --- a/internal/netwraputil/spoof_test.go +++ b/internal/netwraputil/spoof_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package netwraputil diff --git a/internal/randutil/string.go b/internal/randutil/string.go index 4a7cbf2..7ae9661 100644 --- a/internal/randutil/string.go +++ b/internal/randutil/string.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package randutil import "math/rand" diff --git a/internal/repo/repo.go b/internal/repo/repo.go index a46e7e8..eff497f 100644 --- a/internal/repo/repo.go +++ b/internal/repo/repo.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package repo diff --git a/internal/repo/secret.go b/internal/repo/secret.go index bd574b6..aca4bb7 100644 --- a/internal/repo/secret.go +++ b/internal/repo/secret.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package repo diff --git a/internal/signinwithssb/bridge.go b/internal/signinwithssb/bridge.go index e87384b..66690a0 100644 --- a/internal/signinwithssb/bridge.go +++ b/internal/signinwithssb/bridge.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package signinwithssb diff --git a/internal/signinwithssb/bridge_test.go b/internal/signinwithssb/bridge_test.go index 3fb71e7..c15012f 100644 --- a/internal/signinwithssb/bridge_test.go +++ b/internal/signinwithssb/bridge_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package signinwithssb diff --git a/internal/signinwithssb/challenges.go b/internal/signinwithssb/challenges.go index baefba8..642ad57 100644 --- a/internal/signinwithssb/challenges.go +++ b/internal/signinwithssb/challenges.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package signinwithssb diff --git a/internal/signinwithssb/simple_test.go b/internal/signinwithssb/simple_test.go index 2977b8f..7407210 100644 --- a/internal/signinwithssb/simple_test.go +++ b/internal/signinwithssb/simple_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package signinwithssb diff --git a/muxrpc/handlers/alias/handler.go b/muxrpc/handlers/alias/handler.go index d7c1408..016091d 100644 --- a/muxrpc/handlers/alias/handler.go +++ b/muxrpc/handlers/alias/handler.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package alias implements the muxrpc handlers for alias needs. diff --git a/muxrpc/handlers/doc.go b/muxrpc/handlers/doc.go index 108283b..0e08191 100644 --- a/muxrpc/handlers/doc.go +++ b/muxrpc/handlers/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Package handlers contains the muxrpc handler packages for the room server. // // The implementation the actual multiplexing implementation is go.cryptoscope.co/muxrpc. diff --git a/muxrpc/handlers/gossip/ping.go b/muxrpc/handlers/gossip/ping.go index 1586dbc..4b0fbfc 100644 --- a/muxrpc/handlers/gossip/ping.go +++ b/muxrpc/handlers/gossip/ping.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package gossip diff --git a/muxrpc/handlers/signinwithssb/withssb.go b/muxrpc/handlers/signinwithssb/withssb.go index 8022c1b..6d12427 100644 --- a/muxrpc/handlers/signinwithssb/withssb.go +++ b/muxrpc/handlers/signinwithssb/withssb.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package signinwithssb diff --git a/muxrpc/handlers/tunnel/server/attendants.go b/muxrpc/handlers/tunnel/server/attendants.go index f50fe73..3a36bba 100644 --- a/muxrpc/handlers/tunnel/server/attendants.go +++ b/muxrpc/handlers/tunnel/server/attendants.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package server diff --git a/muxrpc/handlers/tunnel/server/connect.go b/muxrpc/handlers/tunnel/server/connect.go index d17bd22..da0993d 100644 --- a/muxrpc/handlers/tunnel/server/connect.go +++ b/muxrpc/handlers/tunnel/server/connect.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package server diff --git a/muxrpc/handlers/tunnel/server/plugin.go b/muxrpc/handlers/tunnel/server/plugin.go index 448e7ee..b8d86b0 100644 --- a/muxrpc/handlers/tunnel/server/plugin.go +++ b/muxrpc/handlers/tunnel/server/plugin.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package server diff --git a/muxrpc/handlers/tunnel/server/state.go b/muxrpc/handlers/tunnel/server/state.go index b459186..c2fa60e 100644 --- a/muxrpc/handlers/tunnel/server/state.go +++ b/muxrpc/handlers/tunnel/server/state.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package server diff --git a/muxrpc/handlers/whoami/whoami.go b/muxrpc/handlers/whoami/whoami.go index 77d7224..eeeb1a7 100644 --- a/muxrpc/handlers/whoami/whoami.go +++ b/muxrpc/handlers/whoami/whoami.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package whoami diff --git a/muxrpc/test/go/alias_test.go b/muxrpc/test/go/alias_test.go index 7815921..dc25f11 100644 --- a/muxrpc/test/go/alias_test.go +++ b/muxrpc/test/go/alias_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package go_test diff --git a/muxrpc/test/go/attendants_test.go b/muxrpc/test/go/attendants_test.go index 77e7d53..78615ec 100644 --- a/muxrpc/test/go/attendants_test.go +++ b/muxrpc/test/go/attendants_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package go_test diff --git a/muxrpc/test/go/deny_test.go b/muxrpc/test/go/deny_test.go index 2a218c0..16a6c60 100644 --- a/muxrpc/test/go/deny_test.go +++ b/muxrpc/test/go/deny_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package go_test diff --git a/muxrpc/test/go/endpoints_test.go b/muxrpc/test/go/endpoints_test.go index 8b1a44c..9acc316 100644 --- a/muxrpc/test/go/endpoints_test.go +++ b/muxrpc/test/go/endpoints_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package go_test diff --git a/muxrpc/test/go/roomstate_test.go b/muxrpc/test/go/roomstate_test.go index bc08515..c9548ca 100644 --- a/muxrpc/test/go/roomstate_test.go +++ b/muxrpc/test/go/roomstate_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package go_test diff --git a/muxrpc/test/go/simple_test.go b/muxrpc/test/go/simple_test.go index 43cc15e..c20db37 100644 --- a/muxrpc/test/go/simple_test.go +++ b/muxrpc/test/go/simple_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package go_test diff --git a/muxrpc/test/go/utils_test.go b/muxrpc/test/go/utils_test.go index 08a2fbf..116ede0 100644 --- a/muxrpc/test/go/utils_test.go +++ b/muxrpc/test/go/utils_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package go_test diff --git a/muxrpc/test/go/websocket_test.go b/muxrpc/test/go/websocket_test.go index ff2205e..48a3b61 100644 --- a/muxrpc/test/go/websocket_test.go +++ b/muxrpc/test/go/websocket_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package go_test import ( diff --git a/muxrpc/test/nodejs/.gitignore b/muxrpc/test/nodejs/.gitignore index d1901a0..7973dab 100644 --- a/muxrpc/test/nodejs/.gitignore +++ b/muxrpc/test/nodejs/.gitignore @@ -1,2 +1,6 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: Unlicense + node_modules testrun diff --git a/muxrpc/test/nodejs/aliases_test.go b/muxrpc/test/nodejs/aliases_test.go index 9427bdd..94d11b7 100644 --- a/muxrpc/test/nodejs/aliases_test.go +++ b/muxrpc/test/nodejs/aliases_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package nodejs_test import ( diff --git a/muxrpc/test/nodejs/package-lock.json.license b/muxrpc/test/nodejs/package-lock.json.license new file mode 100644 index 0000000..eaac9fa --- /dev/null +++ b/muxrpc/test/nodejs/package-lock.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: Unlicense \ No newline at end of file diff --git a/muxrpc/test/nodejs/package.json.license b/muxrpc/test/nodejs/package.json.license new file mode 100644 index 0000000..eaac9fa --- /dev/null +++ b/muxrpc/test/nodejs/package.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: Unlicense \ No newline at end of file diff --git a/muxrpc/test/nodejs/sbot_client.js b/muxrpc/test/nodejs/sbot_client.js index c01308d..decc73b 100644 --- a/muxrpc/test/nodejs/sbot_client.js +++ b/muxrpc/test/nodejs/sbot_client.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const Path = require('path') const { loadOrCreateSync } = require('ssb-keys') const tapSpec = require("tap-spec") diff --git a/muxrpc/test/nodejs/sbot_serv.js b/muxrpc/test/nodejs/sbot_serv.js index 3bcb667..ac738fe 100644 --- a/muxrpc/test/nodejs/sbot_serv.js +++ b/muxrpc/test/nodejs/sbot_serv.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const Path = require('path') const tapSpec = require('tap-spec') const tape = require('tape') diff --git a/muxrpc/test/nodejs/setup_test.go b/muxrpc/test/nodejs/setup_test.go index a608461..bde0cc9 100644 --- a/muxrpc/test/nodejs/setup_test.go +++ b/muxrpc/test/nodejs/setup_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package nodejs_test contains test scenarios and helpers to run interoparability tests against the javascript implementation. diff --git a/muxrpc/test/nodejs/testscripts/client-opening-tunnel.js b/muxrpc/test/nodejs/testscripts/client-opening-tunnel.js index 03fa639..cb99b53 100644 --- a/muxrpc/test/nodejs/testscripts/client-opening-tunnel.js +++ b/muxrpc/test/nodejs/testscripts/client-opening-tunnel.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const pull = require('pull-stream') const { readFileSync } = require('fs') const path = require("path") diff --git a/muxrpc/test/nodejs/testscripts/client.js b/muxrpc/test/nodejs/testscripts/client.js index 8858aaa..beca6c2 100644 --- a/muxrpc/test/nodejs/testscripts/client.js +++ b/muxrpc/test/nodejs/testscripts/client.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const pull = require('pull-stream') const path = require("path") const scriptname = path.basename(__filename) diff --git a/muxrpc/test/nodejs/testscripts/legacy_client.js b/muxrpc/test/nodejs/testscripts/legacy_client.js index 74a4703..dd045c1 100644 --- a/muxrpc/test/nodejs/testscripts/legacy_client.js +++ b/muxrpc/test/nodejs/testscripts/legacy_client.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const secretStackPlugins = require('./secretstack-legacy') const before = require('./minimal-before-setup') const performClientTest = require('./client') diff --git a/muxrpc/test/nodejs/testscripts/legacy_client_opening_tunnel.js b/muxrpc/test/nodejs/testscripts/legacy_client_opening_tunnel.js index 53495d7..c7a5b93 100644 --- a/muxrpc/test/nodejs/testscripts/legacy_client_opening_tunnel.js +++ b/muxrpc/test/nodejs/testscripts/legacy_client_opening_tunnel.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const secretStackPlugins = require('./secretstack-legacy') const before = require('./minimal-before-setup') const performOpeningTunnelTest = require('./client-opening-tunnel') diff --git a/muxrpc/test/nodejs/testscripts/legacy_server.js b/muxrpc/test/nodejs/testscripts/legacy_server.js index b0f84fd..7003286 100644 --- a/muxrpc/test/nodejs/testscripts/legacy_server.js +++ b/muxrpc/test/nodejs/testscripts/legacy_server.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const pull = require('pull-stream') const path = require("path") const scriptname = path.basename(__filename) diff --git a/muxrpc/test/nodejs/testscripts/minimal-before-setup.js b/muxrpc/test/nodejs/testscripts/minimal-before-setup.js index 20d31c9..433ffb2 100644 --- a/muxrpc/test/nodejs/testscripts/minimal-before-setup.js +++ b/muxrpc/test/nodejs/testscripts/minimal-before-setup.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + module.exports = (t, sbot, ready) => { ready() } diff --git a/muxrpc/test/nodejs/testscripts/modern_aliases.js b/muxrpc/test/nodejs/testscripts/modern_aliases.js index 82ddbf7..9151247 100644 --- a/muxrpc/test/nodejs/testscripts/modern_aliases.js +++ b/muxrpc/test/nodejs/testscripts/modern_aliases.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const secretStackPlugins = require('./secretstack-modern') const before = require('./minimal-before-setup') diff --git a/muxrpc/test/nodejs/testscripts/modern_client.js b/muxrpc/test/nodejs/testscripts/modern_client.js index 88cde61..56fd566 100644 --- a/muxrpc/test/nodejs/testscripts/modern_client.js +++ b/muxrpc/test/nodejs/testscripts/modern_client.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const secretStackPlugins = require('./secretstack-modern') const before = require('./minimal-before-setup') const performClientTest = require('./client') diff --git a/muxrpc/test/nodejs/testscripts/modern_client_opening_tunnel.js b/muxrpc/test/nodejs/testscripts/modern_client_opening_tunnel.js index e2ad965..5086da3 100644 --- a/muxrpc/test/nodejs/testscripts/modern_client_opening_tunnel.js +++ b/muxrpc/test/nodejs/testscripts/modern_client_opening_tunnel.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const secretStackPlugins = require('./secretstack-modern') // use modern tunnel const before = require('./minimal-before-setup') const performOpeningTunnelTest = require('./client-opening-tunnel') diff --git a/muxrpc/test/nodejs/testscripts/secretstack-legacy.js b/muxrpc/test/nodejs/testscripts/secretstack-legacy.js index 6a0919b..9cb902b 100644 --- a/muxrpc/test/nodejs/testscripts/secretstack-legacy.js +++ b/muxrpc/test/nodejs/testscripts/secretstack-legacy.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + module.exports = [ 'ssb-conn', 'ssb-room/tunnel/client' diff --git a/muxrpc/test/nodejs/testscripts/secretstack-modern.js b/muxrpc/test/nodejs/testscripts/secretstack-modern.js index d5aad74..eed0b3c 100644 --- a/muxrpc/test/nodejs/testscripts/secretstack-modern.js +++ b/muxrpc/test/nodejs/testscripts/secretstack-modern.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + module.exports = [ 'ssb-conn', 'ssb-room-client' diff --git a/muxrpc/test/nodejs/testscripts/secretstack_testplugin.js b/muxrpc/test/nodejs/testscripts/secretstack_testplugin.js index 1006624..f6b6ecc 100644 --- a/muxrpc/test/nodejs/testscripts/secretstack_testplugin.js +++ b/muxrpc/test/nodejs/testscripts/secretstack_testplugin.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + /* this testing plugin supplies a very simple method to see if the other side is working */ diff --git a/muxrpc/test/nodejs/testscripts/template.js b/muxrpc/test/nodejs/testscripts/template.js index 5617ced..1d85cf8 100644 --- a/muxrpc/test/nodejs/testscripts/template.js +++ b/muxrpc/test/nodejs/testscripts/template.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + /* this is a tempalte for a script to be used in the go<>js tests. diff --git a/muxrpc/test/nodejs/tunnel_connect_test.go b/muxrpc/test/nodejs/tunnel_connect_test.go index db6f52b..eb9c463 100644 --- a/muxrpc/test/nodejs/tunnel_connect_test.go +++ b/muxrpc/test/nodejs/tunnel_connect_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package nodejs_test diff --git a/roomdb/interface.go b/roomdb/interface.go index 05de72e..b0409fc 100644 --- a/roomdb/interface.go +++ b/roomdb/interface.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package roomdb implements all the persisted database needs of the room server. diff --git a/roomdb/mockdb/aliases.go b/roomdb/mockdb/aliases.go index 8217b28..ec60485 100644 --- a/roomdb/mockdb/aliases.go +++ b/roomdb/mockdb/aliases.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by counterfeiter. DO NOT EDIT. package mockdb diff --git a/roomdb/mockdb/auth.go b/roomdb/mockdb/auth.go index e0125de..06631d1 100644 --- a/roomdb/mockdb/auth.go +++ b/roomdb/mockdb/auth.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by counterfeiter. DO NOT EDIT. package mockdb diff --git a/roomdb/mockdb/auth_fallback.go b/roomdb/mockdb/auth_fallback.go index 6907aed..1043323 100644 --- a/roomdb/mockdb/auth_fallback.go +++ b/roomdb/mockdb/auth_fallback.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by counterfeiter. DO NOT EDIT. package mockdb diff --git a/roomdb/mockdb/denied.go b/roomdb/mockdb/denied.go index 37bfe28..010ddc2 100644 --- a/roomdb/mockdb/denied.go +++ b/roomdb/mockdb/denied.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by counterfeiter. DO NOT EDIT. package mockdb diff --git a/roomdb/mockdb/fixed_pages.go b/roomdb/mockdb/fixed_pages.go index 7cebc21..fde0eab 100644 --- a/roomdb/mockdb/fixed_pages.go +++ b/roomdb/mockdb/fixed_pages.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by counterfeiter. DO NOT EDIT. package mockdb diff --git a/roomdb/mockdb/invites.go b/roomdb/mockdb/invites.go index a809c81..6dde2ba 100644 --- a/roomdb/mockdb/invites.go +++ b/roomdb/mockdb/invites.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by counterfeiter. DO NOT EDIT. package mockdb diff --git a/roomdb/mockdb/members.go b/roomdb/mockdb/members.go index 5ce25fa..957c547 100644 --- a/roomdb/mockdb/members.go +++ b/roomdb/mockdb/members.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by counterfeiter. DO NOT EDIT. package mockdb diff --git a/roomdb/mockdb/pages.go b/roomdb/mockdb/pages.go index 5333c8d..73a753a 100644 --- a/roomdb/mockdb/pages.go +++ b/roomdb/mockdb/pages.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by counterfeiter. DO NOT EDIT. package mockdb diff --git a/roomdb/mockdb/roomconfig.go b/roomdb/mockdb/roomconfig.go index 27ea042..d2332e0 100644 --- a/roomdb/mockdb/roomconfig.go +++ b/roomdb/mockdb/roomconfig.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by counterfeiter. DO NOT EDIT. package mockdb diff --git a/roomdb/privacymode_string.go b/roomdb/privacymode_string.go index 2268fba..bd5bb55 100644 --- a/roomdb/privacymode_string.go +++ b/roomdb/privacymode_string.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by "stringer -type=PrivacyMode"; DO NOT EDIT. package roomdb diff --git a/roomdb/role_string.go b/roomdb/role_string.go index c3d6c56..ded6230 100644 --- a/roomdb/role_string.go +++ b/roomdb/role_string.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by "stringer -type=Role"; DO NOT EDIT. package roomdb diff --git a/roomdb/sqlite/aliases.go b/roomdb/sqlite/aliases.go index 4929f04..748bacf 100644 --- a/roomdb/sqlite/aliases.go +++ b/roomdb/sqlite/aliases.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package sqlite diff --git a/roomdb/sqlite/aliases_test.go b/roomdb/sqlite/aliases_test.go index 93dc677..5b65f84 100644 --- a/roomdb/sqlite/aliases_test.go +++ b/roomdb/sqlite/aliases_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package sqlite diff --git a/roomdb/sqlite/auth_fallback.go b/roomdb/sqlite/auth_fallback.go index 6b9d474..f2bf85f 100644 --- a/roomdb/sqlite/auth_fallback.go +++ b/roomdb/sqlite/auth_fallback.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package sqlite diff --git a/roomdb/sqlite/auth_fallback_test.go b/roomdb/sqlite/auth_fallback_test.go index 4b104d1..ea1a0ad 100644 --- a/roomdb/sqlite/auth_fallback_test.go +++ b/roomdb/sqlite/auth_fallback_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package sqlite import ( diff --git a/roomdb/sqlite/auth_withssb.go b/roomdb/sqlite/auth_withssb.go index 03710eb..1d07457 100644 --- a/roomdb/sqlite/auth_withssb.go +++ b/roomdb/sqlite/auth_withssb.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package sqlite diff --git a/roomdb/sqlite/denied.go b/roomdb/sqlite/denied.go index 2313e9d..e9975e3 100644 --- a/roomdb/sqlite/denied.go +++ b/roomdb/sqlite/denied.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package sqlite diff --git a/roomdb/sqlite/denied_test.go b/roomdb/sqlite/denied_test.go index 3ae79c6..ca29131 100644 --- a/roomdb/sqlite/denied_test.go +++ b/roomdb/sqlite/denied_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package sqlite diff --git a/roomdb/sqlite/generate_models.sh b/roomdb/sqlite/generate_models.sh index f45ceae..4580026 100755 --- a/roomdb/sqlite/generate_models.sh +++ b/roomdb/sqlite/generate_models.sh @@ -1,4 +1,9 @@ #!/bin/sh + +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + set -e # ensure tools are installed diff --git a/roomdb/sqlite/invites.go b/roomdb/sqlite/invites.go index 72bb131..a771142 100644 --- a/roomdb/sqlite/invites.go +++ b/roomdb/sqlite/invites.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package sqlite import ( diff --git a/roomdb/sqlite/invites_test.go b/roomdb/sqlite/invites_test.go index 735f7c6..e05d7c3 100644 --- a/roomdb/sqlite/invites_test.go +++ b/roomdb/sqlite/invites_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package sqlite import ( diff --git a/roomdb/sqlite/members.go b/roomdb/sqlite/members.go index 7b47306..af33557 100644 --- a/roomdb/sqlite/members.go +++ b/roomdb/sqlite/members.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package sqlite import ( diff --git a/roomdb/sqlite/members_test.go b/roomdb/sqlite/members_test.go index 32dbad4..0110f31 100644 --- a/roomdb/sqlite/members_test.go +++ b/roomdb/sqlite/members_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package sqlite import ( diff --git a/roomdb/sqlite/migrations.go b/roomdb/sqlite/migrations.go index 6732daf..f632461 100644 --- a/roomdb/sqlite/migrations.go +++ b/roomdb/sqlite/migrations.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package sqlite import ( diff --git a/roomdb/sqlite/migrations/01-consolidated.sql b/roomdb/sqlite/migrations/01-consolidated.sql index 0c82d9f..d922c17 100644 --- a/roomdb/sqlite/migrations/01-consolidated.sql +++ b/roomdb/sqlite/migrations/01-consolidated.sql @@ -1,3 +1,7 @@ +-- SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +-- +-- SPDX-License-Identifier: CC0-1.0 + -- +migrate Up -- the internal users table (people who used an invite) CREATE TABLE members ( diff --git a/roomdb/sqlite/migrations/02-notices.sql b/roomdb/sqlite/migrations/02-notices.sql index 87e628b..30c3d23 100644 --- a/roomdb/sqlite/migrations/02-notices.sql +++ b/roomdb/sqlite/migrations/02-notices.sql @@ -1,3 +1,7 @@ +-- SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +-- +-- SPDX-License-Identifier: CC0-1.0 + -- +migrate Up CREATE TABLE pins ( id integer NOT NULL PRIMARY KEY, diff --git a/roomdb/sqlite/migrations/03-config.sql b/roomdb/sqlite/migrations/03-config.sql index 89e2d32..fe8f746 100644 --- a/roomdb/sqlite/migrations/03-config.sql +++ b/roomdb/sqlite/migrations/03-config.sql @@ -1,3 +1,7 @@ +-- SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +-- +-- SPDX-License-Identifier: CC0-1.0 + -- +migrate Up -- the configuration settings for this room, currently privacy mode settings and the default translation for the room CREATE TABLE config ( diff --git a/roomdb/sqlite/migrations/03-siwssb-tokens.sql b/roomdb/sqlite/migrations/03-siwssb-tokens.sql index 4cc19f3..101636f 100644 --- a/roomdb/sqlite/migrations/03-siwssb-tokens.sql +++ b/roomdb/sqlite/migrations/03-siwssb-tokens.sql @@ -1,3 +1,7 @@ +-- SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +-- +-- SPDX-License-Identifier: CC0-1.0 + -- +migrate Up -- SIWSSB stands for sign-in with ssb CREATE TABLE SIWSSB_sessions ( diff --git a/roomdb/sqlite/migrations/04-overhaul-fallback-auth.sql b/roomdb/sqlite/migrations/04-overhaul-fallback-auth.sql index 13c5a01..79f00f0 100644 --- a/roomdb/sqlite/migrations/04-overhaul-fallback-auth.sql +++ b/roomdb/sqlite/migrations/04-overhaul-fallback-auth.sql @@ -1,3 +1,7 @@ +-- SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +-- +-- SPDX-License-Identifier: CC0-1.0 + -- +migrate Up -- drop login column from fallback pw diff --git a/roomdb/sqlite/models/SIWSSB_sessions.go b/roomdb/sqlite/models/SIWSSB_sessions.go index e6c8cc4..99591fe 100644 --- a/roomdb/sqlite/models/SIWSSB_sessions.go +++ b/roomdb/sqlite/models/SIWSSB_sessions.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/aliases.go b/roomdb/sqlite/models/aliases.go index c38a9ec..6452494 100644 --- a/roomdb/sqlite/models/aliases.go +++ b/roomdb/sqlite/models/aliases.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/boil_queries.go b/roomdb/sqlite/models/boil_queries.go index de6f5f1..193455b 100644 --- a/roomdb/sqlite/models/boil_queries.go +++ b/roomdb/sqlite/models/boil_queries.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/boil_table_names.go b/roomdb/sqlite/models/boil_table_names.go index 5f855b0..e861353 100644 --- a/roomdb/sqlite/models/boil_table_names.go +++ b/roomdb/sqlite/models/boil_table_names.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/boil_types.go b/roomdb/sqlite/models/boil_types.go index c2fd902..182ce3b 100644 --- a/roomdb/sqlite/models/boil_types.go +++ b/roomdb/sqlite/models/boil_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/config.go b/roomdb/sqlite/models/config.go index 9ec6ce8..09047cc 100644 --- a/roomdb/sqlite/models/config.go +++ b/roomdb/sqlite/models/config.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/denied_keys.go b/roomdb/sqlite/models/denied_keys.go index 23f48c7..17bac00 100644 --- a/roomdb/sqlite/models/denied_keys.go +++ b/roomdb/sqlite/models/denied_keys.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/fallback_passwords.go b/roomdb/sqlite/models/fallback_passwords.go index f682257..5e7e9ce 100644 --- a/roomdb/sqlite/models/fallback_passwords.go +++ b/roomdb/sqlite/models/fallback_passwords.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/fallback_reset_tokens.go b/roomdb/sqlite/models/fallback_reset_tokens.go index a7a54c1..d66d410 100644 --- a/roomdb/sqlite/models/fallback_reset_tokens.go +++ b/roomdb/sqlite/models/fallback_reset_tokens.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/invites.go b/roomdb/sqlite/models/invites.go index 88455ea..7806efe 100644 --- a/roomdb/sqlite/models/invites.go +++ b/roomdb/sqlite/models/invites.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/members.go b/roomdb/sqlite/models/members.go index 196f2e7..770ec1e 100644 --- a/roomdb/sqlite/models/members.go +++ b/roomdb/sqlite/models/members.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/notices.go b/roomdb/sqlite/models/notices.go index 33757b2..43e0e02 100644 --- a/roomdb/sqlite/models/notices.go +++ b/roomdb/sqlite/models/notices.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/models/pins.go b/roomdb/sqlite/models/pins.go index a8e3c1c..564737c 100644 --- a/roomdb/sqlite/models/pins.go +++ b/roomdb/sqlite/models/pins.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // Code generated by SQLBoiler 4.5.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT. // This file is meant to be re-generated in place and/or deleted at any time. diff --git a/roomdb/sqlite/new.go b/roomdb/sqlite/new.go index 5b16ab1..9f794c5 100644 --- a/roomdb/sqlite/new.go +++ b/roomdb/sqlite/new.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package sqlite implements the SQLite backend of the roomdb interfaces. diff --git a/roomdb/sqlite/new_test.go b/roomdb/sqlite/new_test.go index fc7127e..6175b9a 100644 --- a/roomdb/sqlite/new_test.go +++ b/roomdb/sqlite/new_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package sqlite import ( diff --git a/roomdb/sqlite/notices.go b/roomdb/sqlite/notices.go index 8871ef7..97cb940 100644 --- a/roomdb/sqlite/notices.go +++ b/roomdb/sqlite/notices.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package sqlite import ( diff --git a/roomdb/sqlite/notices_test.go b/roomdb/sqlite/notices_test.go index 6841585..c7f8359 100644 --- a/roomdb/sqlite/notices_test.go +++ b/roomdb/sqlite/notices_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package sqlite import ( diff --git a/roomdb/sqlite/roomconfig.go b/roomdb/sqlite/roomconfig.go index 76da025..c5b7142 100644 --- a/roomdb/sqlite/roomconfig.go +++ b/roomdb/sqlite/roomconfig.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package sqlite diff --git a/roomdb/sqlite/roomconfig_test.go b/roomdb/sqlite/roomconfig_test.go index 29becc2..2ccc747 100644 --- a/roomdb/sqlite/roomconfig_test.go +++ b/roomdb/sqlite/roomconfig_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package sqlite diff --git a/roomdb/sqlite/sqlboiler.toml b/roomdb/sqlite/sqlboiler.toml index b41a3aa..eae417d 100644 --- a/roomdb/sqlite/sqlboiler.toml +++ b/roomdb/sqlite/sqlboiler.toml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + [sqlite3] # go test in the roomdb/sqlite package will create this dbname = "testrun/TestSchema/roomdb" diff --git a/roomdb/types.go b/roomdb/types.go index b202042..31c349f 100644 --- a/roomdb/types.go +++ b/roomdb/types.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package roomdb diff --git a/roomsrv/init_handlers.go b/roomsrv/init_handlers.go index ff5e922..839c632 100644 --- a/roomsrv/init_handlers.go +++ b/roomsrv/init_handlers.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package roomsrv diff --git a/roomsrv/init_network.go b/roomsrv/init_network.go index c8fa850..e736c49 100644 --- a/roomsrv/init_network.go +++ b/roomsrv/init_network.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package roomsrv diff --git a/roomsrv/init_unixsock.go b/roomsrv/init_unixsock.go index a074211..cfdb62c 100644 --- a/roomsrv/init_unixsock.go +++ b/roomsrv/init_unixsock.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package roomsrv diff --git a/roomsrv/manifest.go b/roomsrv/manifest.go index 833c345..4d53774 100644 --- a/roomsrv/manifest.go +++ b/roomsrv/manifest.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package roomsrv diff --git a/roomsrv/options.go b/roomsrv/options.go index b3d467c..0ce336c 100644 --- a/roomsrv/options.go +++ b/roomsrv/options.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package roomsrv diff --git a/roomsrv/server.go b/roomsrv/server.go index 9aefb5f..e50019c 100644 --- a/roomsrv/server.go +++ b/roomsrv/server.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package roomsrv implements the muxrpc server for all the room related code. diff --git a/roomstate/roomstate.go b/roomstate/roomstate.go index 35da136..6034609 100644 --- a/roomstate/roomstate.go +++ b/roomstate/roomstate.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package roomstate import ( diff --git a/start.sh b/start.sh index 833f546..66cb16f 100644 --- a/start.sh +++ b/start.sh @@ -1,4 +1,8 @@ #!/bin/sh +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + [[ -f ".env" ]] && source .env ./cmd/server/server -https-domain "${HTTPS_DOMAIN}" -repo "${REPO:-~/.ssb-go-room-secrets}" -aliases-as-subdomains "${ALIASES_AS_SUBDOMAINS}" diff --git a/web/assets/alias-uri.js b/web/assets/alias-uri.js index c352b9e..fd9e990 100644 --- a/web/assets/alias-uri.js +++ b/web/assets/alias-uri.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + let hasFocus = true; window.addEventListener('blur', () => { hasFocus = false; diff --git a/web/assets/auth-withssb-uri.js b/web/assets/auth-withssb-uri.js index fe2921a..7df8f62 100644 --- a/web/assets/auth-withssb-uri.js +++ b/web/assets/auth-withssb-uri.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + const ssbUriLink = document.querySelector('#start-auth-uri'); const waitingElem = document.querySelector('#waiting'); const errorElem = document.querySelector('#failed'); diff --git a/web/assets/favicon/android-chrome-192x192.png.license b/web/assets/favicon/android-chrome-192x192.png.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/web/assets/favicon/android-chrome-192x192.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/web/assets/favicon/android-chrome-512x512.png.license b/web/assets/favicon/android-chrome-512x512.png.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/web/assets/favicon/android-chrome-512x512.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/web/assets/favicon/apple-touch-icon.png.license b/web/assets/favicon/apple-touch-icon.png.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/web/assets/favicon/apple-touch-icon.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/web/assets/favicon/favicon-16x16.png.license b/web/assets/favicon/favicon-16x16.png.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/web/assets/favicon/favicon-16x16.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/web/assets/favicon/favicon-32x32.png.license b/web/assets/favicon/favicon-32x32.png.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/web/assets/favicon/favicon-32x32.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/web/assets/favicon/favicon.ico.license b/web/assets/favicon/favicon.ico.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/web/assets/favicon/favicon.ico.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/web/assets/favicon/site.webmanifest.license b/web/assets/favicon/site.webmanifest.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/web/assets/favicon/site.webmanifest.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/web/assets/fixfouc.css b/web/assets/fixfouc.css index 609944a..f26145f 100644 --- a/web/assets/fixfouc.css +++ b/web/assets/fixfouc.css @@ -1,4 +1,10 @@ +/* + * SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + * + * SPDX-License-Identifier: CC-BY-4.0 + */ + html { visibility: hidden; opacity: 0; -} \ No newline at end of file +} diff --git a/web/assets/img/test-hermie.png.license b/web/assets/img/test-hermie.png.license new file mode 100644 index 0000000..c912ade --- /dev/null +++ b/web/assets/img/test-hermie.png.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file diff --git a/web/assets/invite-uri.js b/web/assets/invite-uri.js index 4d687a3..359d741 100644 --- a/web/assets/invite-uri.js +++ b/web/assets/invite-uri.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + let hasFocus = true; window.addEventListener('blur', () => { hasFocus = false; diff --git a/web/assets/style.css b/web/assets/style.css index a8dab22..c2c59f5 100644 --- a/web/assets/style.css +++ b/web/assets/style.css @@ -1,3 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + * + * SPDX-License-Identifier: MIT + */ + /*! tailwindcss v2.0.3 | MIT License | https://tailwindcss.com*/ -/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder, textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder, textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px*var(--tw-divide-x-reverse));border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)))}.divide-gray-300>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(209,213,219,var(--tw-divide-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgba(254,242,242,var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgba(220,38,38,var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgba(254,243,199,var(--tw-bg-opacity))}.bg-green-50{--tw-bg-opacity:1;background-color:rgba(236,253,245,var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgba(16,185,129,var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgba(59,130,246,var(--tw-bg-opacity))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgba(245,243,255,var(--tw-bg-opacity))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgba(237,233,254,var(--tw-bg-opacity))}.bg-purple-200{--tw-bg-opacity:1;background-color:rgba(221,214,254,var(--tw-bg-opacity))}.bg-purple-500{--tw-bg-opacity:1;background-color:rgba(139,92,246,var(--tw-bg-opacity))}.bg-pink-50{--tw-bg-opacity:1;background-color:rgba(253,242,248,var(--tw-bg-opacity))}.bg-pink-600{--tw-bg-opacity:1;background-color:rgba(219,39,119,var(--tw-bg-opacity))}.odd\:bg-gray-100:nth-child(odd){--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgba(220,38,38,var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgba(185,28,28,var(--tw-bg-opacity))}.hover\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgba(217,119,6,var(--tw-bg-opacity))}.hover\:bg-green-500:hover{--tw-bg-opacity:1;background-color:rgba(16,185,129,var(--tw-bg-opacity))}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgba(5,150,105,var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgba(29,78,216,var(--tw-bg-opacity))}.hover\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgba(124,58,237,var(--tw-bg-opacity))}.hover\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgba(190,24,93,var(--tw-bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(90deg,var(--tw-gradient-stops))}.from-pink-400{--tw-gradient-from:#f472b6;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,rgba(244,114,182,0))}.to-red-400{--tw-gradient-to:#f87171}.border-transparent{border-color:transparent}.border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.border-yellow-800{--tw-border-opacity:1;border-color:rgba(146,64,14,var(--tw-border-opacity))}.border-green-200{--tw-border-opacity:1;border-color:rgba(167,243,208,var(--tw-border-opacity))}.border-blue-800{--tw-border-opacity:1;border-color:rgba(30,64,175,var(--tw-border-opacity))}.hover\:border-transparent:hover{border-color:transparent}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgba(156,163,175,var(--tw-border-opacity))}.hover\:border-green-400:hover{--tw-border-opacity:1;border-color:rgba(52,211,153,var(--tw-border-opacity))}.hover\:border-pink-400:hover{--tw-border-opacity:1;border-color:rgba(244,114,182,var(--tw-border-opacity))}.focus\:border-transparent:focus{border-color:transparent}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.border-dashed{border-style:dashed}.border-2{border-width:2px}.border{border-width:1px}.box-content{box-sizing:content-box}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-row{display:table-row}.grid{display:grid}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.self-start{align-self:flex-start}.self-center{align-self:center}.self-stretch{align-self:stretch}.justify-items-center{justify-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.float-right{float:right}.float-left{float:left}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-black{font-weight:900}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-32{height:8rem}.h-64{height:16rem}.h-px{height:1px}.h-full{height:100%}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.ml-0{margin-left:0}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mb-8{margin-bottom:2rem}.mt-10{margin-top:2.5rem}.mb-10{margin-bottom:2.5rem}.ml-11{margin-left:2.75rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mt-0\.5{margin-top:.125rem}.-ml-px{margin-left:-1px}.max-w-sm{max-width:24rem}.max-w-lg{max-width:32rem}.max-w-2xl{max-width:42rem}.max-w-full{max-width:100%}.min-h-6{min-height:1.5rem}.min-h-12{min-height:3rem}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-hidden{overflow:hidden}.overflow-y-scroll{overflow-y:scroll}.p-1{padding:.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.pr-0{padding-right:0}.pr-1{padding-right:.25rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pr-3{padding-right:.75rem}.pl-3{padding-left:.75rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pr-6{padding-right:1.5rem}.pl-10{padding-left:2.5rem}.placeholder-gray-300::-moz-placeholder{--tw-placeholder-opacity:1;color:rgba(209,213,219,var(--tw-placeholder-opacity))}.placeholder-gray-300:-ms-input-placeholder{--tw-placeholder-opacity:1;color:rgba(209,213,219,var(--tw-placeholder-opacity))}.placeholder-gray-300::placeholder{--tw-placeholder-opacity:1;color:rgba(209,213,219,var(--tw-placeholder-opacity))}.absolute{position:absolute}.relative{position:relative}.-top-1{top:-.25rem}.-left-1{left:-.25rem}.-top-1\.5{top:-.375rem}.resize-y{resize:vertical}*{--tw-shadow:0 0 transparent}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,0.05)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04)}.hover\:shadow:hover,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.hover\:shadow:hover{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.hover\:shadow-md:hover,.hover\:shadow-xl:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04)}*{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.focus\:ring-1:focus,.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(229,231,235,var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(209,213,219,var(--tw-ring-opacity))}.ring-red-400{--tw-ring-opacity:1;--tw-ring-color:rgba(248,113,113,var(--tw-ring-opacity))}.ring-yellow-400{--tw-ring-opacity:1;--tw-ring-color:rgba(251,191,36,var(--tw-ring-opacity))}.ring-green-400{--tw-ring-opacity:1;--tw-ring-color:rgba(52,211,153,var(--tw-ring-opacity))}.ring-purple-300{--tw-ring-opacity:1;--tw-ring-color:rgba(196,181,253,var(--tw-ring-opacity))}.ring-purple-400{--tw-ring-opacity:1;--tw-ring-color:rgba(167,139,250,var(--tw-ring-opacity))}.focus\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(209,213,219,var(--tw-ring-opacity))}.focus\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(75,85,99,var(--tw-ring-opacity))}.focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(248,113,113,var(--tw-ring-opacity))}.focus\:ring-red-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(220,38,38,var(--tw-ring-opacity))}.focus\:ring-green-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(52,211,153,var(--tw-ring-opacity))}.focus\:ring-green-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(16,185,129,var(--tw-ring-opacity))}.focus\:ring-green-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(5,150,105,var(--tw-ring-opacity))}.focus\:ring-purple-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(167,139,250,var(--tw-ring-opacity))}.focus\:ring-purple-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(124,58,237,var(--tw-ring-opacity))}.focus\:ring-pink-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(249,168,212,var(--tw-ring-opacity))}.focus\:ring-pink-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(244,114,182,var(--tw-ring-opacity))}.focus\:ring-pink-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(219,39,119,var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity:0.5}.table-auto{table-layout:auto}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(243,244,246,var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(229,231,235,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgba(248,113,113,var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity))}.text-yellow-600{--tw-text-opacity:1;color:rgba(217,119,6,var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgba(146,64,14,var(--tw-text-opacity))}.text-green-300{--tw-text-opacity:1;color:rgba(110,231,183,var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgba(16,185,129,var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgba(5,150,105,var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgba(6,95,70,var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity:1;color:rgba(30,64,175,var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}.text-purple-800{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}.text-pink-600{--tw-text-opacity:1;color:rgba(219,39,119,var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-800{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.group:hover .group-hover\:text-purple-600{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}.hover\:text-gray-100:hover{--tw-text-opacity:1;color:rgba(243,244,246,var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}.hover\:text-green-500:hover{--tw-text-opacity:1;color:rgba(16,185,129,var(--tw-text-opacity))}.hover\:text-green-600:hover{--tw-text-opacity:1;color:rgba(5,150,105,var(--tw-text-opacity))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.italic{font-style:italic}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.line-through{text-decoration:line-through}.hover\:underline:hover{text-decoration:underline}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.align-middle{vertical-align:middle}.break-all{word-break:break-all}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-20{width:5rem}.w-32{width:8rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-64{width:16rem}.w-72{width:18rem}.w-0\.5{width:.125rem}.w-1\/2{width:50%}.w-3\/12{width:25%}.w-6\/12{width:50%}.w-8\/12{width:66.666667%}.w-full{width:100%}.z-0{z-index:0}.hover\:z-10:hover,.z-10{z-index:10}.gap-4{gap:1rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-0{row-gap:0}.gap-y-2{row-gap:.5rem}.grid-flow-col{grid-auto-flow:column}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.col-span-2{grid-column:span 2/span 2}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.auto-rows-min{grid-auto-rows:-webkit-min-content;grid-auto-rows:min-content}.row-span-2{grid-row:span 2/span 2}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-ping{-webkit-animation:ping 1s cubic-bezier(0,0,.2,1) infinite;animation:ping 1s cubic-bezier(0,0,.2,1) infinite}.animate-pulse{-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}html{visibility:visible;opacity:1}.tooltip{position:absolute;visibility:hidden}.has-tooltip:hover .tooltip{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity));--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity));border-radius:.25rem;border-width:1px;font-size:.875rem;line-height:1.25rem;margin-left:1rem;padding:.25rem;--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity));visibility:visible;z-index:50}.markdown h1{font-size:1.875rem;line-height:2.25rem;margin-bottom:1rem}.markdown h1,.markdown h2{font-weight:900;margin-top:.5rem;--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity));letter-spacing:-.025em}.markdown h2{font-size:1.5rem;line-height:2rem;margin-bottom:.75rem}.markdown h3{font-size:1.25rem}.markdown h3,.markdown h4{font-weight:900;line-height:1.75rem;margin-top:.5rem;margin-bottom:.75rem;--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity));letter-spacing:-.025em}.markdown h4{font-size:1.125rem}.markdown h5{font-size:1rem;line-height:1.5rem}.markdown h5,.markdown h6{font-weight:900;margin-top:.5rem;margin-bottom:.75rem;--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity));letter-spacing:-.025em}.markdown h6{font-size:.875rem;line-height:1.25rem}.markdown p{margin-top:.75rem;margin-bottom:.75rem}.markdown a{--tw-text-opacity:1;color:rgba(219,39,119,var(--tw-text-opacity));text-decoration:underline}.markdown ul{list-style-type:disc;margin-top:.75rem;margin-bottom:.75rem;margin-left:1.5rem}.markdown ul ul{margin-top:0;margin-bottom:0}.markdown ol{list-style-type:decimal;margin-top:.75rem;margin-bottom:.75rem;margin-left:1.5rem}.markdown ol ol{margin-top:0;margin-bottom:0}.markdown blockquote{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity));border-top-right-radius:1.5rem;border-bottom-right-radius:1.5rem;margin-top:.75rem;margin-bottom:.75rem;padding:.25rem .75rem;--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.markdown hr{margin-top:1.25rem;margin-bottom:1.25rem}.markdown code{word-break:break-all}@media (min-width:640px){.sm\:container{width:100%;max-width:640px}@media (min-width:768px){.sm\:container{max-width:768px}}@media (min-width:1024px){.sm\:container{max-width:1024px}}@media (min-width:1280px){.sm\:container{max-width:1280px}}@media (min-width:1536px){.sm\:container{max-width:1536px}}.sm\:block{display:block}.sm\:table-cell{display:table-cell}.sm\:table-header-group{display:table-header-group}.sm\:table-row{display:table-row}.sm\:hidden{display:none}.sm\:flex-row{flex-direction:row}.sm\:items-stretch{align-items:stretch}.sm\:justify-end{justify-content:flex-end}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:mr-4{margin-right:1rem}.sm\:ml-4{margin-left:1rem}.sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:pl-0{padding-left:0}.sm\:pl-2{padding-left:.5rem}.sm\:w-auto{width:auto}.sm\:w-3\/12{width:25%}.sm\:w-9\/12{width:75%}} \ No newline at end of file +/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder, textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder, textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-right-width:calc(1px*var(--tw-divide-x-reverse));border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)))}.divide-gray-300>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(209,213,219,var(--tw-divide-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgba(254,242,242,var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity:1;background-color:rgba(220,38,38,var(--tw-bg-opacity))}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgba(254,243,199,var(--tw-bg-opacity))}.bg-green-50{--tw-bg-opacity:1;background-color:rgba(236,253,245,var(--tw-bg-opacity))}.bg-green-100{--tw-bg-opacity:1;background-color:rgba(209,250,229,var(--tw-bg-opacity))}.bg-green-500{--tw-bg-opacity:1;background-color:rgba(16,185,129,var(--tw-bg-opacity))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgba(219,234,254,var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgba(59,130,246,var(--tw-bg-opacity))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgba(245,243,255,var(--tw-bg-opacity))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgba(237,233,254,var(--tw-bg-opacity))}.bg-purple-200{--tw-bg-opacity:1;background-color:rgba(221,214,254,var(--tw-bg-opacity))}.bg-purple-500{--tw-bg-opacity:1;background-color:rgba(139,92,246,var(--tw-bg-opacity))}.bg-pink-50{--tw-bg-opacity:1;background-color:rgba(253,242,248,var(--tw-bg-opacity))}.bg-pink-600{--tw-bg-opacity:1;background-color:rgba(219,39,119,var(--tw-bg-opacity))}.odd\:bg-gray-100:nth-child(odd){--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgba(220,38,38,var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgba(185,28,28,var(--tw-bg-opacity))}.hover\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgba(217,119,6,var(--tw-bg-opacity))}.hover\:bg-green-500:hover{--tw-bg-opacity:1;background-color:rgba(16,185,129,var(--tw-bg-opacity))}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgba(5,150,105,var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgba(29,78,216,var(--tw-bg-opacity))}.hover\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgba(124,58,237,var(--tw-bg-opacity))}.hover\:bg-pink-700:hover{--tw-bg-opacity:1;background-color:rgba(190,24,93,var(--tw-bg-opacity))}.bg-gradient-to-r{background-image:linear-gradient(90deg,var(--tw-gradient-stops))}.from-pink-400{--tw-gradient-from:#f472b6;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,rgba(244,114,182,0))}.to-red-400{--tw-gradient-to:#f87171}.border-transparent{border-color:transparent}.border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.border-yellow-800{--tw-border-opacity:1;border-color:rgba(146,64,14,var(--tw-border-opacity))}.border-green-200{--tw-border-opacity:1;border-color:rgba(167,243,208,var(--tw-border-opacity))}.border-blue-800{--tw-border-opacity:1;border-color:rgba(30,64,175,var(--tw-border-opacity))}.hover\:border-transparent:hover{border-color:transparent}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgba(156,163,175,var(--tw-border-opacity))}.hover\:border-green-400:hover{--tw-border-opacity:1;border-color:rgba(52,211,153,var(--tw-border-opacity))}.hover\:border-pink-400:hover{--tw-border-opacity:1;border-color:rgba(244,114,182,var(--tw-border-opacity))}.focus\:border-transparent:focus{border-color:transparent}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.border-dashed{border-style:dashed}.border-2{border-width:2px}.border{border-width:1px}.box-content{box-sizing:content-box}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-row{display:table-row}.grid{display:grid}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.self-start{align-self:flex-start}.self-center{align-self:center}.self-stretch{align-self:stretch}.justify-items-center{justify-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.flex-1{flex:1 1 0%}.flex-auto{flex:1 1 auto}.float-right{float:right}.float-left{float:left}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-black{font-weight:900}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-32{height:8rem}.h-64{height:16rem}.h-px{height:1px}.h-full{height:100%}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.ml-0{margin-left:0}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mb-8{margin-bottom:2rem}.mt-10{margin-top:2.5rem}.mb-10{margin-bottom:2.5rem}.ml-11{margin-left:2.75rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mt-0\.5{margin-top:.125rem}.-ml-px{margin-left:-1px}.max-w-sm{max-width:24rem}.max-w-lg{max-width:32rem}.max-w-2xl{max-width:42rem}.max-w-full{max-width:100%}.min-h-6{min-height:1.5rem}.min-h-12{min-height:3rem}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-hidden{overflow:hidden}.overflow-y-scroll{overflow-y:scroll}.p-1{padding:.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.pr-0{padding-right:0}.pr-1{padding-right:.25rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pr-3{padding-right:.75rem}.pl-3{padding-left:.75rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pr-6{padding-right:1.5rem}.pl-10{padding-left:2.5rem}.placeholder-gray-300::-moz-placeholder{--tw-placeholder-opacity:1;color:rgba(209,213,219,var(--tw-placeholder-opacity))}.placeholder-gray-300:-ms-input-placeholder{--tw-placeholder-opacity:1;color:rgba(209,213,219,var(--tw-placeholder-opacity))}.placeholder-gray-300::placeholder{--tw-placeholder-opacity:1;color:rgba(209,213,219,var(--tw-placeholder-opacity))}.absolute{position:absolute}.relative{position:relative}.-top-1{top:-.25rem}.-left-1{left:-.25rem}.-top-1\.5{top:-.375rem}.resize-y{resize:vertical}*{--tw-shadow:0 0 transparent}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,0.05)}.shadow,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04)}.hover\:shadow:hover,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.hover\:shadow:hover{--tw-shadow:0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.06)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.hover\:shadow-md:hover,.hover\:shadow-xl:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,0.1),0 10px 10px -5px rgba(0,0,0,0.04)}*{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.focus\:ring-1:focus,.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(229,231,235,var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(209,213,219,var(--tw-ring-opacity))}.ring-red-400{--tw-ring-opacity:1;--tw-ring-color:rgba(248,113,113,var(--tw-ring-opacity))}.ring-yellow-400{--tw-ring-opacity:1;--tw-ring-color:rgba(251,191,36,var(--tw-ring-opacity))}.ring-green-400{--tw-ring-opacity:1;--tw-ring-color:rgba(52,211,153,var(--tw-ring-opacity))}.ring-purple-300{--tw-ring-opacity:1;--tw-ring-color:rgba(196,181,253,var(--tw-ring-opacity))}.ring-purple-400{--tw-ring-opacity:1;--tw-ring-color:rgba(167,139,250,var(--tw-ring-opacity))}.focus\:ring-gray-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(209,213,219,var(--tw-ring-opacity))}.focus\:ring-gray-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(75,85,99,var(--tw-ring-opacity))}.focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(248,113,113,var(--tw-ring-opacity))}.focus\:ring-red-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(220,38,38,var(--tw-ring-opacity))}.focus\:ring-green-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(52,211,153,var(--tw-ring-opacity))}.focus\:ring-green-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(16,185,129,var(--tw-ring-opacity))}.focus\:ring-green-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(5,150,105,var(--tw-ring-opacity))}.focus\:ring-purple-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(167,139,250,var(--tw-ring-opacity))}.focus\:ring-purple-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(124,58,237,var(--tw-ring-opacity))}.focus\:ring-pink-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(249,168,212,var(--tw-ring-opacity))}.focus\:ring-pink-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(244,114,182,var(--tw-ring-opacity))}.focus\:ring-pink-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(219,39,119,var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity:0.5}.table-auto{table-layout:auto}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(243,244,246,var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(229,231,235,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgba(248,113,113,var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgba(185,28,28,var(--tw-text-opacity))}.text-yellow-600{--tw-text-opacity:1;color:rgba(217,119,6,var(--tw-text-opacity))}.text-yellow-800{--tw-text-opacity:1;color:rgba(146,64,14,var(--tw-text-opacity))}.text-green-300{--tw-text-opacity:1;color:rgba(110,231,183,var(--tw-text-opacity))}.text-green-500{--tw-text-opacity:1;color:rgba(16,185,129,var(--tw-text-opacity))}.text-green-600{--tw-text-opacity:1;color:rgba(5,150,105,var(--tw-text-opacity))}.text-green-800{--tw-text-opacity:1;color:rgba(6,95,70,var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}.text-blue-800{--tw-text-opacity:1;color:rgba(30,64,175,var(--tw-text-opacity))}.text-purple-600{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}.text-purple-800{--tw-text-opacity:1;color:rgba(91,33,182,var(--tw-text-opacity))}.text-pink-600{--tw-text-opacity:1;color:rgba(219,39,119,var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-800{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.group:hover .group-hover\:text-purple-600{--tw-text-opacity:1;color:rgba(124,58,237,var(--tw-text-opacity))}.hover\:text-gray-100:hover{--tw-text-opacity:1;color:rgba(243,244,246,var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgba(220,38,38,var(--tw-text-opacity))}.hover\:text-green-500:hover{--tw-text-opacity:1;color:rgba(16,185,129,var(--tw-text-opacity))}.hover\:text-green-600:hover{--tw-text-opacity:1;color:rgba(5,150,105,var(--tw-text-opacity))}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.italic{font-style:italic}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.line-through{text-decoration:line-through}.hover\:underline:hover{text-decoration:underline}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.align-middle{vertical-align:middle}.break-all{word-break:break-all}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-20{width:5rem}.w-32{width:8rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-64{width:16rem}.w-72{width:18rem}.w-0\.5{width:.125rem}.w-1\/2{width:50%}.w-3\/12{width:25%}.w-6\/12{width:50%}.w-8\/12{width:66.666667%}.w-full{width:100%}.z-0{z-index:0}.hover\:z-10:hover,.z-10{z-index:10}.gap-4{gap:1rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-0{row-gap:0}.gap-y-2{row-gap:.5rem}.grid-flow-col{grid-auto-flow:column}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.col-span-2{grid-column:span 2/span 2}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.auto-rows-min{grid-auto-rows:-webkit-min-content;grid-auto-rows:min-content}.row-span-2{grid-row:span 2/span 2}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-ping{-webkit-animation:ping 1s cubic-bezier(0,0,.2,1) infinite;animation:ping 1s cubic-bezier(0,0,.2,1) infinite}.animate-pulse{-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}html{visibility:visible;opacity:1}.tooltip{position:absolute;visibility:hidden}.has-tooltip:hover .tooltip{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity));--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity));border-radius:.25rem;border-width:1px;font-size:.875rem;line-height:1.25rem;margin-left:1rem;padding:.25rem;--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow);--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity));visibility:visible;z-index:50}.markdown h1{font-size:1.875rem;line-height:2.25rem;margin-bottom:1rem}.markdown h1,.markdown h2{font-weight:900;margin-top:.5rem;--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity));letter-spacing:-.025em}.markdown h2{font-size:1.5rem;line-height:2rem;margin-bottom:.75rem}.markdown h3{font-size:1.25rem}.markdown h3,.markdown h4{font-weight:900;line-height:1.75rem;margin-top:.5rem;margin-bottom:.75rem;--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity));letter-spacing:-.025em}.markdown h4{font-size:1.125rem}.markdown h5{font-size:1rem;line-height:1.5rem}.markdown h5,.markdown h6{font-weight:900;margin-top:.5rem;margin-bottom:.75rem;--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity));letter-spacing:-.025em}.markdown h6{font-size:.875rem;line-height:1.25rem}.markdown p{margin-top:.75rem;margin-bottom:.75rem}.markdown a{--tw-text-opacity:1;color:rgba(219,39,119,var(--tw-text-opacity));text-decoration:underline}.markdown ul{list-style-type:disc;margin-top:.75rem;margin-bottom:.75rem;margin-left:1.5rem}.markdown ul ul{margin-top:0;margin-bottom:0}.markdown ol{list-style-type:decimal;margin-top:.75rem;margin-bottom:.75rem;margin-left:1.5rem}.markdown ol ol{margin-top:0;margin-bottom:0}.markdown blockquote{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity));border-top-right-radius:1.5rem;border-bottom-right-radius:1.5rem;margin-top:.75rem;margin-bottom:.75rem;padding:.25rem .75rem;--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.markdown hr{margin-top:1.25rem;margin-bottom:1.25rem}.markdown code{word-break:break-all}@media (min-width:640px){.sm\:container{width:100%;max-width:640px}@media (min-width:768px){.sm\:container{max-width:768px}}@media (min-width:1024px){.sm\:container{max-width:1024px}}@media (min-width:1280px){.sm\:container{max-width:1280px}}@media (min-width:1536px){.sm\:container{max-width:1536px}}.sm\:block{display:block}.sm\:table-cell{display:table-cell}.sm\:table-header-group{display:table-header-group}.sm\:table-row{display:table-row}.sm\:hidden{display:none}.sm\:flex-row{flex-direction:row}.sm\:items-stretch{align-items:stretch}.sm\:justify-end{justify-content:flex-end}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:mr-4{margin-right:1rem}.sm\:ml-4{margin-left:1rem}.sm\:py-1{padding-top:.25rem;padding-bottom:.25rem}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:pl-0{padding-left:0}.sm\:pl-2{padding-left:.5rem}.sm\:w-auto{width:auto}.sm\:w-3\/12{width:25%}.sm\:w-9\/12{width:75%}} diff --git a/web/embedded_dev.go b/web/embedded_dev.go index bf0ce8f..e23b155 100644 --- a/web/embedded_dev.go +++ b/web/embedded_dev.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // +build dev diff --git a/web/embedded_prod.go b/web/embedded_prod.go index c652dc5..3953ada 100644 --- a/web/embedded_prod.go +++ b/web/embedded_prod.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // +build !dev diff --git a/web/errors/badrequest.go b/web/errors/badrequest.go index c22e695..5bb6d6b 100644 --- a/web/errors/badrequest.go +++ b/web/errors/badrequest.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package errors defines some well defined errors, like incomplete/wrong request data or object not found(404), for the purpose of internationalization. diff --git a/web/errors/errhandler.go b/web/errors/errhandler.go index c36d879..ef6dc58 100644 --- a/web/errors/errhandler.go +++ b/web/errors/errhandler.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package errors import ( diff --git a/web/errors/flashes.go b/web/errors/flashes.go index 1432fbc..58a0b55 100644 --- a/web/errors/flashes.go +++ b/web/errors/flashes.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package errors import ( diff --git a/web/handlers/admin/aliases.go b/web/handlers/admin/aliases.go index 1f126f0..86c9771 100644 --- a/web/handlers/admin/aliases.go +++ b/web/handlers/admin/aliases.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package admin diff --git a/web/handlers/admin/aliases_test.go b/web/handlers/admin/aliases_test.go index 9b65d54..9de0b44 100644 --- a/web/handlers/admin/aliases_test.go +++ b/web/handlers/admin/aliases_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package admin import ( diff --git a/web/handlers/admin/dashboard.go b/web/handlers/admin/dashboard.go index b790f8b..8de0909 100644 --- a/web/handlers/admin/dashboard.go +++ b/web/handlers/admin/dashboard.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package admin diff --git a/web/handlers/admin/dashboard_test.go b/web/handlers/admin/dashboard_test.go index 2d08d58..2d4ab4d 100644 --- a/web/handlers/admin/dashboard_test.go +++ b/web/handlers/admin/dashboard_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package admin import ( diff --git a/web/handlers/admin/denied_keys.go b/web/handlers/admin/denied_keys.go index ce2ea01..9d89cd6 100644 --- a/web/handlers/admin/denied_keys.go +++ b/web/handlers/admin/denied_keys.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package admin diff --git a/web/handlers/admin/denied_keys_test.go b/web/handlers/admin/denied_keys_test.go index 62e7823..3adf1f3 100644 --- a/web/handlers/admin/denied_keys_test.go +++ b/web/handlers/admin/denied_keys_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package admin diff --git a/web/handlers/admin/handler.go b/web/handlers/admin/handler.go index 9120cdb..5fe5308 100644 --- a/web/handlers/admin/handler.go +++ b/web/handlers/admin/handler.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package admin implements the dashboard for admins and moderators to change and control aspects of the room. diff --git a/web/handlers/admin/invites.go b/web/handlers/admin/invites.go index a9e8c98..4ce3c31 100644 --- a/web/handlers/admin/invites.go +++ b/web/handlers/admin/invites.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package admin import ( diff --git a/web/handlers/admin/invites_test.go b/web/handlers/admin/invites_test.go index 9242138..90d3d21 100644 --- a/web/handlers/admin/invites_test.go +++ b/web/handlers/admin/invites_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package admin import ( diff --git a/web/handlers/admin/members.go b/web/handlers/admin/members.go index 32dac43..7a39e0f 100644 --- a/web/handlers/admin/members.go +++ b/web/handlers/admin/members.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package admin diff --git a/web/handlers/admin/members_test.go b/web/handlers/admin/members_test.go index 8690340..34fd398 100644 --- a/web/handlers/admin/members_test.go +++ b/web/handlers/admin/members_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package admin import ( diff --git a/web/handlers/admin/notices.go b/web/handlers/admin/notices.go index f256b9f..ce66f9d 100644 --- a/web/handlers/admin/notices.go +++ b/web/handlers/admin/notices.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package admin import ( diff --git a/web/handlers/admin/notices_test.go b/web/handlers/admin/notices_test.go index 277a3bd..d8af74c 100644 --- a/web/handlers/admin/notices_test.go +++ b/web/handlers/admin/notices_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package admin import ( diff --git a/web/handlers/admin/set_language_test.go b/web/handlers/admin/set_language_test.go index 6ac81de..d7491a2 100644 --- a/web/handlers/admin/set_language_test.go +++ b/web/handlers/admin/set_language_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package admin import ( diff --git a/web/handlers/admin/settings.go b/web/handlers/admin/settings.go index e5ce407..1e57593 100644 --- a/web/handlers/admin/settings.go +++ b/web/handlers/admin/settings.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package admin diff --git a/web/handlers/admin/settings_test.go b/web/handlers/admin/settings_test.go index 6f75065..3d6a1e0 100644 --- a/web/handlers/admin/settings_test.go +++ b/web/handlers/admin/settings_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package admin import ( diff --git a/web/handlers/admin/setup_test.go b/web/handlers/admin/setup_test.go index 3942fc7..f49f310 100644 --- a/web/handlers/admin/setup_test.go +++ b/web/handlers/admin/setup_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package admin diff --git a/web/handlers/aliases.go b/web/handlers/aliases.go index 064e6b4..c778797 100644 --- a/web/handlers/aliases.go +++ b/web/handlers/aliases.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package handlers import ( diff --git a/web/handlers/aliases_test.go b/web/handlers/aliases_test.go index 35c9584..c641ab8 100644 --- a/web/handlers/aliases_test.go +++ b/web/handlers/aliases_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package handlers import ( diff --git a/web/handlers/auth/withssb.go b/web/handlers/auth/withssb.go index 0a713cc..35c65a6 100644 --- a/web/handlers/auth/withssb.go +++ b/web/handlers/auth/withssb.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package auth diff --git a/web/handlers/auth_test.go b/web/handlers/auth_test.go index 6717d31..d9f75c5 100644 --- a/web/handlers/auth_test.go +++ b/web/handlers/auth_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package handlers diff --git a/web/handlers/basic_test.go b/web/handlers/basic_test.go index c2b9f93..71b601e 100644 --- a/web/handlers/basic_test.go +++ b/web/handlers/basic_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package handlers diff --git a/web/handlers/http.go b/web/handlers/http.go index d5c23aa..1109af0 100644 --- a/web/handlers/http.go +++ b/web/handlers/http.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package handlers diff --git a/web/handlers/invites.go b/web/handlers/invites.go index a27d070..6d2f606 100644 --- a/web/handlers/invites.go +++ b/web/handlers/invites.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package handlers import ( diff --git a/web/handlers/invites_test.go b/web/handlers/invites_test.go index 743e8e3..3e8f314 100644 --- a/web/handlers/invites_test.go +++ b/web/handlers/invites_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package handlers import ( diff --git a/web/handlers/language_template.go b/web/handlers/language_template.go index d67faf4..85f8d92 100644 --- a/web/handlers/language_template.go +++ b/web/handlers/language_template.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package handlers import "html/template" diff --git a/web/handlers/members_password.go b/web/handlers/members_password.go index cc789ec..ed26132 100644 --- a/web/handlers/members_password.go +++ b/web/handlers/members_password.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package handlers import ( diff --git a/web/handlers/members_password_test.go b/web/handlers/members_password_test.go index 5673c83..af2f798 100644 --- a/web/handlers/members_password_test.go +++ b/web/handlers/members_password_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package handlers import ( diff --git a/web/handlers/notices.go b/web/handlers/notices.go index 57db155..a56d491 100644 --- a/web/handlers/notices.go +++ b/web/handlers/notices.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package handlers import ( diff --git a/web/handlers/notices_test.go b/web/handlers/notices_test.go index a0602d1..3521533 100644 --- a/web/handlers/notices_test.go +++ b/web/handlers/notices_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package handlers import ( diff --git a/web/handlers/set_language_test.go b/web/handlers/set_language_test.go index 202f0c3..3480a26 100644 --- a/web/handlers/set_language_test.go +++ b/web/handlers/set_language_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package handlers import ( diff --git a/web/handlers/setup_test.go b/web/handlers/setup_test.go index 1432e7b..cbcb742 100644 --- a/web/handlers/setup_test.go +++ b/web/handlers/setup_test.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package handlers diff --git a/web/i18n/defaults/active.de.toml b/web/i18n/defaults/active.de.toml index 440b58c..26e85e7 100644 --- a/web/i18n/defaults/active.de.toml +++ b/web/i18n/defaults/active.de.toml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + LanguageName = "Deutsch" # generic terms diff --git a/web/i18n/defaults/active.en.toml b/web/i18n/defaults/active.en.toml index 07a1ad2..9a595de 100644 --- a/web/i18n/defaults/active.en.toml +++ b/web/i18n/defaults/active.en.toml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +# +# SPDX-License-Identifier: CC0-1.0 + # default localiztion file for english # the name of this language, in its language. Used for language picking diff --git a/web/i18n/dev.go b/web/i18n/dev.go index bffe676..1c55e6a 100644 --- a/web/i18n/dev.go +++ b/web/i18n/dev.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // +build dev diff --git a/web/i18n/helper.go b/web/i18n/helper.go index bdf554b..eceae65 100644 --- a/web/i18n/helper.go +++ b/web/i18n/helper.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package i18n wraps around github.com/nicksnyder/go-i18n mostly so that we don't have to deal with i18n.LocalizeConfig struct literals everywhere. diff --git a/web/i18n/i18ntesting/i18n_helper_test.go b/web/i18n/i18ntesting/i18n_helper_test.go index 29bc8d9..5ea6b94 100644 --- a/web/i18n/i18ntesting/i18n_helper_test.go +++ b/web/i18n/i18ntesting/i18n_helper_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package i18ntesting import ( diff --git a/web/i18n/i18ntesting/testing.go b/web/i18n/i18ntesting/testing.go index d47ffb4..e0f7975 100644 --- a/web/i18n/i18ntesting/testing.go +++ b/web/i18n/i18ntesting/testing.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + package i18ntesting import ( diff --git a/web/i18n/prod.go b/web/i18n/prod.go index e85e8be..9fa393b 100644 --- a/web/i18n/prod.go +++ b/web/i18n/prod.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // +build !dev diff --git a/web/members/helper.go b/web/members/helper.go index f2de3a2..8b6e6bb 100644 --- a/web/members/helper.go +++ b/web/members/helper.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT // Package members implements helpers for accessing the currently logged in admin or moderator of an active request. diff --git a/web/members/testing.go b/web/members/testing.go index 25bb25a..074a413 100644 --- a/web/members/testing.go +++ b/web/members/testing.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package members diff --git a/web/router/admin.go b/web/router/admin.go index 615144a..db678d8 100644 --- a/web/router/admin.go +++ b/web/router/admin.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package router diff --git a/web/router/auth.go b/web/router/auth.go index 204f67d..9da0b90 100644 --- a/web/router/auth.go +++ b/web/router/auth.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package router diff --git a/web/router/complete.go b/web/router/complete.go index 382ca9a..5dcdc7e 100644 --- a/web/router/complete.go +++ b/web/router/complete.go @@ -1,3 +1,5 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// // SPDX-License-Identifier: MIT package router diff --git a/web/styles/gen_dev.go b/web/styles/gen_dev.go index cd7e705..8e90fac 100644 --- a/web/styles/gen_dev.go +++ b/web/styles/gen_dev.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // +build dev package styles diff --git a/web/styles/gen_prod.go b/web/styles/gen_prod.go index 60a088c..66d740d 100644 --- a/web/styles/gen_prod.go +++ b/web/styles/gen_prod.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + // +build !dev package styles diff --git a/web/styles/input.css b/web/styles/input.css index dcc7966..957fb28 100644 --- a/web/styles/input.css +++ b/web/styles/input.css @@ -1,3 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + * + * SPDX-License-Identifier: CC-BY-4.0 + */ + @tailwind base; @tailwind components; @tailwind utilities; diff --git a/web/styles/package-lock.json.license b/web/styles/package-lock.json.license new file mode 100644 index 0000000..eaac9fa --- /dev/null +++ b/web/styles/package-lock.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: Unlicense \ No newline at end of file diff --git a/web/styles/package.json.license b/web/styles/package.json.license new file mode 100644 index 0000000..eaac9fa --- /dev/null +++ b/web/styles/package.json.license @@ -0,0 +1,3 @@ +SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 + +SPDX-License-Identifier: Unlicense \ No newline at end of file diff --git a/web/styles/postcss.config.js b/web/styles/postcss.config.js index 81c50fc..9b9489c 100644 --- a/web/styles/postcss.config.js +++ b/web/styles/postcss.config.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + module.exports = { plugins: { tailwindcss: {}, diff --git a/web/styles/tailwind.config.js b/web/styles/tailwind.config.js index f6d0466..9dc9eb5 100644 --- a/web/styles/tailwind.config.js +++ b/web/styles/tailwind.config.js @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2021 The NGI Pointer Secure-Scuttlebutt Team of 2020/2021 +// +// SPDX-License-Identifier: MIT + module.exports = { purge: ['../templates/**/*.tmpl'], darkMode: false, diff --git a/web/templates/admin/aliases-revoke-confirm.tmpl b/web/templates/admin/aliases-revoke-confirm.tmpl index 1b76ec4..934c48a 100644 --- a/web/templates/admin/aliases-revoke-confirm.tmpl +++ b/web/templates/admin/aliases-revoke-confirm.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "AdminAliasesRevokeConfirmTitle"}}{{ end }} {{ define "content" }}
diff --git a/web/templates/admin/dashboard.tmpl b/web/templates/admin/dashboard.tmpl index 40a491e..42ad6ab 100644 --- a/web/templates/admin/dashboard.tmpl +++ b/web/templates/admin/dashboard.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "AdminDashboardTitle"}}{{ end }} {{ define "content" }}

+ {{ define "title" }}{{i18n "AdminDeniedKeysRemoveConfirmTitle"}}{{ end }} {{ define "content" }}
diff --git a/web/templates/admin/denied-keys.tmpl b/web/templates/admin/denied-keys.tmpl index 032e2e1..5c0126d 100644 --- a/web/templates/admin/denied-keys.tmpl +++ b/web/templates/admin/denied-keys.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "AdminDeniedKeysTitle"}}{{ end }} {{ define "content" }}

+ {{ define "title" }}{{i18n "AdminInviteCreatedTitle"}}{{ end }} {{ define "content" }}
diff --git a/web/templates/admin/invite-list.tmpl b/web/templates/admin/invite-list.tmpl index c5e4cba..990cbe0 100644 --- a/web/templates/admin/invite-list.tmpl +++ b/web/templates/admin/invite-list.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "AdminInvitesTitle"}}{{ end }} {{ define "content" }} diff --git a/web/templates/admin/invite-revoke-confirm.tmpl b/web/templates/admin/invite-revoke-confirm.tmpl index cc26212..dbbf43d 100644 --- a/web/templates/admin/invite-revoke-confirm.tmpl +++ b/web/templates/admin/invite-revoke-confirm.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "AdminInviteRevokeConfirmTitle"}}{{ end }} {{ define "content" }}
diff --git a/web/templates/admin/member-list.tmpl b/web/templates/admin/member-list.tmpl index 4faea41..6781b5d 100644 --- a/web/templates/admin/member-list.tmpl +++ b/web/templates/admin/member-list.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "AdminMembersTitle"}}{{ end }} {{ define "content" }}

+ {{ define "title" }}{{i18n "AdminMemberDetailsTitle"}}{{ end }} {{ define "content" }}

+ {{ define "title" }}{{i18n "AdminMembersRemoveConfirmTitle"}}{{ end }} {{ define "content" }}
diff --git a/web/templates/admin/members-show-password-reset-token.tmpl b/web/templates/admin/members-show-password-reset-token.tmpl index 9dc0163..f7cda0c 100644 --- a/web/templates/admin/members-show-password-reset-token.tmpl +++ b/web/templates/admin/members-show-password-reset-token.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "AdminMemberPasswordResetLinkCreatedTitle"}}{{ end }} {{ define "content" }}
diff --git a/web/templates/admin/menu.tmpl b/web/templates/admin/menu.tmpl index 35fa659..0bf2b5b 100644 --- a/web/templates/admin/menu.tmpl +++ b/web/templates/admin/menu.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}Menu{{ end }} {{ define "main"}}{{end}} {{ define "extra" }} diff --git a/web/templates/admin/notice-edit.tmpl b/web/templates/admin/notice-edit.tmpl index 6ca7dca..d25912e 100644 --- a/web/templates/admin/notice-edit.tmpl +++ b/web/templates/admin/notice-edit.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "NoticeEditTitle"}}{{ end }} {{ define "content" }} diff --git a/web/templates/admin/settings.tmpl b/web/templates/admin/settings.tmpl index a158c93..1136894 100644 --- a/web/templates/admin/settings.tmpl +++ b/web/templates/admin/settings.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "Settings"}}{{ end }} {{ define "content" }}

+ {{ define "title" }}{{.Alias.Name}}{{ end }} {{ define "content" }}
diff --git a/web/templates/auth/decide_method.tmpl b/web/templates/auth/decide_method.tmpl index f1c8473..957ebba 100644 --- a/web/templates/auth/decide_method.tmpl +++ b/web/templates/auth/decide_method.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "AuthTitle"}}{{ end }} {{ define "content" }}
diff --git a/web/templates/auth/fallback_sign_in.tmpl b/web/templates/auth/fallback_sign_in.tmpl index a88c40f..e33bb2a 100644 --- a/web/templates/auth/fallback_sign_in.tmpl +++ b/web/templates/auth/fallback_sign_in.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "AuthTitle"}}{{ end }} {{ define "content" }}
diff --git a/web/templates/auth/withssb_server_start.tmpl b/web/templates/auth/withssb_server_start.tmpl index cebe25d..aed87fc 100644 --- a/web/templates/auth/withssb_server_start.tmpl +++ b/web/templates/auth/withssb_server_start.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{i18n "AuthWithSSBTitle"}}{{ end }} {{ define "content" }}
diff --git a/web/templates/base.tmpl b/web/templates/base.tmpl index 91978c5..a91f49d 100644 --- a/web/templates/base.tmpl +++ b/web/templates/base.tmpl @@ -1,3 +1,9 @@ + + diff --git a/web/templates/change-member-password.tmpl b/web/templates/change-member-password.tmpl index a5d1da0..f767d4e 100644 --- a/web/templates/change-member-password.tmpl +++ b/web/templates/change-member-password.tmpl @@ -1,3 +1,9 @@ + + {{ define "title" }}{{ i18n "AuthFallbackPasswordChangeFormTitle" }}{{ end }} {{ define "content" }}
diff --git a/web/templates/error.tmpl b/web/templates/error.tmpl index 2346c3f..2f7d38f 100644 --- a/web/templates/error.tmpl +++ b/web/templates/error.tmpl @@ -1,3 +1,9 @@ + + {{define "title"}}render - Error {{.StatusCode}}{{end}} {{define "content"}}