From ab4531022d29c2bcb51c286bac3ae0c9b99e23f3 Mon Sep 17 00:00:00 2001 From: rob Date: Wed, 10 Apr 2024 20:33:57 -0400 Subject: [PATCH] another large integration of [everything] from prior DTP/Base/StreamRay --- .jshintrc | 2 +- app/controllers/auth.js | 339 ++++++++ app/controllers/email.js | 119 +++ app/controllers/home.js | 7 +- app/controllers/manifest.js | 6 +- app/controllers/user.js | 477 +++++++++++ app/controllers/welcome.js | 6 + app/models/chat-message.js | 24 + app/models/chat-room-invite.js | 27 + app/models/chat-room.js | 24 + app/models/connect-token.js | 29 + app/models/csrf-token.js | 19 + app/models/lib/constants.js | 4 + app/models/otp-account.js | 36 + app/services/chat.js | 43 + app/services/csrf-token.js | 78 ++ app/services/email.js | 4 +- app/services/otp-auth.js | 243 ++++++ app/services/user.js | 26 +- app/views/auth/forgot-password.pug | 29 + app/views/auth/password-reset-complete.pug | 41 + app/views/auth/password-reset-sent.pug | 9 + app/views/auth/password-reset.pug | 79 ++ app/views/components/file-upload-image.pug | 70 ++ app/views/components/library.pug | 8 + app/views/components/navbar.pug | 53 ++ app/views/components/pwa-support.pug | 34 +- app/views/error.pug | 17 + app/views/home.pug | 6 +- app/views/layout/main.pug | 69 +- app/views/otp/authenticate.pug | 27 + app/views/otp/new-account.pug | 11 + app/views/otp/welcome.pug | 58 ++ app/views/user/block-list.pug | 39 + app/views/user/components/list-item.pug | 9 + app/views/user/components/profile-picture.pug | 12 + app/views/user/components/user-icon.pug | 13 + app/views/user/otp-disabled.pug | 8 + app/views/user/otp-setup-complete.pug | 8 + app/views/user/profile.pug | 95 +++ .../user/redeem/channel-pass-applied.pug | 20 + app/views/user/redeem/channel-pass.pug | 26 + app/views/user/settings.pug | 154 ++++ app/views/welcome/home.pug | 41 +- app/views/welcome/login.pug | 25 + app/views/welcome/signup.pug | 27 +- assets/icon/dtp-chat.app-icon.png | Bin 0 -> 29752 bytes .../icon/dtp-chat.app-icon/icon-114x114.png | Bin 0 -> 5115 bytes .../icon/dtp-chat.app-icon/icon-120x120.png | Bin 0 -> 5558 bytes .../icon/dtp-chat.app-icon/icon-144x144.png | Bin 0 -> 6825 bytes .../icon/dtp-chat.app-icon/icon-150x150.png | Bin 0 -> 7502 bytes .../icon/dtp-chat.app-icon/icon-152x152.png | Bin 0 -> 7304 bytes assets/icon/dtp-chat.app-icon/icon-16x16.png | Bin 0 -> 547 bytes .../icon/dtp-chat.app-icon/icon-180x180.png | Bin 0 -> 8770 bytes .../icon/dtp-chat.app-icon/icon-192x192.png | Bin 0 -> 9583 bytes .../icon/dtp-chat.app-icon/icon-256x256.png | Bin 0 -> 14668 bytes .../icon/dtp-chat.app-icon/icon-310x310.png | Bin 0 -> 16944 bytes assets/icon/dtp-chat.app-icon/icon-32x32.png | Bin 0 -> 1246 bytes assets/icon/dtp-chat.app-icon/icon-36x36.png | Bin 0 -> 1391 bytes .../icon/dtp-chat.app-icon/icon-384x384.png | Bin 0 -> 24458 bytes assets/icon/dtp-chat.app-icon/icon-48x48.png | Bin 0 -> 1943 bytes .../icon/dtp-chat.app-icon/icon-512x512.png | Bin 0 -> 39242 bytes assets/icon/dtp-chat.app-icon/icon-57x57.png | Bin 0 -> 2459 bytes assets/icon/dtp-chat.app-icon/icon-60x60.png | Bin 0 -> 2551 bytes assets/icon/dtp-chat.app-icon/icon-70x70.png | Bin 0 -> 2960 bytes assets/icon/dtp-chat.app-icon/icon-72x72.png | Bin 0 -> 3121 bytes assets/icon/dtp-chat.app-icon/icon-76x76.png | Bin 0 -> 3179 bytes assets/icon/dtp-chat.app-icon/icon-96x96.png | Bin 0 -> 4220 bytes client/css/main.less | 10 + client/fonts/airstrike.ttf | Bin 0 -> 32564 bytes client/fonts/airstrikecond.ttf | Bin 0 -> 32516 bytes client/fonts/airstrikelaser.ttf | Bin 0 -> 34632 bytes client/fonts/airstrikeout.ttf | Bin 0 -> 55928 bytes client/fonts/built-titling.bd.otf | Bin 0 -> 63984 bytes client/fonts/built-titling.rg.otf | Bin 0 -> 65160 bytes client/fonts/geosans-light-oblique.ttf | Bin 0 -> 62196 bytes client/fonts/geosans-light.ttf | Bin 0 -> 60072 bytes client/fonts/green-nature.ttf | Bin 0 -> 90692 bytes client/fonts/russo-one.ttf | Bin 0 -> 190416 bytes client/fonts/thesignature.otf | Bin 0 -> 23800 bytes client/fonts/thesignature.ttf | Bin 0 -> 35908 bytes client/img/default-member.png | Bin 0 -> 28498 bytes client/img/icon/icon-114x114.png | Bin 0 -> 5115 bytes client/img/icon/icon-120x120.png | Bin 0 -> 5558 bytes client/img/icon/icon-144x144.png | Bin 0 -> 6825 bytes client/img/icon/icon-150x150.png | Bin 0 -> 7502 bytes client/img/icon/icon-152x152.png | Bin 0 -> 7304 bytes client/img/icon/icon-16x16.png | Bin 0 -> 547 bytes client/img/icon/icon-180x180.png | Bin 0 -> 8770 bytes client/img/icon/icon-192x192.png | Bin 0 -> 9583 bytes client/img/icon/icon-256x256.png | Bin 0 -> 14668 bytes client/img/icon/icon-310x310.png | Bin 0 -> 16944 bytes client/img/icon/icon-32x32.png | Bin 0 -> 1246 bytes client/img/icon/icon-36x36.png | Bin 0 -> 1391 bytes client/img/icon/icon-384x384.png | Bin 0 -> 24458 bytes client/img/icon/icon-48x48.png | Bin 0 -> 1943 bytes client/img/icon/icon-512x512.png | Bin 0 -> 39242 bytes client/img/icon/icon-57x57.png | Bin 0 -> 2459 bytes client/img/icon/icon-60x60.png | Bin 0 -> 2551 bytes client/img/icon/icon-70x70.png | Bin 0 -> 2960 bytes client/img/icon/icon-72x72.png | Bin 0 -> 3121 bytes client/img/icon/icon-76x76.png | Bin 0 -> 3179 bytes client/img/icon/icon-96x96.png | Bin 0 -> 4220 bytes client/img/nav-icon.png | Bin 0 -> 2645 bytes client/js/chat-client.js | 251 +++++- client/js/index.js | 22 + dtp-chat.js | 121 ++- lib/client/js/dtp-app.js | 260 ++++++ lib/client/js/dtp-display-engine.js | 299 +++++++ lib/client/js/dtp-log.js | 127 +++ lib/client/js/dtp-plugin.js | 43 + lib/client/js/dtp-socket.js | 218 +++++ lib/site-controller.js | 8 +- lib/site-ioserver.js | 784 ++++++++++++++++++ lib/site-lib.js | 1 - lib/site-log.js | 10 +- lib/site-service.js | 4 +- nodemon.json | 4 + package.json | 9 +- webpack.config.js | 22 +- yarn.lock | 237 +++++- 121 files changed, 4763 insertions(+), 168 deletions(-) create mode 100644 app/controllers/auth.js create mode 100644 app/controllers/email.js create mode 100644 app/controllers/user.js create mode 100644 app/models/chat-message.js create mode 100644 app/models/chat-room-invite.js create mode 100644 app/models/chat-room.js create mode 100644 app/models/connect-token.js create mode 100644 app/models/csrf-token.js create mode 100644 app/models/lib/constants.js create mode 100644 app/models/otp-account.js create mode 100644 app/services/chat.js create mode 100644 app/services/csrf-token.js create mode 100644 app/services/otp-auth.js create mode 100644 app/views/auth/forgot-password.pug create mode 100644 app/views/auth/password-reset-complete.pug create mode 100644 app/views/auth/password-reset-sent.pug create mode 100644 app/views/auth/password-reset.pug create mode 100644 app/views/components/file-upload-image.pug create mode 100644 app/views/components/library.pug create mode 100644 app/views/components/navbar.pug create mode 100644 app/views/error.pug create mode 100644 app/views/otp/authenticate.pug create mode 100644 app/views/otp/new-account.pug create mode 100644 app/views/otp/welcome.pug create mode 100644 app/views/user/block-list.pug create mode 100644 app/views/user/components/list-item.pug create mode 100644 app/views/user/components/profile-picture.pug create mode 100644 app/views/user/components/user-icon.pug create mode 100644 app/views/user/otp-disabled.pug create mode 100644 app/views/user/otp-setup-complete.pug create mode 100644 app/views/user/profile.pug create mode 100644 app/views/user/redeem/channel-pass-applied.pug create mode 100644 app/views/user/redeem/channel-pass.pug create mode 100644 app/views/user/settings.pug create mode 100644 assets/icon/dtp-chat.app-icon.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-114x114.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-120x120.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-144x144.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-150x150.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-152x152.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-16x16.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-180x180.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-192x192.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-256x256.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-310x310.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-32x32.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-36x36.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-384x384.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-48x48.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-512x512.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-57x57.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-60x60.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-70x70.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-72x72.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-76x76.png create mode 100644 assets/icon/dtp-chat.app-icon/icon-96x96.png create mode 100644 client/fonts/airstrike.ttf create mode 100644 client/fonts/airstrikecond.ttf create mode 100644 client/fonts/airstrikelaser.ttf create mode 100644 client/fonts/airstrikeout.ttf create mode 100644 client/fonts/built-titling.bd.otf create mode 100644 client/fonts/built-titling.rg.otf create mode 100644 client/fonts/geosans-light-oblique.ttf create mode 100644 client/fonts/geosans-light.ttf create mode 100644 client/fonts/green-nature.ttf create mode 100644 client/fonts/russo-one.ttf create mode 100644 client/fonts/thesignature.otf create mode 100644 client/fonts/thesignature.ttf create mode 100644 client/img/default-member.png create mode 100644 client/img/icon/icon-114x114.png create mode 100644 client/img/icon/icon-120x120.png create mode 100644 client/img/icon/icon-144x144.png create mode 100644 client/img/icon/icon-150x150.png create mode 100644 client/img/icon/icon-152x152.png create mode 100644 client/img/icon/icon-16x16.png create mode 100644 client/img/icon/icon-180x180.png create mode 100644 client/img/icon/icon-192x192.png create mode 100644 client/img/icon/icon-256x256.png create mode 100644 client/img/icon/icon-310x310.png create mode 100644 client/img/icon/icon-32x32.png create mode 100644 client/img/icon/icon-36x36.png create mode 100644 client/img/icon/icon-384x384.png create mode 100644 client/img/icon/icon-48x48.png create mode 100644 client/img/icon/icon-512x512.png create mode 100644 client/img/icon/icon-57x57.png create mode 100644 client/img/icon/icon-60x60.png create mode 100644 client/img/icon/icon-70x70.png create mode 100644 client/img/icon/icon-72x72.png create mode 100644 client/img/icon/icon-76x76.png create mode 100644 client/img/icon/icon-96x96.png create mode 100644 client/img/nav-icon.png create mode 100644 client/js/index.js create mode 100644 lib/client/js/dtp-app.js create mode 100644 lib/client/js/dtp-display-engine.js create mode 100644 lib/client/js/dtp-log.js create mode 100644 lib/client/js/dtp-plugin.js create mode 100644 lib/client/js/dtp-socket.js create mode 100644 lib/site-ioserver.js create mode 100644 nodemon.json diff --git a/.jshintrc b/.jshintrc index c3942c1..7dc9161 100644 --- a/.jshintrc +++ b/.jshintrc @@ -14,7 +14,7 @@ "mocha": true, "globals": { "markdown": true, - "moment": true, + "dayjs": true, "numeral": true, "io": true, "Chart": true, diff --git a/app/controllers/auth.js b/app/controllers/auth.js new file mode 100644 index 0000000..66f897b --- /dev/null +++ b/app/controllers/auth.js @@ -0,0 +1,339 @@ +// auth.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import express from 'express'; +import multer from 'multer'; + +import mongoose from 'mongoose'; +const ConnectToken = mongoose.model('ConnectToken'); + +import { v4 as uuidv4 } from 'uuid'; +import SvgCaptcha from 'svg-captcha'; + +import { SiteController, SiteError } from '../../lib/site-lib.js'; + +export default class AuthController extends SiteController { + + static get name ( ) { return 'AuthController'; } + static get slug ( ) { return 'auth'; } + + constructor (dtp) { + super(dtp, AuthController); + } + + async start ( ) { + const { + csrfToken: csrfTokenService, + limiter: limiterService, + session: sessionService, + } = this.dtp.services; + + this.templates = { + passwordResetComplete: this.loadViewTemplate('auth/password-reset-complete.pug'), + }; + + const upload = multer({ }); + const authRequired = sessionService.authCheckMiddleware({ requireLogin: true }); + + const router = express.Router(); + this.dtp.app.use('/auth', router); + + router.use(async (req, res, next) => { + res.locals.currentView = 'auth'; + return next(); + }); + + router.post( + '/otp/enable', + limiterService.create(limiterService.config.auth.postOtpEnable), + this.postOtpEnable.bind(this), + ); + + router.post( + '/otp/auth', + limiterService.create(limiterService.config.auth.postOtpAuthenticate), + this.postOtpAuthenticate.bind(this), + ); + + router.post( + '/forgot-password', + limiterService.create(limiterService.config.auth.postForgotPassword), + csrfTokenService.middleware({ name: 'forgot-password' }), + this.postForgotPassword.bind(this), + ); + router.post( + '/password-reset', + limiterService.create(limiterService.config.auth.postPasswordReset), + upload.none(), + csrfTokenService.middleware({ name: 'password-reset' }), + this.postPasswordReset.bind(this), + ); + + router.post( + '/login', + limiterService.create(limiterService.config.auth.postLogin), + upload.none(), + csrfTokenService.middleware({ name: 'login' }), + this.postLogin.bind(this), + ); + + router.get( + '/api-token/personal', + authRequired, + limiterService.create(limiterService.config.auth.getPersonalApiToken), + this.getPersonalApiToken.bind(this), + ); + + router.get( + '/socket-token', + authRequired, + limiterService.create(limiterService.config.auth.getSocketToken), + this.getSocketToken.bind(this), + ); + + router.get( + '/forgot-password', + limiterService.create(limiterService.config.auth.getForgotPasswordForm), + this.getForgotPasswordForm.bind(this), + ); + router.get( + '/password-reset', + limiterService.create(limiterService.config.auth.getResetPasswordForm), + this.getResetPasswordForm.bind(this), + ); + + router.get( + '/logout', + authRequired, + limiterService.create(limiterService.config.auth.getLogout), + this.getLogout.bind(this), + ); + + return router; + } + + async postOtpEnable (req, res, next) { + const { otpAuth: otpAuthService } = this.dtp.services; + + const service = req.body['otp-service']; + const secret = req.body['otp-secret']; + const token = req.body['otp-token']; + const otpRedirectURL = req.body['otp-redirect'] || '/'; + + try { + this.log.info('enabling OTP protections', { service, secret, token }); + res.locals.otpAccount = await otpAuthService.createOtpAccount(req, service, secret, token); + res.locals.otpRedirectURL = otpRedirectURL; + res.render('otp/new-account'); + } catch (error) { + this.log.error('failed to enable OTP protections', { + service, error, + }); + return next(error); + } + } + + async postOtpAuthenticate (req, res, next) { + const { otpAuth: otpAuthService } = this.dtp.services; + + if (!req.user) { + return res.status(403).json({ + success: false, + message: 'Must be logged in', + }); + } + const service = req.body['otp-service']; + if (!service) { + return res.status(400).json({ + success: false, + message: 'Must specify OTP service name', + }); + } + const passcode = req.body['otp-passcode']; + if (!passcode || (typeof passcode !== 'string') || (passcode.length !== 6)) { + return res.status(400).json({ + success: false, + message: 'Must include a valid passcode', + }); + } + try { + await otpAuthService.startOtpSession(req, service, passcode); + return res.redirect(req.body['otp-redirect']); + } catch (error) { + this.log.error('failed to verify one-time password for 2FA', { + service, error, + }, req.user); + return next(error); + } + } + + async postForgotPassword (req, res, next) { + const { user: userService } = this.dtp.services; + try { + res.locals.account = await userService.requestPasswordReset(req.body.username); + res.render('auth/password-reset-sent'); + } catch (error) { + this.log.error("failed to request password reset", { error }); + return next(error); + } + } + + async postPasswordReset (req, res) { + const { authToken: authTokenService, user: userService } = this.dtp.services; + try { + if (!req.body.password) { + return res.status(200).json({ success: false, message: 'Please enter a new password' }); + } + if ((typeof req.body.password !== 'string') || (req.body.length < 8)) { + return res.status(200).json({ success: false, message: 'The password is invalid or too short' }); + } + if (!req.body.passwordVerify) { + return res.status(200).json({ success: false, message: 'Please also verify your new password' }); + } + if (req.body.password !== req.body.passwordVerify) { + return res.status(200).json({ success: false, message: 'The password and password verify do not match.' }); + } + + res.locals.authToken = await authTokenService.claim(req.body.authToken); + + res.locals.accountId = mongoose.Types.ObjectId(req.body.accountId); + res.locals.account = await userService.getUserAccount(res.locals.accountId); + this.log.alert('updating user password', { + userId: res.locals.account._id, + username: res.locals.account.username_lc, + ip: req.ip, + }); + await userService.updatePassword(res.locals.account, req.body.password); + + const displayList = this.createDisplayList('password-reset'); + displayList.replaceElement('section#view-content', await this.renderTemplate(this.templates.passwordResetComplete, res.locals)); + + res.status(200).json({ success: true, displayList }); + } catch (error) { + this.log.error("failed to update account password", { error }); + return res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } + + async postLogin (req, res, next) { + const { user: userService } = this.dtp.services; + await userService.login(req, res, next, { redirectUrl: '/' }); + } + + async getPersonalApiToken (req, res, next) { + try { + const { apiGuard: apiGuardService } = this.dtp.platform.services; + res.locals.apiToken = await apiGuardService.createApiToken(req.user, [ + 'account-read', + // additional scopes go here + ]); + res.render('api-token/view'); + } catch (error) { + this.log.error('failed to generate API token', { error }); + return next(error); + } + } + + async getSocketToken (req, res, next) { + try { + const token = await ConnectToken.create({ + created: new Date(), + userType: 'User', + user: req.user._id, + consumerType: 'User', + consumer: req.user._id, + token: uuidv4(), + }); + res.status(200).json({ + success: true, + token: token.token + }); + } catch (error) { + this.log.error('failed to create Socket.io connect token', { error }); + return next(error); + } + } + + async getForgotPasswordForm (req, res) { + const { csrfToken: csrfTokenService } = this.dtp.services; + res.locals.csrfForgotPassword = await csrfTokenService.create(req, { + name: 'forgot-password', + expiresMinutes: 15, + }); + res.locals.captcha = SvgCaptcha.create({ + size: Math.round(Math.random() * 2) + 4, + width: 280, + height: 80, + noise: Math.floor(Math.random() * 2) + 1, + // background: '#d8d8d8', + color: false, + }); + req.session.dtp = req.session.dtp || { }; + req.session.dtp.captcha = req.session.dtp.captcha || { }; + req.session.dtp.captcha.forgotPassword = res.locals.captcha.text; + + res.render('auth/forgot-password'); + } + + async getResetPasswordForm (req, res, next) { + const { + csrfToken: csrfTokenService, + authToken: authTokenService, + user: userService, + } = this.dtp.services; + try { + // tokens are UUIDv4: efcfc5e3-700c-4d21-9b00-0d1a14a1ab6d + if (!req.query || !req.query.t) { + throw new SiteError(400, 'Must include authentication token'); + } + + res.locals.authToken = await authTokenService.getByValue(req.query.t); + + res.locals.account = await userService.getUserAccount(res.locals.authToken.data._id); + delete res.locals.account.passwordSalt; + delete res.locals.account.password; + delete res.locals.account.favoriteStickers; + + res.locals.csrfPasswordReset = await csrfTokenService.create(req, { + name: 'password-reset', + expiresMinutes: 15, + }); + + this.log.info('presenting password reset form', { + tokenId: res.locals.authToken._id, + token: res.locals.authToken.token, + userId: res.locals.account._id, + username: res.locals.account.username_lc, + }); + res.render('auth/password-reset.pug'); + } catch (error) { + this.log.error('failed to present password reset form', { error }); + return next(error); + } + } + + async getLogout (req, res, next) { + if (!req.user) { + return next(new SiteError(403, 'You are not signed in')); + } + req.logout((err) => { + if (err) { + this.log.error('failed to destroy browser session', { err }); + return next(err); + } + req.session.destroy((err) => { + if (err) { + this.log.error('failed to destroy browser session', { err }); + return next(err); + } + res.redirect('/'); + }); + }); + } +} \ No newline at end of file diff --git a/app/controllers/email.js b/app/controllers/email.js new file mode 100644 index 0000000..9af3172 --- /dev/null +++ b/app/controllers/email.js @@ -0,0 +1,119 @@ +// email.js +// Copyright (C) 2024 Digital Telepresence, LLC +// All Rights Reserved + +'use strict'; + +import path from 'node:path'; +import express from 'express'; + +import SvgCaptcha from 'svg-captcha'; + +import { SiteController, SiteError} from '../../lib/site-lib.js'; + +export default class EmailController extends SiteController { + + static get name ( ) { return 'EmailController'; } + static get slug ( ) { return 'email'; } + + constructor (dtp) { + super(dtp, EmailController); + } + + async start ( ) { + const { jobQueue: jobQueueService, limiter: limiterService } = this.dtp.services; + + SvgCaptcha.loadFont(path.join(this.dtp.config.root, 'client', 'fonts', 'green-nature.ttf')); + + this.emailJobQueue = jobQueueService.getJobQueue('email', { + attempts: 3 + }); + + const router = express.Router(); + this.dtp.app.use('/email', router); + + router.post( + '/verify', + limiterService.create(limiterService.config.email.postEmailVerify), + this.postEmailVerify.bind(this), + ); + + router.get( + '/verify', + limiterService.create(limiterService.config.email.getEmailVerify), + this.getEmailVerify.bind(this), + ); + + router.get( + '/opt-out', + limiterService.create(limiterService.config.email.getEmailOptOut), + this.getEmailOptOut.bind(this), + ); + + return router; + } + + async postEmailVerify (req, res, next) { + const { email: emailService } = this.dtp.services; + try { + // if the session doesn't *have* an emailVerify captcha challenge, they + // didn't start by requesting the form (and are most likely automated) + if (!req.session.dtp || !req.session.dtp.captcha || !req.session.dtp.captcha.emailVerify) { + throw new SiteError(403, 'Invalid input'); + } + // If the captcha text entered does not exactly match the text stored in + // the session, reject the request. + if (req.body.captcha.trim() !== req.session.dtp.captcha.emailVerify) { + throw new SiteError(403, 'The captcha text entered does not match'); + } + + await emailService.verifyToken(req.body.token); + res.render('email/verify-success'); + } catch (error) { + this.log.error('failed to verify email', { error }); + return next(error); + } + } + + async getEmailOptOut (req, res, next) { + const { user: userService } = this.dtp.services; + try { + await userService.emailOptOut(req.query.u, req.query.c); + res.render('email/opt-out-success'); + } catch (error) { + this.log.error('failed to opt-out from email', { + userId: req.query.t, + category: req.query.c, + error, + }); + return next(error); + } + } + + async getEmailVerify (req, res, next) { + const { email: emailService } = this.dtp.services; + try { + res.locals.token = await emailService.getVerificationToken(req.query.t); + if (!res.locals.token) { + throw new SiteError(404, 'Verification token not found'); + } + + res.locals.captcha = SvgCaptcha.create({ + size: Math.round(Math.random() * 2) + 4, + width: 280, + height: 80, + noise: Math.floor(Math.random() * 2) + 1, + // background: '#d8d8d8', + color: false, + }); + req.session.dtp = req.session.dtp || { }; + req.session.dtp.captcha = req.session.dtp.captcha || { }; + req.session.dtp.captcha.emailVerify = res.locals.captcha.text; + + res.render('email/verify-form'); + } catch (error) { + this.log.error('failed to verify email', { error }); + return next(error); + } + } +} \ No newline at end of file diff --git a/app/controllers/home.js b/app/controllers/home.js index feed350..0cf9f9c 100644 --- a/app/controllers/home.js +++ b/app/controllers/home.js @@ -10,8 +10,8 @@ import { SiteController } from '../../lib/site-controller.js'; export default class HomeController extends SiteController { - static get name ( ) { return 'HomeController'; } - static get slug ( ) { return 'home'; } + static get name ( ) { return 'HomeController'; } + static get slug ( ) { return 'home'; } static create (dtp) { const instance = new HomeController(dtp); @@ -33,6 +33,9 @@ export default class HomeController extends SiteController { } async getHome (req, res) { + if (!req.user) { + return res.redirect('/welcome'); + } res.locals.pageDescription = 'DTP Chat Home'; res.render('home'); } diff --git a/app/controllers/manifest.js b/app/controllers/manifest.js index 76e8f58..cd14079 100644 --- a/app/controllers/manifest.js +++ b/app/controllers/manifest.js @@ -12,8 +12,8 @@ import { SiteController } from '../../lib/site-controller.js'; export default class ManifestController extends SiteController { - static get name ( ) { return 'ManifestController'; } - static get slug ( ) { return 'manifest'; } + static get name ( ) { return 'ManifestController'; } + static get slug ( ) { return 'manifest'; } static create (dtp) { const instance = new ManifestController(dtp); @@ -59,7 +59,7 @@ export default class ManifestController extends SiteController { [512, 384, 256, 192, 144, 96, 72, 48, 32, 16].forEach((size) => { manifest.icons.push({ - src: `/img/icon/${this.dtp.config.site.domainKey}/icon-${size}x${size}.png`, + src: `/img/icon/icon-${size}x${size}.png`, sizes: `${size}x${size}`, type: 'image/png' }); diff --git a/app/controllers/user.js b/app/controllers/user.js new file mode 100644 index 0000000..6c4c122 --- /dev/null +++ b/app/controllers/user.js @@ -0,0 +1,477 @@ +// user.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import express from 'express'; +import mongoose from 'mongoose'; +import multer from 'multer'; + +import { SiteController, SiteError } from '../../lib/site-lib.js'; + +export default class UserController extends SiteController { + + static get name ( ) { return 'UserController'; } + static get slug ( ) { return 'user'; } + + constructor (dtp) { + super(dtp, UserController); + } + + async start ( ) { + const { dtp } = this; + const { + csrfToken: csrfTokenService, + limiter: limiterService, + otpAuth: otpAuthService, + session: sessionService, + } = dtp.services; + + const upload = multer({ dest: `/tmp/dtp/${this.dtp.config.site.domainKey}/uploads/${UserController.name}` }); + const router = express.Router(); + dtp.app.use('/user', router); + + const authCheck = sessionService.authCheckMiddleware({ requireLogin: true }); + + const otpSetup = otpAuthService.middleware('Account', { + adminRequired: false, + otpRequired: true, + otpRedirectURL: async (req) => { return `/user/${req.user._id}`; }, + }); + const otpMiddleware = otpAuthService.middleware('Account', { + adminRequired: false, + otpRequired: false, + otpRedirectURL: async (req) => { return `/user/${req.user._id}`; }, + }); + + router.use( + async (req, res, next) => { + try { + res.locals.currentView = 'user'; + res.locals.pageTitle = 'Member Account'; + return next(); + } catch (error) { + return next(error); + } + }, + ); + + async function checkProfileOwner (req, res, next) { + if (!req.user || !req.user._id.equals(res.locals.userProfile._id)) { + return next(new SiteError(403, 'This is not your user account or profile')); + } + return next(); + } + + router.param('userId', this.populateUser.bind(this)); + + router.post( + '/:userId/profile-photo', + limiterService.create(limiterService.config.user.postProfilePhoto), + checkProfileOwner, + upload.single('imageFile'), + this.postProfilePhoto.bind(this), + ); + router.post( + '/:userId/settings', + limiterService.create(limiterService.config.user.postUpdateSettings), + checkProfileOwner, + upload.none(), + csrfTokenService.middleware({ name: 'account-settings' }), + this.postUpdateSettings.bind(this), + ); + router.post( + '/:userId/block', + limiterService.create(limiterService.config.user.postBlockUser), + upload.none(), + this.postBlockUser.bind(this), + ); + + if (process.env.DTP_MEMBER_SIGNUP === 'enabled') { + router.post('/', + limiterService.create(limiterService.config.user.postCreateUser), + csrfTokenService.middleware({ name: 'signup' }), + this.postCreateUser.bind(this), + ); + } + + router.get( + '/resend-welcome-email', + authCheck, + limiterService.create(limiterService.config.user.getResendWelcomeEmail), + this.getResendWelcomeEmail.bind(this), + ); + + router.get( + '/autocomplete', + authCheck, + this.getAutocomplete.bind(this), + ); + + router.get( + '/resolve', + authCheck, + this.getResolveUsername.bind(this), + ); + + router.get( + '/:userId/otp-setup', + limiterService.create(limiterService.config.user.getOtpSetup), + otpSetup, + this.getOtpSetup.bind(this), + ); + router.get( + '/:userId/otp-disable', + limiterService.create(limiterService.config.user.getOtpDisable), + authCheck, + this.getOtpDisable.bind(this), + ); + + router.get( + '/:userId/settings', + limiterService.create(limiterService.config.user.getSettings), + otpMiddleware, + checkProfileOwner, + this.getUserSettingsView.bind(this), + ); + + router.get( + '/:userId/stripe/customer-portal', + limiterService.create(limiterService.config.user.getStripeCustomerPortal), + checkProfileOwner, + this.getStripeCustomerPortal.bind(this), + ); + + router.get( + '/:userId/block', + limiterService.create(limiterService.config.user.getBlockView), + otpMiddleware, + checkProfileOwner, + this.getBlockView.bind(this), + ); + + router.get( + '/:userId', + limiterService.create(limiterService.config.user.getUserProfile), + otpMiddleware, + checkProfileOwner, + this.getUserView.bind(this), + ); + + router.delete( + '/:userId/profile-photo', + limiterService.create(limiterService.config.user.deleteProfilePhoto), + checkProfileOwner, + this.deleteProfilePhoto.bind(this), + ); + router.delete( + '/:userId/block/:blockedUserId', + limiterService.create(limiterService.config.user.deleteBlockedUser), + checkProfileOwner, + this.deleteBlockedUser.bind(this), + ); + } + + async populateUser (req, res, next, userId) { + const { user: userService } = this.dtp.services; + if (!req.user) { + return res.redirect('/welcome'); + } + if (!mongoose.Types.ObjectId.isValid(userId)) { + return next(new SiteError(406, 'Invalid User')); + } + try { + res.locals.userProfile = await userService.getUserAccount(userId); + return next(); + } catch (error) { + this.log.error('failed to populate userId', { userId, error }); + return next(error); + } + } + + async postCreateUser (req, res, next) { + const { user: userService } = this.dtp.services; + try { + // If the user session doesn't have a signup captcha, then they did not + // request the signup form and are most likely an automated bot + if (!req.session.dtp || !req.session.dtp.captcha || !req.session.dtp.captcha.signup) { + throw new SiteError(403, 'Invalid session state'); + } + + // Reject the request if the captcha text entered does not exactly match + // the text generated + if (req.body.captcha !== req.session.dtp.captcha.signup) { + throw new SiteError(403, 'The captcha text entered does not match'); + } + + // The captcha matches. Create the user account and sign them in. + res.locals.user = await userService.create(req.body); + req.login(res.locals.user, (error) => { + if (error) { + return next(error); + } + res.redirect('/'); // send them to the home page + }); + } catch (error) { + this.log.error('failed to create new user', { error }); + return next(error); + } + } + + async postProfilePhoto (req, res) { + const { user: userService } = this.dtp.services; + try { + const displayList = this.createDisplayList('profile-photo'); + this.log.info('updating user profile photo', { user: req.user._id, file: req.file }); + const image = await userService.updatePhoto(req.user, req.file); + displayList.showNotification( + 'Profile photo updated successfully.', + 'success', + 'bottom-center', + 2000, + ); + displayList.setAttribute( + '#profile-picture-file', + 'src', + `/image/${image._id}`, + ); + res.status(200).json({ success: true, displayList }); + } catch (error) { + this.log.error('failed to update profile photo', { error }); + return res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } + + async postUpdateSettings (req, res) { + const { user: userService } = this.dtp.services; + try { + const displayList = this.createDisplayList('app-settings'); + + await userService.setUserSettings(req.user, req.body); + this.log.info('user settings updated', { + username: req.user.username, + newUsername: req.body.username, + }); + + displayList.showNotification( + 'Member account settings updated successfully.', + 'success', + 'bottom-center', + 6000, + ); + res.status(200).json({ success: true, displayList }); + } catch (error) { + this.log.error('failed to update account settings', { error }); + return res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } + + async postBlockUser (req, res) { + const { user: userService } = this.dtp.services; + try { + const displayList = this.createDisplayList('block-user'); + await userService.block(req.user, req.body.userId); + displayList.removeElement(`.streamray-status[data-author-id="${req.body.userId}"]`); + displayList.showNotification( + `Member blocked successfully`, + 'success', + 'bottom-left', + 3000, + ); + return res.status(200).json({ success: true, displayList }); + } catch (error) { + this.log.error('failed to block user', { error }); + return res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } + + async getResendWelcomeEmail (req, res) { + const { user: userService } = this.dtp.services; + try { + const displayList = this.createDisplayList('welcome-email'); + await userService.sendWelcomeEmail(req.user); + displayList.showNotification( + 'Welcome email sent (check spam folder)', + 'success', + 'bottom-center', + 4000, + ); + res.status(200).json({ success: true, displayList }); + } catch (error) { + this.log.error('failed to resend welcome email', { error }); + res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } + + async getAutocomplete (req, res) { + const { user: userService } = this.dtp.services; + try { + if (!req.query || !req.query.q || (req.query.q.length === 0)) { + throw new SiteError(406, "Username must not be empty"); + } + const strings = await userService.autocomplete({ skip: 0, cpp: 8 }, req.query.q); + res.status(200).json({ success: true, strings }); + } catch (error) { + this.log.error('failed to autocomplete username', { error }); + return res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } + + async getResolveUsername (req, res) { + const { user: userService } = this.dtp.services; + try { + const user = await userService.lookup(req.query.q); + res.status(200).json({ success: true, user }); + } catch (error) { + this.log.error('failed to resolve username', { error }); + return res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } + + async getOtpSetup (req, res) { + res.render('user/otp-setup-complete'); + } + + async getOtpDisable (req, res) { + const { otpAuth: otpAuthService } = this.dtp.services; + try { + await otpAuthService.destroyOtpSession(req, 'Account'); + await otpAuthService.removeForUser(req.user, 'Account'); + res.render('user/otp-disabled'); + } catch (error) { + this.log.error('failed to disable OTP service for Account', { error }); + res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } + + async getStripeCustomerPortal (req, res, next) { + const { stripe: stripeService } = this.dtp.services; + /* + * Stripe Integration + */ + try { + const session = await stripeService.createCustomerPortalSession(req.user); + return res.redirect(303, session.url); + } catch (error) { + this.log.error('failed to provide Stripe Customer Portal session', { error }); + return next(error); + } + } + + async getUserSettingsView (req, res, next) { + const { + csrfToken: csrfTokenService, + otpAuth: otpAuthService, + } = this.dtp.services; + try { + res.locals.csrfTokenAccountSettings = await csrfTokenService.create(req, { + name: 'account-settings', + expiresMinutes: 20, + }); + res.locals.hasOtpAccount = await otpAuthService.isUserProtected(req.user, 'Account'); + res.render('user/settings'); + } catch (error) { + this.log.error('failed to produce user settings view', { error }); + return next(error); + } + } + + async getBlockView (req, res, next) { + const { user: userService } = this.dtp.services; + try { + res.locals.blockedUsers = await userService.getBlockedUsers(req.user._id); + res.render('user/block-list'); + } catch (error) { + this.log.error('failed to present block list view', { error }); + return next(error); + } + } + + async getUserView (req, res, next) { + const { handcash: handcashService } = this.dtp.services; + /* + * HandCash Integration + */ + try { + res.locals.handcash = { + connectUrl: handcashService.getRedirectionUrl(req.user), + }; + res.locals.handcash.profile = await handcashService.getUserProfile(req.user); + } catch (error) { + // this.log.debug('authenticated user does not have a HandCash wallet connection', { error }); + // fall through + } + + try { + res.render('user/profile'); + } catch (error) { + this.log.error('failed to produce user profile view', { error }); + return next(error); + } + } + + async deleteProfilePhoto (req, res) { + const { user: userService } = this.dtp.services; + try { + const displayList = this.createDisplayList('app-settings'); + await userService.removePhoto(req.user); + displayList.showNotification( + 'Profile photo removed successfully.', + 'success', + 'bottom-center', + 2000, + ); + res.status(200).json({ success: true, displayList }); + } catch (error) { + this.log.error('failed to remove profile photo', { error }); + return res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } + + async deleteBlockedUser (req, res) { + const { user: userService } = this.dtp.services; + try { + const displayList = this.createDisplayList('block-user'); + await userService.unblock(req.user, req.params.blockedUserId); + displayList.removeElement(`li[data-user-id="${req.params.blockedUserId}"]`); + displayList.showNotification( + `Member un-blocked successfully`, + 'success', + 'bottom-left', + 3000, + ); + return res.status(200).json({ success: true, displayList }); + } catch (error) { + this.log.error('failed to un-block user', { error }); + return res.status(error.statusCode || 500).json({ + success: false, + message: error.message, + }); + } + } +} \ No newline at end of file diff --git a/app/controllers/welcome.js b/app/controllers/welcome.js index 5e0a02f..80ace52 100644 --- a/app/controllers/welcome.js +++ b/app/controllers/welcome.js @@ -49,6 +49,7 @@ export default class WelcomeController extends SiteController { async postSignup (req, res, next) { const { user: userService } = this.dtp.services; try { + this.log.info('create new user account', { body: req.body }); res.locals.user = await userService.create(req.body); res.render('welcome/signup-complete'); } catch (error) { @@ -62,6 +63,11 @@ export default class WelcomeController extends SiteController { } async getLogin (req, res) { + const { csrfToken: csrfTokenService } = this.dtp.services; + res.locals.csrfLogin = await csrfTokenService.create(req, { + name: 'login', + expiresMinutes: 15, + }); res.render('welcome/login'); } diff --git a/app/models/chat-message.js b/app/models/chat-message.js new file mode 100644 index 0000000..fc7ac7d --- /dev/null +++ b/app/models/chat-message.js @@ -0,0 +1,24 @@ +// chat-message.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import mongoose from 'mongoose'; +const Schema = mongoose.Schema; + +const CHANNEL_TYPE_LIST = ['ChatRoom']; + +const ChatMessageSchema = new Schema({ + created: { type: Date, default: Date.now, required: true, index: -1, expires: '30d' }, + expires: { type: Date, index: -1 }, + channelType: { type: String, enum: CHANNEL_TYPE_LIST, required: true }, + channel: { type: Schema.ObjectId, required: true, index: 1, refPath: 'channelType' }, + author: { type: Schema.ObjectId, required: true, index: 1, ref: 'User' }, + content: { type: String }, + mentions: { type: [Schema.ObjectId], select: false, ref: 'User' }, + hashtags: { type: [String], select: false }, + links: { type: [Schema.ObjectId], ref: 'Link' }, +}); + +export default mongoose.model('ChatMessage', ChatMessageSchema); \ No newline at end of file diff --git a/app/models/chat-room-invite.js b/app/models/chat-room-invite.js new file mode 100644 index 0000000..c0e94aa --- /dev/null +++ b/app/models/chat-room-invite.js @@ -0,0 +1,27 @@ +// chat-room-invite.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import mongoose from 'mongoose'; +const Schema = mongoose.Schema; + +const INVITE_STATUS_LIST = ['new', 'viewed', 'accepted', 'rejected']; + +const InviteeSchema = new Schema({ + user: { }, // pick up here + email: { }, +}); + +const ChatRoomInviteSchema = new Schema({ + created: { type: Date, default: Date.now, required: true, index: 1, expires: '7d' }, + token: { type: String, required: true, unique: true }, + owner: { type: Schema.ObjectId, required: true, index: 1, ref: 'User' }, + room: { type: Schema.ObjectId, required: true, index: 1, ref: 'ChatRoom' }, + member: { type: InviteeSchema, required: true }, + status: { type: String, enum: INVITE_STATUS_LIST, required: true }, + message: { type: String }, +}); + +export default mongoose.model('ChatRoomInvite', ChatRoomInviteSchema); \ No newline at end of file diff --git a/app/models/chat-room.js b/app/models/chat-room.js new file mode 100644 index 0000000..f4936ef --- /dev/null +++ b/app/models/chat-room.js @@ -0,0 +1,24 @@ +// chat-room.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import { MIN_ROOM_CAPACITY, MAX_ROOM_CAPACITY } from './lib/constants.js'; + +import mongoose from 'mongoose'; +const Schema = mongoose.Schema; + +const ChatRoomSchema = new Schema({ + created: { type: Date, default: Date.now, required: true, index: 1, expires: '7d' }, + owner: { type: Schema.ObjectId, required: true, index: 1, ref: 'User' }, + name: { type: String, required: true }, + topic: { type: String }, + capacity: { type: Number, required: true, min: MIN_ROOM_CAPACITY, max: MAX_ROOM_CAPACITY }, + accessToken: { type: String, required: true }, + invites: { type: [Schema.ObjectId], select: false }, + members: { type: [Schema.ObjectId], select: false }, + banned: { type: [Schema.ObjectId], select: false }, +}); + +export default mongoose.model('ChatRoom', ChatRoomSchema); \ No newline at end of file diff --git a/app/models/connect-token.js b/app/models/connect-token.js new file mode 100644 index 0000000..75aeb78 --- /dev/null +++ b/app/models/connect-token.js @@ -0,0 +1,29 @@ +// connect-token.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import mongoose from 'mongoose'; +const Schema = mongoose.Schema; + +const RESOURCE_TYPE_LIST = [ + 'Channel', + 'User', + 'ChatRoom', + 'ChannelCall', +]; + +const ConnectTokenSchema = new Schema({ + created: { type: Date, default: Date.now, required: true, index: -1, expires: '2m' }, + token: { type: String, required: true, index: 1 }, + userType: { type: String, enum: ['User', 'CoreUser'] }, + user: { type: Schema.ObjectId, ref: 'User', }, + consumerType: { type: String, enum: ['Channel', 'User'], required: true }, + consumer: { type: Schema.ObjectId, required: true, index: true, refPath: 'consumerType' }, + resourceType: { type: String, enum: RESOURCE_TYPE_LIST }, + resource: { type: Schema.ObjectId, refPath: 'resourceType' }, + claimed: { type: Date }, +}); + +export default mongoose.model('ConnectToken', ConnectTokenSchema); \ No newline at end of file diff --git a/app/models/csrf-token.js b/app/models/csrf-token.js new file mode 100644 index 0000000..5d181b0 --- /dev/null +++ b/app/models/csrf-token.js @@ -0,0 +1,19 @@ +// csrf-token.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import mongoose from "mongoose"; +const Schema = mongoose.Schema; + +const CsrfTokenSchema = new Schema({ + created: { type: Date, required: true, default: Date.now, index: -1, expires: '7d' }, + expires: { type: Date, required: true, default: Date.now, index: -1 }, + claimed: { type: Date }, + token: { type: String, index: 1 }, + user: { type: Schema.ObjectId, ref: 'User' }, + ip: { type: String, required: true }, +}); + +export default mongoose.model('CsrfToken', CsrfTokenSchema); \ No newline at end of file diff --git a/app/models/lib/constants.js b/app/models/lib/constants.js new file mode 100644 index 0000000..8f19e0d --- /dev/null +++ b/app/models/lib/constants.js @@ -0,0 +1,4 @@ +'use strict'; + +export const MIN_ROOM_CAPACITY = 4; +export const MAX_ROOM_CAPACITY = 25; \ No newline at end of file diff --git a/app/models/otp-account.js b/app/models/otp-account.js new file mode 100644 index 0000000..c3562ed --- /dev/null +++ b/app/models/otp-account.js @@ -0,0 +1,36 @@ +// otp-account.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import mongoose from 'mongoose'; +const Schema = mongoose.Schema; + +var OtpBackupTokenSchema = new Schema({ + token: { type: String, required: true }, + claimed: { type: Date }, +}); + +const OtpAccountSchema = new Schema({ + created: { type: Date, default: Date.now, required: true, index: -1 }, + user: { type: Schema.ObjectId, required: true, index: 1, ref: 'User' }, + service: { type: String, required: true, index: 1 }, + secret: { type: String, required: true, select: false }, + algorithm: { type: String, required: true }, + step: { type: Number, default: 30, required: true, min: 15 }, + digits: { type: Number, default: 6, required: true, min: 6 }, + backupTokens: { type: [OtpBackupTokenSchema], select: false }, + lastVerification: { type: Date }, + lastVerificationIp: { type: String }, +}); + +OtpAccountSchema.index({ + user: 1, + service: 1, +}, { + unique: true, + name: 'otp_user_svc_uniq_idx', +}); + +export default mongoose.model('OtpAccount', OtpAccountSchema); \ No newline at end of file diff --git a/app/services/chat.js b/app/services/chat.js new file mode 100644 index 0000000..c1fbf3e --- /dev/null +++ b/app/services/chat.js @@ -0,0 +1,43 @@ +// chat.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import mongoose from 'mongoose'; +// const AuthToken = mongoose.model('AuthToken'); +const ChatRoom = mongoose.model('ChatRoom'); +const ChatRoomInvite = mongoose.model('ChatRoomInvite'); + +import { SiteService, SiteError } from '../../lib/site-lib.js'; + +export default class ChatService extends SiteService { + + static get name ( ) { return 'ChatService'; } + static get slug () { return 'chat'; } + + constructor (dtp) { + super(dtp, ChatService); + } + + async start ( ) { + + } + + async createRoom (owner, roomDefinition) { + const room = new ChatRoom(); + + } + + async destroyRoom (user, room) { + + } + + async joinRoom (room, user) { + + } + + async leaveRoom (room, user) { + + } +} \ No newline at end of file diff --git a/app/services/csrf-token.js b/app/services/csrf-token.js new file mode 100644 index 0000000..f06f445 --- /dev/null +++ b/app/services/csrf-token.js @@ -0,0 +1,78 @@ +// csrf-token.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import dayjs from 'dayjs'; + +import mongoose from 'mongoose'; +import { v4 as uuidv4 } from 'uuid'; + +const CsrfToken = mongoose.model('CsrfToken'); +import { SiteService, SiteError } from '../../lib/site-lib.js'; + +export default class CsrfTokenService extends SiteService { + + static get name ( ) { return 'CsrfTokenService'; } + static get slug ( ) { return 'csrfToken'; } + + constructor (dtp) { + super(dtp, CsrfTokenService); + } + + middleware (options) { + options = Object.assign({ allowReuse: false }, options); + return async (req, res, next) => { + const requestToken = req.body[`csrf-token-${options.name}`]; + if (!requestToken) { + this.log.error('missing CSRF token', { options }); + return next(new Error('Must include valid CSRF token')); + } + + const token = await CsrfToken.findOne({ token: requestToken }); + if (!token) { + return next(new Error('CSRF request token is invalid')); + } + if (token.ip !== req.ip) { + return next(new Error('CSRF request token client mismatch')); + } + if (!options.allowReuse && token.claimed) { + return next(new SiteError(403, 'This request cannot be accepted. Please re-load the form and try again.')); + } + + if (token.user) { + if (!req.user) { + return next(new Error('Must be logged in')); + } + if (!token.user.equals(req.user._id)) { + return next(new Error('CSRF request token user mismatch')); + } + } + + await CsrfToken.updateOne( + { _id: token._id }, + { $set: { claimed: new Date() } }, + ); + + return next(); + }; + } + + async create (req, options) { + options = Object.assign({ + expiresMinutes: 30, + }, options); + const now = new Date(); + let csrfToken = await CsrfToken.create({ + created: now, + expires: dayjs(now).add(options.expiresMinutes, 'minute').toDate(), + user: req.user ? req.user._id : null, + ip: req.ip, + token: uuidv4(), + }); + csrfToken = csrfToken.toObject(); + csrfToken.name = `csrf-token-${options.name}`; + return csrfToken; + } +} \ No newline at end of file diff --git a/app/services/email.js b/app/services/email.js index c87dd12..2c592d4 100644 --- a/app/services/email.js +++ b/app/services/email.js @@ -17,7 +17,7 @@ import disposableEmailDomains from 'disposable-email-provider-domains'; import emailValidator from 'email-validator'; import emailDomainCheck from 'email-domain-check'; -import moment from 'moment'; +import dayjs from 'dayjs'; import numeral from 'numeral'; import { SiteService, SiteError } from '../../lib/site-lib.js'; @@ -307,7 +307,7 @@ export default class EmailService extends SiteService { }, config: this.dtp.config, site: this.dtp.config.site, - moment, + dayjs, numeral, }; return Object.assign(messageModel, viewModel); diff --git a/app/services/otp-auth.js b/app/services/otp-auth.js new file mode 100644 index 0000000..1198407 --- /dev/null +++ b/app/services/otp-auth.js @@ -0,0 +1,243 @@ +// otp-auth.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import mongoose from 'mongoose'; + +const OtpAccount = mongoose.model('OtpAccount'); + +const ONE_HOUR = 1000 * 60 * 60; +const OTP_SESSION_DURATION = (process.env.NODE_ENV === 'local') ? (ONE_HOUR * 24) : (ONE_HOUR * 2); + +import { authenticator } from 'otplib'; +import { v4 as uuidv4 } from 'uuid'; + +import { SiteService, SiteError } from '../../lib/site-lib.js'; + +export default class OtpAuthService extends SiteService { + + static get name ( ) { return 'OtpAuthService'; } + static get slug ( ) { return 'otpAuth'; } + + constructor (dtp) { + super(dtp, OtpAuthService); + + authenticator.options = { + algorithm: 'sha1', + step: 30, + digits: 6, + }; + } + + middleware (serviceName, options) { + options = Object.assign({ + otpRequired: false, + otpRedirectURL: '/', + adminRequired: false, + }, options); + return async (req, res, next) => { + res.locals.otp = { }; // will decorate view model with OTP information + if (!req.session) { + return next(new SiteError(403, 'Request session is invalid')); + } + if (!req.user) { + return next(new SiteError(403, 'Must be logged in')); + } + if (options.adminRequired && !req.user.flags.isAdmin && !req.user.flags.isModerator) { + return next(new SiteError(403, 'Admin privileges are required')); + } + + req.session.otp = req.session.otp || { }; + if (await this.checkOtpSession(req, serviceName)) { + return next(); // user is OTP-authenticated on this service + } + + res.locals.otpOptions = authenticator.options; + res.locals.otpServiceName = serviceName; + res.locals.otpAlgorithm = authenticator.options.algorithm.toUpperCase(); + res.locals.otpDigits = authenticator.options.digits; + res.locals.otpPeriod = authenticator.options.step; + + if (typeof options.otpRedirectURL === 'function') { + // allows redirect to things like /user/:userId using current session's user + res.locals.otpRedirectURL = await options.otpRedirectURL(req, res); + } else { + res.locals.otpRedirectURL = options.otpRedirectURL; + } + + res.locals.otpAccount = await OtpAccount + .findOne({ + user: req.user._id, + service: serviceName, + }); + + if (!res.locals.otpAccount && !options.otpRequired) { + return next(); + } + + if (!res.locals.otpAccount) { + let issuer; + if (process.env.NODE_ENV === 'production') { + issuer = `${this.dtp.config.site.name}: ${serviceName}`; + } else { + issuer = `${this.dtp.config.site.name}:${process.env.NODE_ENV}: ${serviceName}`; + } + res.locals.otpTempSecret = authenticator.generateSecret(); + res.locals.otpKeyURI = authenticator.keyuri(req.user.username.trim(), issuer, res.locals.otpTempSecret); + req.session.otp[serviceName] = req.session.otp[serviceName] || { }; + req.session.otp[serviceName].secret = res.locals.otpTempSecret; + req.session.otp[serviceName].redirectURL = res.locals.otpRedirectURL; + return res.render('otp/welcome'); + } + + res.locals.otpSession = req.session.otp[serviceName]; + + this.log.debug('request on OTP-required route with no authentication', { + service: serviceName, + ip: req.ip, + session: res.locals.otpSession, + }, req.user); + + req.session.otp[serviceName] = req.session.otp[serviceName] || { }; + req.session.otp[serviceName].redirectURL = res.locals.otpRedirectURL; + await this.saveSession(req); + + if (!res.locals.otpSession || !res.locals.otpSession.isAuthenticated) { + return res.render('otp/authenticate'); + } + + return next(); + }; + } + + async createOtpAccount (req, service, secret, passcode) { + const { crypto: cryptoService } = this.dtp.services; + const NOW = new Date(); + try { + this.log.info('verifying user passcode', { + user: req.user._id, + username: req.user.username, + service, secret, passcode, + }, req.user); + if (authenticator.check(passcode, secret)) { + throw new SiteError(403, 'Invalid passcode'); + } + + const backupTokens = [ ]; + for (let i = 0; i < 10; ++i) { + backupTokens.push({ + token: cryptoService.createHash(secret + uuidv4()), + }); + } + + const now = new Date(); + const account = await OtpAccount.create({ + created: NOW, + user: req.user._id, + service, + secret, + algorithm: authenticator.options.algorithm, + step: authenticator.options.step, + digits: authenticator.options.digits, + backupTokens, + lastVerification: now, + lastVerificationIp: req.ip, + }); + + return account; + } catch (error) { + this.log.error('failed to create OTP account', { + service, secret, passcode, error, + }, req.user); + throw error; + } + } + + async startOtpSession (req, serviceName, passcode) { + if (!passcode || (typeof passcode !== 'string')) { + throw new SiteError(403, 'Invalid passcode'); + } + try { + const account = await OtpAccount + .findOne({ user: req.user._id, service: serviceName }) + .select('+secret') + .lean(); + if (!account) { + throw new SiteError(400, 'Two-Factor Authentication not enabled'); + } + + const now = new Date(); + if (!authenticator.check(passcode, account.secret)) { + throw new SiteError(403, 'Invalid passcode'); + } + + req.session.otp = req.session.otp || { }; + req.session.otp[serviceName] = req.session.otp[serviceName] || { }; + req.session.otp[serviceName].isAuthenticated = true; + req.session.otp[serviceName].expiresAt = now.valueOf() + OTP_SESSION_DURATION; + await this.saveSession(req); + } catch (error) { + this.log.error('failed to start OTP session', { + serviceName, passcode, error, + }); + throw error; + } + } + + async destroyOtpSession (req, serviceName) { + if (!req.session.otp) { + return; + } + if (!req.session.otp[serviceName]) { + return; + } + delete req.session.otp[serviceName]; + await this.saveSession(req); + } + + async checkOtpSession (req, serviceName) { + if (!req.session || !req.session.otp) { + return false; + } + + const session = req.session.otp[serviceName]; + if (!session) { + return false; + } + + if (!session.isAuthenticated) { + return false; + } + + const NOW = Date.now(); + if (NOW >= session.expiresAt) { + session.isAuthenticated = false; + delete session.expiresAt; + await this.saveSession(req); + return false; + } + + session.expiresAt = NOW + OTP_SESSION_DURATION; + await this.saveSession(req); + + return true; + } + + async isUserProtected (user, serviceName) { + const account = await OtpAccount.findOne({ user: user._id, service: serviceName }); + if (!account) { + return false; + } + return true; + } + + async removeForUser (user, serviceName) { + const search = { user: user._id }; + if (serviceName) { + search.service = serviceName; + } + await OtpAccount.deleteMany(search); + } +} \ No newline at end of file diff --git a/app/services/user.js b/app/services/user.js index 327196c..9258ea7 100644 --- a/app/services/user.js +++ b/app/services/user.js @@ -18,8 +18,8 @@ import { SiteService, SiteError } from '../../lib/site-lib.js'; export default class UserService extends SiteService { - static get slug () { return 'user'; } static get name ( ) { return 'UserService'; } + static get slug ( ) { return 'user'; } constructor (dtp) { super(dtp, UserService); @@ -37,7 +37,13 @@ export default class UserService extends SiteService { async start ( ) { await super.start(); - this.reservedNames = await import(path.join(this.dtp.config.root, 'config', 'reserved-names.js')); + + this.registerPassportLocal(); + if (process.env.DTP_ADMIN === 'enabled') { + this.registerPassportAdmin(); + } + + this.reservedNames = (await import(path.join(this.dtp.config.root, 'config', 'reserved-names.js'))).default; } async create (userDefinition) { @@ -259,7 +265,10 @@ export default class UserService extends SiteService { } async emailOptOut (userId, category) { - userId = mongoose.Types.ObjectId(userId); + if (!mongoose.Types.ObjectId.isValid(userId)) { + throw new SiteError(400, 'Invalid user ID'); + } + const user = await this.getUserAccount(userId); if (!user) { throw new SiteError(406, 'Invalid opt-out token'); @@ -385,7 +394,6 @@ export default class UserService extends SiteService { async login (req, res, next, options) { options = Object.assign({ loginUrl: '/welcome/login', - redirectUrl: '/', }, options); try { passport.authenticate('dtp-local', (error, user/*, info*/) => { @@ -400,6 +408,13 @@ export default class UserService extends SiteService { } return res.redirect(options.loginUrl); } + this.log.alert('user login', { + user: { + _id: user._id, + username: user.username, + ip: req.ip, + } + }); req.login(user, (error) => { if (error) { return next(error); @@ -407,6 +422,9 @@ export default class UserService extends SiteService { if (options.onLoginSuccess) { return options.onLoginSuccess(req, res, next); } + if (!options.redirectUrl) { + return; + } return res.redirect(options.redirectUrl); }); })(req, res, next); diff --git a/app/views/auth/forgot-password.pug b/app/views/auth/forgot-password.pug new file mode 100644 index 0000000..2ad037b --- /dev/null +++ b/app/views/auth/forgot-password.pug @@ -0,0 +1,29 @@ +extends ../layout/main +block view-content + + form(method="POST", action="/auth/forgot-password").uk-form + input(type="hidden", name= csrfForgotPassword.name, value= csrfForgotPassword.token) + section.uk-section.uk-section-default + .uk-container + fieldset.uk-fieldset + legend(class="uk-text-center uk-text-left@m").uk-legend Forgot Password + p Enter the username or email address of the account for which you have lost the password. An email will be sent to the email address on file for the account with instructions for how to proceed. + + .uk-margin + label(for="username", class="uk-visible@m").uk-form-label Username or email address + input(id="username", name="username", type="text", placeholder="Enter username or email address").uk-input + + .uk-margin + label(for="captcha").uk-form-label Prove you're human + div(uk-grid).uk-grid-small + div(class="uk-width-1-1 uk-width-auto@m") + div(style="background-color: #e8e8e8;").uk-text-center!= captcha.data + div(class="uk-width-1-1 uk-width-expand@m") + input(id="captcha", name="captcha", type="text", placeholder="Enter the text shown").uk-input + .uk-text-small.uk-text-muted The text may include upper-case and lower-case letters and numbers. + + section.uk-section.uk-section-secondary.uk-section-xsmall + .uk-container + .uk-margin + .uk-flex.uk-flex-center + button(type="submit").uk-button.dtp-button-primary Request Password Reset \ No newline at end of file diff --git a/app/views/auth/password-reset-complete.pug b/app/views/auth/password-reset-complete.pug new file mode 100644 index 0000000..a960414 --- /dev/null +++ b/app/views/auth/password-reset-complete.pug @@ -0,0 +1,41 @@ +include ../user/components/profile-picture +section#view-content.uk-section.uk-section-default + .uk-container + .uk-card.uk-card-secondary.uk-card-small + .uk-card-header + h1.uk-card-title + div(uk-grid).uk-grid-medium.uk-flex-middle + .uk-width-auto.uk-text-success + i.fas.fa-key + .uk-width-expand Password Reset + if process.env.NODE_ENV === 'local' + .uk-width-auto + .uk-text-small id: #{account._id} + + .uk-card-body + .uk-margin + div(uk-grid) + div(class="uk-width-1-1 uk-width-auto@m") + +renderProfilePicture(account, { iconClass: 'sb-large' }) + + div(class="uk-width-1-1 uk-width-expand@m") + .uk-margin + if account.displayName + .uk-text-large.uk-text-bold.uk-text-truncate= account.displayName + + div(uk-grid).uk-grid-small + .uk-width-auto + .uk-form-label account + div= account.username + + .uk-width-auto + .uk-form-label service + div= site.domain.split(':')[0] + + .uk-margin + p Your password reset is complete, and you can log in now with your new password. + + .uk-card-footer + .uk-flex.uk-flex-right + .uk-width-auto + a(href=`/welcome/login?username=${account.username}`).uk-button.dtp-button-primary.uk-border-rounded Login Now \ No newline at end of file diff --git a/app/views/auth/password-reset-sent.pug b/app/views/auth/password-reset-sent.pug new file mode 100644 index 0000000..3e594ed --- /dev/null +++ b/app/views/auth/password-reset-sent.pug @@ -0,0 +1,9 @@ +extends ../layout/main +block view-content + + section.uk-section.uk-section-default + .uk-container + + h1 Password Reset Email Sent + p A password reset request email has been sent to the email address on file for @#{account.username}. Please follow the instructions in the email to complete the password reset process. + p You can close this tab. \ No newline at end of file diff --git a/app/views/auth/password-reset.pug b/app/views/auth/password-reset.pug new file mode 100644 index 0000000..b732795 --- /dev/null +++ b/app/views/auth/password-reset.pug @@ -0,0 +1,79 @@ +extends ../layout/main +block view-content + + include ../user/components/profile-picture + + section#view-content.uk-section.uk-section-default + .uk-container + + form(method="POST", action="/auth/password-reset", autocomplete="off", onsubmit="return dtp.app.submitForm(event, 'reset password');").uk-form + + input(type="hidden", name= csrfPasswordReset.name, value= csrfPasswordReset.token) + input(type="hidden", name= "authToken", value= authToken.token) + input(type="hidden", name= "accountId", value= account._id) + + .uk-card.uk-card-secondary.uk-card-small + .uk-card-header + h1.uk-card-title + div(uk-grid).uk-grid-medium.uk-flex-middle + .uk-width-auto.uk-text-success + i.fas.fa-key + .uk-width-expand Password Reset + if process.env.NODE_ENV === 'local' + .uk-width-auto + .uk-text-small id: #{account._id} + + .uk-card-body + .uk-margin + div(uk-grid) + div(class="uk-width-1-1 uk-width-auto@m") + +renderProfilePicture(account, { iconClass: 'sb-large' }) + + div(class="uk-width-1-1 uk-width-expand@m") + .uk-margin + if account.displayName + .uk-text-large.uk-text-bold.uk-text-truncate= account.displayName + + div(uk-grid).uk-grid-small + .uk-width-auto + .uk-form-label account + div= account.username + + .uk-width-auto + .uk-form-label service + div= site.domain.split(':')[0] + + .uk-margin + label(for="password").uk-form-label New password: + input( + id="password", + name="password", + type="password", + minlength="8", + placeholder="Enter new password", + required, + autocomplete="off", + ).uk-input + + .uk-margin + label(for="password-verify").uk-form-label Verify password: + input( + id="password-verify", + name="passwordVerify", + type="password", + minlength="8", + placeholder="Verify new password", + required, + autocomplete="off", + ).uk-input + + .uk-card-footer + .uk-flex.uk-flex-between + .uk-width-auto + a(href="/").uk-button.dtp-button-default.uk-border-rounded + span + i.fas.fa-chevron-left + span.uk-margin-small-left Cancel + + .uk-width-auto + button(type="submit").uk-button.dtp-button-primary.uk-border-rounded Set Password \ No newline at end of file diff --git a/app/views/components/file-upload-image.pug b/app/views/components/file-upload-image.pug new file mode 100644 index 0000000..3744371 --- /dev/null +++ b/app/views/components/file-upload-image.pug @@ -0,0 +1,70 @@ +mixin renderFileUploadImage (actionUrl, containerId, imageId, imageClass, defaultImage, currentImage, cropperOptions) + div(id= containerId).dtp-file-upload + form( + method="POST", + action= actionUrl, + enctype="multipart/form-data", + data-image-id= imageId, + onsubmit= "return dtp.app.submitImageForm(event);", + ).uk-form + div(uk-grid).uk-flex-middle.uk-flex-center + div(class="uk-width-1-1 uk-width-auto@m") + .upload-image-container.size-512 + if !!currentImage + img(id= imageId, src= `/image/${currentImage._id}`, class= imageClass).sb-large + else + img(id= imageId, src= defaultImage, class= imageClass).sb-large + + div(class="uk-width-1-1 uk-width-auto@m") + .uk-text-small.uk-margin(hidden= !!currentImage) + if !currentImage + #file-select + .uk-margin(class="uk-text-center uk-text-left@m") + span.uk-text-middle Select an image + div(uk-form-custom).uk-margin-small-left + input( + type="file", + formenctype="multipart/form-data", + accept=".jpg,.png,image/jpeg,image/png", + data-file-select-container= containerId, + data-file-select="test-image-upload", + data-file-size-element= "file-size", + data-file-max-size= 15 * 1024000, + data-image-id= imageId, + data-cropper-options= cropperOptions, + onchange="return dtp.app.selectImageFile(event);", + ) + button(type="button", tabindex="-1").uk-button.dtp-button-default Select + + #file-info(class="uk-text-center uk-text-left@m", hidden) + #file-name.uk-text-bold + if currentImage + div resolution: #[span#image-resolution-w= numeral(currentImage.metadata.width).format('0,0')]x#[span#image-resolution-h= numeral(currentImage.metadata.height).format('0,0')] + div size: #[span#file-size= numeral(currentImage.metadata.size).format('0,0.00b')] + div last modified: #[span#file-modified= dayjs(currentImage.created).format('MMM DD, YYYY')] + else + div resolution: #[span#image-resolution-w 512]x#[span#image-resolution-h 512] + div size: #[span#file-size N/A] + div last modified: #[span#file-modified N/A] + + div(class="uk-flex-center", uk-grid).uk-grid-small + #remove-btn(hidden= !currentImage).uk-width-auto + button( + type= "button", + data-image-type= imageId, + onclick= "return dtp.app.removeImageFile(event);", + ).uk-button.uk-button-danger Remove + + #file-save-btn(hidden).uk-width-auto + button( + type="submit", + ).uk-button.uk-button-primary Save + +block viewjs + script. + window.addEventListener('dtp-load', ( ) => { + window.dtp = window.dtp || { }; + + window.dtp.episode = !{JSON.stringify(episode ? { _id: episode._id, title: episode.title } : { })}; + window.dtp.clip = !{JSON.stringify(clip ? { _id: clip._id, title: clip.title } : { })}; + }); \ No newline at end of file diff --git a/app/views/components/library.pug b/app/views/components/library.pug new file mode 100644 index 0000000..f4d0708 --- /dev/null +++ b/app/views/components/library.pug @@ -0,0 +1,8 @@ +//- Common routines for all views +- + function getUserPictureUrl (userProfile, which) { + if (!userProfile || !userProfile.picture || !userProfile.picture[which]) { + return `https://${site.domain}/img/default-member.png`; + } + return `https://${site.domain}/image/${userProfile.picture[which]._id}`; + } \ No newline at end of file diff --git a/app/views/components/navbar.pug b/app/views/components/navbar.pug new file mode 100644 index 0000000..ddb066d --- /dev/null +++ b/app/views/components/navbar.pug @@ -0,0 +1,53 @@ +nav(style="background: #000000;").uk-navbar-container.uk-light + .uk-container.uk-container-expand + div(uk-navbar) + .uk-navbar-left + a(href="/", aria-label="Back to Home").uk-navbar-item.uk-logo.uk-padding-remove-left + img(src="/img/nav-icon.png").navbar-logo + + ul.uk-navbar-nav + li.uk-active + a(href="/") + span + i.fas.fa-home + span HOME + .uk-navbar-right + if !user + ul.uk-navbar-nav + li + a(href="/welcome/signup") SIGN UP + li + a(href="/welcome/login") LOGIN + else + ul.uk-navbar-nav + li + div.no-select + if user.picture && user.picture.small + img( + src= `/image/${user.picture.small._id}` || '/img/default-member.png', + title="Member Menu", + ).profile-navbar + else + img( + src= '/img/default-member.png', + title="Member Menu", + ).profile-navbar + div(uk-dropdown={ mode: 'click' }).uk-navbar-dropdown + ul.uk-nav.uk-navbar-dropdown-nav(style="z-index: 1024;") + li.uk-nav-heading.uk-text-center.uk-text-truncate= user.displayName || user.username + + li.uk-nav-divider + + li + a(href=`/user/${user._id}/settings`) + span.nav-item-icon + i.fas.fa-cog + span Settings + + if user.flags && (user.flags.isAdmin || user.flags.isModerator) + li.uk-nav-divider + li + a(href='/admin') + span.nav-item-icon + i.fas.fa-user-lock + span Admin diff --git a/app/views/components/pwa-support.pug b/app/views/components/pwa-support.pug index 970a710..d01f33c 100644 --- a/app/views/components/pwa-support.pug +++ b/app/views/components/pwa-support.pug @@ -1,20 +1,22 @@ -link(rel="apple-touch-icon" sizes="57x57" href=`/img/icon/${site.domainKey}/icon-57x57.png?v=${pkg.version}`) -link(rel="apple-touch-icon" sizes="60x60" href=`/img/icon/${site.domainKey}/icon-60x60.png?v=${pkg.version}`) -link(rel="apple-touch-icon" sizes="72x72" href=`/img/icon/${site.domainKey}/icon-72x72.png?v=${pkg.version}`) -link(rel="apple-touch-icon" sizes="76x76" href=`/img/icon/${site.domainKey}/icon-76x76.png?v=${pkg.version}`) -link(rel="apple-touch-icon" sizes="114x114" href=`/img/icon/${site.domainKey}/icon-114x114.png?v=${pkg.version}`) -link(rel="apple-touch-icon" sizes="120x120" href=`/img/icon/${site.domainKey}/icon-120x120.png?v=${pkg.version}`) -link(rel="apple-touch-icon" sizes="144x144" href=`/img/icon/${site.domainKey}/icon-144x144.png?v=${pkg.version}`) -link(rel="apple-touch-icon" sizes="152x152" href=`/img/icon/${site.domainKey}/icon-152x152.png?v=${pkg.version}`) -link(rel="apple-touch-icon" sizes="180x180" href=`/img/icon/${site.domainKey}/icon-180x180.png?v=${pkg.version}`) -link(rel="icon" type="image/png" sizes="32x32" href=`/img/icon/${site.domainKey}/icon-32x32.png?v=${pkg.version}`) -link(rel="icon" type="image/png" sizes="96x96" href=`/img/icon/${site.domainKey}/icon-96x96.png?v=${pkg.version}`) -link(rel="icon" type="image/png" sizes="16x16" href=`/img/icon/${site.domainKey}/icon-16x16.png?v=${pkg.version}`) -link(rel="icon" type="image/png" sizes="512x512" href=`/img/icon/${site.domainKey}/icon-512x512.png?v=${pkg.version}`) -link(rel="icon" type="image/png" sizes="384x384" href=`/img/icon/${site.domainKey}/icon-384x384.png?v=${pkg.version}`) -link(rel="icon" type="image/png" sizes="256x256" href=`/img/icon/${site.domainKey}/icon-512x512.png?v=${pkg.version}`) -link(rel="icon" type="image/png" sizes="192x192" href=`/img/icon/${site.domainKey}/icon-192x192.png?v=${pkg.version}`) +link(rel="apple-touch-icon" sizes="57x57" href=`/img/icon/icon-57x57.png?v=${pkg.version}`) +link(rel="apple-touch-icon" sizes="60x60" href=`/img/icon/icon-60x60.png?v=${pkg.version}`) +link(rel="apple-touch-icon" sizes="72x72" href=`/img/icon/icon-72x72.png?v=${pkg.version}`) +link(rel="apple-touch-icon" sizes="76x76" href=`/img/icon/icon-76x76.png?v=${pkg.version}`) +link(rel="apple-touch-icon" sizes="114x114" href=`/img/icon/icon-114x114.png?v=${pkg.version}`) +link(rel="apple-touch-icon" sizes="120x120" href=`/img/icon/icon-120x120.png?v=${pkg.version}`) +link(rel="apple-touch-icon" sizes="144x144" href=`/img/icon/icon-144x144.png?v=${pkg.version}`) +link(rel="apple-touch-icon" sizes="152x152" href=`/img/icon/icon-152x152.png?v=${pkg.version}`) +link(rel="apple-touch-icon" sizes="180x180" href=`/img/icon/icon-180x180.png?v=${pkg.version}`) + +link(rel="icon" type="image/png" sizes="32x32" href=`/img/icon/icon-32x32.png?v=${pkg.version}`) +link(rel="icon" type="image/png" sizes="96x96" href=`/img/icon/icon-96x96.png?v=${pkg.version}`) +link(rel="icon" type="image/png" sizes="16x16" href=`/img/icon/icon-16x16.png?v=${pkg.version}`) +link(rel="icon" type="image/png" sizes="512x512" href=`/img/icon/icon-512x512.png?v=${pkg.version}`) +link(rel="icon" type="image/png" sizes="384x384" href=`/img/icon/icon-384x384.png?v=${pkg.version}`) +link(rel="icon" type="image/png" sizes="256x256" href=`/img/icon/icon-512x512.png?v=${pkg.version}`) +link(rel="icon" type="image/png" sizes="192x192" href=`/img/icon/icon-192x192.png?v=${pkg.version}`) link(rel="manifest" href=`/manifest.json?v=${pkg.version}`) + meta(name="msapplication-TileColor" content="#f1c52f") meta(name="msapplication-TileImage" content=`/img/icon/ms-icon-144x144.png?v=${pkg.version}`) meta(name="theme-color" content="#f1c52f") \ No newline at end of file diff --git a/app/views/error.pug b/app/views/error.pug new file mode 100644 index 0000000..d8f0f29 --- /dev/null +++ b/app/views/error.pug @@ -0,0 +1,17 @@ +extends layout/main +block view-content + + section.uk-section.uk-section-default.uk-section-xsmall + .uk-container + .uk-text-large= message + //- if error.stack + //- pre= error.stack + if error && error.statusCode + div.uk-text-small.uk-text-muted status: #{error.statusCode} + + section.uk-section.uk-section-primary.uk-section-xsmall + .uk-container + a(href="/").uk-button.uk-button-default.uk-border-rounded + span.uk-margin-small-right + i.fas.fa-home + span Home \ No newline at end of file diff --git a/app/views/home.pug b/app/views/home.pug index 67ad444..21f8415 100644 --- a/app/views/home.pug +++ b/app/views/home.pug @@ -1,9 +1,7 @@ -include layout/main +extends layout/main block view-content section.uk-section.uk-section-default.uk-section-small .uk-container h1= site.name - div= site.description - - p The app is doing something else. \ No newline at end of file + div= site.description \ No newline at end of file diff --git a/app/views/layout/main.pug b/app/views/layout/main.pug index 1443485..8486f1b 100644 --- a/app/views/layout/main.pug +++ b/app/views/layout/main.pug @@ -1,3 +1,4 @@ +include ../components/library doctype html html(lang='en', data-obs-widget= obsWidget) head @@ -55,30 +56,44 @@ html(lang='en', data-obs-widget= obsWidget) } } - body.dtp( - class= 'dtp-dark', - data-dtp-env= process.env.NODE_ENV, - data-dtp-domain= site.domainKey, - data-current-view= currentView, - data-is-popout= isPopOutView, - data-obs-widget= obsWidget, - data-embed-widget= embedWidget, - ) - - block view-navbar - nav(style="background: #000000;", uk-navbar).uk-navbar-container.uk-light - .uk-navbar-left - ul.uk-navbar-nav - li.uk-active - a(href="/") - span - i.fas.fa-home - span HOME - .uk-navbar-right - ul.uk-navbar-nav - li - a(href="/welcome/signup") SIGN UP - li - a(href="/welcome/login") LOGIN - - block view-content \ No newline at end of file + body.dtp(class= 'dtp-dark', data-dtp-env= process.env.NODE_ENV, data-dtp-domain= site.domainKey, data-current-view= currentView, data-is-popout= isPopOutView, data-obs-widget= obsWidget, data-embed-widget= embedWidget) + block view-navbar + include ../components/navbar + + block view-content + + script(src='/dayjs/dayjs.min.js') + script(src='/numeral/numeral.min.js') + script(src=`/socket.io/socket.io.js?v=${pkg.version}`) + + block clientjs + if user + - + var safeUser = { + _id: user._id, + created: user.created, + username: user.username, + username_lc: user.username_lc, + displayName: user.displayName, + balances: user.balances, + flags: { + ...user.flags, + }, + }; + + if (safeUser.flags._id) { + delete safeUser.flags._id; + } + + script. + window.dtp = window.dtp || { }; + + if user + script. + dtp.user = !{JSON.stringify(safeUser, null, 2)}; + + block vendorjs + + script(src="/dist/app.bundle.js", type="module"). + + block viewjs \ No newline at end of file diff --git a/app/views/otp/authenticate.pug b/app/views/otp/authenticate.pug new file mode 100644 index 0000000..229e675 --- /dev/null +++ b/app/views/otp/authenticate.pug @@ -0,0 +1,27 @@ +extends ../layout/main +block view-content + + section.uk-section.uk-section-primary.uk-section-xsmall + .uk-container.uk-text-center + h1 #{site.name} #{otpServiceName} Passcode Required + .uk-text-large A one-time passcode is required to access #{site.name} #{otpServiceName} on this server + + section.uk-section.uk-section-default.uk-section-xsmall + .uk-container + form(method="POST", action="/auth/otp/auth") + input(type="hidden", name="otp-service", value= otpServiceName) + input(type="hidden", name="otp-redirect", value= otpRedirectURL) + .uk-width-1-2.uk-margin-auto + .uk-margin.uk-text-center + label(for="otp-passcode").uk-form-label Enter passcode: + input( + id="otp-passcode", + name="otp-passcode", + type="text", + placeholder="######", + autocomplete="off", + ).uk-input.uk-form-large.uk-text-center + .uk-text-muted.uk-text-small Please enter a passcode from your authenticator app for #{site.name} #{otpServiceName}:#{user.username} + + .uk-margin.uk-text-center + button(type="submit").uk-button.uk-button-primary.uk-border-pill Login \ No newline at end of file diff --git a/app/views/otp/new-account.pug b/app/views/otp/new-account.pug new file mode 100644 index 0000000..53b8cc5 --- /dev/null +++ b/app/views/otp/new-account.pug @@ -0,0 +1,11 @@ +extends ../layout/main +block view-content + + section.uk-section.uk-section-primary.uk-section-xsmall + .uk-container + h1 2FA Setup Successful + + section.uk-section.uk-section-default.uk-section-xsmall + .uk-container + p Your account is now enabled with access to #{site.name} #{otpServiceName}. + a(href= otpRedirectURL, title="Continue").uk-button.uk-button-primary.uk-border-pill Continue \ No newline at end of file diff --git a/app/views/otp/welcome.pug b/app/views/otp/welcome.pug new file mode 100644 index 0000000..5ab0b9c --- /dev/null +++ b/app/views/otp/welcome.pug @@ -0,0 +1,58 @@ +extends ../layout/main +block view-content + + section.uk-section.uk-section-default.uk-section-xsmall + .uk-container + h1 #{site.name} #{otpServiceName} 2FA Setup + + form(method="POST", action="/auth/otp/enable") + input(type="hidden", name="otp-secret", value= otpTempSecret) + input(type="hidden", name="otp-service", value= otpServiceName) + input(type="hidden", name="otp-redirect", value= otpRedirectURL) + div(uk-grid) + + div(class="uk-width-1-1 uk-width-auto@s uk-text-center") + .uk-margin + canvas(id="otp-qrcode", width="480", height="480") + .uk-margin + a(href=otpKeyURI, title="Add to Authenticator App").uk-button.uk-button-default.uk-border-pill Add to authenticator + + div(class="uk-width-1-1 uk-width-expand@s uk-text-center uk-text-left@m") + .uk-margin + p You can scan this QR code using an authenticator app such as #[a(href="https://freeotp.github.io/") FreeOTP], or select "Add to authenticator" if you are using the device with your authenticator app installed. + + p Your authenticator will begin displaying #{otpOptions.digits}-digit authentication codes. Enter one below to enable Two-Factor Authentication (2FA) for #{site.name} #{otpServiceName} (as #{user.username}). + + .uk-text-center + .uk-margin + label(for="otp-passcode").uk-form-label Enter passcode: + br + input( + id="otp-passcode", + name="otp-passcode", + type="text", + placeholder="######", + autocomplete="off", + ).uk-input.uk-form-large.uk-text-center.uk-width-1-2 + + .uk-margin + button(type="submit").uk-button.uk-button-primary.uk-border-pill Enable 2FA + + div(class="uk-width-1-1 uk-text-center uk-text-left@m", hidden) + .uk-margin + p Or, if your authenticator doesn't support scanning QR codes, you can enter the OTP configuration information shown here to begin displaying codes: + pre( + style="display: inline-block; border: solid 1px #888888; padding: 8px;" + ).uk-border.uk-text-left.uk-margin-remove. + Secret: #{otpTempSecret} + Algorithm: #{otpOptions.algorithm.toUpperCase()} + Step/Period: #{otpOptions.step} + Digits: #{otpOptions.digits} + +block viewjs + script. + window.dtp.keyURI = !{JSON.stringify(otpKeyURI)}; + window.addEventListener('dtp-load', async ( ) => { + const canvas = document.getElementById('otp-qrcode'); + dtp.app.generateOtpQR(canvas, window.dtp.keyURI); + }); \ No newline at end of file diff --git a/app/views/user/block-list.pug b/app/views/user/block-list.pug new file mode 100644 index 0000000..cdf4e82 --- /dev/null +++ b/app/views/user/block-list.pug @@ -0,0 +1,39 @@ +extends ../layouts/main +block content + + mixin renderProfilePicture (user, options) + - + var iconImageUrl = (user.picture && user.picture.small) ? `/image/${user.picture.small._id}` : '/img/default-member.png'; + options = Object.assign({ + title: user.displayName || user.username, + iconClass: 'sb-xxsmall', + }, options); + + a(href=`/member/${user.username}`, uk-tooltip={ title: `Visit ${user.displayName || user.username}` }).uk-link-reset + img( + src= iconImageUrl, + class= `streamray-profile-picture ${options.iconClass}`, + style= "margin: 0;", + ) + + section.uk-section.uk-section-default + .uk-container + h1 Block List + + if Array.isArray(blockedUsers) && (blockedUsers.length > 0) + ul.uk-list.uk-list-divider + each member in blockedUsers + li(data-user-id= member._id, uk-grid).uk-grid-small.uk-flex-middle + .uk-width-auto + +renderProfilePicture(member) + .uk-width-auto + a(href=`/member/${member.username}`).uk-link-reset @#{member.username} + .uk-width-expand.uk-text-truncate + a(href=`/member/${member.username}`).uk-link-reset= member.displayName + .uk-width-auto + button( + data-user-id= member._id, + onclick="return dtp.app.unblockUser(event);", + ).uk-button.dtp-button-danger.uk-button-small.uk-border-rounded Unblock + else + div You have no blocked users. \ No newline at end of file diff --git a/app/views/user/components/list-item.pug b/app/views/user/components/list-item.pug new file mode 100644 index 0000000..5035c91 --- /dev/null +++ b/app/views/user/components/list-item.pug @@ -0,0 +1,9 @@ +include user-icon +mixin renderUserListItem (user, options) + - options = Object.assign({ iconClass: 'sb-xxsmall' }, options); + div(uk-grid).uk-grid-small + .uk-width-auto + +renderUserIcon(user, options) + .uk-width-expand + div(uk-tooltip= user.displayName || user.username).streamray-display-name.uk-text-truncate= user.displayName || user.username + div(uk-tooltip= user.username_lc).uk-text-small.streamray-username.uk-text-truncate @#{user.username_lc} \ No newline at end of file diff --git a/app/views/user/components/profile-picture.pug b/app/views/user/components/profile-picture.pug new file mode 100644 index 0000000..2b20395 --- /dev/null +++ b/app/views/user/components/profile-picture.pug @@ -0,0 +1,12 @@ +mixin renderProfilePicture (user, options) + - + var iconImageUrl = (user.picture && user.picture.large) ? `/image/${user.picture.large._id}` : '/img/default-member.png'; + options = Object.assign({ + title: user.displayName || user.username, + iconClass: 'sb-xxsmall', + }, options); + + img( + src= iconImageUrl, + class= `streamray-profile-picture ${options.iconClass}`, + ) \ No newline at end of file diff --git a/app/views/user/components/user-icon.pug b/app/views/user/components/user-icon.pug new file mode 100644 index 0000000..420f0c6 --- /dev/null +++ b/app/views/user/components/user-icon.pug @@ -0,0 +1,13 @@ +mixin renderUserIcon (user, options) + - + var iconImageUrl = (user.picture && user.picture.small) ? `/image/${user.picture.small._id || user.picture.small}` : '/img/default-member.png'; + options = Object.assign({ + title: user.displayName || user.username, + iconClass: 'sb-xxsmall', + }, options); + + img( + src= iconImageUrl, + class= `streamray-profile-picture ${options.iconClass}`, + title= options.title, + ) \ No newline at end of file diff --git a/app/views/user/otp-disabled.pug b/app/views/user/otp-disabled.pug new file mode 100644 index 0000000..41d7989 --- /dev/null +++ b/app/views/user/otp-disabled.pug @@ -0,0 +1,8 @@ +extends ../layouts/main +block content + + section.uk-section.uk-section-default + .uk-container.uk-text-center + h1 Two-Factor Authentication + p You have successfully disabled Two-Factor Authentication. + a(href=`/user/${user._id}/settings?tab=account`).uk-button.dtp-button-default Return to Settings \ No newline at end of file diff --git a/app/views/user/otp-setup-complete.pug b/app/views/user/otp-setup-complete.pug new file mode 100644 index 0000000..294483c --- /dev/null +++ b/app/views/user/otp-setup-complete.pug @@ -0,0 +1,8 @@ +extends ../layouts/main +block content + + section.uk-section.uk-section-default + .uk-container.uk-text-center + h1 Two-Factor Authentication + p You have successfully enabled Two-Factor Authentication on your account. + a(href=`/user/${user._id}/settings?tab=account`).uk-button.dtp-button-default Return to Settings \ No newline at end of file diff --git a/app/views/user/profile.pug b/app/views/user/profile.pug new file mode 100644 index 0000000..c890fb9 --- /dev/null +++ b/app/views/user/profile.pug @@ -0,0 +1,95 @@ +extends ../layouts/main +block content + + include components/profile-picture + include ../handcash/components/public-profile + + section.uk-section.uk-section-default + .uk-container + .uk-margin-medium + div(uk-grid).uk-grid-small.uk-flex-middle.no-select + .uk-width-auto + +renderProfilePicture(user, { iconClass: 'sb-small' }) + + .uk-width-expand + h1.uk-margin-remove= user.displayName || user.username || user.email + if user.bio + .markdown-block.uk-text-truncate!= marked.parse(user.bio) + + .uk-margin-medium + h2.sr-only Account Services + div(class="uk-flex-around uk-flex-between@m", uk-grid) + .uk-width-auto + a(href=`/user/${userProfile._id}/settings`).uk-button.dtp-button-primary.uk-border-rounded + span + i.fas.fa-cog + span.uk-margin-small-left Settings + + .uk-width-auto + a(href='/sticker').uk-button.dtp-button-secondary.uk-border-rounded + span + i.far.fa-image + span.uk-margin-small-left Manage Stickers + + .uk-width-auto + a(href=`/user/${userProfile._id}/redeem/channel-pass`).uk-button.dtp-button-secondary.uk-border-rounded + span + i.fas.fa-bullhorn + span.uk-margin-small-left Redeem Pass + + .uk-width-auto + a(href=`/user/${userProfile._id}/block`).uk-button.dtp-button-secondary.uk-border-rounded + span + i.fas.fa-ban + span.uk-margin-small-left Block List + + - + var haveStripe = user.tokens && user.tokens.stripe; + var haveHandCash = handcash && handcash.profile; + + if haveStripe || haveHandCash + .uk-margin-medium + h2.sr-only Payment Services + div(uk-grid).uk-grid-match + if haveStripe + div(class="uk-width-1-1 uk-width-1-2@m") + .uk-card.uk-card-secondary.uk-card-small.uk-flex.uk-flex-column.uk-flex-stretch + .uk-card-header.uk-flex-none + h3.uk-card-title + div(uk-grid).uk-grid-small + .uk-width-auto + i.fab.fa-cc-stripe + .uk-width-expand Customer Portal + .uk-card-body.uk-flex-1 + p Access your Stripe Customer Portal to manage your subscription(s), payment methods, and customer profile. + p You may be required to log in or otherwise prove your identity when accessing the Stripe Customer Portal. + p Please email #[a(href="mailto:support@digitaltelepresence.com") support@digitaltelepresence.com] if you are having a problem here at #{site.name} that isn't related to Stripe or payments. + .uk-card-footer.uk-flex-none + a( + href=`/user/${userProfile._id}/stripe/customer-portal`, + uk-tooltip={ title: 'Manage your Stripe profile and details' }, + ).uk-button.dtp-button-default.uk-border-rounded + span Go To Customer Portal + + if haveHandCash + div(class="uk-width-1-1 uk-width-1-2@m") + .uk-card.uk-card-secondary.uk-card-small.uk-flex.uk-flex-column.uk-flex-stretch + .uk-card-header.uk-flex-none + h3.uk-card-title + div(uk-grid).uk-grid-small + .uk-width-auto + img(src="/img/payment/handcash-monogram.green.svg", style="height: 1em; width: auto;") + .uk-width-expand HandCash Web Wallet + .uk-card-body.uk-flex-1 + p You have connected your HandCash web wallet with #{site.name} for the easiest and fastest payments possible. + +renderHandcashPublicProfile(handcash.profile.publicProfile) + .uk-card-footer.uk-flex-none + .uk-margin + a( + href="https://market.handcash.io/my-account/balance", + target="_blank", + uk-tooltip={ title: 'Manage your HandCash web wallet' }, + ).uk-button.dtp-button-default.uk-border-rounded + span Go To Wallet + + .uk-margin-medium.uk-text-small.uk-text-muted You have used or connected with the payment services shown here. These convenience links help you manage those accounts, your subscriptions, payment methods, profile(s) and other details. \ No newline at end of file diff --git a/app/views/user/redeem/channel-pass-applied.pug b/app/views/user/redeem/channel-pass-applied.pug new file mode 100644 index 0000000..c7fe900 --- /dev/null +++ b/app/views/user/redeem/channel-pass-applied.pug @@ -0,0 +1,20 @@ +extends ../../layouts/main +block content + + section.uk-section.uk-section-default.uk-section-small + .uk-container + h1 Channel Pass Applied + + .uk-margin + div(uk-grid) + .uk-width-auto + label.uk-form-label Channel + .uk-text-bold= pass.channel.name + .uk-width-auto + label.uk-form-label Expires + .uk-text-bold= dayjs(pass.expires).format('MMM DD, YYYY') + + .uk-margin + div This channel pass lets you enjoy #{pass.channel.name} for free. At the end of the trial, or at any time between now and then, you can upgrade to #[a(href="/membership/plan/premium") Premium]. + + a(href=`/channel/${pass.channel.slug}`).uk-button.dtp-button-primary.uk-border-rounded Visit Channel Now! \ No newline at end of file diff --git a/app/views/user/redeem/channel-pass.pug b/app/views/user/redeem/channel-pass.pug new file mode 100644 index 0000000..4eaa23c --- /dev/null +++ b/app/views/user/redeem/channel-pass.pug @@ -0,0 +1,26 @@ +extends ../../layouts/main +block content + + include ../../channel/components/list-item + + section.uk-section.uk-section-default.uk-section-small + .uk-container.uk-width-large + + form(method="POST", action=`/user/${userProfile._id}/redeem/channel-pass`).uk-form + .uk-card.uk-card-default.uk-card-small + .uk-card-header + h1.uk-card-title Redeem Channel Pass + + .uk-card-body + if pass && pass.channel + .streamray-recommendation-list.uk-margin + +renderChannelListItem(pass.channel) + .uk-text-lead= pass.name + div= pass.description + + .uk-margin + label(for="token").uk-form-label Enter Channel Pass Code + input(id="token", name="token", placeholder="Enter Channel Pass Code", value= query ? query.token : undefined).uk-input + + .uk-card-footer + button(type="submit").uk-button.dtp-button-primary Redeem Code \ No newline at end of file diff --git a/app/views/user/settings.pug b/app/views/user/settings.pug new file mode 100644 index 0000000..2398360 --- /dev/null +++ b/app/views/user/settings.pug @@ -0,0 +1,154 @@ +extends ../layout/main +block vendorcss + link(rel='stylesheet', href=`/cropperjs/cropper.min.css?v=${pkg.version}`) +block vendorjs + script(src=`/cropperjs/cropper.min.js?v=${pkg.version}`) +block view-content + + include ../components/file-upload-image + + section.uk-section.uk-section-default + .uk-container + h1 Settings + + - + var tabNames = { + "account": 0, + }; + + ul(uk-tab={ active: tabNames[startTab], animation: false }) + li + a Account + + ul.uk-switcher + //- User account and billing + li + div(uk-grid) + div(class="uk-width-1-1 uk-width-1-3@m") + - + var currentImage = null; + if (user.picture && user.picture.large) { + currentImage = user.picture.large; + } + + .uk-margin + +renderFileUploadImage( + `/user/${user._id}/profile-photo`, + 'profile-picture-upload', + 'profile-picture-file', + 'streamray-profile-picture', + `/img/default-member.png`, + currentImage, + { aspectRatio: 1 }, + ) + + .uk-margin.uk-text-center + if hasOtpAccount + a(href=`/user/${user._id}/otp-disable`).uk-button.uk-button-danger.uk-border-rounded Disable 2FA + else + a(href=`/user/${user._id}/otp-setup`).uk-button.uk-button-secondary.uk-border-rounded Enable 2FA + + div(class="uk-width-1-1 uk-width-expand@m") + form( + method="POST", + action=`/user/${user._id}/settings`, + autocomplete= "off", + onsubmit="return dtp.app.submitForm(event, 'user account update');", + ).uk-form + input(type="hidden", name= csrfTokenAccountSettings.name, value= csrfTokenAccountSettings.token) + + ul(uk-tab, uk-switcher={ connect: '#account-settings-tabs'}) + li + a(href) Profile + li + a(href) Password + li + a(href) Email + if user.flags && user.flags.isModerator + li + a(href) Moderator + + ul#account-settings-tabs.uk-switcher + li + fieldset + legend Profile + .uk-margin + label(for="username").uk-form-label Username + input(id="username", name="username", type="text", placeholder="Enter username", value= userProfile.username).uk-input + .uk-margin + label(for="display-name").uk-form-label Display Name + input(id="display-name", name="displayName", type="text", placeholder="Enter display name", value= userProfile.displayName).uk-input + .uk-margin + label(for="bio").uk-form-label Bio + textarea(id="bio", name="bio", rows="4", placeholder="Enter profile bio").uk-textarea.uk-resize-vertical= userProfile.bio + + li + fieldset + legend Password + .uk-margin + div(uk-grid).uk-grid-small + .uk-width-1-2 + .uk-margin + label(for="password").uk-form-label New Password + input(id="password", name="password", type="password", placeholder="Enter new password", autocomplete= "new-password").uk-input + .uk-width-1-2 + .uk-margin + label(for="passwordv").uk-form-label Verify New Password + input(id="passwordv", name="passwordv", type="password", placeholder="Enter new password again", autocomplete= "new-password").uk-input + + li + fieldset + legend Email Preferences + + .uk-margin + label(for="email").uk-form-label + span Email Address + if user.flags.isEmailVerified + span (verified) + div(uk-grid).uk-grid-small + div(class="uk-width-1-1 uk-width-expand@s") + .uk-margin-small + input(id="email", name="email", type="email", placeholder="Enter email address", value= userProfile.email).uk-input + if user.flags.isEmailVerified + .uk-text-small.uk-text-muted Changing your email address will un-verify you and send a new verification email. Check your spam folder! + else + .uk-text-small.uk-text-muted Changing your email address will send a new verification email. Check your spam folder! + div(class="uk-width-1-1 uk-width-auto@s") + button(type="button", onclick="return dtp.app.resendWelcomeEmail(event);").uk-button.uk-button-secondary.uk-border-rounded Resend Welcome Email + + .uk-margin + div(uk-grid).uk-grid-small + .uk-width-auto + .pretty.p-switch.p-slim + input(id="optin-system", name="optIn.system", type="checkbox", checked= userProfile.optIn ? userProfile.optIn.system : false) + .state.p-success + label(for="optin-system") System Messages + .uk-width-auto + .pretty.p-switch.p-slim + input(id="optin-marketing", name="optIn.marketing", type="checkbox", checked= userProfile.optIn ? userProfile.optIn.marketing : false) + .state.p-success + label(for="optin-marketing") Newsletter + .uk-width-auto + .pretty.p-switch.p-slim + input(id="email-verified", type="checkbox", checked= userProfile.flags ? userProfile.flags.isEmailVerified : false, disabled) + .state.p-success + label(for="email-verified") Email Verified + + if user.flags && user.flags.isModerator + li + fieldset + legend Moderator Preferences + .uk-margin + .pretty.p-switch.p-slim + input(id="moderator-cloaked", name="flags.isCloaked", type="checkbox", checked= userProfile.flags ? userProfile.flags.isCloaked : false) + .state.p-success + label(for="moderator-cloaked") Enable Ghost Mode + + .uk-margin + button(type="submit").uk-button.uk-button-primary.uk-border-rounded Update account settings + +block viewjs + script. + window.addEventListener('dtp-load', async ( ) => { + window.dtp.app.initSettingsView(); + }); \ No newline at end of file diff --git a/app/views/welcome/home.pug b/app/views/welcome/home.pug index 2899350..bf8dcc9 100644 --- a/app/views/welcome/home.pug +++ b/app/views/welcome/home.pug @@ -1,20 +1,31 @@ -include ../layout/main +extends ../layout/main block view-content section.uk-section.uk-section-default.uk-section-small .uk-container - h1.uk-margin-remove Welcome to #{site.name}! - p #{site.name} is a real-time communications tool with high quality audio and video, extremely low latency, real-time text messaging, voicemail, and an easy-to-use interface built to remove everything unnecessary and focus on being good at making calls. - - div(uk-grid) - div(class="uk-width-1-1 uk-width-1-2@m") - .uk-margin-small - .uk-text-large New here? - div Start receiving and attending calls for free by creating a User Account. - a(href="/welcome/signup").uk-button.uk-button-primary.uk-button-large.uk-border-rounded Sign Up - div(class="uk-width-1-1 uk-width-1-2@m") - .uk-margin-small - .uk-text-large Returning member? - div Sign into your User Account with your username and password. - a(href="/welcome/login").uk-button.uk-button-secondary.uk-button-large.uk-border-rounded Login \ No newline at end of file + .uk-margin-medium + h1.uk-margin-remove Welcome to #{site.name} + .uk-text-bold= site.description + + .uk-margin-medium + div(uk-grid).uk-grid-divider + div(class="uk-width-1-1 uk-width-1-2@m") + .uk-margin-small + .uk-text-large New here? + div Start receiving and attending calls for free by creating a User Account. + a(href="/welcome/signup").uk-button.uk-button-primary.uk-border-rounded Sign Up + div(class="uk-width-1-1 uk-width-1-2@m") + .uk-margin-small + .uk-text-large Returning member? + div Sign into your User Account with your username and password. + a(href="/welcome/login").uk-button.uk-button-secondary.uk-border-rounded Login + + h2 About #{site.name} + + p #{site.name} is a real-time communications tool with high quality audio and video, extremely low latency, instant messaging, voicemail, and an easy-to-use interface. It removes and avoids everything unnecessary while focusing on being excellent at making calls and helping people stay in touch. + + p There is no app to download from a store. #{site.name} is a Progressive Web App (PWA) that runs in your browser. It can be installed as a desktop or mobile app if you like, and provides an even sleeker interface if you do. It can do a better job delivering notifications when installed as an app. + + .uk-margin + .uk-text-small.uk-text-muted Anonymous use is not supported. A user account in good standing is required to use the app. #{site.name} is not free for hosting group and conference calls. Free members can make and receive calls, but can't create group/conference calls and don't have voicemail services. \ No newline at end of file diff --git a/app/views/welcome/login.pug b/app/views/welcome/login.pug index e69de29..39edb0f 100644 --- a/app/views/welcome/login.pug +++ b/app/views/welcome/login.pug @@ -0,0 +1,25 @@ +extends ../layout/main +block view-content + + section.uk-section.uk-section-default.uk-section-small + .uk-container + h1= site.name + + form(method="POST", action="/auth/login").uk-form + input(type="hidden", name= csrfLogin.name, value= csrfLogin.token) + .uk-card.uk-card-secondary.uk-card-small + .uk-card-header + h1.uk-card-title Account Login + + .uk-card-body + .uk-margin + label(for="username").uk-form-label Username + input(id="username", name="username", type="text", required, placeholder="Enter username or email address").uk-input + .uk-margin + label(for="password").uk-form-label Password + input(id="password", name="password", type="password", required, placeholder="Enter password").uk-input + + .uk-card-footer + div(uk-grid).uk-flex-right + .uk-width-auto + button(type="submit").uk-button.uk-button-primary Login \ No newline at end of file diff --git a/app/views/welcome/signup.pug b/app/views/welcome/signup.pug index bbfcf77..068fcf6 100644 --- a/app/views/welcome/signup.pug +++ b/app/views/welcome/signup.pug @@ -1,15 +1,18 @@ -include ../layout/main +extends ../layout/main block view-content section.uk-section.uk-section-default.uk-section-small .uk-container h1= site.name - .uk-card.uk-card-secondary.uk-card-small - .uk-card-header - h1.uk-card-title Create Account - .uk-card-body - form(method="POST", action="/welcome/signup").uk-form + form(method="POST", action="/welcome/signup").uk-form + .uk-card.uk-card-secondary.uk-card-small + .uk-card-header + h1.uk-card-title Create Account + .uk-card-body + .uk-margin + label(for="email").uk-form-label Email address + input(id="email", name="email", type="email", required, placeholder="Enter email address").uk-input .uk-margin label(for="username").uk-form-label Username input(id="username", name="username", type="text", maxlength="30", required, placeholder="Enter username").uk-input @@ -22,9 +25,9 @@ block view-content .uk-margin label(for="password-verify").uk-form-label Verify password input(id="password-verify", name="passwordVerify", type="password", required, placeholder="Verify password").uk-input - .uk-card-footer - div(uk-grid).uk-flex-right - .uk-width-auto - a(href="/welcome").uk-button.uk-button-default Cancel - .uk-width-auto - button(type="submit").uk-button.uk-button-primary Create Account \ No newline at end of file + .uk-card-footer + div(uk-grid).uk-flex-right + .uk-width-auto + a(href="/welcome").uk-button.uk-button-default Cancel + .uk-width-auto + button(type="submit").uk-button.uk-button-primary Create Account \ No newline at end of file diff --git a/assets/icon/dtp-chat.app-icon.png b/assets/icon/dtp-chat.app-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a174aff33cd0821b30efeaac8957a2863b3e1eb5 GIT binary patch literal 29752 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°3z#e;E&vAVl#Y*w&t zJvjhBp)EC%iWkH{=(gjpO;NH9%3FPfAd{G}@gmW6N%yD%cwwBr%T63Pmy)ru|MA~Z zI0-x;P3FZn-$GOLTpOc!?Kl9!3y^idd+^^h2l#jfA`0H2JdA{ui6Glmd>dIj2dxMM+nP=RN6xSFHWiaP^%S3sT!-3lEDEt9v2a?*kxC2sbjlH(SmPn@&Fh_QBmc(c(8UpM+`_Z9m2!s22t zf1DAyA^)s9Ju+D9dc$S1zFMo(xjT+!`N#W<&3ki1u%zLEP(AH%PNYhecHmfl2^$UL z_;9xy_R+o`dSRyy-^$JDFWjaEp3fXe(;3*y6V_}ws-mMq+Tgtr2RowvW5?~~!F->^ zR8zR6Hs)#Bl{yEZWo2U8ug&r&f&2E41b{H1I~z(SpHNMCs1m{PB`Gc=B8%EXcf2;% zT{^~fqIOm{=zxmN1y;fzKly`Y&KPDHgMX5814``Vid>Xeo)FR`eKFMJio(+#PEpu^ z+nyPLJ}w@eY`&!<6;VlJN+J=A8DN!Nu(2$7>@EZz`FwnOkqkC(+`QtjBwrL}w+FOe zhgVAK^HlH@Xt1O7lesn1Y}O~=`L{-9AcJ>(PxhCpgH8jX@tURK7#mZ>cf%Hd!ksK% zDQuR;?N@jC!5SZxAx668gG}a5csezCqBP2O=LoS`x2&gn+yp%I<%T$r`O*)IR-2=`=R1Fqu=*}g$S;H3w(Qgt zguv=kf3>GTF;RC{)y>VVtLye+Uuw}w5Xfx+j$ym^3=9m6naQ2(&2I)+yG3x7{T=S~ zvV^5%Y+P;EN%)^5sXe`T7xoW8W`4n2ms!u>`qubYrcQ+TY1N%}(4+%@Dwd`gt5Lg_EFB;4UG)V%Ffv&*lRwf~)*S9Vue( z^?+yXGFx<~#62oHec#+Q8j5bEY+?4#lt@&uwnXH{;aI&#;bf`q8hPgWLjrxVl?D-H z20VwKSh~=`v8zjCRvYeRnmAu%tyrCl7H#h7@!=+IN&nU&`k9>kH2xGcEe4uGICoCU z$dub53qy0b)WY7}V6^<%!4IZC@MeB7V*R~9{}8ZdvcAW|rDxsd*jp9|6Hhc zdryBpy(=ML0=nkMo(>YlE}k@aEF~k1mO~jSw>C_U4#R9`fYkMr(9=*;Q{Pe3NLEu+ z7Jg**D~+F!h)6SlYo+dJZ$93C24o&3MY~+j{+g&y{OJ!c*>%`Ia@h@MeOW(_4zqT7 zh(-NX%RUKq?$VF*+FX>gp}JZKJ*Gza0o|Rqnts^qRAFO519x51Qgk9!g&hmD)VP8~ z+dzs}T(klacX6rKwg2_%d0T80STNAMTw8M)-@B!;VIp}ev&vhkK#wn_deGvbDsb6c^A=m4hIYXvUq_(TZjk)g!9m*n9+4uVR8T=}90}odI`*|boP?Fod ze%LLQrazFFlh*0tMnL&&*3!|qtWJ67mkPxUgJX80esvjqde@I7yEo4t{QmC0e0I?s z7)T()HId(4+LE_H$kgfTEW1(XR#cP!X^2Zl1ufMKG%v2dy*&#k`eVs;(&^oy8i)QE zEggVodZkWdRr&r`ir;%^3ftbHMWO-dBI&!oab{$*>tXfn~wFul_1Z82?UHX+FQZP$~jVY#W`0w`J z#;vZH7-P_5^{eevV2h8F1FUgTw<=3|-r*B@RUPr!Y{NS*VFKO>4)V_Ks(#9woD1jH zc`494{pRj;4w)=?cp9Dn%fLf1OG~YtDqrr5vI>%AP487bJvlxvp#!9Kd9;!Znxg-7 z`VC&cob)eU!qs%o##+CEPJVIHUFlj^8Q=(~uVpmgh(uamO4jr^39i?HEB>HDXW0?{ z40;7OWs}-OZT{-R>M$N-KdgxK*A=Vo%&KvilYSdb^_w4v&P$m*yX1wb_a^)*FilV( zj4wEZ^RWp3gSrWlDJWZ?mJfdcqq}zH3I@m<0QRqwW!1PcfrQdgZdz&OKZusjA*~!) z^MAL76A?sFn)#Y6t17eymkIO_x$*%}5CMUu6hbBLner*K^IRCEdC!&O(ZwLa&}(#Y z%7+se94?3=v;!*(zN~P~m%M(ZR1a&MZ66X=S$dE+bS9`3=NjKttb%a^XhRfypOmfY zhwJZ_+&{}K^_WHCilkO!M$vuIes<}tmXPyPNoUGnYn`WBbe5ywm5>-4i{BpMlb=B= z<*rty1Wt&e;yM9PIZsQ`t#1_t3EDAYd(EN>WVoSwTit9ZX14qO#@T_#L|1kT8)&x} zJxHG*OoQ~<5Y{o*H1E6|e?;ym8BriLu;V@;x7)M$G_%5axEO5%cGVd|8IszDfjKdc z4M&nADha5C@5uS@iJ?Li=u$hgJg^;GUH}=*kh#wTsAHy~B0E=frPs}FS5{w$H?0ao z1#jG_L=OX&q_AN%Sd4VnVi})&_;3~Q+(hkSzDA_Fj(Rdr-twOHzz)d9w?`{t!K6wr zHIw@@sI)xQbQ#F)g9lP@I{~T*G9-y#EpTQ8O#q}O=Pao0^{W-{#XOhwI)x~GN|2NryzVp}|C?~wZU&Iti3+|T2>|@04?E{=tkuOAY<8=} znGsIUt>yT^#|-gMGD+ALmskT1{pAFdR!VgOS9G8tnJ&2 z{kl=1E&$6Ow}55>ZeF6A@;B|2=S!kVV3vkuo_DkZ)aV}!+elCS3=)H2axI2F1msE; z((!}lcz0=HFtf`9WCxOIj$z+{%(c4h&ekqQ9;vKXX(jhDTZZbq<7Z{q`8ru<;8l7_ z!$N!b_ZN4%L6jLo*tz-V&ey9S$y1!KzL`UR0rn3(#r7x~!A)p3xkkHRK~36%Enc7$ zPKvN!B%<6+|@kxC|?QBABq}7OH2xsl~n%1Yq1|d84>fCQyzaA ztITmPap=U&=RvhWd%l$0B;Np=^!OPt2dN2^npm(u>6nCNYO3j;8uCYBqCQF7 zq)`d{gwK5J#j1OY8YYKSES#O9vB@$L{D{IpW!f7`^FL<61#dsEj#j4QOq={Og2{<9)Vx;tr1v)_=6Z$v6{WI!E}KU_P% z_TxR>nNPR>lSxK9;n}lT0pqefXhqV$-wY4tUBQB-_0~el9z8k${jDj#joD;f`8MzA zfNN*W-2Lj!W0+k@=Pxm1Y>tS|GC3n&nsFiuZ))|hQ z?oKr_z_SwE+Rd$BGmB|R-T4_$fKUZ5zOK$6{DV!eN2Up0*4jh;Sg5cE#^?(hAur>r7 znidq%AiWGVyRy1GAOf$={!mfot_4E8AE$9G9vJMnK0$cwMrW> zTldYGD^s@0MjV2s6)AGNN%t)2vWh*{bHQv>1P3K~+ub(@5Aq~u;zef^O*QCB@P5w^ zK&rO>P2A=Ed*^x@4&pRk!;SS3JJ0{6eqq>JTl(W-XUGhYzFGuZ6(SX9u3r-<6R7-L zz}FcSlRUnEjt5yZffD21$NwV52b5~{S2n^5?dofu#3g+KJgFsq@rUm)6hwUlR zEiDEnT?uGcHA^|f07b&rpg`Y5-OI(FKRGU5gt`h64Ji3@@BF5B7vHZ>-XCyC$VBwO zUDL?6j6QeiN(^@6cAucx8z+iTE#>Yt5M6w>dwCryEj@)aG|EkGPu7czG;UtS%_2Z7 zK~CSkeeTnu_Q zs&NCyR_h(Ts7-|ozPs;;`!oZ=hr*f)9hZchOjEt)H`KGjygUSKHy@D2Jw9C+g~lvC zqih6S`=)!pa9yid%=6#-L0l8H;8&X(Ra!m6;N?NCf@JJ5`-BdHIQ11bTy9KL74Z=U z?#<#ozIqM__OK+%I6YUs;4n$K*bGME!=i3QVFGGk12^E7&sf_9(f#szedrZ9Tx6M1 zDaTT$aoJv3x-*rO0*W8vD+^a4J7 z+)(<9Zp>&bNp^206qR5^5q+5|Sib;u8K6XW#9o}jNBeS_zbTi=M*8D1*&a#ly=DlF z4OZV&wL%VxgtwD3Z|7kD_xMwrBseeU^FK-mdbPzt#wEsNrPK zSvC5&A8mIFa6xn@$dG8D1lr77txgXxpq)U)iLATwFTh&lrIy9@UhLrKz;p`%e}WOA zb)6?rGV=1n$W**iCuvk$1kbTB@b~}~2P+zW30N&qqKh7!jL0AFz2^b*DM~Ur=q=Yn zy9dAW9S@tL!R{U%$X6iO2+@Wv`R*M~pT>dv_VQzAG}>|A{2G2ic55I9lt(_@&l;Wh zigP5+=CqR9$uzBVxY|P3WD_;HoAI^+JXgPwB=cz7(QJBrZ}1X4Ia*S<2?Dhk@w~U6 zYpGAB;W%dwFf!t9kEpNIktFRM0Vz?VRb{AY2%H6gAt{8wVzRTr!qh@CkfVXtqsiss zIfuXn1EuP#?5y#06B{>NCNh1n*ajBAc(H(>2nL;C{%V8t;o56)=Pz8SecU+MZ8K7$ zkLq54Q;dvLJ!qa@WBIM3^t|kLHOn4zH^0<2FX_)}*US7*kC=rqC^pg=&fiMuol>Ae zc#xtw&_)zN2#3PQ+?|MXfm<%7@J-~SLI8YV*KaCUO?yD)BxaDn2BlJG<-1Ekl9bCF z_7~1N5-DveU}RT8yvaO1fw-BN`r`b3PgF^)sGlQ*KwG;Q_=S^fdF3raApF_VI}H`! zpo*E*TA|NYCmmYoY#<{BN)R!=gOK*{!l8Q1CD=xwv%$whEKNeK1AE5jQ-(Me0)-r? zhrxB~3=zAr>s%6WqvxOKxP$XT%q&fg+V60rP;g0|B>QXw`pgP0GC}af$$^jhD)2#C zA+ulrK;mb|`&wbiq?sm!fhZRa&C9d%afJtl|C302cG)RY77J^0e9PccuYV{ zdVJE<&e3}Fywf1N)>A3%idh<*5IY%bb74~IX(fTQ%V{{UsZh5akfv|4VWzKD=a(zh zK@og=_but@tbESNLm5c^>355QT@}&z0YOpsVeO0gRaJT?Srx0DZpAfywXS2emg^NO zAD$3V5I(7L9_D$+^K@U#p~gnc%tg|G_>?Iu#78#ne*_i@6l*>`yG#dwQ?Rz!iugtP zIMd7$IHe~$x%a$;HyU?zP)^oR0oF)Qy0d_;9j5@lM~V+nvlgDu%xF>vr4_g&jAD8n z*z7bpe(N&C^kTrWsqaYZge`_FwgJ-|f?S9!L=5i@b5|P{RICd9D~u_2W&|^Vi!u?X z32Xx3IBnT7_Xn$Nm2iQDJpVFMYPbc#xV~3%as%^&9t_Jes7C?D1@~0YX}~+Br+ehR z%=$c3f`(v@m&^SEstFE41dw(yMK}?bt~i$Hvx{J4rzULMk#)*?F!CJ%-Tas574yoQ zdvYM@bfR$()F|i+tj2jcHqlliG*Co(F6=Xl1oxi`~hpJSpG)ax|*ZoF^;97@#xgA5rZ_$gwJ-%xq6k7S{X|iLV5|^?xLpx46O!7R2ij}Ctnx>jN)|q| zPaGtg2V{4MyW-j6(XiE+N6E^=UZyY%D03rZ7pXWr*Z`oSa>(aOlkX9jwp)|YD{TPz zWFhM4e2c1$QIcp?qU1(cP86dts_-+J8}1gU~0Zb4FV4`RL5&{5HR^WpBs=~r!m zUpOETfLzi&&;QCu^d&*7DqFzgQo|Q^prs@10}6DaKT;HARm=Ina)VY<>l%kWD6a70 z)s4DqkWkb|RYbqvZ?)Lt6Cl3TFY;c9U(-`XZg9v13xxkS6VT!0kN+4pLP}w8?e)Os zkSg0OV3NZhEy-(de>sR_Kz!{2E-`(uuKYeWV3{qS#xYyAmD|A=w3R@h1?zwIo^K8& zOYZB>mxutBC`0TJ-N>krK-_m)b^EJ;=kj0(C&J$v^~T^EEFMX>NqShLJCzTC18-uT z#X3OM0@|t!*~vbyMi699w&H{Gf=*AsI)k2CZKn0F8DiwlS%mU$A&_aDqtLS{GGjo+@@ zBrH0!IyV-r;m2iVaA#}U=*a5KE~S#DIpl+Efu=Lyf1OO}e4$jxmK#nmfH?^;cZ?rI zSp81CL6{zHTMipTU8-ts@_w~fr8Jpk2M0s!=}=ki1?^DRi5d|s1S(%R+DUGG%4)n4 zXbMukHo5hM~@c&^~eap!!a8mJyicm;%GQNDQ+FIeK+oyw*#_(0p< zByJ$(QYUcdSQC=Ux~zqGwX`rFwXuUL0<=gRR1ru_^VdH7dt2sJdJF}?&c$VCI7J!E z)*CSrL$EQ#>^ks$wJOIx>AF0BzWPujeInBKDwyJfK_(`&4|msN0d8z!QWUkVR<^`J zYxj}0n)@KP^_iSN5wd$3$R=%}RuU{ZI6K>+0u|JiZ1X;YNNEl&z_85DJa@C-U7s#B*)2}E(|-lk4%D|Rjb z`eNDO*#_|IEa1jfAnA?Y@Zh%qnKG4QaZ1X(H29|oniD-g2qaNbZo7xGeyygz3iz{A zRv0Q=UOfj^UaP-XTvIi*Wv zHYNc^HqMWs2W&iCe-COU2CCtre#;o7vHjmIw+3z#4DR^=_S*#O z_4A~-M~)Uaiq6${Mn$xqU7`W&4}#`s{M^8>gpW|bs3aIvnpP{f5tYgy= z{1wP#q^mrH1pkV0A>lxH>A_mYNF{iYD9ZDPRdY`iLxTlYEHN%h+K!-pDnr5=umj$9xj(%oo#%p&>%FQUk$=Gy$ z;X?*+uiyIQ!{KA}EMXqU9lU-tqY!>$)C=MfWLp&7`)Qt`EY%_LY8)N4Z5(an?~mS9 zM5A*)k-Rx-zsP6iI-|E>Sw+`GkxH3Ky4rzDKn17kbx;IR0IL8h>F&R z+jpI^OxAkbstHxsHcNrG1M{bhMItJHH;8AlR#LyrQdqXq7H}Bh0ov%oY~sb|+7B zx2LxAplI{S!5v~oNtjS1rsC0RO*p4SpE6$sWl|RQqtEH_?&9&&s6#W!lY$;yEu1I{ zWb00^nk3LpE=mjpjrpUsUGxvdUU9*5R7wVpfwsVR9U?5ir_b_N0N2hkJ&LRc=vso1 zzi?@6i!?Qa1OuRGuZ!@UxN0bX#x)@YIm|FpmME~w=wLAArcGQMX#PXZ0e)x%|JzE+ zVt^PZ*!|HY?XB;Ya-zj=c5PmTnxz9nkq#G#E zV2OU=^J70$w+Dv|gc*{4uz*AWddWTYeC3p9J?zB-1{_S#betcM4ZZ(a22V3x#K9&I zY<&?F5J1h>mvYd_%1`AikIAS!VKuX-rOkY9qipwyGnb%#j0_k0}G_X8A%C~^lBPGx~c zy-WFM{c~~A7MK~7tEAIn9}NDeM=;tpuw#ap^>uts8ghCwX0ZthejIcZJ0PRPlu>Cb z5Yl-GeWZD#Uplg&(UZ9=H3fHVX-Qa6P_sF{gRd1fu1`Kx?HUwdg7ne}h7*KExtA=4 zz3y2<=K??ir{zajUl9%F9O(w6q%`Vwe!Ou`*1FnJqvX*n?I2RUrWHeq7Cy+_D7_OU z_lNwh{Rg9ORPw`;iMhFeTO5Q3fu9b-LX`&%gpVP11471wH4d5}K-T^8w7lp_a|(A@ zLBX2T_&Yiww^`S6OajYG1(Z&MgAKSxmTuQMqE7m@Wu1M`{R@Gp$Tu9+I)R$j4)OLr zSBsw?Gw&Ptv)NU~+lb*C8_!CUqDUU<=hKTIfe4g>?3i!Y8I>Vsi;0?>zO1lDFhdlt z6PRtlS_o(Y-J(EWQ)-9E#3jp|vzU+bKK}I0VTM#bZ0b(nGJ`OuiC*iX2oI#b z_h9ol2=zT&QuZW-xE{J-h*@PbE<#ZM(iGl`8cd^HfeF3vTqR%lMN9K)ncpG+V~eh$5yEDGY5oF*j^MFn=9tqZ-$Xgx$-%S9fZ$lVGj z*?xiQPH$P(Zjihp&~8@@f#1`Y=V-{9GFo(9K0*i}8U{TX03RxXA_8&iCU9fz^Nr`$ z1AF%rSbkd|L-YRv*ic0eZIbWqFQsWDCPA8hmR!X!WgjLrcgsN1{$+w0f}p|`Dp>TT z@Go-kK;_5PGh%~Gpx&+ZoBHm8Cj4CAFtjtoP)B%?WB@x@=gkXjYF7_nX5Nhu^F*S) znMA+3Y`AX&bFg(A)H|!dd4Yh}x4>76arF zAvTcEUbMoPNUlJqt_rsRa!ijM`qO410L=e(4`myzqKBjr!=FoBK*Dv@homwQHXZQn z+h5Dj@epDo+y@2_khG--H5Zk1ph1U24;Gi^Wi$*62F>?TbHJe;(8Zb>Inao-jVZlx zHB~B2xez-a-BB;Iv?o9h?AjjTKor8bv|FuQg1k4OL||#C#o;1`n#G1lTCz-BC*RJ~86 zIVWp`V5QN+B-^KmE;a-f6hWSod1guaj6`dVy4E}w&+CGE7<_@~7)YYBFz`@fTFE-) zyTpPkjFluc>ZK2IgOF7tz2OTThk1B*8egy|<;<&VEvfgob6yB@6)tOkY~mr^iWac< z;PHV{fT}qlHOtJCZjw6^MNkmw6K6^r7?{-R32*GSn9;CvSs4Ohk5mTh9i@;k7>5b= zz5Ps}(%jTxOC9HOqM;~9B<+iTk)**saUHpI1QRfA83tIt0Jb{uCD^5RI+%0#HmOwW zqx8dJ4g#I52v(I4Rcy<0Q@Q1PT5v~OT#h=)Z(Sl)F8E`8w|ZO)_!Vdm083B}Yz}HH zF?k@vcikgt#-UAd%G;a&l?8ZO%%9HkzCtkF4m^5P%13wDi`>8{2wuP5TEa)33Bm4e zDh1JX!tFgeMI`u|Y#$wAg6Z&^pf-SY(LC9a_B!Pet7evWF7=@yNa;v|p&4j$Xmfbu zJUj?U;hr33!q^PkYV$c@Wa#)hOzENno)9Erg&Yvpi$MtB^d=w?vw_ubG(P?|2Sd%Q z$_4|j-^0Kn{nOKnXef9Llm>JR4@~cEl{79CSHS&CNKS^rwl`xcr{i&Y`t5T{Z#`)w zli_}|=p8xe=#Wv}+nVnm$;9l{K{}?rnejlH{s4Fts2&V$L&-vI7TCzM<*z?~aDMSD zOaUHHiB;1jh^utV1VF4;0yh1f1(nXX4(7{WiimRjx78u}o=%q%H*vJTBksTF?hmO; zX!#Jy=-Vp%-J1}ltVJCdb)6QlKKLjxOczPP$`sV%~J*d()TPr-?4_qtq> zJs564p7+L-4}5sPHD^KDc5psi%QlY#gyfzrpF0L62p!Qz(IeP^a>T@`X41@E0F1ZL zBrE(2kTb+}qUHKTZXY)A5}4aPo4KiZ{kj@L#gpLa&`Z19yt||e;ZvEn-3N3$h|%ZB zt1SQnL6<?X zX4M527U3Pna==;|#WUfdPu8=UFFrMk;SMZ^dk!r*6vRvF%R$+EnIbJm_t0!Ky}W;Y zcD%y&^DcYQ0qVEXi2YW6MjZLmtF8b+;O=O@leQa!e2=PL{#Bf*6bJ&@Kj$Na6pd{3 zVGnCMUsuC=!|EpRhMg1mUjc zK)M!fQ9KvZC6uAz`0_9??gjTECCb1P4L|kRYF9~ z8#h5SsR#0dI@&uNpe+g9=ol<^ohUJ@=13DVe*`Ey>hiRHmorS_18RK&-K}>jXwGA_ zG*Cx5B+rZ+q5et+@qav2p@6)!Zz5!DSo}6F)5NXOL|SRtwHdLKBb)t^R;UtyYWiT) zTG978-T(Qq4XA1qNHkc%MAj zCuzJF;`~b2i@*Z|0)`@m4EcadqR2BzlpUeC5V{p)ADy3C8B*hf+4c;{dPF47O9M?r zt4&4Yw#L~kCz{amKnW&HM?`UBb|;fZy#Aooyoh>%igh((wdcJ5hI2w&S zs=*?*-^hm$(gh`hx?kRj#DhZo?s zqh8}?(aEO<#)1hMP7y(Vpf=V+VnH0DZ&qjkSP`sMu!mv%9~~hYmUJi#5bBUWnY#~~ zd4mXC7&_$&8rw~X9mzJN_oV{OgpnIN@X$KrXh^X!YiN1siHjRe6l2IEj4=U|FHh8o zx;6bZ0pw%FXNRem;{|~RsVT^*UFhl_9#(TX!swy<1O#LgowWg`M=Y7DsT4-shH5S7 zH?jc4gj&aS+4#`?$b^HvcAPZ4J>#;s$oE>;Xc&&)h7A?GT?S2t9_H}jOH`b*wk2!k zeXDz-Pj~bjp&@Pd30BU)_q*5ymrlOCQ70n5zd-fQFjo!JKn5ovBTq1jV|NPTBqw`l z#top45c%_kA9n*UdAH_0cZS6byO+~is~|%Z^pvLVPW&r#vMtV8u(M%q0$e8an;xtJ z_Z{8|GEy9$Ej;i|aFA_ttf;bG;r=9owk@spR4#rbigXSN1QnXy0}#x-J9-)ByP>H( zxXKyP^0kz_o1IPG-;9MIeDC>tsl zC8w!&s;PV$ncuqCG1B;;Z@!wkbAfL~u;7{o&+~+0YJ!M5B^+El`1C9-W0#km_6`m>mDe!DjDhqhy0{3%u_;vSU)0pp+}qomft3Gw z^s5*&IBsLw+S=~@8P+{b7*l1FLt0MjzSGFuN%sCaGSd3_GwCCCb}lY#bmqekiNHW8 z5}P|ZJ8fa`0>pzavTiS%lqxMX3&lgOSiboAo%l(7;Dg^TIp0H?<>lq~x)n|^bai!y z5M*!OV1^jcB4WcJr;rQD%VYP4c{d-3Axp+%vOW_T8}oblJ$k1w=xzKqYm?LH&p!!j zTvgT8ZGa}lVb}$PtXH20UR6}!B4ZO1?R|Y3qD^!itOy53a+UXn6(n`ATJM_UeERq? z&qyF&kB_+KSQYQ!8;^*AKq^|NfSn$XA#K2L@*%gLH5J-rM~1-lL}+~jT$Pxa8Hw5{ zH8qrEtg?fCU-DE%TQ6L=P*qzS_T&i;HQ|$6S#vO(9RrfyEKG)urnGpirtvsAt=%NF zLll+mx2^oQRGvS7ZUevM}Yx$xIoEotm1OC651gpAgi-&6zeVE%2IQJ`e+u zzI<8X+x=D@8(bJhAHjy1->~*@vi2W8j;r4t9T+_QJ>1oG?RCOnArax%3iom z@pHB<=g{45?rxZoz0g!pz#(K&f0h9%Dk}Q<=x90nPw7GBW7lE4I*BYL?95+wr5@r!O}gH{b61yq!o=VxwYJBO^*GkR!CU*!l@21+)g!J zSvfh6UnBeg*%&p7DB&jR@lj{NVC6CfIW~qyQBvWFdgx7fCo$i-a~SXoL714BjEs#h z^!gtih#bZL*vibj!jY(0YIJ)W$DR1>A@v}rvGC{-CaPVOl$Cw)>>r)VykTZ0TkE-7 z7(~+W{v~I!&F}iq?>Tt#m^S};vRPL=JtZN-K*QyB@ z508AUI~fHQEIz84rKRvw2=RdS{)^4v=o=|*IZKbDg9Fa}`}au~IMHXT8x8vrhI#1; zpJ39^(7>AdMocMr{(NXr5qH_km->c=ST}CmFrh#D=CMZtl7tUdOJ_I3(3 zws=52S6-R4fB8ZQaj7rm>#F~`l)o@EG6$+TG^2{2`$4}YT3Y8zgEFUM>0xEbIiO-` zPY)`Em?w`~b0j+5!XDwF;6PXVpA-TT5*0f;4u~A5o+@NM&20Pr{rY+B1hhH~8J57H zrJ9;rE6f7S&deZBuI8^$z)rTsNi?w_hS}sNhtMj;0}ec?>FCALs*8qf1Q=RD8NHC5fuMu+GvrV}SlBmQDDPr+wnH^nkP2IdQJ!4*l{d~i&whP-0l8NtA?DnAw3~!wRm>l`)?wvWQ1EPh z=ck0WZQEvZ;zZ7>)l2Tp^FhlwMtQI99g#3LHYQvhiE)vLC-1gw9RZBkRUSk2P)-vP z)~{nyuZ~$kr}F9}hkEZiS`m(R10#!z!6406P{>89a=Y^F z`}YU(jPciQY4LZt=O~lZ(!WEQ_?6`6LBMmzFNjY_a9XN9TSz|J*Kgm3#>c}I&wR2O zZV1npBl~-%R7+o<4B{ZXg%!UF(UeM!X<|IZYrtJuJ*jJo=yU8(UXRjVw$U z*{H}LB$wO2v!eE&A0(^K{_kA>+vophKm33D60tR=g-l_0Wt^RzNv;G)I*k4jKdStx zzWta1jfjXau&}s_r;-U{k^9-Rm*e8rLRcLf8@u~^8JByJa5#&uFk^^KgtbM%QIXA? z={2MIR1O@VL9?DdcIJ-J*3`5#Dq_IO%gdj>d&d(U9i6;36)ysrl@hLoL?L4*(^joNYlohZu{mr;PoT5)|A|z{w>*+f_%79P#_D=UHI^ z^q8zt6H~LCC}q8U%Q~hkmxFo6;!s$var3aXwzVCa&K0q!J&%Yyx0JyzU+z6tIuA|p z(wjHNw{voGTIQB9Rqee|;$iJlrNPmoqHIYVaV!*2`E*IT-P^e2rKF^W5Nq%lEAsZv zz&N(0pZNBrGOi1#7+I$du358Y2tE2&stuqK%tYuCS^J;Mu%+^ULCIcozh)RQu175Fe--1Dn!Q;^Kb3DUGq%u4!d; z%kc3i+7gmQNJmFE_#$bC!Tm1%(bL)a`7Fx|J+-fDgMy&3)MdmZAXR}`KtKRw-y`k! z3b25|O*UI|>-zN{Zyt#lTI$MDP{?;gMD~%Pjm4iG$07Aa^^4^hFBq4_R#yi`I=126 z5E=@j(L&q zMQ~GYu0FmH+cxS+29iPEtLx~ruKk{ZOU_>Q-C^oJcs+@8(_GiQb<}g4W#u{&rxYbz z?wSu2hw&L&fB*%b$yCFyhe1w;goG42v~d=2dCIZ^KjiAA)uZ2j_4u?k@r98Q6&w^3 zMWtc6{UWi~uZIK&Q;6;B_U+q+Wo2%!{s7@c;lU2WX{`ZV8(FXti$%Dy)vH%ao*M9h zqw>;$3t&Dn(5y)oFClj8*u^VXM39vc-Y=D)BZG(T>+4JY6@d~vUESPpBZD%(1jp0} z+>^L;nlXpQ`=$iPq{zO7!`|NB2A-L*zKR|Ce4;uyfx^NxP{apzHe+XTW@cuRpfo~` zfBN((e+vVJRUT7mL~c59qSE^sN(;cx5bkH#|MxpPi?^pM4-B3Vq zgRkJpVyIRY6r=zf9KfZAmD&*KvyG94FfKTt-R37?L-hr{&ujS^we6Ztw!4pyCf-;| zfuxK6b`&Nx4-XmG;df)oluPNcgR${Cds!ZIhqMwB_c^`$5V9t`Z5zw<^fasA08%+a zu3cjT4yvb84L=W-RaNnUI&a49Kt4@c`p@QuhNpFPE0zKAeXq+K!aNVplVw_M8@OFt zc#Ef|rfk&5-LK0l!Xd!LAIQhYw{1&8tA^VM2-X9BewBp?UaNcdEUQi=gO-*yB_LM~PJNLPre+VpXNK8yjdkMGM`>-E?fpr4|wJJMy!j`$kq9&k1 zJ7*#xKAsVh4fUMHmHYSat&cFel6#QN`iS{s}E`k4KV;$Df(Q%&{Gt5deKmY5iDUP;=O9kd;ghfRe zphxc*Tf)O$gA9jf@FnEtoy0}Vr{u*51hwUD|$%SnhC6vU}+L8Wa>1Y{0medrxp88X*)$ zS|LHf;H+ix;sK-_;auRcsJCH9*?@2$h&!8Sm4t)@tYqdhhWlYqcwkXsXZ)w&=zWs; zD=aB_s5BL~9fpxktyAOyRspl$EXw1q1+Z~d1wI6Fe!!_?qwkGbl=kaajL9r5(^H@=|{VRfI)1GxH#N8;zvCdA)YQ8-$@BHGchq4 zgi~z2WL#>htK7J@i?cHu4^Q6C@pfX}#4?s#z(=_zgoFtWI3779H^Yg_H5{%;N>UwqQ$zIqvn6k|dHndO?d$KaDjZu_ zpPZy7tb)(2-o~veoEsm%j(Tz#%R;b%mF!}fz5MBZg8I=gT!FFKudQo6rLv+zNKS4Y z2DT31Az!_B3YU<_c<1I#Vq(~t{F(Q|tg3vA+D9A!c!~WDWxq$5hTo4bXk6ni2#K3J zPDVQ>0Tjh2CKeZ8z4$23`b;j}g9i_qP;1rO2$O}qX>)uj9UVV{PS^={0BxowwKUs; zEI^W6jDSKQg_RJWU4QWifp<{w{<03`bZ~U^67--wRE}Z555_fXnqfSW#_l5m%Av}A zp=Je5u*`-6U6aWK@Gi-Z4T~rIdI6B3mq9R5XmImmq zu_-CN_J73jDqLJwh$CI%XukBg+{9uT?^fJ{BwVFbS3`qAqLmT5bP?z=(*bN`SNac>tP6ZE?Pac z+>hvp0zm4G6%?Lye4>cxVr2H*qrQ-mcfc}i z5f{HVHw%-=u8GdFuC6YHz=cxBB&edvi@}|MvB-BDu<3n*?(4*hn-?&4Q0)dfofo}o z9bSyZDjls5BQvvqW|=goE0$gByW&?$d2$A`Pay3C)%;7;`$)7VW@ZuK+6#-5rzaQC z>Sp>J4O)1ep6p#|Y-*b1I9H24 zDlprJK21bXkq41=ola9`AXwo9jwWx|R7zJ}ogRALC0G{5jQjD{G48S&UZ71%+1{k* z1(fJ~{TfgB!u-5%K|251wX}G*I1L-SyStU>i+VO<-T~~dUN!3q_0$C(u^ECLxhYpw*BKnKY0ll@hMzES)!BnIO z=HR?E+K-DFGyluQ`|r+6SVUyHZl!=@_3{3457>OTshjGm1R2AkwY?-5C=~Xubeq2xwOHK z))y}tfP1kZ3k#WODqmKn&wU@@3dFrPsk`Nf=HMg9&~)_ld#5=Xa5v)u2)=S<I&Fqaay6lGL=4U-U$6U-z zaJyqq@iy9R)yX!RnQiJH-FK*}s!IBJ6H7tu6S47C#Lr6u@J97SNeLXzu)1v^C@!w! zRdoRr0-TZ=H%<CkuR*5s;t> zK4JD~5L!UusZ^&OfD@ARGoR~DuzY4XdcouMqjCn#(~(br3a?+kzCo@~hmDT3WvKDb zpFammSh*oyMN(Rt4K5hz4X4hpCGPLEsFOy@y&PtSYuVcWKDRk5<_ zUpwkRn%Xgs4Qy<|@RW{MZ^S8$hQ&ZoR5YjmyYJHCxjh)k+%pEW#_g80l)R(S_29MZ z*J*-+f0W6$9!JH+r5tg%XT^IgaIiS)-MhHzGn25oHYNp4{(N zLigN#@$cUvs3=)&_j26|k6|#WId<^zq)XtMFgbboW|)N3+khJ7%J)V@MymI$clY-0 zQd-K`%8GG3bobyJpq~s6+uf4mrWgc*aeQD^EpB$%DL6{i#DqIDD{JV>7iX_O-H6$s zo-7_8A5TrDe>RhY<6f}B4iwiLXYbH`b0|KU)l4LF6HPzM(Hj^TQH5Sx{Sck$2Kyob zbTf9iOV%g@Cs#i_m~9lgbay-kOc?2D(9m3&|U&m33ROU)7&d z%BssR=Xg!!wc$bhN*?LiqCQy}im!8D)w#o735qLMu0*O{?D{TUt|jPwBWT_jSFb+x z%U=2YWD_c#ntlW7sjD$9HL*7f98uj~%KM{zE)f@%S#i&8Tc~_n0n+?t6^MAJmqYC; z!IwpF6JrXVZ?E4vU~E*;wbg|im|a|43PM|DWo6$!Wyq9l4mQejHJ}JGhKwZ(8s(Lm zdiFnd>peO{J&an^d`oUeJB_pvPS=Ev74&bn9~U>z^agMB@$n%cFYWE^q`gOPL84R( zTy}7afXVZ2d0k$vP=x_LB`HSLCRH{%5a}uP9y*gcm6GJ)ktstc8MEigTUmsg(?%_ z7QGqUGY8IidpBZyN!08U$mj+H%{H_;+hXgeS=Zu13C-o)by<+H+-sZz!*-N$9Wc|l zhoNtBNOEo1(7LlPuMX5ap@yh=rnpXFH@n}he)oB~f|63iqX{5G_qj>S&~F`hm}L)i zwOA-)?AqGe^Z53Gt!7O)$~84L`P=-2(X8K8@W^ybBDCPg5A|5eBVI`ZV6QF8-Ro@r z#NiwPiS5F$PG=*s2g3>rrKu`AjPlk6{plSj-9CB1Sm1v;(Nl)oZ;Yh*^w;4cHno+! zSY5prG^%=A045pCe$va)gXV&^H||ZzcvRYSIiRnO61-uvva$eX=rDi%z_9{OzT=2i z$d`8Zl6nfHsn&)fO#%Zg3bQYv4KOR&duw0d2AsyuKQ*b!K^qbGTVeJ1wxn$r%CN%C zgcZTl_;Lt!EiFcXaxt^^mX=i*wtStenX1K$-hgx?NIPPeyaApL{u|!L;sP{e@T-3L z1yUwLbS0WVlOnrIR=IwO_|5QV`lT=Bx-oeHyMz5*!^A*ol0g4hS68Q{r^hKNmY_rC z7YoE(g)J3#?}d*)+)oLl3&(`HlOU@(3n;K1S=FjlDy^Qf?=Ib-)VccYCG>{^B9V5}~14jn}cw%w{K3@Ro0urS@I0H(HoUxOwQJeqlf z-_JM2AQ6PXwBc^1}S#94I+GaW!85t2j zp$Paa!V^H$TXRj*U2#yUuhN?tcY@jH3)Gs{ zy@>yq4b)49X1$VQX%=^72H<3obSac-Uf;ckG23cq8)4Xk0poK|!`MZ1fB4!_ z4D{cOegA%X>KjTH(f-jEbSrfv+|8TCH|fa8$l!|@RxN!FTGISHw^>wFSVo4OA{f^~ z61K?rK4}OcRG}ac{|ZiU2BND_I>TaOf`%#Q;IuJ|>t~a;t*3kW^PJ^`8LmFy*r-;z zt#K_=n8F?cGw;Vrp^)ftVt)gdHo}0f$+qkR!+3+g70kPY+ZlzYndmpFyh}?5qFyv;rQk|!NZ|pz+$Bodbn15w3P40o% zNTpKA416@7V&>d8Py)8&o!RBS)5B}^mE&=>VF(yTC@0U60$op*U>Qpr)UT!A9YMly zKJ@qZYxqp}bW3*k{kiY1RCNdvooNR3` zyn1CozUv}aW<}Hx+Ao6Ypmi$+>RSpFIggBug@I10d-?KPxH7)Nreh0-l?+9i;%0h> z#d|0S-a>bSy{WH$@ni1E`P%Wu_I5olYk(sgC#QFJYDaJt4)>m}ZGVYist2K#^3@-^ zn3*8bQ$IltGURpq_~BXC+??D0_idTWjs8cLM~-ZU?5KkS;CB6N^1i@III6bZ?fRnZ z3Z=w6TfAGZ@&FF@EuUH9>1J7Aa!AWo)J8e=v?pRyj!mTXIan6f;{9xzk4Z? zONt3po8-L*xCj06eVWQias0fb6^LQCZxA)(VB;nK3nq_M{@`xIP7o;zZv|Q0Xd-X z{9nHz$ax`v1t0Xl5Yz>wpsYfe;`(>ceE@dWcXoE_{*aes*Og04G%L`6t^}6mB3cFD z$pE_#)@X&sz~ev}9{T!~1>6G>hpAL{v=x%)+dXk@p${U_`*(73>~OIG5I4ct5M}q} zMV8ySg&8MkWP;F!Q3jL_X=hyqDtQJV;_>MP4=Qo4APKI{`(ge~^|+7<%9#D34NPu-4XA z2wQ|q6UxiW!#|Y;i~HES5-~CW1zW~=pGJt_AkaGz9iXV7)LkG0;vgIRmfe^_f}tE) zRCucY^!dBs4d(VK%qKX8Q{aKITZYhnUavhK$4Uvi>tuZFn9KGJM1e;$1U`8u?R}kt z2dVduNkJA@P*l7P8X{TnU1K9X$Olf&)NB9kAef2H3l0wp`+qVL{O=Y8w8;M-jSK(z deRuVinF~z6SX7oyf1}`!wz{6$g9A1p{{{U04b=bu literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-114x114.png b/assets/icon/dtp-chat.app-icon/icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..a0183fdbef6683abe862618557312657cac4f338 GIT binary patch literal 5115 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 F{4YrTvrPa1 literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-144x144.png b/assets/icon/dtp-chat.app-icon/icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..a429832386fe6dd67bbee6b18af10f6243113c8f GIT binary patch literal 6825 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

#gO@7wzl zei>(HXP@H+7XPGMqDR~av=oyE!Agt?Km!>{dHA^!IW7bo2F$jit1Dk!P||H~P_JOt z%*Tp#I5T>tr!$9(G<2GM9x#l+8@LcKihLU591&!DZm_4tb9~G<8h3qduwwo9ZIpA8$@gGN`jvOIGc}ZcM zbH~RGATZTb=C>VWNYt)>1<}O(@^TkMpIy(D66&*pg3df)lnfJul#w>Nv;EQ8^N0t= zL|V}FrwK=Y0$pM52_brhnp=W>nYhOq4UDo)Zz6Ua;_%3B=0FDhu{`;UrvATft(gWM zJ%C7~-=+0PK?xk52H?;IVq$A}5mV_1BVL`T=JbHMp9ibi#YaSFZDS*F|C=UgRyljb zA(>cOqB%9P-T}C3X=`7CZ{&ZdbsQ7(+PaL$#hjc|ut|VuNElDq31s&kv>oJ5;JB(S zI`Dmdul3v@l@6(>;6<`^h`xXjVgOEns0c_%x>6C0h36A{@SOtYy+A2}qsD0>9_aKH zARodFATj~1bJ*Y!IRKk}{=AQ%E@W2(0Edv~LpL&5bY6I=R~BXB<0ApzEEI!;|Bc6b zZ^#95MCDu0t*nG+0@#i%tgpvt6T(?ghmWh(AWtS?l;Cstj3HqVyJl?6;O6E=u{1Y# z9q#E3nwS7AZX8%d(Br?p-+~omVt`*fAbg;pCL?>BCGCsQ>V*pzK$FGA#|N4G`aXi> zhDU$*Yyoq@4g)G;UTPO8BT5%!A7HYQvhw_g+#5(b)wtP0uNZO6%W!|GmlFD+-hGJ> z{%HZ@tqpckPEHOoz9j|YMvoX$nf-@~%>Idz8}-3ICLm~TX=wq72uhcC9DvMm{PkUW z*dsPp)?ny1Iw8AjFk?{NLN6U4JcxN^FJJ0 at^3yO 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 literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-152x152.png b/assets/icon/dtp-chat.app-icon/icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..82be5070b69b37b90d5dacdb5b1e4d3a222b2a49 GIT binary patch literal 7304 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 x3i^2 literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-16x16.png b/assets/icon/dtp-chat.app-icon/icon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..ee02676f0ac14c0d1f7528a6cbe18b25cc908f33 GIT binary patch literal 547 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 E4>i+=t^fc4 literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-310x310.png b/assets/icon/dtp-chat.app-icon/icon-310x310.png new file mode 100644 index 0000000000000000000000000000000000000000..8b34bf7f40d07d52df602d28e82857f62a955335 GIT binary patch literal 16944 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 literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-32x32.png b/assets/icon/dtp-chat.app-icon/icon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..da88e0cacbe63b315afdd7e5fcc1ff9ef67ea809 GIT binary patch literal 1246 zcmV<41R?v0P)99G?6f}KV(H7tVL~tkqJ>oNO>yqGEh?bgIXR$kSte`kb3CP z0_k93;HB_Tlv&!SXkDz+`Zr3$ihLGrdwjkxx?e@Vy`3uz>iW&)E~EQa6j zXLxuRRaN;DvMf_lQbJQx6L!0u`3Owv>+898?HUyo6JlKID$ELlP%5}~rPl7@x`G)==u=KsLybh2m99wsIx`2PJn zMlvacLLoXjI{5naD@pzR{R9F5k`zV3@Aoq{HpW~eNn$pF6b>Ca#PjFRiAJNewY3or zhpDcvMz?O=I*N;nxpe6gjg5`u=jRg+hxr|X6!z}j%eQae*tTsOy4>7c%F4=!Mx!iW zz8sy$yLz3u zkw`E#HAP!n8w(aJU_Js9pU=no_3P>D>!Y`~m#L{KoK7eA@89RZfdeRtLTzm=Hk*yP zNRq_HjT3jvhVAlP6E;>FFVn zNMNL@Dy^-p)Ya9|(b0j;X5;hc&m2B{m_>^g;qiFr>gvKwFb7GJ&hhl;zgD& zT}mpFBvDdQ!tUL>xpnInr%#_o2*HB~52&uLX2psX%tmGo85tS)d_Eiw2ft&@nl+4$ zj^gwAXm4*P6~RAXwOToQ_AKS)%K`0a=D=UkF zf&yN>dd2kgG`fO<0wR$J7K??|t5=is^XE^VK7C4IVIi5Bnas@0V7J@(U&$DR!(ndT zyvf+u7@eJ+D2l@6%a{4|=@YS7jPvKu^ZNB`y1Kg1O;1nL)YOC|Nem7S^6c3&Mn*=^ zG>s%p)6m6YF#>@AW&)E{t5&gp|9(!LIz>@Y5zCe>W9!zfWM*cPo14q#&6|1g;sv@p zckWPAQ$tZv5pK7eM~@zH8zBU`ii!$qYHCO-EiL8TxpRaO2Wni+4nI*~I&cAaZ#KD(6+5dU`e00h$EF*$tMq&=hWD>vM z&-?f9Q51!xSg~RS6%`d&tyWSYp^-==sI08S@Avb!7z_p;Jb1wV{rg#rghpRqAAY}| zOP4NDTU(0|f~AN=B2-mXapue!Dl03|>2xeaLStlP1eM3*L6&8fYW@24xZQ4ATU&`l zA~ZBKke;4SLqh|3d3k6FG?K|AD!pFM-y(!Sl}sl2^yw3K@7|@Pq=fPDakK>gB1w`6 z27~nX_Y)3>xp(g#T7v(;wr$%GLh$wLSF{8v7#|;}tE-E#u`y;vqfzeMxx?V#Aiwkb z{q*+sq9_V~LLvp#)z$R(_v7>V7#ti#b^ZEv8XFri8jXDZ{25u685$a5-@bjQ3)6-F9WMq(*mWB|5)vH(YCnQqP)6+wJeLaPRh0Lm{ zslnlJux{Nt%w{txtJTWL$OtntGi=$ig+C#Yg0!?WN=r-8Dk>^MD=#mPr4TGLf@MZ9 z4@FVc=3Y2AsUS`Fff4GY{q0Vu^0&rx7*E?D_5whs^Z+ab7W>_5(cfW*96NT5SFc{-a=Ga2?BwUqpUlNTM}W@d(1EXIKY2dJy7 zW9QDD2qDmtSiq`Ps}Mrq@px!&Z^vjfGRtnaW4GIx%gK``>FMdg-4B_-tKq(ZO&olZwiP7Z%+ z6sNn3`v*hRJvk-}YNoi>*Z{ECNF@nD+9*?6a z3QHlOar*RWva+(6nwp}friMTuKqwRW8?V=k z%IS3SJHb5kdOa&wu0%^w6q=fv=;`U9yu2LM$B!Se+wEvwym*lxKYlPeI!aep7nd(z z=KJ^WeEIT)?c2Arckf=bB<3+XI*P$yKuf37(bUw0!C+w4u3fvhb?X*hub0WmNutpx z85tQ!lEm7zYx(x=8;L}MWHL!K8fAQZ97R!>i@xa>eiIIddGh256B83$xNreUl8D7( z_72 literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-384x384.png b/assets/icon/dtp-chat.app-icon/icon-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..704436cfb1df74ea32caa1685c7edb339ff638d7 GIT binary patch literal 24458 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 literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-48x48.png b/assets/icon/dtp-chat.app-icon/icon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..02c85745f99238fa2492ba8308363cb6e9e86136 GIT binary patch literal 1943 zcmV;I2Wa?-P)*{*Ij>2|5xTsVb@-Pp1h_-|*jWn8vO*WP#roNkpu~pdeG*3|; z8h=>Um?=i{Fs}ZP7GWc+rZC~|=5zJ=x<77f?T*g3em}ilg8UN$n8*MpGQcVM1*_G{ zl`B_x`0ybXi-rE+=H^CJR1~SHsi;&cT&2W`uV25CkdQ!ibv6GBhYlU$)~#FUbUIw2 z#EHDTJgTd!(Q37Sh#Q@ z{V63Sg@}j%r#U?T`lKwV+{CEUGK$0ZBe*H>eVIleX`AnQR zk-WS-rcIlMGa`SXw{PFl(a}LwRTXh@aooOr8)roRLdT9Bqpq%w<;#~NNfKFESvVu| z7g8t`7z_rE9zBX62t0fCjE;^D91;18d3kvuiXt`^iv>qS{y<$_9ksQ!I8t9nVE?!%k0^+hn$=o?9QAy!@70rkY$Hf^-p-^D+V; z6-u1gwrv|JDJc{d7E)4Df<~i3r_)hhUXE6)rKj@pa(3<7g~?>X6=t)UmX;Q5va+%e z1OZnlaUwZ6nJ-_yke!`PTU#4#ZEd`H^M?BRdSYW^u``)WY~8w*lP6E|r-lp}LQYN& zTefV$RZ4y#BO`-Vt5#88Ur$m}5=~7_bZ0agNlQzkp`ihVLP1tm7Kw?8xI&>&U@#a^ ztJU=M;ll^Iy1EbqfgwYN;E0mn7&K@Qk&%%M9y}PkuC6W$3JS>0&E?0B9|QyhP+VNh z*s)`I^X3h|;_mKFR8$nADB?&{Qxi>1O_ z?%utNO>%NF$B!S!)6)~3PDgutJHIn$&K!!1iy1Lu1l@i9{27D6fZ1%uPOVmR`0!zz zQR1Ssv@|41LZi`e=+Gh3)6=n=KYu=t9zEh$nwy)ctgK|hgbAEDae}0zBQvURUyrLq zddbVn3%y=XUz#~{CPt%?>xpLu(GbNTXR&YnGsMx()1O8ydQX=%j9 z#*&$t$(S)?=q)9Gk-)$}Zrr$mD?|o3B@S3D7Ah+%5k--ppdbPR1Nr{_J9qBfp}WAq zKzx0DdHnb>Zf!-nx+DgOD19%^fA zIdI?rqehM5>eZ`MR8%ly#tdp}YkBeF1!ZMr==FLu8Vz^v-sRrCd#KfFa&vQujg7_E z*B2XEmf5&*Bd=e-CMYO~va&K{S*D?(fts2cVq#+WoufyOGIZ!rv|25WDE|409-5n* zX=`gEJ3E_%ganL6BPNrH)YMe8S}pJ1y<_Ljo%s9vV>B8G2?=5K>eY-KIg+ZXDyB`F zhD}991s^|tWdHvCgoK2!Xwf2qgM)eg{5h{)y~1cT($dm`!C*iT1U`QJ$jOr@sjI8Q zU@%}ZnJ6eIz-%@X9v+UnyE{FJ^g?1{A`c!sz!^!B`1b7^H*ek~I5-%)>gsA1FJ6oz z4<9~c)~s3FyLXS`;$kF8A|)k-(9lpc8VzgLuElD#B1sY!i-pe4P8?Cv3$3lKczb)} z%!v~xsI07H_Uzd#S+WE>Z*Ol}TU&8t>C&Z4oH!9rPfrdUI6!oCG!rIFVD8+x*j&1F z2@eksLPJAYv}h5Yo}M_OBm_Hue}6nYJaA;>$dMEj6tH2#1_VLC-QAtNd-tN# z=}@cH*l08w#*G_?kB<*qwrpX=iWLL|1dx=Jgqxci85tR5W@e&NshBir5PYhrp d1DwbJ_b=o7r?+^&|2zNy002ovPDHLkV1i%DnJxeT literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-512x512.png b/assets/icon/dtp-chat.app-icon/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..9debbe72f4affe26800f9e9e733c1d48f08bd2dc GIT binary patch literal 39242 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 literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-57x57.png b/assets/icon/dtp-chat.app-icon/icon-57x57.png new file mode 100644 index 0000000000000000000000000000000000000000..349e6891447b68cfd02a8a582774e49c7922bb5f GIT binary patch literal 2459 zcmW-jc|26>AIEX$#n^6kW6dz(qA^W%L!>M-#=e!CkPO4fmSnq1cE&okY0@B+P+2pU zBqaT2OzxPb3E7#FTqL2S`}qBF&hvVmbDnd~_xZj*?{l)89kG&P%3=Zn0+KizD_1ZY z?{83Hu+M>|qzMR!`r)k3xW@`E_9faEZ~pdteQTrh!@nVrc=1i7YJvKAmJu`tJ$w;Gtu334<1x@c2WIYSq~2^1|xhj`g3Jn zT~>1e8)a&m!|+9|g|nBU9>`grDWOoX0Re~Vlaqy_SEpFwhEH!Q^m+3;Ka}JDec$;p z$|OBK{as6dcu7e~5V@0y(9tQnbI0D&@;6aYQLpak+{x}3JbgkbcLsSpe9F|-&CSJ_ z=GX@P*H61hl)JgiV{6_L@E5Al6`P=kf0)lV*ETV^T~(!Npdh~ISaFKg(D;nRTMpno z_BK-eefQe6Yh)UYRif`<!ht2Nmy!ydeF70&3WSFg;9Wf~A^b-P0S?EwT z{OHl5mKJnyaPWir`l|YRv5Mh295jr^XisR4iV?0PIrJf-hBE4IhS zRQ&*09aZxiceJp1m89%!%j{wEf5yjcgM;+|N|y3+a#oiv!IhMh-n@M~7h&{qWhKBs z0qJFf!-=*Aj_@&$eR^yyEQET0?VZ$XZ6png2Cx*`XFp*2eMZ*S)^}}fZRbYs*&z^!2z>+ZuHvpPll{y-q0{FhjNWx!(@#lB z*|sTs5&OR!PMuqAP*@m&U1bdpJd%@<>A!24(KN9VGTxSDzPFuX_V+jEvu6iM^7_!? zVI!)&wt}J0@XFWEts`GvY2_D`mSP+nBmp6BcsyC%zC?F_e*~cQ^ZQQO9-k3&`1S$L zQq%&UAITq9dU#G>4-OGdNm?)H6gLGxgBG>Ktojf}${iviQ1kGs6sV}^rHS@Xhy_aU zRS-;7)yhQ~sJMCS`%T4UE9ya?=L=`g~E9U*dcAMdFWP zkBw!q2>W6Kc>oGZOG|@E2!kksh@__rS5;M^lym+4{iUR(_vPD4V9ho5?)go2T?6kq zH!{Co0NlI8sihiU)n>6+roVPKK*s?~MhV*}LMyfTJ1E}9-rg#ESXWp?ByO!wWas;G zqYKUK?^14qhnt(5C0LSr?7{2B`KP{TW@bX&bsX=^EY()B+JQpupi*LRFl>U(<+(kEDd0XwvZP1=I^dqVJSA!BG6S=pV1A}5&m z`O@=GV~-#y;`^&|>gQKCF)=YIi^|)_h%(XLY8AYTiL^s@rA?8Gw#q6hF5o^Ot>@c< zq_14L;(qR2)p&cT3XMiX96H42@rHsR^G&{eLS9Hk&#vz7&iGBeT1VR4_WHc(w|DsM zHaZ>u#FM?enWK$F=79jLePJ3F6&0m?0=2ZYwMFdh#^tG-G4vasT3ooGQg$Mo@aaw6 z=Lvc~5Gh6rCIZa+b&11vy?Altv3Ix8l{v`b;-Y=UDYXhf9=KO;rLI_YR(?MANibLM zc3GLr^_@kEe_)^%6V18rFi#CEpZz@6ddpth|2%*1$0|147knefjbhg{K=-kB2??h6 z?%n%5*-iQQF=#g}HC0MQg(-3{;bt!o8I_E{S-8l#&(6*o(Hz}LRn8tB8AJ1D3K2jf zq^e45f}91^)6?_S>(}>dYcoKC@?xgqGL()IX0%dI7a|hCbZAm(%=C52!h*kJxhc-x zUINg)pDFMu1!uuEQ6_5jhcC3xL>O&zxZ~v3eD#OOc8r5G+ z{3)M3nCui7s6%K~;sQrHI5?!HrOj@}0|CFkI%1|vvcTiD0LJ~ks0b~zvL7DL_WQGJ zy_UBuDk&LY;OFO;nU&R70b)`Co`tRDTxuPI;R+Ez$)5lJ)!9C{qjgE)q(*%c_~{bB MSvy)iw(w2<4`ng3`~Uy| literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-60x60.png b/assets/icon/dtp-chat.app-icon/icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..43b02c7927a7190e23aa5a22ce2a456316e8493c GIT binary patch literal 2551 zcmW-jc|6m99LL>8vE|75qZOMF8M&p#7LqH|$`NbLnXHRYYAr_=Mvl3D$WcO}x~Ee;NWT65F0_5qyJ4G%28tZ~<`Y|M5^@G;3>U6D4wXw&aK!?l8$8vIVAn+t*2D!kgA~rV{p~cC`*`01A z1LxUG$jpSRxm1Ve=P!J#Noj946BHCoQkH@iIH(}4QqRPtrgk?x;n$FUzCCJ{rjH?! z5IZ|N)oX)}Vq#(^aUybB+S-$LSFSu`di)@nnVB6?SBF0DA-&AYwhuJ#&`rR3yh{w&oYjf~Rh^h1q}jl&hUkrfpcv~!b(2Ux6#{y9^~ zSumW>RkQfTL94#%gZJy-3*7dmuybxBD|x{j9JAiBG2y7$T!fkBE?SN8Aeg^>@D zKYw~@35Pv-!VjH{Xbw4p#qz}}WO{mgH;G2L~gwC)PyPMoUOIY>5yJgUZj;{#k7L+7XBB=oAUjb#sdcT7BX^jc=r>LolRw?KUlx4Z(zXu zGB8kl^ZV&B=h|S#+We5Fu5Nh$Ty|C#rLs~#HQbFVrSf2drsFS#M@BZ0O6d$n$5_Q}slwdcP?IoW^4d>a zNl6JrP>@jB9^lE$!l+((53xp}Q0?vQrklt`f0+6>FIL5xhj{6#wTZI+w9E)mVy2z?d_Ugn^tT5)}pp26%XQ{EXt`Z)yrHM3?{&YBnyYbQw{IOMxWjazt$E-UL4cwO*e{cox6h?(fJt#Ny z#xC``ZuaV|Uf{nTDog)~e>8%H5gE;hLM zk`mOj$VfKu5VM=183sf@IW?shw63b5p`j})j8N9nda?6oBkskEX8hLH7XFl zW_rl(eFA~7Y}$H2M%$;JR5}qG7uQs^RD0gW1}2@?ACaGLi3Ps%^z`)kR?WC{^?~@+ zt5?VF-o5Mgag^*odgEiUXFsCM_iJYWvD&qi)hBt7ud}l=U~4XqEFmtA0oD&z zABJANd2`IrFjYqJ)T#KZ57|$}RU9$^BQi2F9xW{R6ggE;J`xe0->UCx>F69Y7opSX zmi$i|9<>lAnxMwSsn+LCHG%QT$6V= z+Z`+@V6kF$Ikb7NB0L--EiDZy-q6;@f75)7EBL{K`(UT+_0gL^$1N>wZDAe1S-Vi* zLvC(vhO6D0PL+2AUNYOytJhFn-nyfRz8ct<^v+I;T#NtxL^M=VS8wzBFgZVe-qe)m zjYA<}eSsCc(jpPO&T^-%f4OL_5waUxc4HKnV2s@M7vSG&p9xeWIZG+{cL!2d?-oy3 z(^(4(LGQtWhEJcOKYz9ZBB3ipMA+fPpToGU6%60uRkL$)=!uD8K)|nGzXtRck&%gH z`Q(CJfeZ*9IG~Zz)7;uhC}nN#Y-n^`z*OdJn0M zjE){xQ88HsTb}aMO`>gl5Bb|DX#J!dgRF{w_b4ezGC}n+nm{B>C`ayC`3@p_O zS)wW`FCQHp4NV>#bf9662?z*y0L&HRRTU73$y@*Q!GUCTZ~cIvAzD@bORdiC?#Mi= zw4h^4} zhArSc4|M#BC zyYnX*mOfuA#UoqL_V!}a)6*Vu4>#TJEetp0{r%9w*7guLH@6R~gcn4e82RA+zO0OZ zVk|d%Xq6BaFxIM?(S~6W4Rx^Em|JAj~=sFpqq0q`{(@h(}2lA*ER#O)tF3X zs&PnqM@&*iSE70xs4dF}o7X?lVYD&UBx-GV*2_y7grb#^dZdMAb-@I%L8jhK0#U5r*;Yr*eG>MWS4}^TS**M}{07CMlF7 zxyP3dnmZObB4zS>d;ETn$M27ApU>y<_`LRdKVQ$|m0)LMApnI#xwyClEb*rH;MaWr z1K|bV0h-gXTwI5pEKSck+&Hk@7H0Qgj;D3)`^M_y_#SQ9?rpTo{0jAJvr2c`{bpP`Dc`{*@tHn1g3L3PpE&}VefkS zNJmyRv%vKz&U6r)uzIvc5GwVS}Q$0JvuIq?{NvM)cFZT+p`nqKr&N|W!Y3!Rn3f4p1--; z#wRWzQ6Dg4e)HC?fJ28=z}?zZoZPTom17NqxwN!Ycd^D-P!2-~3_NwI@tPT=tg-C0*U@m5Jt{irhYmq}Ju$r++c+NLkCD8lMC$*pSI&hBH(!-yk%_vn!=I zAT+e1u1*+>#jfy9PENku=r`c}VA@u@G>P{8TjNrELc$aUski#+`fCqnOGGG#!(n_f zH8rgZoU=kL^cR=}&G#NDw<$>MAj>N#+{t!}JOWDPm$7b-UgoG5FZESub!Fl8X7Q%EJp|g-7mgIz7KOVP$O0WfCXY(bp#s zL8sF%G>2&D7o==&-+1}*CBs$RWp?-HmxWAQ%vr@)_pNUq2vk%;C)#hkHC{yVQB94R zn3R+Sktkws1=o+*QYR9L4h{|vwWVRw$>#chFTGtp9uS?F2%YcEjY+1{2}PJ=Pd*Sl z&zBR5pFfw(+hmXJ4+Q?cr>CT(ggb9|*j`f8rF&T+AUa7(%ihh+)@1Cl>l;5bGmTDn zaC96Vzk689x0+5*>^z~S*5sji{jF9a_}Y?3wR%HCgTL2j zM!@}}x+w-{hubwR4>v1me9L%RXZ`;hR5YE=al*^2{`}bmz|e7UatdlZ^Y@ZC8j!L} zLP;=~{ZBHOP)QTe$@N#i5Kgt1=dRUYwU7g39ugnUe6yQ?-)^xQZktC?=>w)0R zkE*InbZ)G=hyVB*tq9c&T$?tVyfGu-SbI4+*`~tt_m4$F?x{n%y1HB6zu4ZqX-KCJ zJ3R3jp!`$q{Bn2e6CT-A2$0S!C`dK})KkAu$K|8SX#KUZu=wRQ*4x{Ae7_M6=ca;! zLS1ETtp$lhrInZ8v&=-)U;Tt$UtiznMIoq2wgqf{pRJ{$q;wFJF!uIVM&ls%_V(TV z{hjaMC*1=TECA%d&>o9)=%-oCw5Rg1^tS>|L(y9 zkM1;iMpM(2`XQ^2;ApR!+72oK#d%;Ukfn{HM4R5)xki zUaIOX!WMz*WLtZCQAX|ymEYQG?9w+eQP32$u>Mxe_9UfO`VVKr z7UdSTdm77G<@xpN*N^XCnWqIdWd+Okga7 zq335)pl{~jAigo*_vXs8=@ZbtQs&~m3pM7|)@uE0?6LQ|3}rxiGCHrarp9}H_MP8n zh6u1VHC2vvGSFOiH{Lu|Hu;?w?uloYV5~6X&a9g{3iTi(L-dr6PP)B9Y%57=FK}gL z#mn2f{x2rtMeyRCD*TE_D)x_FoRAzsUj9IGbF%^95h}ags1%r?xTGY290%Neh`qW0 z&>Yg%8qL$>{J*GUwSq*u&=P(ce*OCO-&@P?2a8RH7K0yTXJ=++#*AJmtDkI%&;hW3 z{I~}in_;u90c+&t=mX_|WK?Jz> zQBUU(5I@3=YA!V*3=Hz(= zrOFzel!h5@^y;9zPUYt41t>I!ESCV^8dp+L0Z~pF9UJpR!NJhV{$~H9S273#h#Xf{ zjlZ?C1CV-a za*T$oc2o-s3yY15W9Gc`Qa~VhEeHrPAhHE8Hazl(L5MoMYP2V4z$mUnm9ssQDlRTw zNA7?I1_ll;27?L7mwAmmBK}xp@>z&eE6dAy3vA+a5H|VoZSD_&Wkp3r0Ut2&1V%=s z!euP2t!X|3g}%U%i;Igds7t2EVf%A+d{i|x!8!oehYNM?2Y{h@d3mkQX4)#0DFJiV z($bP4`rZTS;zC?BWMtFE2 zn47xf;i%nBsbl)V#zb*H;M|qf)um^Y&IQl)NB|DUCnYKB=}G&1-34#)Z8}M-A$ZXq{8`u9Ocyw&$0(h2 zkdKchf^%1lHHJhBa|6vtYFvB^%s4(Vu>^$q&Pub8{6RQUxwd5sZgLMcbyw=Ldw>3! z&+&G9Z2}--0475>!or4{L$9yA-iw6m!0ho&hvNPiMKF=G1BwUQ&3PaBH#vhz$^UX0iglU z$gN5k1qH(q!a&b5gmSC-v1!Kh%T45+f2IS1g<^yGS)}hRPbsm>8Ir|jdYp@0%MAQ7 zqGT*tX`S6X-3Io=QeDcj?<&LKW|#A91HRkc<{r4^r7x`4Y;mi+ExKtNzj_=RG2P)4 z!WZ&Rcj=$2qxNfo_96}1tm`W{xI&6SSSWOeG2;A8O)GeNdA>P%bad3QcB*dN;Px^O zCLpY;`eJm{GAcTnEJml0ryC*ge#{t&rONje@sFj?(6U%+dLTsiOV&rx&t z@##RYP)$xvO;owF(b3UKCPb+j2spY_X4ltiJA^Dy-_qCjlaiHP9x>N#=VfIkkx1%` zi;Hfao}xNB_z#W0>5EG3YxjC&K78fCokJobBK-aR(Ha3iuJrf!V+@ydQD0x{!PB0l z%l4igjNiYwV$4ESFFf2UN+&p37a(C@(#P3u1u~KcPx$HdSW8ylmoZEWHQk{HZ<6Xmw}RY5v>`j)&2ua3MSH-n;) zAu#8xewS%#YU%}fb@i;zh&I^p@GyjlsiWOdF%^f4)JpGeOW=?}-$rImRJyY9^Cx|7 zPvm-7Zi62Bd4O_p@mE6}b)^dHOUlTIDkw19zKBmraowG7#{6hFoPBtDM9x+Bi|Q13 zggyReRTOe*8*D=(bPrlrS9h`B#Y6=qr#8s8IGrFp1H;2HA~K}aquQz3ZrvCThsao! z%sX8D*9lP^*KNP1B z7xG|lxtmmf@Xa0!&|lZx%L~<=CPvaeUQW+46%W^IVeqXd(;OckcU72rd&`N!l2PA3 zK3F>lqtbKS{9Yb@v=9q6FToTWT~Z>;B&dUx?LCSjNP=R+v$M%2Mn*J^A`8!PqOiSY zTESF2KAA`al?)B3<-eTnF(|tZpgORBO%FV0;IjGXNU3|a&vsszk-`3BATRL)JVZ)G zg(I=Or6*J7U0GR2Ucbvy(B9sjO=Gx*n$Pt794ik`&&Jq$+fNv&SqmhGFC5dlIZ>Id z;>pRu!2vk%(PK=S`2Kxe9*{z%*Mt)AIt&&cA8%7?6|ToZMRSF_X>BO~!Y)pg6Bg{$ z5_&9Oe;!~A2{{J0q0-U`#l?~p6&1y0WrfP^?d?!8vD?|j~aJ^S~Q2PP~5C(?)s;UeIF8QzgQ9>;I{QW=< zyGD;6-vI0Yp98+xZDrn^ZQy=_l6-fK_@vpuch@Z{L}$)97_djK^dhcm$lb8{HG zA&^0~RDDz2SFK!!?AO6I;rN6 zW1cZXqHgNxQOZXNeZ;Ka0TWppDPrb-TTp=hwQ2k0WJ`@ougSi;y82#27>6E}vox8VhV6G2GbStQ=H&&_Xr)IcF0HB4)Yj&ASV&-GhUj-E(uVGG(lX@3IEp%pcmF4jA-PSi@+l z`b>9KxsSk&jR}p70!83E35khhK+*tn-LvaOW_eBnxf-OZ+S(-<5oU_YiM~H)C%}H@ ziriO@(z-4~rKI93DwH~scw-Zr9p}y5zRk8=Zu3&T_$gNJ+ud7Z7_abaX5iC8DBP>< zl$4db`}&s6{*Qn|DJ1eD0DNi#6cCt&Bk~duKM1X`2K*cS*b2wyOPmT0Sfl)loLuTm zSu$gx`n5UHnjv*JE+K*N_AT{o_V~CsAr+O()`wyM(LhRG zS5@_2?z(D(<&FeQI6Itk{rRmF^Utj?>~Ni*Je|9qdfA-& zzuSnL<4rM`>wvAYc2#j8Nphix7Dq)EK0fScAfw;=>ldweb#*!J%r^ApsHG(T+L;?% zA1RVjQ0R12oJT2Te<%5gZhNWn0>ps6TUuJs*7xt5122O`w4#(2M0%AH2=j9B0uTtq z@px|~{Lk^~#m%;d*D>mROw%hXE4csuH=)_FDIE-4*?$=hY8-*ww5<=h1`@ub+ov`i zXcIWI|LYt5cO@mLnNNYT_BB`lUluN|Sb`)F)ss^)>_QR}tT*eO`{~9_UXC+z(HXNiP((|kAYXZ zDb0?r3kzcq>Ec%bo%*tsfu3D^U&w`@Y}Fne9}jWF3wXG>HG%dRZC`}$55cY);^N{U zAPC{6rfncCf9$RFVw@M-;<=NIaz#W$xOJasJ3BkKwYBZ8yu82nBgYq{Gnz*`L=miy zPbWMpD~lVW$xo16TwRS-gNEHiBK-pb;**lvd3lmzbk9%Ibsqno?*`21?(cVAXn78a zYT5!Eg4vaFex6BAmrMY&)bv;90~tBYCNhJnoVYkpfF7!#a2&{McTdk&Ue>=;q48iMMkxYG zvc03$)YhjH<`GLEj2!d#mQ8W}0M}S*jx_tQ<^kqXr3rEv1I)OAC9UB8@ zv9_|mKck1;uDey+X{JHxO05#_hJ|SsnZI(GZ;AwxIXyeO@J$+Y;kx@Ult3V?jeigX z`W2OvV>G8a;M7ia&feSeN7)(`ja);|-vsy01AYRQ&mZ$xFK%qa@9v^MErBIjB9UYe z9LhnPHei-!a&mHDD5m0U^41?5-ulipf|$Ms?BM3^{s5dez@!L7>BlF(+5sYoMB>G% z07yFCfa^LBZ!qH8+PT{aSS(aYi8Yuenle~eSeW#4?u)K`WMm`;3b}M4 gbKZZ?-+ySYoa@=RXf98HzXB8pLoh($ literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-76x76.png b/assets/icon/dtp-chat.app-icon/icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..cf2e3b9cb03018fff033dcf276591aa17d2201e9 GIT binary patch literal 3179 zcmY+HcRbbq9>*m!ifkvN!!hF6LY%V4afIXOWMs=cWc+Xve%Y%-4jp@MA|uKwGmdkF zR7Q3(3YC(PbUz;VkNdcPoO2$ZKfd43d%WJy_v<8@n;M=y135!OLvt2sq-OzsO-?>c z4B&e(6D>_c!>WkX)3(H)+Uf~6dAobM`}^KrpMTzP?8O77EVljoD_X|m&;aqMH}GLD z4o2AlMm^PlJ^_aIi`OxXx2u>B^sZIdCbDtbiBA}rE02gfOD5Pt;$iD|XZP0r_+N1G zSm?tXY;@TZkJy8gm^UAbG&Co5zm}rasI6)s!YN!lJQn8WS~qTR69@z&V*d|uiXw!- zaOch)ag!{quk&4ZA(mE4PhK92sHl)QB}~UiViFQc_kQ89kF6q0OGR7Dbc%XaY^*W0)K{~QJdZ_UKA)7qko$MUWOR@Kz>mKdfA?f?E=YEkVWy*=NBa&m(1 z?(Sx7eR!6dmnTqRR+v&(WnR?TnRj#)1}`Zo85$YUuftBfx3sjB58kvI9v+sbP^qqm zKR2e5v?4($7b%Kv5JKGMCho1*Wgqlt!By*496t}Qoc+rCI@_tFGxRkzH4W?UYI$wy zNUgZV?ntXF6Y-y+SGTvfS3Z4ebRIaP{?B^%P?~6BYHH=pC-zplv9wKam!-u;En5kS zA`cM;MRI_$Q1dl1XJ%}urUeKj7RytMtrNL+O{knsju}cPBqXH#ZfvZ3bGn&Kq3B-f zLFo`-=LFUD+}y+)8ynTs)t%F_vW$FuWQ>{YMdsRrM4`|~kngXp5AiT$*2ZpV#QqXv z276~&Z(koXD{Ftr^XGhGbaD!Ea&mAGt1;7mTXyDxM(9sTet!Ph_Mqg11STFi`v(T4 z#bWNS^Pn;^gq@uL0|I2=O*zUxFtAkYX8kRwm{@G!+UxV|>{_9r>IDS_2yZD|RaI4j z|HoHO$`A#Oe~%H9^>!{4l8o|AG&<6>vb4VbTyrw7T)_71l@wu3)4-7JS*M@t&w3>>FJ!K#O}C&fB<<2L3#Jj-a_Eswq4GLR-X$&K|#tltgMD&S$I8U zH8l%?GIFHkHyl}WOG4b@oRTFW}5pvT5vTMnebg~`_97l7y<0?$Dqu8S= zfbi~PYs=e^>EgxX9t{s~^J{8qhJ}ZF$|4W~At50-pXa+YN)1z2tvRR6jf|KyLbhGM zE%x9;Lls?Kv8wpY=%EgGzYIp6W@KVzEd#1E$x%)`&3Nu2l4GQ;tqpB%ejg-zZ*My$ zHWnPT;?D`<-&;;uxw^vA($XZ)3kaA1Z5r<%9tNxooi9+0%)dbwj6FYPt?%g0{r?AA zBFqUC^KLdX7k;Z{vOyB$3QANVBP}cYN{30i(loz;JCasgTbl_guf)gNKQMsCV03LQ zEi8IV^poY&Z)Zbw`lnd`cj2^!|Cm@S_UOQdJvaYRXR4O6LQWo0p_Oj#$agTv^Z zmw)00sxg&J=gx_Xh(rxew|Mg^xxX%JZ6#Iuyn4VN_N|9;ig+gWmYv;|h$FSc#Kg_n zHco4jXMIIQoMClst;_Mz0dD4LV&%y6boM|pZ+b>XOkH(@4#;hYLUADz#kjb*{C=!n zf3d&Jvc2$f^kbfSP}0=Y$;38**umY)pFYLbF+us%{4N$37e8-r-*JFIAPs(gep<}j zb&FeDglErG-5kPqx%a*5E!`ewwlwR^nB@fLW_W)pueAAH-sVjR602ZPB}VQ zD?FLx56|wnC`26LGt9qp;Xbqy`up{~yuBMe7G7MH#y)mjrDg*RW;#S5y}YErv))}h z!_sAym7K!DsW2oW1x_)^R*b!R@7D=_K%~mM$G^XRTw9Ch0OJLU3KDPioioN9A0Ol9 zJNbo$h2hxxTS#5q({-TreE^1PVf*sa)6<=YpKB4r<*3Z5Mi<6Z4tDl#pjxzX?Ah?6 z?}G^ZHyRcw9q0z!ww1NT<~l|_KSfX@_#5ok_8bM^*x1)s7S!@-zoYyZ2QM$L+eps9 z@<6iZWWAtqbwe>Dn~>vpsUaH}Qa&X&R+;I}yGntp)M7B=-m`6i@fjIh^|#uhU`WfG zHP}Gq83K4l+teNIWiIzJ%YK3$cFYD+suWNHQ)Lk(5k$ z&&0;&ej<$NCVC}nl6AA&Sx$L;Oc6U)oXy&((XgCrSSKY#xo6C&(&!Bv!_<3;bu`cIzzM)wjVim}j*E>j;Eh%%lND0==p3uOBPj9!!PoI0FHB#wEt zJSFMQ=prJW`r;bFz?>|Yjt-4co52*pZ1o^1kg7w(0X>k$^e0LtV0YiUcaH#7oYR25 z0e)KOR2CN(?}Iz#q#h-iT|0 z^qm)(Om+en0Es($NAbSxPvpFG=@JwMqho2YAv8BDne{@qp!Vjnva!pD0Lro@O zVF*><*&?x?o*tNlM0$2MxmY(|e!@eURZu-6CWbCAKmTqJ?Kju*%j=uf=ALf-v9s=08Vv;e0|l|7rnmjp`)WCDJA9HegBlewJ<&;5x?Qsky4D zg%O9$`KIyu9v+gJat;;Yzkkhkgs>?gi5@c6q_)sqsn9N=a?7W0o_bD9fu*$&@mt2z z)6=Tft|J&g-@@MBG%!0m8*B~m7Q?{#`FZ7_{clbj930R6KQf3KrmQrNUOTD3Ri2uE z)NKk0jm5^Lrm}%fv+^s_MfY?Av{yZO;(oC6Y5gB{@Z7#!l!Uw+l`knd*^>bH6L|R3 zGb}93qaLi|h6eeJDKMQtIj-*R7;rh*Lp=2K^bdqJ3&zIG0ZfL+igm{~{>dPbM35XH zNPQ;lOj$d>z(8GQZZoYqtcx-P{dut`dVMz(lwI?9Ulc4Hu-wM;#y#{($BXoUX#s^D zeEjdKKkF|gZNR+zj?rr0mSP88uO*Ol-=`iJ7kawif*VmU^`usUb|0J$}fRgrh zNOMz@qQL_`ZA@fjBmkQ5Q&Q0*V`Jl~ju1KUUdhYA(kUt`8eP9GCL%%$rISfaP8QYB z$OVq!F>qbi@8a=(t5p6RDH)joSHyzZU#@F#)>sc))Ruj3f?A0Zb4-~a#s literal 0 HcmV?d00001 diff --git a/assets/icon/dtp-chat.app-icon/icon-96x96.png b/assets/icon/dtp-chat.app-icon/icon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..aaac378bfa805d9948f83b048bc76ba9039ba2da GIT binary patch literal 4220 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 literal 0 HcmV?d00001 diff --git a/client/css/main.less b/client/css/main.less index d4f9d02..d93c7f3 100644 --- a/client/css/main.less +++ b/client/css/main.less @@ -2,4 +2,14 @@ html, body { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; +} + +img.navbar-logo { + width: auto; + height: 48px; +} +img.profile-navbar { + width: auto; + height: 48px; + border-radius: 5px; } \ No newline at end of file diff --git a/client/fonts/airstrike.ttf b/client/fonts/airstrike.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2a751aa5f5837e66c3a6496be5e66666867b80e2 GIT binary patch literal 32564 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 literal 0 HcmV?d00001 diff --git a/client/fonts/airstrikecond.ttf b/client/fonts/airstrikecond.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2864c12e364d2bcb32a6e9f741938121405c8718 GIT binary patch literal 32516 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 Gul#?%|5up+ literal 0 HcmV?d00001 diff --git a/client/fonts/airstrikelaser.ttf b/client/fonts/airstrikelaser.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5390476ee39f4bb1916bfe0b116a57a81a777a82 GIT binary patch literal 34632 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 literal 0 HcmV?d00001 diff --git a/client/fonts/airstrikeout.ttf b/client/fonts/airstrikeout.ttf new file mode 100644 index 0000000000000000000000000000000000000000..11e04a2ac23e8180fa922c40fc1c87c7304a036a GIT binary patch literal 55928 zcmeFa378yJxj$T|s%x*VUaGsQ_pN%F>Di~JyJs?!OfuP50wf_}Nq}qwfsn8SxDZhG zO#~GIK_Gz2qJr!QxS${xT&`XfMG)|cUPW9G+(^y$JEwb+u-&UZ|KH*>!O`vyj(+4|AOA>AL*W>jH zye=Mf?1`s*bwh0?UZ28o!t(cR+}xeCKV) z9&yU?+^@-}IqqA-_V=mbg4e6@`M~j8PdM?YXXgE!PK!K1TaF7vll02s+4>Kx>Q+aplQB zadoZ&+Tc1sn~V-~ofwaBRnTdSj&fZXk8$0Tf8?ffJ)kof9p`#6p2_ur&SG?e>&JLD zH!%4IH-{Spoy+Jvu7>e^ZU}S%R|j3l=pwFx@nWty`8v0R(WTrl#>==7(EYe+pvxKE zpBu&a0B&sZ58Q#=bkG%yuH~;|}H~Ko4Q`P;NHHhjDX2 z*D|_}n~U+`+&s`DxcQU6=Z<7_J+}bk4ctP|joc#8O^j~l7Gr!Aw`B5n+!jWU=9Xgo zK5iN4G2DKj$1-{xw;bcG-2R})gZ`G=#vK5b!i`)y0zR2B#@k`vzpg-kq0sRj~f5v?hk#Nvr$DxJyZ@&&h8Dpxu>t6kka zy?y-ygSDZ0qd7b>ZFFqJ8%Aig^Lz1S-Nb$<@+CS;EI*24qCnD;6n~Q zZ0)+kkKnGl`s3H#a@(Ev-gDmr_docBM;?Cki(mfIS04M?6OVuWU!VNuH@@}lqb}Zg z=GiA+cK3zna+jXNU2_LkAou>)2B{Zp()@YY3`Gs{oH4`qjy|{LtIV|>D6TW@1K&OSNngS-GrAQ`IO*EwPrBoz>y=a}(igG|Da+vP zqDD^eE?q1KB95k*m7o=`%qB~{yKxpblQ?;tJOi7c3%ZN5W{}#T9gPHtDRdEfD)pgp z@{Wzo3O%n;GB|_Bd9&wnA~#y6DEAVasQgu>%dsLp-Dk&RvTUmS#Y(pmjtB*@mXIzO zmeZjHB6`#f$1_G&FoJd}5(rx51o$Y4iM|4JEWmmh<;F4Na;+)4&03Q_YIuQ%?6Qa3 zbm^$ImA%ilw6@ZBO4yS;99|gqzIe(78SB&wGv)isi%R#GPQD-=-f>~tz29BvK9GFD z%@<#EV|QNc!=v;M(X;HJv6b;%|oKXTw6-2A(;S<4Qy2E?mK2qh2XUX%ev=I{8h(ogv`KE%fr! z${TX}?n%NPKAE zl;n;5XQzj|5`lcJXe(E{^9nEb-#BnqW_o`{4CRvtsn_^Q-4*GDGkiWlk@?N4DhLlM z!5Ja-`LyaIGVhaSco(Q$UHKV-cs|^8rVSO(J$GV!My97`OY!0U?0MFCZeu(t#itDx zoczkcbIwIFw~4TB``Erfh0Fet?lE)?Z@`|P;0A$1siSFM7Ct)dcV|OHobg( zsL{lq?3S=+>m{a}-X^-boEdb@w3Zo>O+r`NIBC%DGI<$7fZhz;D!TGY@7%W+Z@k;i z4S~3X)JZ`R<6=}IL?AvXEn6b-en>Y(WS;Q6PPg#iC*5zdP2(RRnxET?i)h4Em+uh}iED|x0?@#x~ z`a3d;j}T8)lGxjiy?LVKmAGuEBLA$;_OI;SKi)_8=U?MD-m?2Ta)wX%qfa2RKcrJ1 zNatly4r;>BWy91&ACY7OuXtV%gb%+lFoL5SvgCBTwic`AWJ3~V@ya)}cxO)0CB@I) z85j=kHtmpU@L(t2jAl%I`cNd>5!Lm4cU-e_m8d34Z~ECTlHlY0w(1Yc+Vmm%mZ24} z6Wv`?ybH)HUWDqY8Q`N&f{y}_C?{}dVO{p)UhxpouACvYl1V5ZxOpl*8}uGRdN+F^ z!08L2mN)4_1FtmmvV#W|_M>#KJnlZWnotC`gPquM@FK(4@@;Nl!b=*E3(@`olaOas zL&rJu^0!RE&y!0qU!s}no;U3MZrO+;`^1nMD5$!kDUxjWESg5vIzzdigB9v$k-IKX z?(&>vDZ=}OSBtar-p=v;`{Ocnis6%VN7uumPf-HJ(QXnLTil-wiawF|ysMPkc%Dds z%VCbdCJ`K|Qw)w6aox=Irp-jg%tlNjZ&(pUOor@EGhkKn(cE}e(=R{f4C|(eWkmG3 z2lP3m?kKLdH*Pwb7!LSde<11xBB`(%$PX3$N=UWhl8=ZgR_lkMql(Z`5qOR7qM?{F zno>vmsG-j($pu!d^&E1I8=q>onEnC!)6giuVX`(De5}80S z-$-8Dziv_Q_i~FD&u`=h56DI`u1Oq!iYL0`II0qq4QnhVgn7Ym-1@@)iIoGk&&+1x zs;DLlWs8Uz(+QUIPI^Xh_L0Z;5L}})`5gHP-wj)2e@MfK>Fc6AS({?KDAOC2I`m63 zBSu{)k%}p#Nk)ja_`Qox33m5QC*&t~M|}n^uQa#Rx;#l#NhFo?tAVf@8f*@CC&N>h z=Fg`sqDi6@#kB?Ujl{LNnbQVKQ8JiYyo6m|j$U3MkcC7eWJ7gd^V|wN-AFpi^X6tSS~oJ8O3aE_Ja8t7|%R+J()>%@C{6HJ@uf_s_PCt^g0}?F!>nwEqJIgt{=y08)18O3~oqMrqZFU zE86B)fJoz7U&3~H-tal8q%5mC1b;}-!ltZd^Dwf+Tsk|f8~l>E>tMTFG}7^~9*$~$ zjp%-V(lI0Hyjcv(v0P``73us9b61j=Ng9?EP^?lOVhdM9#=Sp(nn=Ch{=mOod42$Z z7!NCwB6*hrhsy7B&QoTs^LBH#Pj6<^Sv!)%8A*P@iTV>-$a12I-X+O$#tv0XEA0ey zMKVH`A{#j~7|C%wP#8{F&+Iy!O_S7!L-M49AA5TDV=}+R`^)aDEh?-nKD_%?DzSkt z3OVdw03x)3SyIhC6Nia~Scb-KtKT}d&MTvJX7{Z}Ql|$B(TYK73xq zCr>+QOa1ibVG||6OArW!bioZQjirN>_aP2_YQE&^C*R?P!i<%*(+Ah@-;{;Y z%r!%6hmT%4{JPI)reguqPMM<4YoexUv5M)WO`-24 zdN7v=nocI5;2-gcs!x;YCM#VGNm9y87`+qK$l%hoJxP0LPG=A!dbfd#l2V|JA<~<4Z#vR@ zElPQfPCJ`yYSmYI$#n25+JBS_+i0azC+uu@M2 z5(POXMd?zN8w1oAbjL}pjP;Azq#h-fB&>S2e8CxX0aM$t##V64V|v&Up`I}>8`Y?De17J5>+B{kS+d~yGPxC0xu(^!$pvMhC)6D{{d^=|E$dO zK0!Cs8ZS><)NRYR z!?%Nk00#^FArl0CA-Gv2ebMfclkOg}VIeye69PjpvW7(kh8hOg<3^eP5EeDZjQ0lk zH<*|pd_i&q(MLtZv${qCqAIAWe9SForyWX)O2mSjVs^wc2`X(YJ)sK_H%eCmN3(j$ ziD zvyb-`4kk~I<&|YhK<)mOzi;}2va(_4{CM}mbwl1tEQvSusQN;!D!*(=g58Wl(0UI@ zZWShQYe|sv`q#|qjLqJ$R&ghWyU8IE)^^YikTIIiv zl|+Ca6~jsv;t|u;6UCk!wZ7g5@2ycU{2{41LK2mZ;=b2+k$@9LwCAFSJANPK_ z0eFPq{oZ@i`s3@b|B=p8k~@T7MXqDkybh_wk$f``Et!|`-@=33=G}P*S^g_V`@LVB zLt>9HO31a|qaP2QLNcec>~NmSJ$44oQl;jI4iQ`n!ZfzwiS^zuB+_xrZ;$f6#l9JC zC-Hl`z2D(`sm2cBlf#Ix9uIDNC;ClS7o;ba6@0Qr+uVWb#7(0XH;}hBINmn=fQ{Fw zK%}N1yN6Vq=Lad4O+Q0HHi*4Hn`Y9qR)tXjnt_;Dcw4K&bnZl@GJ-qcG6g!47%~XDk z0vxRy6=g@G76CL`YaQX6aV|`^kuQ;e8iK9}Xu)MtvRDbHGa{VSL{X7@I!+B_lTk?l z(3_Ke;V9svP~?DMZ>`pWr4?w*Sz5V0*k5l{ld@!#24_}o>_~+RgEy@>E+NZ(bN0(B ziY$Mwdf>v5pstMUcVJ?@&+n5Ik&hW=-6mQr;+J483S!uf8#{7E*=GfWj&ii86R^To zAf-Wg3kC%l{e~FK#$dtA5vU*Di0F2vQ*!df?8<7Ys#S(?dUj`27++ZN`v~7Ne@%D1$Ke+oQjdxLf)h(c8s0()&zKo+NdQiI_cQ7b;xAWw3IhApE>(*UYd5n6fCO0}8o7wxfY~ zvBRuC3xmPPrK5hV9dCueD?+-M6XCu{%&HFJ%w_1A4rFl5MciO7g&A;Vamvnli>E_gk;whpr_9AXxyPwqPrN(GmkT`! zttTGhHR{c{wS^6DfW)7r?ukMzm&XqN3Ll{GHuYStI@J3kxqEO8IV}6V*m7zTrj=17 zCtD2jiGeaeB7Tp>T|lIVqKklgv3}U91sFk9Q+oqE5DF`{al}3F1a3Noj-#jVHK$cO z5)uVpAeQnIF*~p00BUVp)P7!4Y}hXa-L$1hk$B43Yh1t4HlrzUK=dHs{B*eIpe(hp zsp*`Wm9q;SVIx6dfwoNzUZj4Kh&vkOGF%Tm{}MIzsnlkkKo=3Iw6>VX4)N4-(FJAW^cvzMI8xm$RioDU=Y(|%Sh=TP>*f7&ZFnZb8%0`^LGS**OF<3pgGCY6xtBK*& zGtSo(Ijot)XUas7c&nHWlc#YX=(Ut^EeRSavYD_ zW&X$fLZzdps(Qb$OC)mV12Wml8-AG5YN3!Io|GcblW01v5*h2+`$+VW3x0fXgOuca zF)QzWi4TXGLzR)jO<`ZujtIoarz2K4nb85o8T{}WE3e3ObWtO8&-pP7bKmo0Fynil z&z$E|_s)5bFTK~gch5HndpNO#j3?^(wVd9484{v^GGG%SM@#|pm{??^$z=Z&C$fDi z0D=nqic6;*zq-*ed(9v@FV)Py5lF?tk`hk4p<(-dB$_Gsf132(43rBoVupQ!7_e+( zH_TseMg8!FT_bBxo^j2qhbvWtl54AH_pDty=*~z56S-i*2zM0h=|Z+#)-0pi%F;ljg+kdcr;Ku%i>zejMY>m--I|KLDK&~5C13W7k9sU*Im|~cam2gJ(A=Q4C28n z977hfKo+?ggTId4`HCJh2ID17r#2WFEcr_Lj5BF&wxvxuox&@?B_IX;*7s19BWtHDk((+D!-+ID%QU>}p zu0KRG7pVGXr-KXwur)nFL^d&O`6xzer1*rHj9JqAe!S7?8DBjy{eaOf`_Owf$5N~7Z)DgYo$*qhSZ)RL z?bIr;QUS}@PrR@IidXYK_Sj$USn5CU3*UHvEdGY~)dTN;fDZ$adCmLlQ%_mXJ@>{N z&ppRx8^`3wa7-0hjT}xsKM4B*=IRWrP0Rh+=g%V@Bv!2Wz0FDTg-|7D3Epex{Rpo6 z<=JXgv;56QC)wIQx7TqT#tnHFaoURPT6r3c14Fn%EeT^L!*4?eiLK0&0T9{B$EUwDBJzx0yz$3J=z67_yXA5-g;@)|qK8a*t|6c>(z zTCR?XwjU?H?iJ5J?!DP{pt-s6@&orC)%ZC$?8O&%zxu)p7CY7}?078RNYU#&j#og2 z(kHj?0rz{5Jjz9uyvvAs%_X>I{Adt2anu;cnY)LvSMTkvyP<$KII*l^|Z}Pds>)v zbJKo(tJbHd?F(23-vzJECl6lIz3A|v7FbWO0d zEKLG&`Ms7!6OtYiK~a4-FYtqHQ)2hakGE`z>dd9Z-LuK`eXWN21rtQi&l@ebY=!&D zQOr>AKEa16wCr_9C`AE-dst76H2)v5nTXjCE!X!p>*+p87-J^S1;nT9(Er z!RiFCxG)~+;te3dKcmrnDUgWFVgU>C6?IOn@p5qS$mV6ef;_tFsQMYrLuVGf)BG$b zF?IK6#S4~#n=cRzad+!+aw9L~$5zzN7(8qs;mq?(mS-^4X00Cr}z;2@C67A zaO8sclTi~9i-50jT-WAAxNq55)WP@l#RnG-IG<|8Bw!~~OC*#i1a%cmCIT4{WnU>{ z#`NylJ$Cn^BkFooYs{~P6057nQSXULBm*2EBckRamzX2;{v(@aF9XO97Al+}pgYvY zj3P8d=R=s{fS%7qQa6bF?*IH6xwq1v)H-JFS9uhfeKW{n!@O!m^HD?eK0QN!?CFQf zs}}SrPG{a*b3Zx0p3+6{YCfFnABpwN?6iGf{M4t&W;K4`<;W}8b*p^mLqf1Pz26?J zrkI>Vj1t*DVVonf(OA|GySG#kONfiGgq>FMPYXe0_!Gqwf$&wLbccOm=zajRLk)yK z+IAw-&MdFzQ6OL8L{~jYe%3SFdtB6HEI*|9+%uKM<0V<951C_%miI7A*WrCrIX(CI zc-$>AfyAEOf69#YXCmc#{$b%BC77%Z#_W+ncYIti4EQbZVWo6;Eh@&Ey;-%hnhU9t z7_K%NMxj1EDaJ+yu(||M%dP0I43Ec?BmEhkO41uK4-V#mMH3-BseXkD?IJ?O+DD%X zkDY%jNdd7Xe^Dwuo!Su>_%Aq4$rZDb*J+g8IJxWmDd?6eOYd@vY~8CQSp@26eA6m? zQ;B84)l4A@IY@JXptPa8=y$eIS!&u=uzF~iaB9i4^(Rb3>_yY}Xpr3f&%5)*ups6W zy-p=-%bV_585@{!z{u8#HFZbeMN`F_yrcr;j7>Xy!Pe=kXAi~JJ@-B$MUr`|H*AZ( zaHaSxnOwJJ$S*{+e9=l}{Uq|UnMckp1adUtS{pUY}$~gDe4oS9o%>l3`F$lIkrz%Op|8|F4K5Hfuv_vsIl zgTCMmNRAzxyG#jdCkcv3LWL+WHgfwDPgt+L<{f3E6Cs?obltX1^oe}_rF|mJES?XO z9aaIX1Zv1ID+WT;5o_ec)4Vsy$kDG?PbHG~#4)dz2A|qQ(odh?|MVvB#izDxp#a=b zM^Omw!ju2_`iUn}6prV5*r74@ipt0gg@~_&-*3LaW{@bBQ{}3HO`%iXY4UO^HYHhfn500maQ4` zcKl{vGjoz77q(5zN$-@Ywc=gAk5x&w?g@DCoG|$mzky$ks4p^CsV9OJi8b>!CkY9x z^v>mfLrzjUx;wS`Ctk-J$i(8+Tt2~jKS~mv*r}94fZdR5KCq&-V(;TuhnkIw_lOT* zC=Yii6S1shw&f0yEt$?PKj!XXOyFs_W|ohT7m%|^VaLn9`^tBcU;XOWXxyJ=0ANpk z@?ZIl{6VdA6=5ol;_g9?P^=85BbAjnbNB*GYLZjDi_{8EcEL&4^SWsWM9mlCJSiu= z*Kx9Gg*kB_KYOK;D`aJ|s1X{jSIBH%)M2h0J6Gzu;WE9Cwa;}5ud!(UQqyfj>i|}m zK1O^}fEn9Mvbn_vCXg3Km&h`^De>73zhCkJ^~lIzWmVmuJFW$zRvkQPMQRLC?;8fs%W-avH) zo4HP?1ZqH&BfTqcCtLcwZ=OR2&ktCId?yw~>U*&y8oqefTuS-vfD{eWwnC6_vk-NBS7-v(B$>;S zDVNEad{%+;NsWf6dld zh|F1k148vqfa+cGsgm8sr|wym@ThVw}Hb{1d-%iV65IXzGj}Jrsq(IGd#iyMA!o`a& z`N`LJ|9)ak!;$5%Bt-}IpU#s9@4M*4i|)HHfQkm>C6bl*@?r0FUNQ72?++*xWIM|H z5IKJLt4^hs4(CHsC>4r#7a}NSz-I5GNE3JBLLeLxe-A(Y4e$f4f%qpfwJ$O?3S{b4 zAX71P58)Wd$$%*qyr*Gu#QBh9OM^NT0HQV4bjW{O$`*6V%CoNp76m*ior)6gwN)QF zZ}<@Zp@W~jWfh7`;`uxhe+<*lf8xXiYG+S}!q4@0b!NPeA=nSZC!4f>edb@Szuxle zNG6XeNh@ai$m~j^32={}e0lOT@*L`U8R{YP&k|3EMBHNDy?(%+no=|=B`Tyd}v z>FyBy;(nRYHAmxl|MYPxYFc=5;Uzt>Lo_5J3#4bj66GyDHgeoU<$|CL4IKtDo5r8W zDV?1FYze7UZB6Rvpl5>=NP*VRcOX}RD*>v9yrU7X3cbyE(8*$(XjZi=4>^eWBi@f< zkv2lWIH5*iZ?>UAo{44t!)cV33?6yFbpNg$S$_MDaG-B=c9C3^Y8L(!&KnQ!*uwJ< zo$}C`w>&AxljQ{!Z@==q=>sAE-8*moUT|X7hT4Ih^RnKbW#RT@ZdS^4r}ZpKEzXVh zB$2gX2Ny>LZP8(y2(lBBJ)`-pn|r3YX7(VI-{E@l?P{+UO31QSr&3mFMsejW!G=~M z4d$DcdL?3NyVA=*hFK87Fjnf7%c0Z@b}g;-LZz1*XJuX%gs~=y0o|XlS(%qBnG&t@ z;=paEb8+Dj-h_u1z+LVH@;4KmaSlM8&pK{B`mB7DM9Bm>4V@UyCg+h0$yMYN%&{vk|w;D5+?uZc1OXGj~Q$ROnf&_WZP1R708LaCx#pkWk1piZHJ1R$rGB~u@8 z@dlv90I9X#a%jc?D)h26qq>jQtRs0IrFs&Q5?d8}v}#Xo(m(dUQ9%)?>);SlYqv7K z1G_fyhqo#PJn+|azzPn&4WGh-au8TWF%kWcEj!4wA3}vDPqXI1Q1pv%0|3hx=vM|% z?f}3OCrv*|KRk{+{MsO{8702-v*miF)-18Fl@V8$Sb`Hy9K9T{69(W(Tp0V`nkHwQ zN47Z5k^RT@R_M+&|8<;TfO*9qz*YK9xYSysDdGE@B^*VpAbqyflrcuk7nQ*{X*!K2 zsksdrGRF7yH)`a|DE(1hsIk@l`e037*jk_4n2p1-)15M?1j z{5i)brG{dDD^N_QO)1_Nad{2F5wjTg=^-h#$_iO#DVgy{B_vOpx#)_CX%hdw#>Mf= zRAqZ|xvYfZm07;f+_`hMH9nZVSn;2cUplQg?h~E4p>Q86n0eXi%W44_3yV_W9RdGE zdhi3Pvm~T;^@?MG&}cf&4`w?;x$S`Bk1vEzll|7A$oT3Qkt~u5qgZ*VPx1vf1!pbK zZqFsUQk`-kKP{ov)O=h@bXYsJ%yzls*ig@Gd_%%amU24utdeuQ@5~ZP;f!Cm0zOGf zc7?Q|6sp1WiP&cK{n29!o13bbi=_QZAgHQJkw2yc|=)-GzR6lg}2A3T0ul*u#rbpHZ4eNYL%lH~07R8)wcH*C?CB zjj>o_ATH#V3=Wcwv*t^u`BgD1ES1uI0V7@LunW>qVZs;RUyjwJS}L29D=EhwF3gMX z@0YDXQI7Q>3@hog{klFwER0A6TT2^A_O#QPq|s53_IJ{Gxljv*MMo+aS&|iml$1oq z1v++w4U4zql8L?@dayK9(DI4Ma=DRG>(P*5#Cfg92qnVNz))6eg1@GzYD(sj5W*8D zw=^L6yJwe?8W0c-HLef)l}4t|jpXfA0NSZFe3QSTY#M9n>lf`+7(JBgv5%7uLnEG=xu;Xavv|xp~Y2D7^n|; zjGT#@T8iw!j>hsr7-Nr|r3LzL-S8H<+uR$Lq-&feT(^3i%+-g|>4awb;+c%1`c0^+ zTlL!BO^WHqm461OZdd_Tjwh3vWLT!6xo#S%j>T-EFC-Qc?sWgYf;y!Y_YvEvJyP3< z#4y2@L5p-ZB0l^s2m$uw0;>mSq8X*y13 zGL38WG-zv#+FmDYA-reBGPbFiPFQooVaE=IY`pe4*{tK_a?abHp(EGe`j$`GycSjT z$la4+j3Z)3l|IeltG>Y^8W-aqT(s;ddpTIb67Hd-0hfD9NJd%1-YO7V)Fk$}XyN z(I1AVQGW{=L9J@-J;!851CG`*CZ>)}kALghbCeJs#n0nA*r@RNu$l#keil(iNF1d@hz24MSZn@q zzqNucHe^lgn4bzAS4UiomjZeN68wy_5OrL}%Z50wd-O1L>A+AGw&Xd~1|WOYcL}bF z_Bl~tCk=zsuR$-RZ=hqAhurW%g6yYKJ&HdOfA7)qB+6v}R` zAU|pj@b?~#QGg1zK1wsaTS*tRG0Ie;(|_9;!ZT2^`7OodH1kh zDo9uY)F`uFDrCM&+pA1%Qo<6y`@&Xx6#<##26mG89}@DwOWwbZ)fcGo1?8F3m$tgB z^fpohjU{SgX|+F7FSBMV55Gw2Xtu&$;WjFT?!mZs)NcvdLZ84$vUp=es-TvC|Q;5FZpwQnQ^; z6MO@Nmkjm6KQGbmpr6Uot}gq0hJS-U=2N?`Jl`k0{_cHR0)JEEmSQ#6yKnQBd{3_T zZ*AZr8=8cOai%Nje@7D+@ojxx-gT#aI=x7KO=7)XvRz5zy}P}%akqUu<-+fZ9!;o?AKCF)}Nj9PQ8Yymm5@`+|n=+-@X7 z@bD?N!wtRxGn<0+m5~ob)$cgc3}C?1Yy+Btl|`Yzcajq*(6ac5yeU3wzwXNw+h<{e zZ$(Gu`TfR_2hfm1;`{}D#hn|Zh+Y?AI|$;E?X&|Jx@P&l4OwVHHy*@o#@(Zd7C11= zVi#M*7A(=9I*G_+q1ut+Jr(SMgt|6PK=b|cEZ^V9+-_&6mGI6yPI7xNjbv%X$`nH@ z5A_PkLw|D7m!f1F%NtSC8Jl>?(Gw1CTGI|cb)5W+Bnz%aXr>A8 zT_QdFdG8nK!IYF^X{3OQZ$8>Qa#8n>BrzCqjE^px?@z~q8Lu8U+nki2+-(epZL_qf&U-+iN2=sI@uOlno)uSv&{^@W!&-vQfLzKVM=x;Oq zZTziHr4wOl+$fz6x1CO;lDF~b>Q$S326)r}k7hkTxnPnc+>)RC*xNxkDd*-DjiM&M zAs6ocjajXv$xrddRnv$l1^uHM<2ic|&+Wd3oQz7sYDMub@^@7;R;4iuG+;5y2CT$#Y~XuAAx&jBw|I*BRi09bM8itEI}lor zp)L)zwXFt0=vtSECHhpd*3M?_jFz;6p;%n?Ng>@S)8;@K-E>l|-au2`iNdhDxK?H9 zUVE}-KDP1*DRZ~2#?R3&w-nunRwt5#@%hB1kjBz z)zIHId6{>a%A)PCwtX21-MUg%khSf@RZVpzY{lQ-F{^YY-(t4!+mEoFwYjH|w{4=+ zc7(CW)CK5t$}d*wCRG=sv_qkeRvr9QOF~E8(~;0eFUb^>PHKoXB;4nYV7SjKLARYU zZAEAoSpO(>-%f7V_F?C>zxSfkYuPs^toK!zZ|e zs1Y|lKUgkiRg~Zp(t|pEq@fCeB*CO1zg0qdAQKC8C$$hutQRzizK&)~67A&Wk0t|p zA&4}sP%ah-CG#O8s-Q28psPLu-P!;ns7W}*RKEYMJ%dKLEBQX)iVPcNy@hB-+PU66 zw~-}%-mlIk(W&l2XOkg54cpnGd57 z&Hkr7@W0+37(%xDU&%Gl)xdVGW{u_(QsKnx0r*L<3YY}#Bk0;CUzj8_VFZK)i&_Q$ z@*&0Xg<;7`{JLzWMvD8PDnk|PN=TeHzi-!i8KnT|hR7?Lu%>Wu97)jo+6II0EVuma zwn5$fFO7p}^Zy^#!6mQ`2L3MVU_rf zpi1C)f-+qR92hC;h-p|&lBbE-0t||_ery-80{6iO+PZwtoBSh6Pa=Wtdwq#`)cb+b zn~2-N-bBK_@5#P%pY(os&^@c(w}ve8CU;bSzwNO5e0(7VWF9_WA(dNbh>`eNq3w~P6(F$fm}}^X#xi?Y2KyegvF^+DV3~LW_x#&rC3>~ zPo9d5^qa7fyPySD;w(_Vgd|Ov-ZUjhXtJh=GiV_x034hMU=>CM)_{O1MxouImX>q4_(qgG?>~@r03(KDsX*7n zz-p8|UvuyZv=X|eZ%5xrw3|?Ba85^qNI}=Uo3%&NgOa!H8m%<4w8jr?UeP$`oZ5=q zzx5oPJD+rg8wuW@2mmgeI&#NDSzGIoyS7NrOqbn#! zfuw$Pk;OA*6}StuWx^<7>fY@Klrccv5OAAIv#0xI+hxs^Fhvy_e4yZ5KRW*4V>P^> z%|p>)l*X#?3OixCrsgdG7g6~v8i3sL*)g6csNx9>j?PFNp!$Rbri6NSvUKiKG>XRa zPoVb}{)GkULDsehu#xys{Q%T?@jf}uH$@^(#6}u@fF{wJfy_Sd3Z#=N!{^z0l>t(}S?*=Ils?}=llF>kBUADi+@%lPSM+&aMGDHIZun*oC6s;t&c&NpdyRXRPD znnRs4Of05TWZUrh3@=CIJsD-CMg`y?VwEmp_~3PfaB7G@wQAiCcS2Pu90{ZI5CW!l zEm+bB0R3UfP0x9~Dxd7V`R}yYq?nrZdZ%ZWMSk*nw; ztB?^XeE-uY=)umXr>8qGs|tDWsgo_G`qYeUnec&(;>S)nz91;*V3`ULNiox7v0WQC z-e)IdLr#w-Zdkwmo+uh!NOC~b5%sDaWBOG)Mvs1~@BF8{ z?_YWHnEtVo$L#x(&)Y)?Y<`kdz1^o)|8R8a^Jm=j$kN5h#e|^rWDBoGBkNBhuytk!Y1<&$=ONiW_+8 zzvPDG;2~X30rd`GhlidzIXP`jF`lO-wOCzd@@*UuL{SqjYGP~v9(mI? z*~1xV75na-5l&lO4we^~WId+fUhzrUa_)ximPHj|RlO_#e<8X*{0PkSYZIr&?s9={|+*c9MxdpN_6bdF| zChZ*}i$MfuLQYyrqbD*#Rlbm+Cqo7F9m<+YJYWd{zTlK1At#j8wWvRYt~6R8Z0oja zn?Y1Tq6|_C_ry_a6wysI;uH+UifNr`E2?Ue&_V9RcPOG{r3qrRB)KJ^#L&t@k)mNU zj+Pnd^c+y5L2L*|h#B`Ai1(ZkD@P&`II=^@aPUZ74}~EBBPw!PjgT6~4bUQ1z|doc z?T<$dG!HiXw&P?%P7HjrncGJ0V<=r57#d;=Z$au1etrvVCm}rFhVEM69YXhrKmRl{ zkC*r;A61S`%)2qY0ERn#aa?lV%D!s}DScdt`=YSjg+tPZR&%Gswda>JTo0;a{`|h& zJ|JJOyK@8CumPn(b&9D2xDl5uU2;O41Zgk_74j?iX=JR`k!q?>Ev<1PCws5KeO!iy zyN7tU-A3~FpZIv_7gtXCsSoY(KOr-zm?Y8XZh5Zf(`S9U<$EgN#OdT3K7k{fh#k&{ z7rzBE>ssomfIsR^xh~TvJxx?-Hkwha7-;cw1$;$&R!Ly7I!2V2*k6k^5$s_~4xebC zVH0?eLd&%F*g;6BM!6R}h~$b2vIykn6q{0pY_Tam$e6TsSkyN%CT+2918n?~4E@~C z8?=3puO9*@fXFoZa8aqIgfbEIibpHI1o%}>fnRAX03l%m{b}OiAnm}12Hw%2rU*a? zBCxh(6I4)zs9RbCyaq~43WI;pxg;0>C(B{0I}y#AF-=3iJs^8%)>cK5vx-+rBt))_ z!UyABNx(9Nr7Q(P=yHPax#*Jw1#iiseNvFv9Tpk^?`38J=@0~an+dg}h59nGrh>)W0#{x1!{0s-aZJX#C8Z>mrNObuPaLO5E zfWMqP&_W$(|1(wx_ps33xDZ6)&`nldy zKfU<8!QxK$oO65fJAY4({mj+rj?Y}}ezMr}nd{TNm!1B*GuEv;H;tSx zL)0~1L-#232+*cV|AHzl{nLUHYX7j-)^N6P1^E+xhou{zD{Sod;}@Ym z$X&rb0*z1?sR7tZxS;}vCD70$8m9?s64YTiHwd%Jj<`2j3CnKZY$dv`s6JrnN;H`G zeb+U^y=GMwa6;7!z`f2L{N7ne(Jm{i>AXr*d2>Q#mfnk>euL92co0O>tXxd)b1@)VC+G zLAJA1-$ee{UcPAjomp&7D;JF>g@M_c%%`D=UN|}hxH4Fi7``*ltDPPOj%N8`ScW*6 zcDffVHJavCqd8wlb|fSC*YMLFcYnL;s~_WMI7dT7bb ztTr}pjuxZ#3m-tUJEA5wp0nMlQyx;nX zWP%AqWg2a*%?J6PsYFlVM@tm+6X=i+63}Ei2%Ti|d|C3LmGLOTH6!7JIx51d#x&nz zd6jQvBw|-1d}3y`N>(;T#mzc?go2+XCjFvb8p)wO0dGiwsJ=6d%rn|e9gW`nsC<;s zQ#pk8eMmJ$4N)*aQdMcSsTq}NX>_-f#hJv=fsqH0vn8NaIS={sDf~)g8oX6tNItM5 zrrMzsp!D|`$?YD9l6;B+gD>KPRtQ=eFF+mi0W?p=5s6vY0*v_UzJS%T9=w${_@O1==~8 z{}X&xipZg}5qi*4uO1qxHKnW=o|Y{DFrn)OX`d`e`_|s@tRW85Ozo+k!OQq0i*8Yn zg|&W1+?IkUtm$Rj$>dj=CNz(KqF5+NNS~})vuHa|6QN~l$-_{(G*~PZ{NAe00vdvj z&6%IMG!zm4O-#lqLPrvbKqg^5$Y;`*rY2fFLCG$I_5{Vx7D=LD2=Y`@P;w%Kw;GTI z3Y@87;uJO77gRxL4VD;E)Di>Lg1=TyHSIV$gGxUCqOfQ=r4+24NL&lY_G>iYU5?*3YN08ZImA7|n|+vGYH4C_9d!GW^KWfM z&`0E`^Df;8&@-WF!4z%D9L(ptRr(8#%P$AcqoU`gYNkXO1H2xyse&KkolHvhw!Xci zfmOKvtMA^^fZQ&IVIQuMeBp>@TaJX%3b`YU76uYJf5T}er#lz(7ivhM3*h%}EW?&` zIc_3$wfhAzU(5*jl^}AD2>ljCF1~m4na_Vuy@Gr)&{0YRX-kCTX-fo2LeWLgP8j^m za44zj=sK<%8t;UX5)}>+BOt-RQN8;=4nMRtx8Ho*+_p?8How#$>?19=(fa%57HyL$ zb5q`RfC28Ywy6I=&8<3}+Ya4^a~y<~AVtlpiIxu#lA?vivj5=ZBG*WeA=Y@f>V73S z7)(e8FNTA`P|`ny*}Yy5DG2Q9l8r=9pAb+?OWXa2e_(bO391iwM$)8^DoD1Oko<~Y zi-z^6pLiesIPDACn%&2tp-aH7=0P(b4p|_zVH}nm_xJKE^_>`Kh)g=OtyjkhW|I76 zHNO$?%BW%rJ*e{}w)?-&zp6Dc{8z#jz#6AK}c+NsXP)FIn+0}@juq|WgF-Gtd- z$8B$6NAl7R#gC_ydWAfvet19v|7Q=SgfH^`H2IZW6sxbb}i4wqI zEZL9+O=(kKxkCBv)2o!80puJl%{5nTMC5c?_Tbh`9mkVZ0($UBH)uga5oX*P$=~p` z_A@62ki~y0n^Djntyf?x?V>J9dJ7F@Lwx-6yES!xKKync{Z2T?a`h$EllIrRT=?O81??01&D&E*sxFgN7?S%0-sOkXxxaf zXYWD8jnbKEh#R>yZnP5ocg9;oM_%k7nA%D^sD$7W3o;?Ngy+sQ0O?r1lJ*|nD;4QH zyU3uO155j0%rR5mU`lA5zjI>W*+5>VEB3F5rL_WUiD=;;owzKWr*?b|@iu;+dHRPY zsPWDTf&GQPl;SAt839PyG4ywb(3@FC9U5&V%WOBO2KuVLLvtPxWSz}{n^+0DU5jX^mS zzpt0;d?$Xf4;Gq+2)`%;cau|5Nmm8$2|godi+S05wsG)}FL)$Mj%jmI8ikOB6!{BD z6i_+H+8TS8%MaY?y@EW&m|6uuvHO0q8X1aGz$hZC$_GOYjsDTq4nN!1TifE-?^ou1|8w7+VG;sLZTtI{pgHf(efQn--o5v{cka3W zdrmIQlW_#wuPwo7F&Gi{Akvzzi@lPaqBRfI%5)p+(KM&N+7y7Yn=h0HJ-{O-OHri^ z>aEbo5X;GwVXwqOE3BBN6iYb#?b?#yDGR>X)i^{$O|V!pGMtu7gBct7uo;GRGxheU zVrEN&Vg{$u(9ACSCe8UBd@kWE*=Vz_aua#13naLS6=v+->#L~&TKR}k{hisIvO`!R-sOn3fEfE4!!5b z3@dD9waa03M`0rmt4t_ZP@L6^E1-Mo(#YR1T^<)>-ZYAypnuPJ^7&0AGO7pgC}JCG zK*WOKMD&z;KhPrC=~nT93%}0#L8jGGlb!9n?%TD`hk%s`HNm873A;GvpHvd+Y{N7J z2AM4UCe1cKq7o$98FrG$hp0jTNo2Iio$9Oj_GQCTJ_WxRUXsW9X=MIc5}AH7(uAj@ zm{a1Vh4$e&C4yH-Lo;4ir9Qe0o`bIEopM+yP~+^mFvS>b*ph6ssyFZ6yF1qmJ=B_B z7>_TP*ADhIqo4k%L)4f{C0~=&{fv z@mhf)#%40J6!5d$qrQf>N)E6yh=(Jz8nHg3+sZN5)88rt2LbHIFS5y#^}u283`TS4 z^Em2)zmNF%WGheN>}CAQfQ>BK68_Wu_dj6Y{pN1UhVWz2A67K14%;jiXF8y61~Y=Z zrX(l9=ec^zFyV)3orV9v#k4;h?@)8_Y}ZK{kF#0eiy%hGZ3$@(o^nN=?ql^O$T(X> z3-ENYG9G=RhyXKKg39L}kH)FD*bNmk^1?rR@PP;IPrm&mEgEVtr6tv4qre51l&K*p zh6lDBydw{!&1Sr)QkOM26@E$h1kVDJvKDhaDQiM$jDcaXUqsQYQCT@u*9J}?dY1NE zsVt@wg!`!M^RWYoB?&kp3%FnwCi#Z;u2!_DlUo7Ck2|63I z#M(}QI}bxfzyAVgD7sgIVm>FViFjOyhVUsHplh5t&gN!6$3;j;O5K{V<`O!sdj9c) zt)B;1Uy=nAe67!x=Ww~2Tf^OQPiKK3tvc-KDvvcx$RWPIVhxs~C+y+AJl(qK?|7TJf*0&*6q?l3wg6h-Ec z2d+hr?W1gnes*}D<3mXLM;}2ZUf|hu>@<;W4sZ!=a6!T|;LV^DYq{T39>B94Miaw4 z2F8SH^rhHTfDO64e}p?%ys)sACOTLLW)<_V$i^~$9mulC*LRI@{~~^o$6F20+Pn@R zYe(eV*w-N}K~Q~h5s#iy9}F7mfXM_vHruOnVFknTH%2ckY}?}Mx=*fK)NovDZhTze z*c06A8x~H=3Ks)lRFFE^R#;qs_<+#Fhzcq?lM2V@T1|2Efodpj?XO$!8|ZC>E;u1{ zT-~CkRr8y|0L2;OvUBt7ovticd*f_LFohb8mfZY2>ts7NYmyqDUIau3wqTSx5CRUd zi`gazsDpZ0%o`UrIq}L3Z>&CUw#Vu13-U25FmFNXgu?XXajp~uq=gOBnqteVNgh{_ zY)ebUCT-u0nsndXlWGB8XzZ+VAeoLJ-~_iRiA5RM&TB|3Pt5hOAuKT$kcrGZm<3<8 zrss;cxiH^hZCE$n+0#Ji zQvM>obmOt=w+Q?9E=SMDe(nBYy)9l1EZI(IJ24_1`HJdqKh*$pT2u{wAdr5ezgj=RM+|t7O_x?=u`P50Y@w?v zGsF8wdE>_R-tf;{_|nMx^N=obj_AymQQxQZmKl-AhJ6vk&CzaTj|piN{E9u;mk6_M zkzY(*d#iv2dKu6cw<-^#7lo~Fqy`78*FWu>8PjR#ReTSmSb(Q`KrZN6e6+)50ANV~QDu4g54<)c{okbzqr%@2>V6vYPJO zHT4EZ-s;KMujz2Do_xca8zx?Hes%Tb7fi1|V_jX{IxO-=-pafy*9A@a80-W-6{84% z+yJy>sYLlp<0KB8fe{eh5yL41pUH@lg$bn8u|z}xE*apZ33n8&QoYu$}0ui2VBRhPlg@X1l}0yL4?1bLP0a zY@CdXH(G(f;QhLhKvr4)p2;~`-f0uly>m{i$;hdnS(S>^czoa6}mYwW@^ss@zR=zz3#%6xIowv&Cm^?jPi1?bsUsY7!!XW0$;>s7mjc& zc;PC?!KfFe4I82%FLalJX(_7iQgE{=$r+zstSgu>CV~ULLog;X3jb26U=r!8zCy#i z=C~C;tmXwAxh^|p{jTN2VBy@8vT9u>#+^BfQgSlpb`(!t9wcM<9Yn@R&dD^H%~<@c z9~#&U6QeaPUpECDv@oVi1LMIq&%j94+kAxH=#yaKqiphMw2)|<^F)CEXZr!{MeJD+ z{UxS|(tx14ZLodDi&fxs=z|svTxemI@T*7LHyBT(eq)c877Dh+08oco+S{(sNvQlE2eLeVD9En&IMj#JNQ0-=376vlVoEEi2 z>Z6@?w+f)OPQYl7)!UA;xepoP!__j{FIG7lEp{XCUjOmYw&#c;yzGo7IN9R8@M7UJ zs%;HLnk>ha7#XNbv%k?mO&6=eFj~TQf?2)^UW6ruef_|bf^y;T@9<&eA7cu#jA4f5 zIi7nS@-8@JU`Fki(prH}EetjCqZ?iJRDWva?Qh9!ybL>!*nVVhTyj4!vG&>CJ)lRo&@=_jemBS}<^I;m7+U0s^_^nai2O~%3a^1RlxJ`9<3qK9Z zLASaGmID`Be3=4 zq?UmerPxS>Jy#hb6gpe8#A#o(uy*085vCP!>nUsgwTP|Cjvoz)>N87sjz5rDn3+JO zjUiWfzia2X_wx@FcD9sbd8#7!H-+zGySI8{dB#K6%(mEU@Ze=MCH-O{Zz3ygsmbnk z^yGRvDxLm`1q;Lf6=yGO!me{8_8^^YP=M370tHYbR$vQR4?vu^$uSY%kOKo8Zzwcl z&k={2^@%B490!)tBf#NNaM!V6XCW<-J_Ax3VZlUrySJ$T&FaEWGMcY%n62dlRguW>;mu zQx~etNi>*jx* z)Z`?5*=JdYID~eryasrjFsq#_(ff_^~nk z*cg87aFE6k7Md~q*cg6n3_mu8ANxOxAL|12{g1G*S+JX;MVSs8n^?jIUKHlmK!G1? zW3W2uxG}&`$5)fTREL&Efp7(|Wfi#7bEyzEsSGxk2jEzXX2Ga#07%{y-kv>c5-Fy{ zjK3tprPD=#jpdK8U3bp8^@SAhN7pck_7c_63S;VL%7y8mKgMT)hs^{aO@RAwo;Q!$mCc$TSi|23Hp; z#d!{f;p#9l0KnksIZ+4V3LsfZdB~TWY+wXZT18t;LUu~xxJ0jn=bCL9w#LqC#^)Xh zPc|Xbh<|`r#GuKH9G67L1CF7|juwd>+o}Ki&}8hPqzc}?-SUZUk27-q0B~c209)FzAd5KMo|dVh8-XJ?vJ!IPG;~%5ND8_=Z8Oi(x^J; z{OGaNT%g?HV%KMbZzN~SkM2xGKq>>UcRt(c2sKolpHCcm2*>)f{{uM9oTQtrxhdFQ zmziIZLx6IOOGZX2Hhg5bN^-_fZ1dU}%{GQ&n>4S@o4NSiQ$|35#!zfyC^p_NHHKn~ zgR@;d*H{=;?Z>)M%$)woKV7yh-WQPdPYjl>)DXZbRN7Oe+N3=TgpxJAavFTmGLwSu?+54D%7*I{py3tN~%^CsAntn z>II5j9a4JLwMx2roU&e>q2#N#D$PhIz&Ghcy&YHFRopKvU`*vJVC1Z z16}cOrhT!|_-pTP;-*P*=L@fEUyX962An)lE3wt*lbF;>h99Xqr{st{?$g*m?$gU~?ZtS82=Bj_|H(?%Vfmv?kI0|fR!C~x6ADoWd?r}v0r-9B z)S9vTy+pejv|PIp)C~`oMT%EYzxGF@1KL{9I_*KwdTl0XgSH&BNyA7`LfTcJ)5W!2 z+FeM`)oudq(Y^%j)z*Q|)3$^5iEHO;Pb1y0Er##7BJFpeLC_MU{|H*CeGKZ>-USVa zbWr4XiJV^Kl%nLbpjFx{p!I?_2-+xUlQ_W#Zn-z;_bTZfzfEK+vGJ8R?Mr9w@hGnbM_w1lo(UnqI|C?-zUoSgSt`kJD`=?=b%;EFF^g;hoAxNWzc%JbBgZg)XR%wHv_1bRG2JLy!CXpW$ zv{Rhz6KDIihp-o-1pVv7*kkI}{s7AT?!$OvTCd#$+MqoN+N50z8WJU^3)&?px3dpp zjLY|l^8MO%*!@$f{Rz~K_V?pS{|Xw=J^|&idy0DaA8yR*&wdE8kFTdi1K%VdIj}EW`lUrwV*8TLA3u&P?q-~+J7-< zNLm@9wQ~h!d51?iaqT>DEz5gQVR;W?ge-zrmLjxLJMQgM_z_`w4+)tH;U3;a zn)^M3vz*U;6hdtu!*f5&`&2yLE1)dzQ*l2(1#QHbpNhNUvn=mZ(T04M<$WqfCg-rc zcc6y-pe*kl;Po0P%XN+UK4+uO--DJwB4*?4`=Bh>vr*d;(0Z*Gl;wIh zo@gE@%k^y3&)2eC&&G)5@+{Z0@r+!C<+=+szYAKaeF0h}(tbe$+E0*EuWbWu&~||~ zYX1(}r2P;yD9UsS+Jk%ULd|@(Pn2IE()}no2lej&Wx1Y%+IE9BU=+Oh59w@w}gcmJ8}e&vuJm?#AfahjhJmKWGE`s2jE202&e{r=u6TQQIFt zc?@(zx<3N#6Xp9MQ$2XzFF|?a^a$zhLCv2a-Gv_M!Bw9?11QpN1ufBj1IlvUi>p2b zWx4LfwQqv*Na)2=+yctndm&|9lBK&Bwe1CE>Fz^qTR~a6`*7_$ph1zt(%pxW?rK#d^w$EEc@{Jza#(T~pv<#MKkB&>lqI(xCEo^R$?Zq^7eHBZ`*9WLPZyLWw;$KO zpzFhuwkg}OVg6C|UBec`o5l{~BgRinDW+c2DW)4uJI%+NFN$--ZHwDunQ7T=*=Kzt zero*PwgOwT?ReX{3EB2s`&n>Kb3)?FNm)tLlO9R>AUTk{DtT-26Um>aI8%0|+EX8O zBs#8gyqFe9J3Z}nCpn9qi<~z(A9DUBy(#^e^xHEi_B=Q`YjV4Ou(0 zewA&^_GB*@XC1dFCq8F!&Ih@fxfkU=m*>ixmA5+Y?!2$^6Z8A>Z_dBjWpPa(|9D|} z;nu=u3jbDARs2TDc_lkagQeR_Kb%lF;fe`gm7P|0VcFKQUzTqwf4X9B#m-813is4lba zzWU?qKW(_8;XvcMA0O~-t3?4o10c3Hd5?0R?3 z>vLc0-qQ1(-u1n|p0}Yd(Dy8Gj@K}FR|E0RNg;~rt?Ed9{*z9!3zf|SD=)9*0 zXGxSGB?TIio>mb_$0ySU#F}W5X(RlFFOX>y$`8r386Ki8lxZu{TVy%`e$(!Nr!O*E z!J|WYT&4;0B!f(=3YOet8lJw%BhyC3O{dAU3FU8-X|v*@=VjW8^hYwCpj4_RcTKIw zHSL6zg9A$jU7?kOLu*`Bu666yRS)QS)hDbxwPj%SnxWMLrz~~NK7DA#z~IuZrOQrV zv1Iij`7U{)!Nt`c_H@tE)oTV;4!UZqYZ`}_l=TOf3=S+^;hMkX#FeX8o;7&p@}Z$s z4HGAhxGg9&HP|%g!IWnjwz00n($@go_YUHBNck)*#*;T5vCiT59~A8}fO=Nos`6f?_if{~fut zA`*h{fcp?h;fyyRASy~3;E@9kzsU^Wk`}U3JlQCL?AW!KM9GvwspOzEa#A{FAlh;k zB2AB@97IydLu?cmBEyWQLMozSDnT^!2~VOTBubCVlEq^pwdC@6jEl;RO+B1L$j1_noY;hvD8I# zXfAbA5B1VK>ZAFzfcj}6EuzJA94(>a=>$5FmeNVIjF!^?olK{|m*=T8NGoX-qL8nK zf7l^99l^EN(HV3mokeHUdfK2|O6SnIuy|~y^JpWTPZ!XIbP-)lmmr$JX1bIvqs!?E zx{|(&u+LY~)%1PZLO-Bu=vulCfnBbr8|a6K19B7HOt;XjbQ|4HchEMvlkTE_qaV@T zbPwH2_tE``UiBbtrycYVJ&dSQkI*i9lpdqU5yN^nJwZ>>Q}i@FL(kH4^gO}m7rjI; z(@#v*gQu@p5f_?SQ{%2(t{>g<=#fXSJo@C(FOLCvtdqxjarD;e#~OF5%x{y&pggwA zV@N-GYUEM!_elO8$=@USdnA94c?++-YtK-#dWw3z1`hyGGC6zTD@J|HF8|l%6_TU?*sLTcE?fNFOK4Va1{56 zdPV=?cjTzIt2?OQf307(iyW`DvcGEs`g7F=WWTn^anT~%t3{5B7THfNa$K~?c5IRD z*b=#3wxixIH8m}=9b07ow958tm3&%dy{)p|R#{)G?3Y$qZ>y}gRo2rc>uHnqw8{Hz zllR*u>urg`=q(mZ#6;5KPdSJCI5EGzg_Zgm;Bo$|8~j0UGi_2{M#k} zcFDh8@^6>?+a>>Y`TXsYf4k)0F8PNf|B&P#lKexGe@OBVN&X?pKP35wB>#})ACmk- Rl7C3@4@v$Z$v+fY{@;}gOCbON literal 0 HcmV?d00001 diff --git a/client/fonts/built-titling.bd.otf b/client/fonts/built-titling.bd.otf new file mode 100644 index 0000000000000000000000000000000000000000..7d925871f978b4e035f39cf89af6605ff836d9e9 GIT binary patch literal 63984 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 J_7Zx^{tqOyQ>y>~ literal 0 HcmV?d00001 diff --git a/client/fonts/built-titling.rg.otf b/client/fonts/built-titling.rg.otf new file mode 100644 index 0000000000000000000000000000000000000000..705fa7a08efb12846a12efff414c860ab744ee7d GIT binary patch literal 65160 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 literal 0 HcmV?d00001 diff --git a/client/fonts/geosans-light.ttf b/client/fonts/geosans-light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..055932aac8de6861ab4e3a8f54e54d1f170101de GIT binary patch literal 60072 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:WCb__G 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%0DYuDOo!1tGn!1WfrpAqA_l#J+HpQ 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 z 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 J2V`dK{{kF~510S| literal 0 HcmV?d00001 diff --git a/client/fonts/russo-one.ttf b/client/fonts/russo-one.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8b47097d2e78678d9731cbbe8904df16c5b90232 GIT binary patch literal 190416 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 literal 0 HcmV?d00001 diff --git a/client/fonts/thesignature.otf b/client/fonts/thesignature.otf new file mode 100644 index 0000000000000000000000000000000000000000..5362ad6bf14a2d318eedf7bd8f19dfdd7f6f8805 GIT binary patch literal 23800 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 literal 0 HcmV?d00001 diff --git a/client/fonts/thesignature.ttf b/client/fonts/thesignature.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ceb5585a163c0bdfaa9ab5b8f4b3450b50675c8d GIT binary patch literal 35908 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

-V$eexgIK;HXC< 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 literal 0 HcmV?d00001 diff --git a/client/img/default-member.png b/client/img/default-member.png new file mode 100644 index 0000000000000000000000000000000000000000..afeaaa00a940a5204d747ec20d89b3a047d50daf GIT binary patch literal 28498 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 Tsya+-H9$>CTd`8XChGqHClJBP literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-114x114.png b/client/img/icon/icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..a0183fdbef6683abe862618557312657cac4f338 GIT binary patch literal 5115 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 F{4YrTvrPa1 literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-144x144.png b/client/img/icon/icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..a429832386fe6dd67bbee6b18af10f6243113c8f GIT binary patch literal 6825 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

#gO@7wzl zei>(HXP@H+7XPGMqDR~av=oyE!Agt?Km!>{dHA^!IW7bo2F$jit1Dk!P||H~P_JOt z%*Tp#I5T>tr!$9(G<2GM9x#l+8@LcKihLU591&!DZm_4tb9~G<8h3qduwwo9ZIpA8$@gGN`jvOIGc}ZcM zbH~RGATZTb=C>VWNYt)>1<}O(@^TkMpIy(D66&*pg3df)lnfJul#w>Nv;EQ8^N0t= zL|V}FrwK=Y0$pM52_brhnp=W>nYhOq4UDo)Zz6Ua;_%3B=0FDhu{`;UrvATft(gWM zJ%C7~-=+0PK?xk52H?;IVq$A}5mV_1BVL`T=JbHMp9ibi#YaSFZDS*F|C=UgRyljb zA(>cOqB%9P-T}C3X=`7CZ{&ZdbsQ7(+PaL$#hjc|ut|VuNElDq31s&kv>oJ5;JB(S zI`Dmdul3v@l@6(>;6<`^h`xXjVgOEns0c_%x>6C0h36A{@SOtYy+A2}qsD0>9_aKH zARodFATj~1bJ*Y!IRKk}{=AQ%E@W2(0Edv~LpL&5bY6I=R~BXB<0ApzEEI!;|Bc6b zZ^#95MCDu0t*nG+0@#i%tgpvt6T(?ghmWh(AWtS?l;Cstj3HqVyJl?6;O6E=u{1Y# z9q#E3nwS7AZX8%d(Br?p-+~omVt`*fAbg;pCL?>BCGCsQ>V*pzK$FGA#|N4G`aXi> zhDU$*Yyoq@4g)G;UTPO8BT5%!A7HYQvhw_g+#5(b)wtP0uNZO6%W!|GmlFD+-hGJ> z{%HZ@tqpckPEHOoz9j|YMvoX$nf-@~%>Idz8}-3ICLm~TX=wq72uhcC9DvMm{PkUW z*dsPp)?ny1Iw8AjFk?{NLN6U4JcxN^FJJ0 at^3yO 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 literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-152x152.png b/client/img/icon/icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..82be5070b69b37b90d5dacdb5b1e4d3a222b2a49 GIT binary patch literal 7304 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 x3i^2 literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-16x16.png b/client/img/icon/icon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..ee02676f0ac14c0d1f7528a6cbe18b25cc908f33 GIT binary patch literal 547 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 E4>i+=t^fc4 literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-310x310.png b/client/img/icon/icon-310x310.png new file mode 100644 index 0000000000000000000000000000000000000000..8b34bf7f40d07d52df602d28e82857f62a955335 GIT binary patch literal 16944 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 literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-32x32.png b/client/img/icon/icon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..da88e0cacbe63b315afdd7e5fcc1ff9ef67ea809 GIT binary patch literal 1246 zcmV<41R?v0P)99G?6f}KV(H7tVL~tkqJ>oNO>yqGEh?bgIXR$kSte`kb3CP z0_k93;HB_Tlv&!SXkDz+`Zr3$ihLGrdwjkxx?e@Vy`3uz>iW&)E~EQa6j zXLxuRRaN;DvMf_lQbJQx6L!0u`3Owv>+898?HUyo6JlKID$ELlP%5}~rPl7@x`G)==u=KsLybh2m99wsIx`2PJn zMlvacLLoXjI{5naD@pzR{R9F5k`zV3@Aoq{HpW~eNn$pF6b>Ca#PjFRiAJNewY3or zhpDcvMz?O=I*N;nxpe6gjg5`u=jRg+hxr|X6!z}j%eQae*tTsOy4>7c%F4=!Mx!iW zz8sy$yLz3u zkw`E#HAP!n8w(aJU_Js9pU=no_3P>D>!Y`~m#L{KoK7eA@89RZfdeRtLTzm=Hk*yP zNRq_HjT3jvhVAlP6E;>FFVn zNMNL@Dy^-p)Ya9|(b0j;X5;hc&m2B{m_>^g;qiFr>gvKwFb7GJ&hhl;zgD& zT}mpFBvDdQ!tUL>xpnInr%#_o2*HB~52&uLX2psX%tmGo85tS)d_Eiw2ft&@nl+4$ zj^gwAXm4*P6~RAXwOToQ_AKS)%K`0a=D=UkF zf&yN>dd2kgG`fO<0wR$J7K??|t5=is^XE^VK7C4IVIi5Bnas@0V7J@(U&$DR!(ndT zyvf+u7@eJ+D2l@6%a{4|=@YS7jPvKu^ZNB`y1Kg1O;1nL)YOC|Nem7S^6c3&Mn*=^ zG>s%p)6m6YF#>@AW&)E{t5&gp|9(!LIz>@Y5zCe>W9!zfWM*cPo14q#&6|1g;sv@p zckWPAQ$tZv5pK7eM~@zH8zBU`ii!$qYHCO-EiL8TxpRaO2Wni+4nI*~I&cAaZ#KD(6+5dU`e00h$EF*$tMq&=hWD>vM z&-?f9Q51!xSg~RS6%`d&tyWSYp^-==sI08S@Avb!7z_p;Jb1wV{rg#rghpRqAAY}| zOP4NDTU(0|f~AN=B2-mXapue!Dl03|>2xeaLStlP1eM3*L6&8fYW@24xZQ4ATU&`l zA~ZBKke;4SLqh|3d3k6FG?K|AD!pFM-y(!Sl}sl2^yw3K@7|@Pq=fPDakK>gB1w`6 z27~nX_Y)3>xp(g#T7v(;wr$%GLh$wLSF{8v7#|;}tE-E#u`y;vqfzeMxx?V#Aiwkb z{q*+sq9_V~LLvp#)z$R(_v7>V7#ti#b^ZEv8XFri8jXDZ{25u685$a5-@bjQ3)6-F9WMq(*mWB|5)vH(YCnQqP)6+wJeLaPRh0Lm{ zslnlJux{Nt%w{txtJTWL$OtntGi=$ig+C#Yg0!?WN=r-8Dk>^MD=#mPr4TGLf@MZ9 z4@FVc=3Y2AsUS`Fff4GY{q0Vu^0&rx7*E?D_5whs^Z+ab7W>_5(cfW*96NT5SFc{-a=Ga2?BwUqpUlNTM}W@d(1EXIKY2dJy7 zW9QDD2qDmtSiq`Ps}Mrq@px!&Z^vjfGRtnaW4GIx%gK``>FMdg-4B_-tKq(ZO&olZwiP7Z%+ z6sNn3`v*hRJvk-}YNoi>*Z{ECNF@nD+9*?6a z3QHlOar*RWva+(6nwp}friMTuKqwRW8?V=k z%IS3SJHb5kdOa&wu0%^w6q=fv=;`U9yu2LM$B!Se+wEvwym*lxKYlPeI!aep7nd(z z=KJ^WeEIT)?c2Arckf=bB<3+XI*P$yKuf37(bUw0!C+w4u3fvhb?X*hub0WmNutpx z85tQ!lEm7zYx(x=8;L}MWHL!K8fAQZ97R!>i@xa>eiIIddGh256B83$xNreUl8D7( z_72 literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-384x384.png b/client/img/icon/icon-384x384.png new file mode 100644 index 0000000000000000000000000000000000000000..704436cfb1df74ea32caa1685c7edb339ff638d7 GIT binary patch literal 24458 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 literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-48x48.png b/client/img/icon/icon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..02c85745f99238fa2492ba8308363cb6e9e86136 GIT binary patch literal 1943 zcmV;I2Wa?-P)*{*Ij>2|5xTsVb@-Pp1h_-|*jWn8vO*WP#roNkpu~pdeG*3|; z8h=>Um?=i{Fs}ZP7GWc+rZC~|=5zJ=x<77f?T*g3em}ilg8UN$n8*MpGQcVM1*_G{ zl`B_x`0ybXi-rE+=H^CJR1~SHsi;&cT&2W`uV25CkdQ!ibv6GBhYlU$)~#FUbUIw2 z#EHDTJgTd!(Q37Sh#Q@ z{V63Sg@}j%r#U?T`lKwV+{CEUGK$0ZBe*H>eVIleX`AnQR zk-WS-rcIlMGa`SXw{PFl(a}LwRTXh@aooOr8)roRLdT9Bqpq%w<;#~NNfKFESvVu| z7g8t`7z_rE9zBX62t0fCjE;^D91;18d3kvuiXt`^iv>qS{y<$_9ksQ!I8t9nVE?!%k0^+hn$=o?9QAy!@70rkY$Hf^-p-^D+V; z6-u1gwrv|JDJc{d7E)4Df<~i3r_)hhUXE6)rKj@pa(3<7g~?>X6=t)UmX;Q5va+%e z1OZnlaUwZ6nJ-_yke!`PTU#4#ZEd`H^M?BRdSYW^u``)WY~8w*lP6E|r-lp}LQYN& zTefV$RZ4y#BO`-Vt5#88Ur$m}5=~7_bZ0agNlQzkp`ihVLP1tm7Kw?8xI&>&U@#a^ ztJU=M;ll^Iy1EbqfgwYN;E0mn7&K@Qk&%%M9y}PkuC6W$3JS>0&E?0B9|QyhP+VNh z*s)`I^X3h|;_mKFR8$nADB?&{Qxi>1O_ z?%utNO>%NF$B!S!)6)~3PDgutJHIn$&K!!1iy1Lu1l@i9{27D6fZ1%uPOVmR`0!zz zQR1Ssv@|41LZi`e=+Gh3)6=n=KYu=t9zEh$nwy)ctgK|hgbAEDae}0zBQvURUyrLq zddbVn3%y=XUz#~{CPt%?>xpLu(GbNTXR&YnGsMx()1O8ydQX=%j9 z#*&$t$(S)?=q)9Gk-)$}Zrr$mD?|o3B@S3D7Ah+%5k--ppdbPR1Nr{_J9qBfp}WAq zKzx0DdHnb>Zf!-nx+DgOD19%^fA zIdI?rqehM5>eZ`MR8%ly#tdp}YkBeF1!ZMr==FLu8Vz^v-sRrCd#KfFa&vQujg7_E z*B2XEmf5&*Bd=e-CMYO~va&K{S*D?(fts2cVq#+WoufyOGIZ!rv|25WDE|409-5n* zX=`gEJ3E_%ganL6BPNrH)YMe8S}pJ1y<_Ljo%s9vV>B8G2?=5K>eY-KIg+ZXDyB`F zhD}991s^|tWdHvCgoK2!Xwf2qgM)eg{5h{)y~1cT($dm`!C*iT1U`QJ$jOr@sjI8Q zU@%}ZnJ6eIz-%@X9v+UnyE{FJ^g?1{A`c!sz!^!B`1b7^H*ek~I5-%)>gsA1FJ6oz z4<9~c)~s3FyLXS`;$kF8A|)k-(9lpc8VzgLuElD#B1sY!i-pe4P8?Cv3$3lKczb)} z%!v~xsI07H_Uzd#S+WE>Z*Ol}TU&8t>C&Z4oH!9rPfrdUI6!oCG!rIFVD8+x*j&1F z2@eksLPJAYv}h5Yo}M_OBm_Hue}6nYJaA;>$dMEj6tH2#1_VLC-QAtNd-tN# z=}@cH*l08w#*G_?kB<*qwrpX=iWLL|1dx=Jgqxci85tR5W@e&NshBir5PYhrp d1DwbJ_b=o7r?+^&|2zNy002ovPDHLkV1i%DnJxeT literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-512x512.png b/client/img/icon/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..9debbe72f4affe26800f9e9e733c1d48f08bd2dc GIT binary patch literal 39242 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 literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-57x57.png b/client/img/icon/icon-57x57.png new file mode 100644 index 0000000000000000000000000000000000000000..349e6891447b68cfd02a8a582774e49c7922bb5f GIT binary patch literal 2459 zcmW-jc|26>AIEX$#n^6kW6dz(qA^W%L!>M-#=e!CkPO4fmSnq1cE&okY0@B+P+2pU zBqaT2OzxPb3E7#FTqL2S`}qBF&hvVmbDnd~_xZj*?{l)89kG&P%3=Zn0+KizD_1ZY z?{83Hu+M>|qzMR!`r)k3xW@`E_9faEZ~pdteQTrh!@nVrc=1i7YJvKAmJu`tJ$w;Gtu334<1x@c2WIYSq~2^1|xhj`g3Jn zT~>1e8)a&m!|+9|g|nBU9>`grDWOoX0Re~Vlaqy_SEpFwhEH!Q^m+3;Ka}JDec$;p z$|OBK{as6dcu7e~5V@0y(9tQnbI0D&@;6aYQLpak+{x}3JbgkbcLsSpe9F|-&CSJ_ z=GX@P*H61hl)JgiV{6_L@E5Al6`P=kf0)lV*ETV^T~(!Npdh~ISaFKg(D;nRTMpno z_BK-eefQe6Yh)UYRif`<!ht2Nmy!ydeF70&3WSFg;9Wf~A^b-P0S?EwT z{OHl5mKJnyaPWir`l|YRv5Mh295jr^XisR4iV?0PIrJf-hBE4IhS zRQ&*09aZxiceJp1m89%!%j{wEf5yjcgM;+|N|y3+a#oiv!IhMh-n@M~7h&{qWhKBs z0qJFf!-=*Aj_@&$eR^yyEQET0?VZ$XZ6png2Cx*`XFp*2eMZ*S)^}}fZRbYs*&z^!2z>+ZuHvpPll{y-q0{FhjNWx!(@#lB z*|sTs5&OR!PMuqAP*@m&U1bdpJd%@<>A!24(KN9VGTxSDzPFuX_V+jEvu6iM^7_!? zVI!)&wt}J0@XFWEts`GvY2_D`mSP+nBmp6BcsyC%zC?F_e*~cQ^ZQQO9-k3&`1S$L zQq%&UAITq9dU#G>4-OGdNm?)H6gLGxgBG>Ktojf}${iviQ1kGs6sV}^rHS@Xhy_aU zRS-;7)yhQ~sJMCS`%T4UE9ya?=L=`g~E9U*dcAMdFWP zkBw!q2>W6Kc>oGZOG|@E2!kksh@__rS5;M^lym+4{iUR(_vPD4V9ho5?)go2T?6kq zH!{Co0NlI8sihiU)n>6+roVPKK*s?~MhV*}LMyfTJ1E}9-rg#ESXWp?ByO!wWas;G zqYKUK?^14qhnt(5C0LSr?7{2B`KP{TW@bX&bsX=^EY()B+JQpupi*LRFl>U(<+(kEDd0XwvZP1=I^dqVJSA!BG6S=pV1A}5&m z`O@=GV~-#y;`^&|>gQKCF)=YIi^|)_h%(XLY8AYTiL^s@rA?8Gw#q6hF5o^Ot>@c< zq_14L;(qR2)p&cT3XMiX96H42@rHsR^G&{eLS9Hk&#vz7&iGBeT1VR4_WHc(w|DsM zHaZ>u#FM?enWK$F=79jLePJ3F6&0m?0=2ZYwMFdh#^tG-G4vasT3ooGQg$Mo@aaw6 z=Lvc~5Gh6rCIZa+b&11vy?Altv3Ix8l{v`b;-Y=UDYXhf9=KO;rLI_YR(?MANibLM zc3GLr^_@kEe_)^%6V18rFi#CEpZz@6ddpth|2%*1$0|147knefjbhg{K=-kB2??h6 z?%n%5*-iQQF=#g}HC0MQg(-3{;bt!o8I_E{S-8l#&(6*o(Hz}LRn8tB8AJ1D3K2jf zq^e45f}91^)6?_S>(}>dYcoKC@?xgqGL()IX0%dI7a|hCbZAm(%=C52!h*kJxhc-x zUINg)pDFMu1!uuEQ6_5jhcC3xL>O&zxZ~v3eD#OOc8r5G+ z{3)M3nCui7s6%K~;sQrHI5?!HrOj@}0|CFkI%1|vvcTiD0LJ~ks0b~zvL7DL_WQGJ zy_UBuDk&LY;OFO;nU&R70b)`Co`tRDTxuPI;R+Ez$)5lJ)!9C{qjgE)q(*%c_~{bB MSvy)iw(w2<4`ng3`~Uy| literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-60x60.png b/client/img/icon/icon-60x60.png new file mode 100644 index 0000000000000000000000000000000000000000..43b02c7927a7190e23aa5a22ce2a456316e8493c GIT binary patch literal 2551 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 gbKZZ?-+ySYoa@=RXf98HzXB8pLoh($ literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-76x76.png b/client/img/icon/icon-76x76.png new file mode 100644 index 0000000000000000000000000000000000000000..cf2e3b9cb03018fff033dcf276591aa17d2201e9 GIT binary patch literal 3179 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 literal 0 HcmV?d00001 diff --git a/client/img/icon/icon-96x96.png b/client/img/icon/icon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..aaac378bfa805d9948f83b048bc76ba9039ba2da GIT binary patch literal 4220 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 literal 0 HcmV?d00001 diff --git a/client/img/nav-icon.png b/client/img/nav-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..473c431eae6a6f45d10fe61cbc4f837f07f600c2 GIT binary patch literal 2645 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 DF%;T$ literal 0 HcmV?d00001 diff --git a/client/js/chat-client.js b/client/js/chat-client.js index 748f231..645c0c5 100644 --- a/client/js/chat-client.js +++ b/client/js/chat-client.js @@ -5,13 +5,18 @@ 'use strict'; const DTP_COMPONENT_NAME = 'DtpChatApp'; +window.dtp = window.dtp || { }; -import DtpApp from 'dtp/dtp-app.js'; +import DtpApp from 'lib/dtp-app.js'; + +import QRCode from 'qrcode'; +import Cropper from 'cropperjs'; export class ChatApp extends DtpApp { constructor (user) { - super(DTP_COMPONENT_NAME, user, { withAdvertising: false }); + super(DTP_COMPONENT_NAME, user); + this.loadSettings(); this.log.info('DTP app client online'); } @@ -41,4 +46,246 @@ export class ChatApp extends DtpApp { return true; } + + async generateOtpQR (canvas, keyURI) { + QRCode.toCanvas(canvas, keyURI); + } + + async generateQRCanvas (canvas, uri) { + this.log.info('generateQRCanvas', 'creating QR code canvas', { uri }); + QRCode.toCanvas(canvas, uri, { width: 256 }); + } + + async closeAllDropdowns ( ) { + const dropdowns = document.querySelectorAll('.uk-dropdown.uk-open'); + for (const dropdown of dropdowns) { + this.log.info('closeAllDropdowns', 'closing dropdown', { dropdown }); + UIkit.dropdown(dropdown).hide(false); + } + } + + async muteChatUser (event) { + const target = (event.currentTarget || event.target); + + event.preventDefault(); + event.stopPropagation(); + this.closeAllDropdowns(); + + const messageId = target.getAttribute('data-message-id'); + const userId = target.getAttribute('data-user-id'); + const username = target.getAttribute('data-username'); + + try { + await UIkit.modal.confirm(`Are you sure you want to mute ${username}?`); + } catch (error) { + // canceled or error + return; + } + + this.log.info('muteChatUser', 'muting chat user', { messageId, userId, username }); + this.mutedUsers.push({ userId, username }); + window.localStorage.mutedUsers = JSON.stringify(this.mutedUsers); + + document.querySelectorAll(`.chat-message[data-author-id="${userId}"]`).forEach((message) => { + message.parentElement.removeChild(message); + }); + } + + async unmuteChatUser (event) { + const target = (event.currentTarget || event.target); + + event.preventDefault(); + event.stopPropagation(); + + const userId = target.getAttribute('data-user-id'); + const username = target.getAttribute('data-username'); + this.log.info('muteChatUser', 'muting chat user', { userId, username }); + + this.mutedUsers = this.mutedUsers.filter((block) => block.userId !== userId); + window.localStorage.mutedUsers = JSON.stringify(this.mutedUsers); + + const entry = document.querySelector(`.chat-muted-user[data-user-id="${userId}"]`); + if (!entry) { + return; + } + entry.parentElement.removeChild(entry); + } + + async filterChatView ( ) { + if (!this.mutedUsers || (this.mutedUsers.length === 0)) { + return; + } + this.mutedUsers.forEach((block) => { + document.querySelectorAll(`.chat-message[data-author-id="${block.userId}"]`).forEach((message) => { + message.parentElement.removeChild(message); + }); + }); + } + + loadSettings ( ) { + this.settings = { tutorials: { } }; + if (window.localStorage) { + if (window.localStorage.settings) { + this.settings = JSON.parse(window.localStorage.settings); + } else { + this.saveSettings(); + } + this.mutedUsers = window.localStorage.mutedUsers ? JSON.parse(window.localStorage.mutedUsers) : [ ]; + this.filterChatView(); + } + this.settings.tutorials = this.settings.tutorials || { }; + } + + saveSettings ( ) { + if (!window.localStorage) { return; } + window.localStorage.settings = JSON.stringify(this.settings); + } + + async initSettingsView ( ) { + this.log.info('initSettingsView', 'settings', { settings: this.settings }); + + const mutedUserList = document.querySelector('ul#muted-user-list'); + for (const block of this.mutedUsers) { + const li = document.createElement(`li`); + li.setAttribute('data-user-id', block.userId); + li.classList.add('chat-muted-user'); + mutedUserList.appendChild(li); + + const grid = document.createElement('div'); + grid.setAttribute('uk-grid', ''); + grid.classList.add('uk-grid-small'); + grid.classList.add('uk-flex-middle'); + li.appendChild(grid); + + let column = document.createElement('div'); + column.classList.add('uk-width-expand'); + column.textContent = block.username; + grid.appendChild(column); + + column = document.createElement('div'); + column.classList.add('uk-width-auto'); + grid.appendChild(column); + + const button = document.createElement('button'); + button.setAttribute('type', 'button'); + button.setAttribute('title', `Remove ${block.username} from your mute list`); + button.setAttribute('data-user-id', block.userId); + button.setAttribute('data-username', block.username); + button.setAttribute('onclick', "return dtp.app.unmuteChatUser(event);"); + button.classList.add('uk-button'); + button.classList.add('uk-button-default'); + button.classList.add('uk-button-small'); + button.classList.add('uk-border-rounded'); + button.textContent = 'Unmute'; + column.appendChild(button); + } + } + + async selectImageFile (event) { + event.preventDefault(); + + const imageId = event.target.getAttribute('data-image-id'); + + //z read the cropper options from the element on the page + let cropperOptions = event.target.getAttribute('data-cropper-options'); + if (cropperOptions) { + cropperOptions = JSON.parse(cropperOptions); + } + this.log.debug('selectImageFile', 'cropper options', { cropperOptions }); //z remove when done + + const fileSelectContainerId = event.target.getAttribute('data-file-select-container'); + if (!fileSelectContainerId) { + UIkit.modal.alert('Missing file select container element ID information'); + return; + } + + const fileSelectContainer = document.getElementById(fileSelectContainerId); + if (!fileSelectContainer) { + UIkit.modal.alert('Missing file select element'); + return; + } + + const fileSelect = fileSelectContainer.querySelector('input[type="file"]'); + if (!fileSelect.files || (fileSelect.files.length === 0)) { + return; + } + + const selectedFile = fileSelect.files[0]; + if (!selectedFile) { + return; + } + + this.log.debug('selectImageFile', 'thumbnail file select', { event, selectedFile }); + + const filter = /^(image\/jpg|image\/jpeg|image\/png)$/i; + if (!filter.test(selectedFile.type)) { + UIkit.modal.alert(`Unsupported image file type selected: ${selectedFile.type}`); + return; + } + + const fileSizeId = event.target.getAttribute('data-file-size-element'); + const FILE_MAX_SIZE = parseInt(fileSelect.getAttribute('data-file-max-size'), 10); + const fileSize = document.getElementById(fileSizeId); + fileSize.textContent = numeral(selectedFile.size).format('0,0.0b'); + if (selectedFile.size > (FILE_MAX_SIZE)) { + UIkit.modal.alert(`File is too large: ${fileSize.textContent}. Custom thumbnail images may be up to ${numeral(FILE_MAX_SIZE).format('0,0.00b')} in size.`); + return; + } + + // const IMAGE_WIDTH = parseInt(event.target.getAttribute('data-image-w')); + // const IMAGE_HEIGHT = parseInt(event.target.getAttribute('data-image-h')); + + const reader = new FileReader(); + reader.onload = (e) => { + const img = document.getElementById(imageId); + img.onload = (e) => { + console.log('image loaded', e, img.naturalWidth, img.naturalHeight); + // if (img.naturalWidth !== IMAGE_WIDTH || img.naturalHeight !== IMAGE_HEIGHT) { + // UIkit.modal.alert(`This image must be ${IMAGE_WIDTH}x${IMAGE_HEIGHT}`); + // img.setAttribute('hidden', ''); + // img.src = ''; + // return; + // } + + fileSelectContainer.querySelector('#file-name').textContent = selectedFile.name; + fileSelectContainer.querySelector('#file-modified').textContent = dayjs(selectedFile.lastModifiedDate).fromNow(); + fileSelectContainer.querySelector('#image-resolution-w').textContent = img.naturalWidth.toString(); + fileSelectContainer.querySelector('#image-resolution-h').textContent = img.naturalHeight.toString(); + + fileSelectContainer.querySelector('#file-select').setAttribute('hidden', true); + fileSelectContainer.querySelector('#file-info').removeAttribute('hidden'); + + fileSelectContainer.querySelector('#file-save-btn').removeAttribute('hidden'); + }; + + // set the image as the "src" of the in the DOM. + img.src = e.target.result; + + //z create cropper and set options here + this.createImageCropper(img, cropperOptions); + }; + + // read in the file, which will trigger everything else in the event handler above. + reader.readAsDataURL(selectedFile); + } + + async createImageCropper (img, options) { + // https://github.com/fengyuanchen/cropperjs/blob/main/README.md#options + options = Object.assign({ + aspectRatio: 1, + viewMode: 1, // restrict the crop box not to exceed the size of the canvas + dragMode: 'move', + autoCropArea: 0.85, + restore: false, + guides: false, + center: false, + highlight: false, + cropBoxMovable: true, + cropBoxResizable: true, + toggleDragModeOnDblclick: false, + modal: true, + }, options); + this.log.info("createImageCropper", "Creating image cropper", { img }); + this.cropper = new Cropper(img, options); + } } \ No newline at end of file diff --git a/client/js/index.js b/client/js/index.js new file mode 100644 index 0000000..e4b3fd4 --- /dev/null +++ b/client/js/index.js @@ -0,0 +1,22 @@ +// index.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +const DTP_COMPONENT_NAME = 'DtpChat'; +const dtp = window.dtp = window.dtp || { }; + +import { ChatApp } from './chat-client.js'; +import DtpWebLog from 'lib/dtp-log.js'; + +window.addEventListener('load', async ( ) => { + dtp.log = new DtpWebLog(DTP_COMPONENT_NAME); + dtp.env = document.body.getAttribute('data-dtp-env'); + + dtp.app = new ChatApp(dtp.user); + dtp.log.info('load handler', 'application instance created', { env: dtp.env }); + + dtp.log.debug('load', 'dispatching load event'); + window.dispatchEvent(new Event('dtp-load')); +}); \ No newline at end of file diff --git a/dtp-chat.js b/dtp-chat.js index dd4b79f..3c1395e 100644 --- a/dtp-chat.js +++ b/dtp-chat.js @@ -22,8 +22,8 @@ import webpackDevMiddleware from 'webpack-dev-middleware'; import WEBPACK_CONFIG from './webpack.config.js'; import numeral from 'numeral'; -import moment from 'moment'; -import { Marked } from 'marked'; +import dayjs from 'dayjs'; +import * as Marked from 'marked'; import hljs from 'highlight.js'; import mongoose from 'mongoose'; @@ -32,11 +32,13 @@ import { Redis } from 'ioredis'; import { SiteLog } from './lib/site-lib.js'; import { SiteTripwire } from './lib/site-tripwire.js'; +import http from 'node:http'; + import express from 'express'; import morgan from 'morgan'; -import cookieParser from 'cookie-parser'; import session from 'express-session'; import RedisStore from 'connect-redis'; +import passport from 'passport'; import { Emitter } from '@socket.io/redis-emitter'; @@ -46,9 +48,12 @@ const APP_CONFIG = { class Harness { + static get name ( ) { return 'Harness'; } + static get slug ( ) { return 'harness'; } + constructor ( ) { this.config = { root: __dirname }; - this.log = new SiteLog(this, 'Harness'); + this.log = new SiteLog(this, Harness); this.models = [ ]; } @@ -206,15 +211,16 @@ class Harness { this.app.set('view engine', 'pug'); this.app.set('views', path.join(__dirname, 'app', 'views')); this.app.set('x-powered-by', false); + + await this.populateViewModel(this.app.locals); this.app.use(this.tripwire.guard.bind(this.tripwire)); this.app.use(express.json()); this.app.use(express.urlencoded({ extended: true })); - this.app.use(cookieParser()); const sessionStore = new RedisStore({ client: this.redis }); - const cookieDomain = (process.env.NODE_ENV === 'production') ? process.env.DTP_SITE_DOMAIN_KEY : `dev.${process.env.DTP_SITE_DOMAIN_KEY}`; + const cookieDomain = (process.env.NODE_ENV === 'production') ? process.env.DTP_SITE_DOMAIN_KEY : `localhost`; const SESSION_DURATION = 1000 * 60 * 60 * 24 * 30; // 30 days this.sessionOptions = { @@ -235,6 +241,18 @@ class Harness { }; this.app.use(session(this.sessionOptions)); + /* + * PassportJS setup + */ + this.log.info('initializting PassportJS'); + this.app.use(passport.initialize()); + this.app.use(passport.session()); + + /* + * DTP Session Service integration + */ + this.app.use(this.services.session.middleware()); + /* * HTTP request logging */ @@ -269,10 +287,17 @@ class Harness { this.app.use('/fontawesome', cacheOneDay, express.static(path.join(__dirname, 'node_modules', '@fortawesome', 'fontawesome-free'))); this.app.use('/uikit', cacheOneDay, express.static(path.join(__dirname, 'node_modules', 'uikit'))); this.app.use('/pretty-checkbox', cacheOneDay, express.static(path.join(__dirname, 'node_modules', 'pretty-checkbox', 'dist'))); + this.app.use('/cropperjs', cacheOneDay, express.static(path.join(this.config.root, 'node_modules', 'cropperjs', 'dist'))); this.app.use('/dist', cacheOneDay, serviceWorkerAllowed, express.static(path.join(__dirname, 'dist'))); + this.app.use('/js', cacheOneDay, serviceWorkerAllowed, express.static(path.join(__dirname, 'client', 'js'))); + this.app.use('/lib', cacheOneDay, serviceWorkerAllowed, express.static(path.join(__dirname, 'lib', 'client', 'js'))); this.app.use('/static', cacheOneDay, serviceWorkerAllowed, express.static(path.join(__dirname, 'client', 'static'), staticOptions)); + this.app.use('/img', cacheOneDay, serviceWorkerAllowed, express.static(path.join(__dirname, 'client', 'img'), staticOptions)); + this.app.use('/dayjs', cacheOneDay, express.static(path.join(this.config.root, 'node_modules', 'dayjs'))); + this.app.use('/numeral', cacheOneDay, express.static(path.join(this.config.root, 'node_modules', 'numeral', 'min'))); + /* * Webpack integration */ @@ -298,13 +323,51 @@ class Harness { await this.loadControllers(); /* - * Start the ExpressJS server + * Default error handler + */ + this.log.info('registering ExpressJS error handler'); + this.app.use((error, req, res, next) => { // jshint ignore:line + res.locals.errorCode = error.statusCode || error.status || 500; + this.log.error('ExpressJS error', { url: req.url, error }); + res.status(res.locals.errorCode).render('error', { + message: error.message, + error, + errorCode: res.locals.errorCode, + }); + }); + + /* + * Create the HTTP server, do not start it. + */ + + this.httpServer = http.createServer(this.app); + + /* + * Create Socket.io server bound to HTTP server + */ + + const { SiteIoServer } = await import('./lib/site-ioserver.js'); + this.log.info('creating Socket.io server'); + this.io = new SiteIoServer(this); + await this.io.start(this.httpServer); + + /* + * Start the HTTP server */ - const host = process.env.DTP_HTTP_HOST || '127.0.0.1'; - const port = parseInt(process.env.DTP_HTTP_PORT || '3000', 10); - this.log.info('Starting application server', { host, port }); - this.app.listen(port, host, ( ) => { - this.log.info(`${APP_CONFIG.pkg.name} online.`); + + return new Promise((resolve, reject) => { + const host = process.env.DTP_HTTP_HOST || '127.0.0.1'; + const port = parseInt(process.env.DTP_HTTP_PORT || '3000', 10); + + this.log.info('starting HTTP server', { host, port }); + this.httpServer.listen(port, host, (err) => { + if (err) { + this.log.error('failed to start application services', { err }); + return reject(new Error('failed to start application services', { cause: err })); + } + this.log.info(`${APP_CONFIG.pkg.name} application services online.`); + return resolve(); + }); }); } @@ -355,6 +418,10 @@ class Harness { } try { const ControllerClass = (await import(path.join(basePath, entry.name))).default; + if (!ControllerClass) { + this.log.error('failed to receive a default export class from controller', { script: entry.name }); + throw new Error('controller failed to provide a default export'); + } this.log.info('loading controller', { script: entry.name, name: ControllerClass.name, @@ -386,15 +453,17 @@ class Harness { async populateViewModel (viewModel) { viewModel.DTP_SCRIPT_DEBUG = (process.env.NODE_ENV !== 'production'); viewModel.dtp = this; - viewModel.pkg = require(this.config.root, 'package.json'); - viewModel.moment = moment; + + const pkg = await import(path.join(this.config.root, 'package.json'), { assert: { type: 'json' } }); // jshint ignore:line + viewModel.pkg = pkg.default; // jshint ignore:line + viewModel.dayjs = dayjs; viewModel.numeral = numeral; - viewModel.phoneNumberJS = require('libphonenumber-js'); - viewModel.anchorme = require('anchorme').default; - viewModel.hljs = hljs; - viewModel.Color = require('color'); - viewModel.numberToWords = require('number-to-words'); - viewModel.uuidv4 = require('uuid').v4; + // viewModel.phoneNumberJS = require('libphonenumber-js'); + // viewModel.anchorme = require('anchorme').default; + // viewModel.hljs = hljs; + // viewModel.Color = require('color'); + // viewModel.numberToWords = require('number-to-words'); + viewModel.uuidv4 = (await import('uuid')).v4; /* * Set up the protected markdown renderer that will refuse to process links and images @@ -408,8 +477,6 @@ class Harness { return `${text}`; } - viewModel.tileMarkedRenderer = new Marked.Renderer(); - viewModel.fullMarkedRenderer = new Marked.Renderer(); viewModel.fullMarkedRenderer.image = safeImageRenderer; viewModel.fullMarkedRenderer.link = confirmedLinkRenderer; @@ -420,11 +487,11 @@ class Harness { viewModel.markedConfigChat = { renderer: this.safeMarkedRenderer, - // highlight: function(code, lang) { - // const language = hljs.getLanguage(lang) ? lang : 'plaintext'; - // return hljs.highlight(code, { language }).value; - // }, - langPrefix: 'hljs language-', // highlight.js css expects a top-level 'hljs' class. + highlight: function(code, lang) { + const language = hljs.getLanguage(lang) ? lang : 'plaintext'; + return hljs.highlight(code, { language }).value; + }, + langPrefix: 'hljs language-', pedantic: false, gfm: true, breaks: true, diff --git a/lib/client/js/dtp-app.js b/lib/client/js/dtp-app.js new file mode 100644 index 0000000..285b51d --- /dev/null +++ b/lib/client/js/dtp-app.js @@ -0,0 +1,260 @@ +// dtp-app.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import DtpDisplayEngine from './dtp-display-engine.js'; +import DtpSocket from './dtp-socket.js'; +import DtpLog from './dtp-log.js'; + +import UIkit from 'uikit'; +import numeral from 'numeral'; + +export default class DtpApp { + + constructor (appName, user) { + this.user = user; + this.name = appName; + this.log = new DtpLog(appName); + + this.log.debug('constructor', 'creating DisplayEngine instance'); + this.displayEngine = new DtpDisplayEngine(); + + this.domParser = new DOMParser(); + this.properties = { }; + } + + async onDtpLoad ( ) { + + } + + async connect (options) { + try { + this.log.debug('connect', 'creating WebSocket interface'); + this.socket = new DtpSocket(); + + this.log.debug('connect', 'connecting WebSocket platform'); + await this.socket.connect(options); + + this.log.info('connect', 'DTP framework online'); + } catch (error) { + this.log.error('connect', 'failed to connect', { error }); + UIkit.modal.alert(`Failed to connect to server: ${error.message}`); + } + } + + async confirmNavigation (event) { + const target = event.currentTarget || event.target; + event.preventDefault(); + event.stopPropagation(); + + const href = target.getAttribute('href'); + const hrefTarget = target.getAttribute('target'); + const text = target.textContent; + const whitelist = [ + 'digitaltelepresence.com', + 'www.digitaltelepresence.com', + 'sites.digitaltelepresence.com', + 'ourvoice.stream', + 'www.ourvoice.stream', + ]; + try { + const url = new URL(href); + if (!whitelist.includes(url.hostname)) { + await UIkit.modal.confirm(`

You are navigating to ${href}, a link or button that was displayed as:

${text}

Please only open links to destinations you trust and want to visit.
`); + } + window.open(href, hrefTarget); + } catch (error) { + this.log.info('confirmNavigation', 'navigation canceled', { error }); + } + + return true; + } + + async showForm (event, formUrl, formId, initRoutine) { + event.preventDefault(); + event.stopPropagation(); + try { + const response = await fetch(formUrl, { method: 'GET' }); + const html = await response.text(); + this.currentModal = UIkit.modal.dialog(html); + if (formId) { + this.currentModal.$el.id = formId; + } + if (initRoutine) { + this[initRoutine](); + } + } catch (error) { + UIkit.modal.alert(`Failed to display form: ${error.message}`); + } + return true; + } + + async submitForm (event, userAction) { + event.preventDefault(); + event.stopPropagation(); + + const formElement = event.currentTarget || event.target; + const submitButton = formElement.querySelector('button[type="submit"]'); + + try { + const form = new FormData(formElement); + if (submitButton) { + submitButton.setAttribute('disabled', ''); + } + + // include the submitter if we have one and it presents all required data + if (event.submitter && event.submitter.name && event.submitter.value) { + form.append(event.submitter.name, event.submitter.value); + } + + this.log.info('submitForm', userAction, { event, action: formElement.action }); + const response = await fetch(formElement.action, { + method: formElement.method, + body: form, + }); + + if (!response.ok) { + let json; + try { + json = await response.json(); + } catch (error) { + throw new Error('Server error'); + } + throw new Error(json.message || 'Server error'); + } + + await this.processResponse(response); + } catch (error) { + UIkit.modal.alert(`Failed to ${userAction}: ${error.message}`); + } finally { + if (this.currentModal) { + this.currentModal.hide(); + delete this.currentModal; + } + if (submitButton) { + submitButton.removeAttribute('disabled'); + } + } + + return; + } + + async checkResponse (response) { + if (!response.ok) { + let json; + try { + json = await response.json(); + } catch (error) { + throw new Error('Server error'); + } + throw new Error(json.message); + } + } + + async processResponse (response) { + const json = await response.json(); + return this.processResponseJSON(json); + } + + async processResponseJSON (json) { + if (!json.success) { + this.log.error('processResponseJSON', json.message); + throw new Error(json.message); + } + if (json.displayList) { + this.displayEngine.executeDisplayList(json.displayList); + } + } + + async validateTextElement (element, elementName, options) { + const DEFAULT_MAX_CHARS = 1000; + const DEFAULT_OPTIONS = { + maxLength: DEFAULT_MAX_CHARS, + minLength: 1, + warnLengths: [80, 150], + feedback: { + textEmpty: `The ${elementName} can't be empty`, + textTooShort: "Keep going...", + textValid: "You're off to a great start!", + textLengthWarn: [ + "This is getting a little crazy", + `Only ${Math.max(0, options.maxLength - element.value.length)} characters left`, + ], + textMaxLength: `The ${elementName} is as long as it can be.`, + textTooLong: `${elementName} is too long by ${element.value.length - options.maxLength} characters`, + } + }; + options = Object.assign(DEFAULT_OPTIONS, options); + + if (options.prompt) { + options.prompt.textContent = `${element.value.length} of ${options.maxLength} max`; + } + + let isValid = true; + + if (element.value.length === 0 || element.value.length > options.maxLength) { + element.classList.remove('uk-form-success'); + element.classList.remove('uk-form-warning'); + element.classList.add('uk-form-danger'); + isValid = false; + } else if (element.value.length > options.warnLengths[1]) { + element.classList.remove('uk-form-success'); + element.classList.remove('uk-form-danger'); + element.classList.add('uk-form-warning'); + } else { + element.classList.remove('uk-form-danger'); + element.classList.remove('uk-form-warning'); + element.classList.remove('uk-form-success'); + } + + if (element.value.length === 0) { + window.dtp.submit.prompt.textContent = options.feedback.textEmpty; + isValid = false; + } else if (options.minLength && (element.value.length < options.minLength)) { + window.dtp.submit.prompt.textContent = options.feedback.textTooShort; + isValid = false; + } else if (element.value.length < options.warnLengths[0]) { + window.dtp.submit.prompt.textContent = options.feedback.textValid; + } else if (element.value.length < options.warnLengths[1]) { + window.dtp.submit.prompt.textContent = options.feedback.textLengthWarn[0]; + } else if (element.value.length < options.maxLength) { + window.dtp.submit.prompt.textContent = options.feedback.textLengthWarn[1]; + window.dtp.submit.prompt.classList.add('uk-text-bold'); + } else if (element.value.length === options.maxLength) { + window.dtp.submit.prompt.textContent = options.feedback.textMaxLength; + window.dtp.submit.prompt.classList.add('uk-text-bold'); + } else { + window.dtp.submit.prompt.textContent = options.feedback.textTooLong; + window.dtp.submit.prompt.classList.add('uk-text-bold'); + isValid = false; + } + + return isValid; + } + + async parseHtml (html) { + return this.domParser.parseFromString(html, 'text/html'); + } + + async copyToClipboard (event) { + const target = event.currentTarget || event.target; + const text = target.getAttribute('data-text'); + const message = target.getAttribute('data-message'); + try { + await navigator.clipboard.writeText(text); + UIkit.modal.alert(message); + } catch (error) { + UIkit.modal.alert(`Failed to copy to clipboard: ${error.message}`); + } + } + + formatCount (value) { + return numeral(value).format((value > 1000) ? '0,0.0a' : '0,0'); + } + + randomString ( ) { + return Math.random().toString().slice(2); + } +} \ No newline at end of file diff --git a/lib/client/js/dtp-display-engine.js b/lib/client/js/dtp-display-engine.js new file mode 100644 index 0000000..061fc38 --- /dev/null +++ b/lib/client/js/dtp-display-engine.js @@ -0,0 +1,299 @@ +// dtp-display-engine.js +// Copyright (C) 2022,2023 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +const DTP_COMPONENT_NAME = 'DtpDisplayEngine'; +import DtpLog from './dtp-log.js'; +const dtp = window.dtp = window.dtp || { }; + +export default class DtpDisplayEngine { + + constructor ( ) { + this.processors = { }; + this.log = new DtpLog(DTP_COMPONENT_NAME); + this.log.debug('constructor', 'DTP Display Engine instance created'); + } + + /** + * Register a named Display List processor plugin. This lets client objects + * define their own Display List processor classes and resiter them. Server + * code can then execute actions on named processors in the client. + * @param {*} name The name of the DL processor being registered. + * @param {*} processor The custom DL processor being registered. + */ + registerProcessor (name, processor) { + this.processors[name] = processor; + } + + /** + * Unregisters a named Display List processing plugin. + * @param {String} name The name of the DL processor to be unregistered. + */ + unregisterProcessor (name) { + if (!this.processors[name]) { + return; + } + delete this.processors[name]; + } + + /** + * Executes a Display List to implement view changes requested by the server. + * These can arrive from an HTTP request, via socket.io, or generated in code + * and passed in. + * @param {DtpDisplayList} displayList + */ + async executeDisplayList (displayList) { + try { + displayList.commands.forEach((command) => { + const processor = command.processor ? this.processors[command.processor] : this; + this.log.debug(command.action, 'action', command); + try { + processor[command.action](displayList, command); + } catch (error) { + this.log.error('executeDisplayList', 'failed to execute DisplayEngine command', { error }); + } + }); + } catch (error) { + this.log.error('executeDisplayList', 'failed to apply DisplayEngine updates', { error }); + UIkit.modal.alert(`Failed to apply updates: ${error.message}`); + } + } + + /* + * action: addElement + * selector: Specifies the container element to insertAdjacentHTML + * where: 'beforebegin', 'afterbegin', 'beforeend', 'afterend' + * html: the HTML content to insert at the container as specified + */ + async addElement (displayList, command) { + const container = document.querySelector(command.selector); + if (!container) { + this.log.debug('addElement', 'displayList.addElement has failed', { command }); + return; + } + container.insertAdjacentHTML(command.params.where, command.params.html); + } + + async setTextContent (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || (elements.length === 0)) { + this.log.debug('setTextContent', 'failed to find target elements', { command }); + return; + } + elements.forEach((element) => { + element.textContent = command.params.text; + }); + } + + async setInputValue (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || (elements.length === 0)) { + this.log.debug('setInputValue', 'failed to find target elements', { command }); + return; + } + elements.forEach((element) => { + element.value = command.params.value; + }); + } + + /* + * action: replaceElement + * selector: Specifies the element to be replaced + * html: replaces the whole specified element + */ + async replaceElement (displayList, command) { + const element = document.querySelector(command.selector); + if (!element) { + this.log.debug('replaceElement', 'displayList.replaceElement has failed to find requested element', { command }); + return; + } + element.outerHTML = command.params.html; + } + + /* + * action: removeElement + * selector: Specifies the element(s) to be removed + */ + async removeElement (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || !elements.length) { + this.log.debug('removeElement', 'displayList.removeElement has failed', { command }); + return; + } + elements.forEach((element) => { + element.parentElement.removeChild(element); + }); + } + + /** + * Removes all child elements from the selected element(s). + * @param {DisplayList} displayList The display list being executed. + * @param {Command} command The command being executed. + */ + async removeChildren (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || !elements.length) { + this.log.debug('removeChildren', 'displayList.removeChildren has failed', { command }); + return; + } + for (const e of elements) { + while (e.firstChild) { + e.removeChild(e.firstChild); + } + } + } + + /* + * action: setAttribute + * selector: Specifies the element(s) for which an attribute's value should be set + * name: the name of the attribute to be set + * value: the value to be set on the named attribute + */ + async setAttribute (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || !elements.length) { + console.debug('displayList.setAttribute has failed', { command }); + return; + } + elements.forEach((element) => { + element.setAttribute(command.params.name, command.params.value); + }); + } + + /* + * action: removeAttribute + * selector: specifies the element(s) from which an attribute is to be removed + * name: the name of the attribute to be removed + */ + async removeAttribute (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || !elements.length) { + console.debug('displayList.removeAttribute has failed', { command }); + return; + } + elements.forEach((element) => { + element.removeAttribute(command.params.name); + }); + } + + /* + * action: toggleAttribute + * selector: specifies the element(s) from which an attribute is to be removed + * name: the name of the attribute to be added or removed + * force: true to force the addition of the attribute, false to force the + * removal of the attribute, leave undefined to simply toggle. + */ + async toggleAttribute (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || !elements.length) { + console.debug('displayList.toggleAttribute has failed', { command }); + return; + } + elements.forEach((element) => { + element.toggleAttribute(command.params.name, command.params.force); + }); + } + + /* + * action: addClass + * selector: Specifies the element(s) for which style class(es) should be added + * name: the class name to add to the classList + */ + async addClass (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || !elements.length) { + console.debug('displayList.addClass has failed', { command }); + return; + } + elements.forEach((element) => { + element.classList.add(command.params.add); + }); + } + + /* + * action: removeClass + * selector: Specifies the element(s) for which style class(es) should be removed + * name: the class name to remove from the classList + */ + async removeClass (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || !elements.length) { + console.debug('displayList.removeClass has failed', { command }); + return; + } + elements.forEach((element) => { + element.classList.remove(command.params.remove); + }); + } + + /* + * action: replaceClass + * selector: Specifies the elements for which class replacement should occur + * remove: the class name to remove from the classList + * add: the class name to add to the classList + */ + async replaceClass (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || !elements.length) { + console.debug('displayList.replaceClass has failed', { command }); + return; + } + elements.forEach((element) => { + element.classList.remove(command.params.remove); + element.classList.add(command.params.add); + }); + } + + async showNotification (displayList, command) { + UIkit.notification(command.params); + } + + async showModal (displayList, command) { + UIkit.modal.dialog(command.params.html); + } + + async playNotificationSound (displayList, command) { + const { action } = command.params; + if (!dtp.app || !dtp.app.audio) { + return; + } + dtp.app.playNotificationSound(action); + } + + async playSound (displayList, command) { + const { soundId } = command.params; + if (!dtp.app || !dtp.app.audio && !dtp.app.audio.hasSound(soundId)) { + return; + } + dtp.app.audio.playSound(soundId); + } + + async setValue (displayList, command) { + const elements = document.querySelectorAll(command.selector); + if (!elements || !elements.length) { + console.debug('displayList.setValue (no elements found)', { command }); + return; + } + elements.forEach((element) => { + element.value = command.params.value; + }); + } + + async navigateTo (displayList, command) { + window.location = command.params.href; + } + + async navigateBack ( ) { + if (window.history.length === 0) { + window.location = '/'; + return; + } + window.history.back(); + } + + async reloadView ( ) { + window.location.reload(); + } +} \ No newline at end of file diff --git a/lib/client/js/dtp-log.js b/lib/client/js/dtp-log.js new file mode 100644 index 0000000..58f6d85 --- /dev/null +++ b/lib/client/js/dtp-log.js @@ -0,0 +1,127 @@ +// dtpweb-log.js +// Copyright (C) 2022,2023 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +window.dtp = window.dtp || { }; + +export default class DtpWebLog { + + constructor (componentName, options) { + this.componentName = componentName; + this.options = Object.assign({ + color: { + debug: '#808080', + info: '#249324', + warn: '#AC7C37', + error: '#A74949', + }, + size: { + label: 120, + }, + }, options); + + this.css = { + debug: { + label: ` + display: inline-block; + background-color: ${this.options.color.debug}; + color: white; + width: ${this.options.size.label}px; + padding: 2px 4px; + border-radius: 4px; + `, + message: ` + color: ${this.options.color.debug}; + `, + }, + info: { + label: ` + background-color: ${this.options.color.info}; + color: white; + width: ${this.options.size.label}px; + padding: 2px 4px; + border-radius: 4px; + `, + message: ` + color: ${this.options.color.info}; + `, + }, + warn: { + label: ` + background-color: ${this.options.color.warn}; + color: white; + width: ${this.options.size.label}px; + padding: 2px 4px; + border-radius: 4px; + `, + message: ` + color: ${this.options.color.warn}; + `, + }, + error: { + label: ` + background-color: ${this.options.color.error}; + color: white; + width: ${this.options.size.label}px; + padding: 2px 4px; + border-radius: 4px; + `, + message: ` + color: ${this.options.color.error}; + `, + }, + }; + + const env = document.querySelector('body').getAttribute('data-dtp-env'); + if (env === 'local') { + this.enable(); + } + } + + enable (enabled = true) { + this.enabled = enabled; + } + + debug (event, msg, data) { + this.write('debug', this.css.debug, event, msg, data); + } + + log (event, msg, data) { this.info(event, msg, data); } + + info (event, msg, data) { + this.write('log', this.css.info, event, msg, data); + } + + warn (event, msg, data) { // alias for warning + this.warning(event, msg, data); + } + + warning (event, msg, data) { + this.write('warn', this.css.warn, event, msg, data); + } + + error (event, msg, data) { + this.write('error', this.css.error, event, msg, data); + if (data && data.error) { + console.error(data.error); + } + } + + write (method, css, event, msg, data) { + if (!this.enabled) { return; } + if (data) { + console[method]('%c%s%c: %s', + css.label, `${this.componentName}.${event}`, + css.message, msg, + data, + ); + } else { + console[method]('%c%s%c: %s', + css.label, `${this.componentName}.${event}`, + css.message, msg, + ); + } + } +} \ No newline at end of file diff --git a/lib/client/js/dtp-plugin.js b/lib/client/js/dtp-plugin.js new file mode 100644 index 0000000..a4af829 --- /dev/null +++ b/lib/client/js/dtp-plugin.js @@ -0,0 +1,43 @@ +// dtp-plugin.js +// Copyright (C) 2022,2023 DTP Technologies, LLC +// All Rights Reserved + +/** + * I am just getting started roughing in the framework for DtpPlugin. + * DtpPlugin will be the base class for developers to use when creating a plugin + * intended to run within a DTP call. + * + * DtpApp will first create a data channel within the current call to implement + * the plugin's communications among call participants. DtpApp will then + * configure the view with a
and populate a plugin-safe object with + * information about the call participants. + * + * The plugin will be given these objects. It will instantiate itself into the + * parent
provided by DtpApp, wire up any event handlers it needs, etc. It + * can then immediately begin sending and receiving data among the call + * participants and indicate whatever is needed within the
provided. + * + * Some plugins may instantiate a within the
. Canvas2D, WebGL, + * Web Audio API, Gamepad API, and the rest of the web are available directly to + * DTP plugins. + */ + +'use strict'; + +const DTP_COMPONENT_NAME = 'dtp:plugin'; + +window.dtp = window.dtp || { }; + +import DtpLog from 'dtp/dtp-log.js'; + +export default class DtpPlugin { + + constructor (app, context, componentName) { + this.app = app; + this.context = context; + this.componentName = componentName; + this.log = new DtpLog(`${DTP_COMPONENT_NAME}:${componentName}`); + } +} + +window.dtp.DtpPlugin = DtpPlugin; \ No newline at end of file diff --git a/lib/client/js/dtp-socket.js b/lib/client/js/dtp-socket.js new file mode 100644 index 0000000..cceebc5 --- /dev/null +++ b/lib/client/js/dtp-socket.js @@ -0,0 +1,218 @@ +// dtpweb-socket.js +// Copyright (C) 2022,2023 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +window.dtp = window.dtp || { }; + +// import UIkit from 'uikit'; +import DtpWebLog from './dtp-log.js'; + +export default class DtpWebSocket { + + constructor ( ) { + this.isConnected = false; + this.isAuthenticated = false; + this.joinedChannels = { }; + + this.log = new DtpWebLog('DtpWebSocket'); + } + + async connect (options) { + this.options = Object.assign({ + mode: 'User', + withRetry: true, + withError: false, + }, options); + try { + let buster = Math.random().toString().slice(2); + let response; + switch (this.options.mode) { + case 'User': + if (!window.dtp.user) { + return false; // if we don't have a user, just go away and stop trying. + } + response = await fetch(`/auth/socket-token?cb=${buster}`); + break; + case 'Channel': + response = await fetch(`/auth/socket-token/obs-widget?cb=${buster}`); + break; + } + + if (!response.ok) { + if (options.withRetry) { + return this.retryConnect(); + } + let json; + try { + json = await response.json(); + } catch (jsonError) { + throw new Error('socket failed to connect'); + } + throw new Error(`socket failed to connect: ${json.message}`); + } + + const json = await response.json(); + if (!json.success) { + this.retryConnect(); + throw new Error(`failed to connect: ${json.message}`); + } + + this.log.debug('connect', 'WebSocket connecting to Digital Telepresence Platform', json); + this.socket = io('/', { + transports: ['websocket'], + reconnection: false, + auth: { + token: json.token, + }, + }); + + this.socket.on('connect', this.onSocketConnect.bind(this)); + this.socket.on('disconnect', this.onSocketDisconnect.bind(this)); + + this.socket.on('user-authenticated', this.onSocketUserAuthenticated.bind(this)); + this.socket.on('widget-authenticated', this.onSocketWidgetAuthenticated.bind(this)); + + this.socket.on('join-result', this.onJoinResult.bind(this)); + + return true; + } catch (error) { + this.log.error('connect', 'failed to connect', { error }); + if (this.options.withRetry) { + this.retryConnect(); + } + if (this.options.withError) { + throw error; + } + return false; + } + } + + async onSocketConnect ( ) { + this.log.info('onSocketConnect', 'WebSocket connected'); + this.isConnected = true; + if (this.disconnectDialog) { + this.disconnectDialog.hide(); + delete this.disconnectDialog; + } + } + + async onSocketDisconnect (reason) { + this.isConnected = false; + this.socket.close(); + if (this.options.onSocketDisconnect && (typeof this.options.onSocketDisconnect === 'function')) { + this.options.onSocketDisconnect(this.socket); + } + delete this.socket; + + if (!this.isAuthenticated) { + UIkit.modal.alert(`Failed to authenticate WebSocket session. Please log out, log back in, and try again.`); + return; + } + + this.log.warn('onSocketDisconnect', 'WebSocket disconnected', { reason }); + this.showDisconnectWarning(reason); + this.retryConnect(); + } + + showDisconnectWarning (reason) { + const REASONS = { + 'io server disconnect': 'The server closed the connection', + 'io client disconnect': 'The client closed the connection', + 'ping timeout': 'The server is unreachable', + 'transport close': 'Connection was lost or network changed', + 'transport error': 'Server communication error, please try again.', + }; + + const modal = UIkit.modal.dialog(` +
+
+

Network Disconnected

+
+
+
${REASONS[reason]}.
+
Reconnecting...
+
+
`); + + this.disconnectDialog = modal; + + UIkit.util.on(modal.$el, 'hidden', ( ) => { + delete this.disconnectDialog; + }); + } + + retryConnect ( ) { + if (this.retryTimeout) { + return; // a retry is already in progress + } + this.retryTimeout = setTimeout(async ( ) => { + delete this.retryTimeout; + await this.connect(this.options); + }, 5000); + } + + async onSocketUserAuthenticated (message) { + this.log.info('onSocketUserAuthenticated', message.message, { user: message.user }); + + this.isAuthenticated = true; + this.user = message.user; + + if (this.options.onSocketConnect && (typeof this.options.onSocketConnect === 'function')) { + this.options.onSocketConnect(this.socket); + } + + this.joinChannel(message.user._id, 'User'); + document.dispatchEvent(new Event('socketConnected')); + } + + async onSocketWidgetAuthenticated (message) { + this.log.info('onSocketWidgetAuthenticated', message.message, { channel: message.channel }); + this.channel = message.channel; + + if (this.options.onSocketConnect && (typeof this.options.onSocketConnect === 'function')) { + this.options.onSocketConnect(this.socket); + } + + // this.joinChannel(message.channel._id, 'Channel'); + document.dispatchEvent(new Event('socketConnected')); + } + + async joinChannel (channelId, channelType, passcode) { + this.log.info('joinChannel', 'joining channel', { channelId, channelType }); + this.socket.emit('join', { channelId, channelType, passcode }); + } + + async isChannelJoined (channelId) { + return !!this.joinedChannels[channelId]; + } + + async onJoinResult (message) { + this.log.info('onJoinResult', 'channel join result received', { message }); + if (message.channelId) { + this.joinedChannels[message.channelId] = message; + } + + const event = new CustomEvent('dtp-channel-joined', { detail: message }); + window.dispatchEvent(event); + } + + async leaveChannel (channelId) { + this.log.info('leaveChannel', 'leaving channel', { channelId }); + this.socket.emit('leave', { channelId }); + if (this.joinedChannels[channelId]) { + delete this.joinedChannels[channelId]; + } + } + + async sendUserChat (channelId, content, action) { + this.log.info('sendUserChat', 'sending message to channel', { channelId, content, action }); + this.socket.emit('user-chat', { channelId, content, action }); + } + + async sendUserReaction (channelId, timestamp, reaction) { + this.log.info('sendUserReaction', 'sending reaction to channel', { channelId, timestamp, reaction }); + this.socket.emit('user-react', { channelId, timestamp, reaction }); + } +} \ No newline at end of file diff --git a/lib/site-controller.js b/lib/site-controller.js index 019edb5..4b8d82c 100644 --- a/lib/site-controller.js +++ b/lib/site-controller.js @@ -5,17 +5,17 @@ 'use strict'; import multer from 'multer'; -import * as slugTool from 'slug'; +import slugTool from 'slug'; import { SiteCommon } from './site-common.js'; import { SiteLog } from './site-log.js'; export class SiteController extends SiteCommon { - constructor (dtp, name) { + constructor (dtp, definition) { super(dtp); - this.name = name; - this.log = new SiteLog(dtp, `ctrl:${name}`); + this.name = definition.name; + this.log = new SiteLog(dtp, definition); this.children = { }; } diff --git a/lib/site-ioserver.js b/lib/site-ioserver.js new file mode 100644 index 0000000..b5a8d40 --- /dev/null +++ b/lib/site-ioserver.js @@ -0,0 +1,784 @@ +// site-ioserver.js +// Copyright (C) 2024 DTP Technologies, LLC +// All Rights Reserved + +'use strict'; + +import { createAdapter } from '@socket.io/redis-adapter'; + +import mongoose from 'mongoose'; + +const ConnectToken = mongoose.model('ConnectToken'); +const Image = mongoose.model('Image'); // jshint ignore:line + +// const ChatRoom = mongoose.model('ChatRoom'); +const ChatMessage = mongoose.model('ChatMessage'); + +import dayjs from 'dayjs'; +import striptags from 'striptags'; +import { Renderer, parse } from 'marked'; +import numeral from 'numeral'; +// import pug from 'pug'; + +import { SiteLog } from './site-log.js'; +import { SiteCommon } from './site-common.js'; + +export class SiteIoServer extends SiteCommon { + + static get name ( ) { return 'SiteIoServer'; } + static get slug ( ) { return 'ioServer'; } + + constructor (dtp) { + super(dtp); + this.dtp = dtp; + this.log = new SiteLog(dtp, SiteIoServer); + } + + async start (httpServer) { + const { Server } = await import('socket.io'); + + /* + * Markdown processing + */ + + function confirmedLinkRenderer (href, title, text) { + return `${text}`; + } + + this.markedRenderer = new Renderer(); + this.markedRenderer.link = confirmedLinkRenderer; + this.markedRenderer.image = (href, title, text) => { return text; }; + + const hljs = await import('highlight.js'); + this.markedConfig = { + renderer: this.markedRenderer, + highlight: function(code, lang) { + const language = hljs.getLanguage(lang) ? lang : 'plaintext'; + return hljs.highlight(code, { language }).value; + }, + langPrefix: 'hljs language-', // highlight.js css expects a top-level 'hljs' class. + pedantic: false, + gfm: true, + breaks: false, + sanitize: false, + smartLists: true, + smartypants: false, + xhtml: false, + }; + + /* + * The chat message rate limiter uses Redis to provide accurate atomic + * accounting regardless of which host is currently hosting a user's chat + * connection and session. + */ + const { RateLimiterRedis } = await import('rate-limiter-flexible'); + + this.channelJoinLimiter = new RateLimiterRedis({ + storeClient: this.dtp.redis, + points: 30, + duration: 60, + blockDuration: 60 * 60, + execEvenly: false, + keyPrefix: 'iorl:chatjoin:', + }); + + this.chatMessageLimiter = new RateLimiterRedis({ + storeClient: this.dtp.redis, + points: 2, + duration: 5, + blockDuration: 60 * 60, + execEvenly: false, + keyPrefix: 'iorl:chatmsg:', + }); + + this.slowChatLimiter = new RateLimiterRedis({ + storeClient: this.dtp.redis, + points: 2, + duration: 30, + blockDuration: 60 * 60, + execEvenly: false, + keyPrefix: 'iorl:slowchat', + }); + + const transports = [ + 'websocket', + // 'polling', + ]; + + this.log.info('creating Socket.io <-> Redis adapter'); + this.adapterPubClient = this.dtp.redis.duplicate(); + this.adapterSubClient = this.dtp.redis.duplicate(); + this.adapter = createAdapter(this.adapterPubClient, this.adapterSubClient); + + this.io = new Server(httpServer, { adapter: this.adapter, transports }); + this.io.adapter(this.adapter); + + this.io.on('connection', this.onSocketConnect.bind(this)); + } + + async onRedisError (error) { + this.log.error('Redis error', { error }); + } + + async stop ( ) { + this.log.info('stopping Socket.io server'); + } + + async onSocketConnect (socket) { + const { channel: channelService } = this.dtp.services; + + this.log.debug('socket connection', { sid: socket.id }); + try { + const token = await ConnectToken + .findOne({ token: socket.handshake.auth.token }) + .populate([ + { + path: 'consumer', + select: '+membership +flags +flags.isCloaked', + populate: [ + { + path: 'membership', + model: 'Membership', + select: 'status granted expires started plan', + strictPopulate: false, + populate: [ + { + path: 'plan', + model: 'MembershipPlan', + select: 'product.name tier' + }, + ], + }, + ], + }, + ]) + .lean(); + if (!token) { + this.log.alert('rejecting invalid socket token', { + sid: socket.sid, + handshake: socket.handshake, + }); + socket.disconnect(true); + return; + } + + if (token.consumer) { + if (token.consumer.password) { + delete token.consumer.password; + } + if (token.consumer.passwordSalt) { + delete token.consumer.passwordSalt; + } + } + + if (token.claimed) { + this.log.alert('rejecting use of claimed connect token', { + sid: socket.id, + handshake: socket.handshake, + }); + socket.disconnect(true); + return; + } + + await ConnectToken.updateOne( + { _id: token._id }, + { $set: { claimed: new Date() } }, + ); + this.log.debug('token claimed', { + sid: socket.id, + token: socket.handshake.auth.token, + consumerType: token.consumerType, + consumerId: token.consumer._id, + }); + + const session = { + socket, + joinedChannels: new Set(), + joinedRooms: new Map(), + }; + + session.onSocketDisconnect = this.onSocketDisconnect.bind(this, session); + socket.on('disconnect', session.onSocketDisconnect); + + session.onJoinChannel = this.onJoinChannel.bind(this, session); + socket.on('join', session.onJoinChannel); + + session.onLeaveChannel = this.onLeaveChannel.bind(this, session); + socket.on('leave', session.onLeaveChannel); + + switch (token.consumerType) { + case 'User': + session.user = { + _id: token.consumer._id, + created: token.consumer.created, + username: token.consumer.username, + username_lc: token.consumer.username_lc, + displayName: token.consumer.displayName, + flags: token.consumer.flags, + membership: token.consumer.membership, + balances: token.consumer.balances, + }; + if (token.consumer.picture && token.consumer.picture.small) { + session.user.picture = { + small: await Image.findOne({ _id: token.consumer.picture.small }), + }; + } + + session.onUserChat = this.onUserChat.bind(this, session); + socket.on('user-chat', session.onUserChat); + + socket.emit('user-authenticated', { + message: 'token verified', + user: session.user, + }); + break; + + case 'Channel': + session.channel = await channelService.getChannelById(token.consumer._id); + if (session.channel.widgetKey) { + delete session.channel.widgetKey; + session.isWidget = true; + } + if (session.channel.streamKey) { + delete session.channel.streamKey; + } + this.log.info('starting Channel session', { channel: session.channel.name }); + + socket.emit('widget-authenticated', { + message: 'token verified', + channel: session.channel, + }); + break; + } + } catch (error) { + this.log.error('failed to process a socket connection', { error }); + } + } + + async onSocketDisconnect (session, reason) { + const { chat: chatService } = this.dtp.services; + + this.log.debug('socket disconnect', { sid: session.socket.id, consumerId: (session.user || session.channel)._id, reason }); + + if (session.user && session.joinedRooms.size > 0) { + for await (const room of session.joinedRooms) { + await chatService.chatRoomCheckOut(room[1], session.user); + } + } + + if (session.onSocketDisconnect) { + session.socket.off('disconnect', session.onSocketDisconnect); + delete session.onSocketDisconnect; + } + + if (session.onJoinChannel) { + session.socket.off('join', session.onJoinChannel); + delete session.onJoinChannel; + } + + if (session.onLeaveChannel) { + session.socket.off('leave', session.onLeaveChannel); + delete session.onLeaveChannel; + } + + if (session.onUserChat) { + session.socket.off('user-chat', session.onUserChat); + delete session.onUserChat; + } + } + + async onJoinChannel (session, message) { + const { channelType } = message; + + try { + await this.channelJoinLimiter.consume(session.socket.id, 1); + } catch (error) { + session.socket.disconnect(true); + this.log.alert('banned client IP due to channel join limit', { sip: session.socket.handshake.address }); + return; + } + + this.log.info('onJoinChannel', { + sid: session.socket.id, + channelType: message.channelType, + channelId: message.channelId, + }); + try { + switch (channelType) { + case 'User': + return this.onJoinUserChannel(session, message); + case 'Channel': + return this.onJoinStreamChannel(session, message); + case 'ChatRoom': + return this.onJoinChatRoom(session, message); + case 'Thread': + return this.onJoinThread(session, message); + + default: + break; + } + } catch (error) { + this.log.error('failed to join channel', { error }); + } + } + + async onJoinUserChannel (session, message) { + if (!session.user || !session.user._id) { + return session.socket.emit('join-result', { authResult: 'access-denied' }); + } + + const channelId = message.channelId; + const channelComponents = channelId.split(':'); + const parsedChannelId = mongoose.Types.ObjectId((channelComponents[0] === 'broadcast') ? channelComponents[1] : channelComponents[0]); + + if (parsedChannelId.equals(session.user._id)) { + this.log.debug('user joins their own channel', { + sid: session.socket.id, + consumerId: parsedChannelId, + userId: session.user._id, + channelId: channelId, + }); + session.joinedChannels.add(channelId); + session.socket.join(channelId.toString()); + return session.socket.emit('join-result', { + socketId: session.socket.id, + channelId: channelId, + isPersonal: true, + }); + } + + return this.onJoinStreamChannel(session, message); + } + + async onJoinStreamChannel (session, message) { + const { channel: channelService } = this.dtp.services; + const { channelId } = message; + + const channelComponents = channelId.split(':'); + const parsedChannelId = mongoose.Types.ObjectId((channelComponents[0] === 'broadcast') ? channelComponents[1] : channelComponents[0]); + + session.channel = await channelService.getChannelById(parsedChannelId, { withPasscode: true }); + if (!session.channel) { return; } + + if (session.channel.flags.isLoginRequired.forChat) { + if (!session.user) { + this.log.alert('rejecting channel join from anonymous viewer'); + session.socket.emit('join-result', { authResult: 'access-denied' }); + return; + } + } + + let authResult = 'access-granted'; + if (session.channel && session.channel.show.passcode && (session.channel.show.passcode.length)) { + const { passcode } = session.channel.show; + delete session.channel.show.passcode; // safety 1st + + session.channel.show.isPrivate = true; + if (message.passcode !== passcode) { + session.socket.emit('join-result', { authResult: 'access-denied' }); + return; + } + } + + const classifier = channelComponents[1]; + if (classifier === 'moderator') { + if (!session.user) { + this.log.alert('rejecting moderator channel join from session with no user'); + return; + } + + const isChannelOwner = session.channel.owner._id.equals(session.user._id); + const isChannelModerator = !!(session.channel.moderators || [ ]).find((moderator) => moderator._id.equals(session.user._id)); + const isPlatformAdmin = (session.user.flags.isAdmin || session.user.flags.isModerator); + + /* + * If the session's user isn't the channel owner, one of the channel's + * moderators, or a platform-level administrator or moderator? They're not + * joining this channel to receive moderation events. + */ + + if (!(isChannelOwner && session.channel.flags.isChatAnnounce) && + !isChannelModerator && + !isPlatformAdmin) { + this.log.alert('rejecting unauthorized request to join moderator channel', { + channel: session.channel.name, + user: { + _id: session.user._id, + username: session.user.username_lc, + }, + }); + return; + } + } + + this.log.debug('socket joins stream channel', { + sid: session.socket.id, + sip: session.socket.handshake.address, + consumerId: (session.user || session.channel)._id, + channelId, + }); + session.joinedChannels.add(channelId); + session.socket.join(channelId); + session.socket.emit('join-result', { channelId, authResult }); + } + + async onJoinChatRoom (session, message) { + const { chat: chatService } = this.dtp.services; + + if (!session.user) { + session.socket.emit('join-result', { authResult: 'access-denied' }); + return; + } + + try { + const roomId = mongoose.Types.ObjectId(message.channelId); + const room = await chatService.getRoomById(roomId); + if (!room) { + session.socket.emit('join-result', { authResult: 'room-invalid', message: 'The chat room does not exist' }); + return; + } + + await chatService.chatRoomCheckIn(room, session.user); + + this.log.debug('user joins a chat room', { + sid: session.socket.id, + consumerId: (session.user || session.channel)._id, + userId: session.user._id, + roomId: room._id, + }); + + session.joinedChannels.add(room._id); + session.joinedRooms.set(room._id, room); + + session.socket.join(room._id.toString()); + session.socket.emit('join-result', { + socketId: session.socket.id, + roomId: room._id.toString(), + }); + } catch (error) { + this.log.error('failed to join chat room', { error }); + } + } + + async onJoinThread (session, message) { + const { chat: chatService } = this.dtp.services; + + if (!session.user) { + session.socket.emit('join-result', { authResult: 'access-denied' }); + return; + } + + try { + const threadId = mongoose.Types.ObjectId(message.channelId); + const thread = await chatService.getPrivateMessageById(threadId); + if (!thread) { + session.socket.emit('join-result', { authResult: 'room-invalid', message: 'The chat room does not exist' }); + return; + } + + this.log.debug('user joins a private message thread', { + sid: session.socket.id, + consumerId: (session.user || session.channel)._id, + userId: session.user._id, + threadId: thread._id, + }); + + session.joinedChannels.add(thread._id); + + session.socket.join(thread._id.toString()); + session.socket.emit('join-result', { + socketId: session.socket.id, + threadId: thread._id.toString(), + }); + } catch (error) { + this.log.error('failed to join private message thread', { error }); + } + } + + async onLeaveChannel (session, message) { + const { chat: chatService } = this.dtp.services; + const { channelId } = message; + if (!session.joinedChannels.has(channelId)) { + return; + } + + this.log.debug('socket leaves channel', { sid: session.socket.id, user: (session.user || session.channel)._id, channelId }); + session.socket.leave(channelId); + + session.joinedChannels.delete(channelId); + + if (session.joinedRooms.has(channelId)) { + await chatService.chatRoomCheckOut(session.joinedRooms.get(channelId), session.user); + session.joinedRooms.delete(channelId); + } + } + + async onUserChat (session, message) { + const { + action: actionService, + channel: channelService, + chat: chatService, + sticker: stickerService, + user: userService, + } = this.dtp.services; + + this.log.debug('onUserChat', { message }); + + const { channelId } = message; + if (!session.joinedChannels.has(channelId)) { + this.log.debug('message rejected: user is not joined to chat channel', { channel: channelId, user: session.user._id }); + return; + } + + if (!message.content || (message.content.length === 0)) { + this.log.debug('message rejected: chat message is empty', { channel: channelId, user: session.user._id }); + return; + } + + const channel = await channelService.getChannelById(channelId); + if (!channel) { + this.log.debug('message rejected: channel unknown/unedefined', { channel: channelId, user: session.user._id }); + return; + } + + const bannedUser = channel.bannedUsers.find((memberId) => memberId.equals(session.user._id)); + if (bannedUser) { + this.log.debug('message rejected: user is banned from channel', { channel: channelId, user: session.user._id }); + return; // sender is blocked by the channel + } + + const stickerSlugs = this.findStickers(message.content); + stickerSlugs.forEach((sticker) => { + const re = new RegExp(`:${sticker}:`, 'gi'); + message.content = message.content.replace(re, '').trim(); + }); + + try { + message.content = chatService.filterText(message.content); + if (message.content.length > 500) { + this.log.warn('message rejected: too long', { channel: channelId, user: session.user._id }); + return; // message is too long + } + + await chatService.analyzeContent(session.user, message.content); + } catch (error) { + this.log.error('chat message rejected', { error }); + return; // message fails the sniff tests + } + + try { + const userKey = `${channelId.toString()}:${session.user._id.toString()}`; + if (!session.user.membership || + !session.user.membership.plan || + (session.user.membership.plan.tier === 'free')) { + await this.slowChatLimiter.consume(userKey, 1); + } else { + await this.chatMessageLimiter.consume(userKey, 1); + } + } catch (rateLimiter) { + const NOW = new Date(); + if (!session.notifySpamMuzzle) { + this.log.alert('preventing chat spam', { userId: session.user._id, rateLimiter }); + session.socket.to(channelId).emit('system-message', { + created: NOW, + content: `${session.user.displayName || session.user.username} has been muted for for a while.`, + }); + session.notifySpamMuzzle = true; + } + session.socket.emit('system-message', { + created: NOW, + content: `You are rate limited for ${numeral(rateLimiter.msBeforeNext / 1000.0).format('0,0.0')} seconds.`, + rateLimiter, + }); + return; // rate limited, send nothing + } + + const userCheck = await userService.getUserAccount(session.user._id); + if (!userCheck || !userCheck.permissions || !userCheck.permissions.canChat) { + session.socket.emit('system-message', { + created: new Date(), + content: 'You are banned from Chat.', + }); + this.log.warn('message rejected: user does not have permission to chat', { channel: channelId, user: session.user._id }); + return; // permission denied + } + if (!userCheck.flags.isEmailVerified) { + session.socket.emit('system-message', { + created: new Date(), + content: 'Please verify your email address in Account settings before chatting.', + }); + return; // permission denied + } + + if (userCheck.flags.isCloaked) { + const displayList = this.createDisplayList('cloaked-notification'); + displayList.showNotification('You are currently cloaked and must not send chat messages.', 'danger', 'bottom-center', 5000); + session.socket.emit('system-message', { displayList }); + this.log.warn('message rejected: user is cloaked/ghost', { channel: channelId, user: session.user._id }); + return; // permission denied (you can NOT chat while cloaked) + } + + const stickers = await stickerService.resolveStickerSlugs(stickerSlugs); + + try { + await this.processSlashCommand(message); + } catch (error) { + const displayList = this.createDisplayList('slash-error'); + displayList.showNotification(`Command error: ${error.message}.`, 'danger', 'bottom-center', 5000); + session.socket.emit('system-message', { displayList }); + return; // permission denied (you can NOT chat while cloaked) + } + + /* + * If a message specifies an Action ID, pull the action and verify that we + * can find the action and that this is the author of that action. + */ + if (message.action) { + try { + message.action = await actionService.create(userCheck, message); + } catch (error) { + this.log.error('failed to process chat user action', { error }); + const displayList = this.createDisplayList('invalid-action'); + displayList.showNotification( + `Failed to process action: ${error.message}`, + 'danger', + 'bottom-center', + 5000, + ); + session.socket.emit('system-message', { displayList }); + return; + } + } + + /* + * Channel chat messages receive a fixed 10-day expiration. StreamRay has + * always been this way. Channel operators can manually clear the channel. + * They can also set an option to auto-clear when their stream ends. + * + * It would be easy enough to add a policy.retentionDays value to Channel. + * If people want it, it's trivial to add. + */ + const NOW = new Date(); + const chatMessage = await ChatMessage.create({ + created: NOW, + expires: dayjs(NOW).add(10, 'days').toDate(), + channel: channelId, + author: session.user._id, + content: message.content, + }); + this.log.debug('chat message persisted', { _id: chatMessage._id }); + + const renderedContent = parse( + this.dtpparse(message.content), + this.markedConfig, + ); + + const payload = { + _id: chatMessage._id, + user: userService.filterUserObject(session.user), + content: renderedContent, + stickers, + }; + + if (message.action) { + const actionDefinition = actionService.actions.find((action) => action.verb === message.action.verb); + payload.action = message.action; + payload.action.author = userCheck; + payload.action.overlay = actionDefinition.overlay; + payload.action.name = actionDefinition.name; + payload.action.price = actionDefinition.price; + } + + this.dtp.emitter.to(channelId).emit('user-chat', payload); + session.notifySpamMuzzle = false; + } + + findStickers (content) { + const tokens = content.split(' '); + const stickers = [ ]; + tokens.forEach((token) => { + if ((token[0] !== ':') || (token[token.length -1 ] !== ':')) { + return; + } + + token = token.slice(1, token.length - 1 ).toLowerCase(); + if (token.includes('/') || token.includes(':') || token.includes(' ')) { + return; // trimmed token includes invalid characters + } + + this.log.debug('found sticker request', { token }); + if (!stickers.includes(token)) { + stickers.push(striptags(token)); + } + }); + + return stickers.slice(0, 4); + } + + async processSlashCommand (message) { + const { action: actionService, user: userService } = this.dtp.services; + + if (!message || !message.content || (typeof message.content !== 'string') || (message.content.length === 0)) { + return; + } + + /* + * Split the message and verify that we got tokens + */ + const tokens = message.content.split(' '); + if (!Array.isArray(tokens) || (tokens.length === 0)) { + return; + } + + /* + * If the first token does not begin with a slash, abort. + */ + if (tokens[0][0] !== '/') { + return; + } + + /* + * Determine what command is being run + */ + const COMMAND_LIST = [ + 'action', + ]; + const COMMAND_MAP = { + 'a': 'action', + 'ac': 'action', + }; + + let command = tokens.shift().slice(1); + this.log.debug('running command', { command }); + if (!COMMAND_LIST.includes(command)) { + command = COMMAND_MAP[command]; + if (!command) { + throw new Error('Unknown command'); + } + } + + switch (command) { + case 'action': + let verb = tokens.shift().trim().toLowerCase(); + if (!actionService.VERB_LIST.includes(verb)) { + verb = actionService.SHORT_VERB_MAP[verb]; + if (!verb) { + throw new Error('Invalid verb'); + } + } + + const targets = await userService.resolveUsernames(tokens.shift().split(',')); + if (!Array.isArray(targets) || (targets.length === 0)) { + throw new Error('Invalid username(s)'); + } + + this.log.info('processing action command', { command, verb, targets: targets.map((target) => target._id) }); + message.content = `${targets[0].username}: ${tokens.join(' ')}`; + message.action = { verb, target: targets[0]._id }; + break; + default: + this.log.error('invalid slash command', { command }); + throw new Error('Unknown command'); + } + } +} \ No newline at end of file diff --git a/lib/site-lib.js b/lib/site-lib.js index adba697..23d16d5 100644 --- a/lib/site-lib.js +++ b/lib/site-lib.js @@ -5,7 +5,6 @@ 'use strict'; export { SiteCommon } from './site-common.js'; -// export * from './site-platform.js'; export { SiteAsync } from './site-async.js'; export { SiteError } from './site-error.js'; export { SiteLog } from './site-log.js'; diff --git a/lib/site-log.js b/lib/site-log.js index 0419883..529f106 100644 --- a/lib/site-log.js +++ b/lib/site-log.js @@ -6,7 +6,7 @@ import * as util from 'node:util'; -import moment from 'moment'; +import dayjs from 'dayjs'; import * as rfs from 'rotating-file-stream'; import color from 'ansicolor'; @@ -32,9 +32,9 @@ export class SiteLog { */ static setModel (model) { LogModel = model; } - constructor (dtp, componentName) { + constructor (dtp, component) { this.dtp = dtp; - this.componentName = componentName; + this.component = component; } async debug (message, metadata) { @@ -76,7 +76,7 @@ export class SiteLog { async writeLog (level, message, metadata) { const NOW = new Date(); - const { componentName } = this; + const { name: componentName } = this.component; if (process.env.DTP_LOG_CONSOLE === 'enabled') { let clevel = level.padEnd(5); @@ -104,7 +104,7 @@ export class SiteLog { break; } - const ctimestamp = color.darkGray(moment(NOW).format('YYYY-MM-DD HH:mm:ss.SSS')); + const ctimestamp = color.darkGray(dayjs(NOW).format('YYYY-MM-DD HH:mm:ss.SSS')); const ccomponentName = color.cyan(componentName); const cmessage = color.darkGray(message); if (metadata) { diff --git a/lib/site-service.js b/lib/site-service.js index 40da681..1ec8f68 100644 --- a/lib/site-service.js +++ b/lib/site-service.js @@ -10,10 +10,10 @@ import { SiteLog } from './site-log.js'; export class SiteService extends SiteCommon { constructor (dtp, definition) { - super(dtp); + super(dtp, definition); this.slug = definition.slug; this.name = definition.name; - this.log = new SiteLog(dtp, `svc:${this.slug}`); + this.log = new SiteLog(dtp, definition); } async start ( ) { diff --git a/nodemon.json b/nodemon.json new file mode 100644 index 0000000..f8708a8 --- /dev/null +++ b/nodemon.json @@ -0,0 +1,4 @@ +{ + "verbose": true, + "ignore": ["dist"] +} \ No newline at end of file diff --git a/package.json b/package.json index 1a9b2b0..ea696c5 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,8 @@ "chart.js": "^4.4.2", "connect-redis": "^7.1.1", "cookie-parser": "^1.4.6", + "cropperjs": "^1.6.1", + "dayjs": "^1.11.10", "diacritics": "^1.3.0", "disposable-email-provider-domains": "^1.0.9", "dotenv": "^16.4.5", @@ -37,21 +39,24 @@ "ioredis": "^5.3.2", "marked": "^12.0.1", "mediasoup": "^3.13.24", - "moment": "^2.30.1", - "mongoose": "^8.2.4", + "mongoose": "^8.3.1", "morgan": "^1.10.0", "multer": "^1.4.5-lts.1", "nodemailer": "^6.9.13", "numeral": "^2.0.6", + "otplib": "^12.0.1", "passport": "^0.7.0", "passport-local": "^1.0.0", "pretty-checkbox": "^3.0.3", "pug": "^3.0.2", + "qrcode": "^1.5.3", + "rate-limiter-flexible": "^5.0.0", "rotating-file-stream": "^3.2.1", "shoetest": "^1.2.2", "slug": "^9.0.0", "socket.io": "^4.7.5", "striptags": "^3.2.0", + "svg-captcha": "^1.4.0", "unzalgo": "^3.0.0", "uuid": "^9.0.1" }, diff --git a/webpack.config.js b/webpack.config.js index ee17c40..b0abd2b 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -21,11 +21,11 @@ if (webpackMode === 'development') { plugins.push( new BrowserSyncPlugin({ proxy: { - target: 'http://localhost:3000', + target: 'http://dev.chat.digitaltelepresence.com:3000', ws: true, }, - host: 'localhost', - open: 'local', + host: 'dev.chat.digitaltelepresence.com', + open: 'external', port: 3333, cors: true, ui: { @@ -48,28 +48,30 @@ if (webpackMode === 'development') { export default { entry: { + 'app': './client/js/index.js', 'chat-client': [ - './client/js/chat-client.js', + // './client/js/chat-client.js', './client/css/main.less', ], }, + devtool: 'source-map', mode: webpackMode, resolve: { alias: { - dtp: path.resolve(__dirname, 'lib', 'client', 'js'), + lib: path.resolve(__dirname, 'lib', 'client', 'js'), }, extensions: ['.js'], }, output: { filename: '[name].bundle.js', path: path.resolve(__dirname, 'dist'), - // clean: true, + clean: true, // publicPath: '/dist', }, - optimization: { - splitChunks: { - chunks: 'all', - }, + performance: { + hints: 'warning', + maxEntrypointSize: 512 * 1024, + maxAssetSize: 512 * 1024, }, plugins, module: { diff --git a/yarn.lock b/yarn.lock index ef83921..c71ffb0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1011,7 +1011,7 @@ resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.2.tgz#5acd38242e8bde4f9986e7913c8fdf49d3aa199f" integrity sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw== -"@mongodb-js/saslprep@^1.1.0": +"@mongodb-js/saslprep@^1.1.5": version "1.1.5" resolved "https://registry.yarnpkg.com/@mongodb-js/saslprep/-/saslprep-1.1.5.tgz#0c48a96c8d799e81fae311b7251aa5c1dc7c6e95" integrity sha512-XLNOMH66KhJzUJNwT/qlMnS4WsNDWD5ASdyaSH3EtK+F4r/CFGa3jT4GNi4mfOitGvWXtdLgQJkQjxSVrio+jA== @@ -1048,6 +1048,44 @@ resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== +"@otplib/core@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@otplib/core/-/core-12.0.1.tgz#73720a8cedce211fe5b3f683cd5a9c098eaf0f8d" + integrity sha512-4sGntwbA/AC+SbPhbsziRiD+jNDdIzsZ3JUyfZwjtKyc/wufl1pnSIaG4Uqx8ymPagujub0o92kgBnB89cuAMA== + +"@otplib/plugin-crypto@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@otplib/plugin-crypto/-/plugin-crypto-12.0.1.tgz#2b42c624227f4f9303c1c041fca399eddcbae25e" + integrity sha512-qPuhN3QrT7ZZLcLCyKOSNhuijUi9G5guMRVrxq63r9YNOxxQjPm59gVxLM+7xGnHnM6cimY57tuKsjK7y9LM1g== + dependencies: + "@otplib/core" "^12.0.1" + +"@otplib/plugin-thirty-two@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@otplib/plugin-thirty-two/-/plugin-thirty-two-12.0.1.tgz#5cc9b56e6e89f2a1fe4a2b38900ca4e11c87aa9e" + integrity sha512-MtT+uqRso909UkbrrYpJ6XFjj9D+x2Py7KjTO9JDPhL0bJUYVu5kFP4TFZW4NFAywrAtFRxOVY261u0qwb93gA== + dependencies: + "@otplib/core" "^12.0.1" + thirty-two "^1.0.2" + +"@otplib/preset-default@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@otplib/preset-default/-/preset-default-12.0.1.tgz#cb596553c08251e71b187ada4a2246ad2a3165ba" + integrity sha512-xf1v9oOJRyXfluBhMdpOkr+bsE+Irt+0D5uHtvg6x1eosfmHCsCC6ej/m7FXiWqdo0+ZUI6xSKDhJwc8yfiOPQ== + dependencies: + "@otplib/core" "^12.0.1" + "@otplib/plugin-crypto" "^12.0.1" + "@otplib/plugin-thirty-two" "^12.0.1" + +"@otplib/preset-v11@^12.0.1": + version "12.0.1" + resolved "https://registry.yarnpkg.com/@otplib/preset-v11/-/preset-v11-12.0.1.tgz#4c7266712e7230500b421ba89252963c838fc96d" + integrity sha512-9hSetMI7ECqbFiKICrNa4w70deTUfArtwXykPUvSHWOdzOlfa9ajglu7mNCntlvxycTiOAXkQGwjQCzzDEMRMg== + dependencies: + "@otplib/core" "^12.0.1" + "@otplib/plugin-crypto" "^12.0.1" + "@otplib/plugin-thirty-two" "^12.0.1" + "@rollup/plugin-babel@^5.2.0": version "5.3.1" resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" @@ -1742,10 +1780,10 @@ bs-recipes@1.3.4: resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" integrity sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw== -bson@^6.2.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/bson/-/bson-6.5.0.tgz#fc4828d065e64e48ea442b1a23099b2e52f7ff0b" - integrity sha512-DXf1BTAS8vKyR90BO4x5v3rKVarmkdkzwOrnYDFdjAY694ILNDkmA3uRh1xXJEl+C1DAh8XCvAQ+Gh3kzubtpg== +bson@^6.4.0, bson@^6.5.0: + version "6.6.0" + resolved "https://registry.yarnpkg.com/bson/-/bson-6.6.0.tgz#f225137eb49fe19bee4d87949a0515c05176e2ad" + integrity sha512-BVINv2SgcMjL4oYbBuCQTpE3/VKOSxrOA8Cj/wQP7izSzlBGVomdm+TcUd0Pzy0ytLSSDweCKQ6X3f5veM5LQA== buffer-from@^1.0.0: version "1.1.2" @@ -1793,6 +1831,11 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + caniuse-lite@^1.0.30001587: version "1.0.30001600" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079" @@ -1862,6 +1905,15 @@ cli@~1.0.0: exit "0.1.2" glob "^7.1.1" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -2097,6 +2149,11 @@ cron-parser@^4.2.1: dependencies: luxon "^3.2.1" +cropperjs@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/cropperjs/-/cropperjs-1.6.1.tgz#fd132021d93b824b1b0f2c2c3b763419fb792d89" + integrity sha512-F4wsi+XkDHCOMrHMYjrTEE4QBOrsHHN5/2VsVAaRq8P7E5z7xQpT75S+f/9WikmBEailas3+yo+6zPIomW+NOA== + cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -2167,6 +2224,11 @@ date-now@^0.1.4: resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" integrity sha512-AsElvov3LoNB7tf5k37H2jYSB+ZZPMT5sG2QjJCcdlV5chIv6htBUBUui2IKRjgtKAKtCBN7Zbwa+MtwLjSeNw== +dayjs@^1.11.10: + version "1.11.10" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + debug@2.6.9, debug@^2.2.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -2188,6 +2250,11 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + deepmerge@^4.2.2: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" @@ -2246,6 +2313,11 @@ diacritics@^1.3.0: resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1" integrity sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA== +dijkstrajs@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" + integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== + disposable-email-provider-domains@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/disposable-email-provider-domains/-/disposable-email-provider-domains-1.0.9.tgz#0ac18ca5477a8d5e6f7f53c5862de8f0dcdee055" @@ -2356,6 +2428,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +encode-utf8@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== + encodeurl@~1.0.1, encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2724,7 +2801,7 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -2832,7 +2909,7 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.5: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -3461,10 +3538,10 @@ jstransformer@1.0.0: is-promise "^2.0.0" promise "^7.0.1" -kareem@2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.5.1.tgz#7b8203e11819a8e77a34b3517d3ead206764d15d" - integrity sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA== +kareem@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.6.3.tgz#23168ec8ffb6c1abfd31b7169a6fb1dd285992ac" + integrity sha512-C3iHfuGUXK2u8/ipq9LfjFfXFxAZMQJJq7vLS45r3D9Y2xQ/m4S8zaR4zMLFWh9AsNPXmcFfUDhTEO8UIC/V6Q== kind-of@^6.0.2: version "6.0.3" @@ -3749,11 +3826,6 @@ mkdirp@^1.0.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -moment@^2.30.1: - version "2.30.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" - integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== - mongodb-connection-string-url@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz#b4f87f92fd8593f3b9365f592515a06d304a1e9c" @@ -3762,23 +3834,23 @@ mongodb-connection-string-url@^3.0.0: "@types/whatwg-url" "^11.0.2" whatwg-url "^13.0.0" -mongodb@6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-6.3.0.tgz#ec9993b19f7ed2ea715b903fcac6171c9d1d38ca" - integrity sha512-tt0KuGjGtLUhLoU263+xvQmPHEGTw5LbcNC73EoFRYgSHwZt5tsoJC110hDyO1kjQzpgNrpdcSza9PknWN4LrA== +mongodb@6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-6.5.0.tgz#3735b4fba085b26ca06f7744e9639bc538e93d87" + integrity sha512-Fozq68InT+JKABGLqctgtb8P56pRrJFkbhW0ux+x1mdHeyinor8oNzJqwLjV/t5X5nJGfTlluxfyMnOXNggIUA== dependencies: - "@mongodb-js/saslprep" "^1.1.0" - bson "^6.2.0" + "@mongodb-js/saslprep" "^1.1.5" + bson "^6.4.0" mongodb-connection-string-url "^3.0.0" -mongoose@^8.2.4: - version "8.2.4" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-8.2.4.tgz#785234f928aeabc1b1859b555c97fc18adc6ff8c" - integrity sha512-da/r6zpG+2eAXuhBGUnL6jcBd03zlytoCc5/wq+LyTsmrY9hhPQmSpnugwnfqldtBmUOhB6iMLoV4hNtHRq+ww== +mongoose@^8.3.1: + version "8.3.1" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-8.3.1.tgz#3784aaa0e17525bdd36f34de796554d479b20dda" + integrity sha512-D78C+s7QI4+pJQhs3XbOxzrHFEti4x+BDhaH94QrdV1/cmMA7fHc50LgLSXjzA/5q89TBK8DAXyf3VwDZbQJlA== dependencies: - bson "^6.2.0" - kareem "2.5.1" - mongodb "6.3.0" + bson "^6.5.0" + kareem "2.6.3" + mongodb "6.5.0" mpath "0.9.0" mquery "5.0.0" ms "2.1.3" @@ -4005,6 +4077,13 @@ once@^1.3.0: dependencies: wrappy "1" +opentype.js@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/opentype.js/-/opentype.js-0.7.3.tgz#40fb8ce18bfd60e74448efdfe442834098397aab" + integrity sha512-Veui5vl2bLonFJ/SjX/WRWJT3SncgiZNnKUyahmXCc2sa1xXW15u3R/3TN5+JFiP7RsjK5ER4HA5eWaEmV9deA== + dependencies: + tiny-inflate "^1.0.2" + opn@5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" @@ -4012,6 +4091,15 @@ opn@5.3.0: dependencies: is-wsl "^1.1.0" +otplib@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/otplib/-/otplib-12.0.1.tgz#c1d3060ab7aadf041ed2960302f27095777d1f73" + integrity sha512-xDGvUOQjop7RDgxTQ+o4pOol0/3xSZzawTiPKRrHnQWAy0WjhNs/5HdIDJCrqC4MBynmjXgULc6YfioaxZeFgg== + dependencies: + "@otplib/core" "^12.0.1" + "@otplib/preset-default" "^12.0.1" + "@otplib/preset-v11" "^12.0.1" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -4124,6 +4212,11 @@ plugin-error@^1.0.1: arr-union "^3.1.0" extend-shallow "^3.0.2" +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + portscanner@2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.2.0.tgz#6059189b3efa0965c9d96a56b958eb9508411cf1" @@ -4335,6 +4428,16 @@ punycode@^2.1.0, punycode@^2.3.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +qrcode@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" + integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== + dependencies: + dijkstrajs "^1.0.1" + encode-utf8 "^1.0.3" + pngjs "^5.0.0" + yargs "^15.3.1" + qs@6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" @@ -4367,6 +4470,11 @@ range-parser@^1.2.1, range-parser@~1.2.0, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +rate-limiter-flexible@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/rate-limiter-flexible/-/rate-limiter-flexible-5.0.0.tgz#e03de7eac7f8fe55f976b9f2eafc365739bb6cf8" + integrity sha512-ivCyLBwPtR5IRrz+aZnztVwX16ZK3iAjdlW21I/vjHq56at5Zb8eIefDzODg8R7hwPOHpBtb6Pj9Zdmn0nRb8g== + raw-body@2.5.2, raw-body@^2.3.2: version "2.5.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" @@ -4499,6 +4607,11 @@ require-from-string@^2.0.2: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -4730,6 +4843,11 @@ server-destroy@1.0.1: resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" integrity sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ== +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" @@ -5077,6 +5195,13 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svg-captcha@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/svg-captcha/-/svg-captcha-1.4.0.tgz#32ead3c6463936c218bb3bc9ed04fea4eeffe492" + integrity sha512-/fkkhavXPE57zRRCjNqAP3txRCSncpMx3NnNZL7iEoyAtYwUjPhJxW6FQTQPG5UPEmCrbFoXS10C3YdJlW7PDg== + dependencies: + opentype.js "^0.7.3" + tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -5130,6 +5255,11 @@ terser@^5.0.0, terser@^5.26.0: commander "^2.20.0" source-map-support "~0.5.20" +thirty-two@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/thirty-two/-/thirty-two-1.0.2.tgz#4ca2fffc02a51290d2744b9e3f557693ca6b627a" + integrity sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA== + through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" @@ -5140,6 +5270,11 @@ time-stamp@^1.0.0: resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" integrity sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw== +tiny-inflate@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" + integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -5554,6 +5689,11 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + which-typed-array@^1.1.14, which-typed-array@^1.1.15: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" @@ -5756,6 +5896,15 @@ workbox-window@7.0.0: "@types/trusted-types" "^2.0.2" workbox-core "7.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: name wrap-ansi-cjs version "7.0.0" @@ -5786,6 +5935,11 @@ xtend@^4.0.0: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -5801,11 +5955,36 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yargs@^17.3.1: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"