summary refs log tree commit diff
Commit message (Expand)AuthorAgeFilesLines
* Make `afk` optional in ActivitySchemaMadeline2022-10-012-56/+2
* Split MANAGE_GUILDS right into MANAGE_GUILDS for instance-wide control and SE...Madeline2022-09-302-2/+3
* Fix fetching members for roles in POST messageMadeline2022-09-292-16/+21
* Prevent URL embedding and mentions when in codeblockMadeline2022-09-291-3/+3
* Update read state on message createMadeline2022-09-291-8/+16
* Fix client crash on GUILD_CREATEMadeline2022-09-282-0/+2
* Remove user settings from GUILD_MEMBER_LIST_UPDATE responseMadeline2022-09-281-1/+1
* whoopsMadeline2022-09-281-1/+1
* fix loginRedirectMadeline2022-09-281-1/+1
* Discovery splashes + fix guild icons disappearing on settings changeMadeline2022-09-284-7/+23
* Fix user guild settingsMadeline2022-09-281-13/+7
* Missed some schemasMadeline2022-09-2811-2495/+2580
* Use PrimaryIdColumn instead of PrimaryColumn in Invite and CategoryMadeline2022-09-282-6/+5
* Generate IDs for entities by defaultMadeline2022-09-281-1/+2
* Fix user validator preventing updateMadeline2022-09-271-40/+51
* Fix message editingMadeline2022-09-271-1/+1
* Make client cacher suck less?Madeline2022-09-271-10/+18
* Bad check for if buffer is json string instead of gzipMadeline2022-09-271-2/+2
* Set tutorial to nullMadeline2022-09-271-0/+1
* Don't fetch all members in guild in Member.addToGuildMadeline2022-09-272-4/+18
* client patcher stuffMadeline2022-09-262-10/+15
* PrettierMadeline2022-09-26280-4048/+6940
* Remove the cdn storage location logMadeline2022-09-262-2/+3
* Move schemas to /src/util/schemasMadeline2022-09-2694-8368/+8252
* Fix scripts/benchmark/connections.jsMadeline2022-09-261-2/+2
* Add generate:client scriptMadeline2022-09-265-4/+140
* Fix slowcord additional servicesMadeline2022-09-268-12204/+249
* Remove import to class-validator, fix listening on port message in bundleMadeline2022-09-265-2/+41
* Fix and remove some scripts + use ajv/typescript-json-schema required by patchesMadeline2022-09-2611-1406/+17802
* Bring back loginRedirect but fix it. Also move some assets out of publicMadeline2022-09-263-0/+17
* Rearrange assets a bit, fix anything that uses assets folderMadeline2022-09-2612-4/+6
* Vscode launch configMadeline2022-09-261-0/+4
* Add logout endpointMadeline2022-09-261-0/+16
* 'Fix' distinct alias typeorm issueMadeline2022-09-264-10/+26
* Refactor to mono-repo + upgrade packagesMadeline2022-09-25583-113689/+5089
* Allow edited_timestamp to passthrough in handleMessageMadeline2022-09-251-2/+1
* Add discrim verify in PATCH /users/@meMadeline2022-09-251-0/+8
* Typeorm doesn't even use the cache for BaseEntity.* methodsMadeline2022-09-251-8/+8
* Mostly working user guild settingsMadeline2022-09-254-217/+15204
* Committed the wrong rights scriptMadeline2022-09-252-40/+20
* Literally don't be an idiotMadeline2022-09-251-5/+3
* Potential nick reset fixMadeline2022-09-251-2/+2
* Fix default rights sucking, fix patch /guilds/:id/members/:id not checking pe...Madeline2022-09-243-33/+45
* Typeorm redis cacheMadeline2022-09-231-1/+6
* Add mysql sentry integrationMadeline2022-09-233-4/+5
* Sentry gateway trackingMadeline2022-09-221-1/+15
* Flter close messages in sentryMadeline2022-09-221-1/+1
* Fixed? sentry stuffMadeline2022-09-221-8/+25
* fix my shitMadeline2022-09-211-2/+2
* More sentry shitMadeline2022-09-211-1/+6
* Remove webrtc from bundleMadeline2022-09-216-17/+13
* Random webrtc crapMadeline2022-09-212-13/+13
* Sentry route filteringMadeline2022-09-211-2/+8
* Member settings routeMadeline2022-09-212-0/+33
* Merge pull request #2 from haydaralqassam/fraudcordMadeline2022-09-202-2/+19
|\
| * Add adjustEmail call to setEmailMadeline2022-09-201-6/+10
| * Small fix for tag digit and undefined emailDebian2022-09-192-1/+14
* | Update and rename rules.txt to rules.mdMadeline2022-09-192-14/+20
|/
* Forgot the webrtc client pluginMadeline2022-09-161-0/+74
* hmmMadeline2022-09-161-9/+9
* Add webrtc to bundleMadeline2022-09-168-10/+430
* Probably broken merge from webrtcMadeline2022-09-1635-756/+871
* Perhaps a message create perf test?Madeline2022-09-153-28/+84
* Allow empty content through block listMadeline2022-09-122-2/+2
* Primitive banned words blockingMadeline2022-09-128-18/+56
* Trash ip logging for rate limitsMadeline2022-09-111-2/+2
* Trash ip loggingMadeline2022-09-113-2/+7
* Added missing props to ChannelModifySchemaMadeline2022-09-102-15459/+102
* Bad 'fix' for socket not open?Madeline2022-09-101-1/+4
* finally stop the database troublesMadeline2022-09-101-1/+1
* fix typo properlyMadeline2022-09-091-1/+1
* RIP MESSAGES ONCE MORE.Madeline2022-09-091-1/+1
* Fix typoMadeline2022-09-092-2/+2
* Use UserSettings.status when presence is "offline"Madeline2022-09-091-2/+7
* Send user settings on PATCH users/@me/settingsMadeline2022-09-081-1/+1
* Add lazyrequest sessions priorityMadeline2022-09-082-6/+19
* Merge branch 'slowcord' of github.com:MaddyUnderStars/fosscord-server into sl...Madeline2022-09-070-0/+0
|\
| * Merge branch 'slowcord' of github.com:MaddyUnderStars/fosscord-server into sl...Madeline2022-09-071-1/+1
| |\
* | \ Merge branch 'slowcord' of github.com:MaddyUnderStars/fosscord-server into sl...Madeline2022-09-073-10/+12
|\ \ \ | |/ / |/| / | |/
| * Update README.mdMadeline2022-09-051-1/+1
* | Added spotify keys to Activity schemaMadeline2022-09-072-0/+16
|/
* ...and againMadeline2022-09-021-3/+2
* ...try againMadeline2022-09-021-6/+2
* Apply Iratu's patch for relationshipsMadeline2022-09-022-9/+16
* Status tracker now tracks sessionsMadeline2022-09-021-3/+4
* Message searching in guildsMadeline2022-09-021-0/+87
* Added sessions to /-/monitorzMadeline2022-09-021-0/+2
* add try/catch to fetch in slowcord status monitorMadeline2022-08-291-9/+13
* /-/monitorz endpoint for system perf monMadeline2022-08-292-3/+44
* Added nginx configsMadeline2022-08-292-0/+89
* grafana link in bot instance commandMadeline2022-08-271-0/+1
* Merge branch 'slowcord' of github.com:MaddyUnderStars/fosscord-server into sl...Madeline2022-08-251-1/+1
|\
| * Fix typo that sent new/removed bans to those without BAN_MEMBERSMadeline2022-08-231-1/+1
* | Switch to staging ratelimiterMadeline2022-08-251-20/+25
|/
* Configurable max attachment sizeMadeline2022-08-221-1/+1
* LazyRequest on mobile + socket not closed fixesMadeline2022-08-228-26/+204
* Prevent lazyrequest when sent with guild_id as numberMadeline2022-08-211-0/+3
* Fix /users/@me/settings get and migrarionMadeline2022-08-212-3/+9
* fosscord-server/pulls/858Madeline2022-08-2125-223/+411
* add more default rightsMadeline2022-08-201-0/+38
* Fix LazyRequest throwing when no offline group existsMadeline2022-08-021-18/+30
* Fix before and after queries doing gt and lt comparisions incorrectlyMadeline2022-08-021-2/+2
* Fix messages?after=snowflake calling new Snowflake, which is not allwoedMadeline2022-08-021-1/+1
* Respect invisible membersMadeline2022-08-011-10/+12
* Attempt to fix member list not showing some roles separatelyMadeline2022-08-011-0/+1
* Fix msg content check in botMadeline2022-07-311-1/+1
* Merge branch 'feat/welcomeMessages' into slowcordMadeline2022-07-311-4/+27
|\
| * Guild join messagesMadeline2022-07-311-4/+27
* | Log IP addresses of gateway connectionsMadeline2022-07-311-1/+5
* | Untested gif resize support in cdnMadeline2022-07-311-4/+3
* | Merge branch 'slowcord' of github.com:MaddyUnderStars/fosscord-server into sl...Madeline2022-07-304-16/+18
|\ \
| * | Merge branch 'fosscord:master' into slowcordMadeline2022-07-244-16/+18
| |\|
| | * Bump file-type from 16.5.3 to 16.5.4 in /bundle (#802)dependabot[bot]2022-07-232-10/+12
| | * Bump file-type from 16.5.3 to 16.5.4 in /cdn (#801)dependabot[bot]2022-07-232-10/+10
* | | if tenor or giphy is sent, embed image rather than thumbnailMadeline2022-07-301-0/+23
|/ /
* | Test embeding image/png etc responsesMadeline2022-07-242-43/+66
* | Silently resize images back to max height/widthMadeline2022-07-241-6/+3
* | Turns out I reverted the code I needed rather than the one that will delete a...Madeline2022-07-241-1/+9
* | Oh my god rip database contentMadeline2022-07-241-1/+1
* | Really shitty external image resizingMadeline2022-07-247-164/+1161
* | Merge branch 'feat/notesTable' into slowcordMadeline2022-07-231-10/+14
|\ \
| * | Delete Note if no contentMadeline2022-07-231-10/+14
* | | Merge branch 'slowcord' of github.com:MaddyUnderStars/fosscord-server into sl...Madeline2022-07-235-53/+16
|\ \ \
| * \ \ Merge branch 'fosscord:master' into slowcordMadeline2022-07-225-53/+16
| |\ \ \ | | | |/ | | |/|
| | * | chore!: update docker scripts (#797)Nobody2022-07-205-53/+16
* | | | Merge branch 'feat/notesTable' into slowcordMadeline2022-07-234-15/+49
|\ \ \ \ | |/ / / |/| | / | | |/ | |/|
| * | Moved user notes into separate tableMadeline2022-07-234-15/+49
| |/
* | Bot updateMadeline2022-07-2211-516/+766
* | Attempt to fix message ID bugMadeline2022-07-221-2/+1
* | Revert ascending order thingMadeline2022-07-221-1/+1
* | Revert "Revert "Remove unnessesary async and close on error in gateway""Madeline2022-07-222-2/+2
* | Revert "Remove unnessesary async and close on error in gateway"Madeline2022-07-222-2/+2
* | Get messages by ascending orderMadeline2022-07-221-1/+1
* | Remove unnessesary async and close on error in gatewayMadeline2022-07-222-2/+2
* | await the dm channel handlerMadeline2022-07-221-1/+1
* | Don't reset voice regions on server startMadeline2022-07-221-14/+14
* | don't try to save undefined data in statusMadeline2022-07-221-1/+1
* | Try using https raw instead of fetch?Madeline2022-07-221-20/+50
* | test fix???Madeline2022-07-221-0/+1
* | Merge branch 'slowcord' of github.com:MaddyUnderStars/fosscord-server into sl...Madeline2022-07-221-4/+9
|\ \
| * | Try catch handleFileMadeline2022-07-221-4/+9
* | | Disable gateway status until I get some like child process thing doneMadeline2022-07-221-4/+6
|/ /
* | Do measurements one at a time in orderMadeline2022-07-211-13/+15
* | Added simple response time measurement for grafanaMadeline2022-07-217-3/+1120
* | Prevent demo user from enabling 2FAMadeline2022-07-201-1/+3
* | 2FA on login pageMadeline2022-07-202-4/+35
* | Merge branch 'feat/latestWebClient' into slowcordMadeline2022-07-203-0/+722
|\ \
| * \ Merge branch '2fa' into feat/latestWebClientMadeline2022-07-2020-18/+2327
| |\ \
* | \ \ Merge branch '2fa' into slowcordMadeline2022-07-2011-4/+2266
|\ \ \ \ | | |/ / | |/| |
| * | | 2faMadeline2022-07-2011-4/+1570
| | |/ | |/|
* | | Merge branch 'feat/captchaVerify' into slowcordMadeline2022-07-201-2/+2
|\ \ \
| * | | Captcha checkingMadeline2022-07-204-7/+69
| |/ /
* | | Merge branch 'feat/captchaVerify' into slowcordMadeline2022-07-209-25/+43
|\ \ \
| * | | Captcha checkingMadeline2022-07-204-7/+69
| |/ /
| * | chore: fix package.json scriptsNobody2022-07-196-11/+11
* | | Captcha required message on login/registerMadeline2022-07-201-2/+8
* | | Fix content type for captcha checkMadeline2022-07-201-0/+3
* | | Hcaptcha backendMadeline2022-07-204-8/+49
* | | Hcaptcha support on login/registerMadeline2022-07-203-1/+17
* | | Merge branch 'feat/defaultFeatures' into slowcordMadeline2022-07-182-1/+3
|\ \ \
| * | | Default features configMadeline2022-07-182-1/+3
* | | | Display network/api errors on login/register pageMadeline2022-07-184-42/+37
* | | | Merge branch 'fix/messageLinkMetas' into slowcordMadeline2022-07-171-1/+5
|\ \ \ \
| * | | | Message embeds use image width/heightMadeline2022-07-171-1/+5
| * | | | Merge branch 'master' into fix/messageLinkMetasMadeline2022-07-173-27/+37
| |\| | |
* | | | | Redirect guild profile cdn stuff to normal avatar route while guild profiles ...Madeline2022-07-173-3/+15
* | | | | Attempt to fix headers being set after send to client in send messageMadeline2022-07-171-1/+1
* | | | | the merge broke compile???Madeline2022-07-171-3/+0
* | | | | Merge branch 'fosscord:master' into slowcordMadeline2022-07-171-0/+2
|\ \ \ \ \ | | |_|/ / | |/| | |
| * | | | Display offline members in member list (#788)Madeline2022-07-161-3/+24
| * | | | Revert "Send offline group in LazyRequest (#778)" (#787)Erkin Alp Güney2022-07-161-25/+3
| * | | | Send offline group in LazyRequest (#778)Madeline2022-07-161-3/+25
| | |/ / | |/| |
* | | | remove some default rights that I gave like an idiotMadeline2022-07-171-2/+0
* | | | Merge branch 'fix/sendMemberInProfile' into slowcordMadeline2022-07-161-1/+1
|\ \ \ \
| * | | | Actually respect with_mutual_guildsMadeline2022-07-161-1/+1
* | | | | Merge branch 'fix/sendMemberInProfile' into slowcordMadeline2022-07-161-1/+1
|\| | | |
| * | | | Don't send @everyone roleMadeline2022-07-161-1/+1
* | | | | Merge branch 'fix/sendMemberInProfile' into slowcordMadeline2022-07-161-1/+1
|\| | | |
| * | | | Forgot to send roles in guild_memberMadeline2022-07-161-25/+33
* | | | | Forgot to send roles in guild_memberMadeline2022-07-161-25/+33
* | | | | Merge branch 'fix/sendMemberInProfile' into slowcordMadeline2022-07-161-14/+39
|\| | | |
| * | | | Respect with_mutual_guilds and guild_id in /users/:id/profileMadeline2022-07-161-14/+39
| |/ / /
* | | | Merge branch 'feat/offlineMembers' into slowcordMadeline2022-07-161-1/+1
|\ \ \ \
| * | | | Always display roles separately to online membersMadeline2022-07-161-0/+1
* | | | | Merge branch 'feat/offlineMembers' into slowcordMadeline2022-07-161-0/+1
|\ \ \ \ \
| * | | | | Always display roles separately to online membersMadeline2022-07-161-0/+1
| |/ / / /
* | | | | Set util to use same typeorm as bundleMadeline2022-07-142-111/+286
* | | | | Merge branch 'maddyrtc' into slowcordMadeline2022-07-145-23/+26
|\ \ \ \ \
| * | | | | dumb typing stuffMadeline2022-07-145-23/+26
* | | | | | Remove a console log from the maddyrtc branchMadeline2022-07-131-2/+0
* | | | | | /channel/:id/messages/:id/ack responds with { token: null } on discord.comMadeline2022-07-131-1/+1
* | | | | | Merge branch 'maddyrtc' into slowcordMadeline2022-07-118-88/+276
|\| | | | |
| * | | | | Merge branch 'maddyrtc' of github.com:MaddyUnderStars/fosscord-server into ma...Madeline2022-06-290-0/+0
| |\ \ \ \ \
| | * \ \ \ \ Merge branch 'fosscord:master' into maddyrtcMadeline2022-05-3142-8396/+12970
| | |\ \ \ \ \
| * | | | | | | More random bullshitMadeline2022-06-053-131/+177
| * | | | | | | Merge branch 'master' into maddyrtcMadeline2022-06-0242-8396/+12970
| |\ \ \ \ \ \ \ | | |/ / / / / / | |/| / / / / / | | |/ / / / /
| * | | | | | Added README, added more UDP decryption stuffMadeline2022-04-223-29/+54
| * | | | | | Merge branch 'master' into maddyrtcMadeline2022-04-2049-166/+391
| |\ \ \ \ \ \
| * | | | | | | Trying my hand at implementing desktop voice, magic packets courtesy of that ...Madeline2022-04-056-200/+174
| * | | | | | | Merge branch 'master' into maddyrtcMadeline2022-03-3110-31/+79
| |\ \ \ \ \ \ \
| * | | | | | | | changes from yonks ago that I forgot to commitMadeline2022-03-306-46/+201
| * | | | | | | | Merge branch 'master' into maddyrtcMadeline2022-03-0911-30/+122
| |\ \ \ \ \ \ \ \
* | | | | | | | | | Change bundle start to only start listening once DB and config have been loadedMadeline2022-07-101-2/+3
* | | | | | | | | | Check if role icon was actually sent or if it's just an empty stringMadeline2022-07-101-1/+1
* | | | | | | | | | Merge branch 'feat/mobile' into slowcordMadeline2022-07-102-2/+4
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | Set client_state.highest_last_message_id to String OR NumberMadeline2022-07-101-2/+2
| * | | | | | | | | | Add client_state.useruser_guild_settings_version to Identify schemaMadeline2022-07-101-0/+2
| | |_|_|_|_|_|/ / / | |/| | | | | | | |
* | | | | | | | | | Merge branch 'feat/mobile' into slowcordMadeline2022-07-101-0/+2
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | Add client_state.useruser_guild_settings_version to Identify schemaMadeline2022-07-101-0/+2
| |/ / / / / / / / /
* | | | | | | | | | Merge branch 'feat/latestWebClient' into slowcordMadeline2022-07-102-0/+4
|\ \ \ \ \ \ \ \ \ \ | | |_|_|_|_|_|_|_|/ | |/| | | | | | | |
| * | | | | | | | | Try to allow role icons to be removedMadeline2022-07-101-0/+1
| * | | | | | | | | Fix username/discrim changingMadeline2022-07-102-0/+4
| * | | | | | | | | Merge branch 'master' into feat/latestWebClientMadeline2022-07-103-22/+26
| |\| | | | | | | |
* | | | | | | | | | Merge branch 'master' into slowcordMadeline2022-07-092-19/+18
|\ \ \ \ \ \ \ \ \ \ | | |/ / / / / / / / | |/| | | | | | | |
| * | | | | | | | | Relax some of the limitsErkin Alp Güney2022-07-091-18/+17
| * | | | | | | | | * Make max website preview download size for embeds configurableMadeline2022-07-092-3/+8
| * | | | | | | | | Merge pull request #783 from MaddyUnderStars/feat/multiUploadsErkin Alp Güney2022-07-092-9/+20
| |\ \ \ \ \ \ \ \ \
| | * | | | | | | | | Removed unused importMadeline2022-07-091-1/+1
* | | | | | | | | | | Redirect to custom login page when client navigates to /login or /registerMadeline2022-07-091-0/+13
* | | | | | | | | | | Merge branch 'fix/registerNewClients' into slowcordMadeline2022-07-092-0/+5
|\ \ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | | Add `promotional_email_opt_in` field to register to allow newer clients to ma...Madeline2022-06-012-9858/+67
| | |_|_|_|_|_|_|/ / / | |/| | | | | | | | |
* | | | | | | | | | | Test fix for that voice state errorMadeline2022-07-091-1/+4
* | | | | | | | | | | Merge branch 'fix/messageLinkMetas' into slowcordMadeline2022-07-092-3/+8
|\ \ \ \ \ \ \ \ \ \ \ | | |_|_|_|_|_|_|_|_|/ | |/| | | | | | | | |
| * | | | | | | | | | * Make max website preview download size for embeds configurableMadeline2022-07-092-3/+8
| | |/ / / / / / / / | |/| | | | | | | |
* | | | | | | | | | Merge branch 'feat/latestWebClient' into slowcordMadeline2022-07-092-10/+21
|\ \ \ \ \ \ \ \ \ \ | | |_|_|/ / / / / / | |/| | | | | | | |
| * | | | | | | | | Merge branch 'feat/multiUploads' into feat/latestWebClientMadeline2022-07-095-68/+96
| |\ \ \ \ \ \ \ \ \ | | | |_|/ / / / / / | | |/| | | | | | |
| | * | | | | | | | Merge branch 'master' into feat/multiUploadsMadeline2022-07-092-483/+652
| | |\| | | | | | |
| | | * | | | | | | Filter out schemas that block generation instead, and also include util in filesMadeline2022-07-073-430/+1936
| | | * | | | | | | Typescript-json-schema does not crawl extendsMadeline2022-07-071-1/+8
| | * | | | | | | | Allow multiple attachments in messagesMadeline2022-07-092-10/+1365
| | |/ / / / / / /
* | | | | | | | | bot stuff idkMadeline2022-07-0910-17/+24812
* | | | | | | | | Merge branch 'fix/claim_accounts' into slowcordMadeline2022-07-081-3/+3
|\ \ \ \ \ \ \ \ \
| * | | | | | | | | Check if email required in PATCH @meMadeline2022-07-081-3/+3
* | | | | | | | | | Oauth login now copies avatarMadeline2022-07-081-1/+16
* | | | | | | | | | Merge branch 'fix/claim_accounts' into slowcordMadeline2022-07-071-0/+2
|\| | | | | | | | |
| * | | | | | | | | Merge branch 'master' into fix/claim_accountsMadeline2022-07-0765-9971/+16193
| |\ \ \ \ \ \ \ \ \ | | | |/ / / / / / / | | |/| | | | | | |
| * | | | | | | | | Ensure password was given if email is given in PATCH @meMadeline2022-07-071-0/+2
* | | | | | | | | | Somehow the ID of demo user changed. Use email of demo insteadMadeline2022-07-071-4/+4
* | | | | | | | | | Fix role icons not deleting?Madeline2022-07-071-0/+1
* | | | | | | | | | Merge branch 'feat/latestWebClient' into slowcordMadeline2022-07-061-1/+1
|\ \ \ \ \ \ \ \ \ \ | | |_|/ / / / / / / | |/| | | | | | | |
| * | | | | | | | | Fix types for welcome screenMadeline2022-07-061-1/+1
* | | | | | | | | | Merge branch 'feat/latestWebClient' into slowcordMadeline2022-07-067-14/+43
|\| | | | | | | | |
| * | | | | | | | | Welcome screenMadeline2022-07-042-3/+4
| * | | | | | | | | Placeholder member verification endpointMadeline2022-07-041-0/+14
| * | | | | | | | | Merge branch 'fix/channelPermissionOverwriteSchema' into feat/latestWebClientMadeline2022-07-032-7/+4
| * | | | | | | | | Merge branch 'fix/channelPermissionOverwriteSchema' into feat/latestWebClientMadeline2022-07-032-422/+1935
| |\ \ \ \ \ \ \ \ \
| * | | | | | | | | | Add premium_progress_bar_enabled to GuildUpdateSchemaMadeline2022-07-031-0/+1
| * | | | | | | | | | Add Nitro Lite Monthly SKUMadeline2022-07-031-0/+16
| * | | | | | | | | | Bump client versionMadeline2022-07-031-4/+4
* | | | | | | | | | | Merge branch 'master' into slowcordMadeline2022-07-052-53/+68
|\ \ \ \ \ \ \ \ \ \ \ | | |_|_|/ / / / / / / | |/| | | | | | | | |