From 35ef323b1984da37f8edf13760af4d2bab9f81c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ferdinand=20M=C3=BCtsch?= Date: Sat, 8 Jul 2023 19:15:59 +0200 Subject: [PATCH] security: migrate to argon2id password hashing fix: support super long passwords (resolve #494) --- coverage/coverage.out | 2084 +++++++++++++++++++++-------------------- go.mod | 1 + go.sum | 6 + mocks/user_service.go | 5 - routes/login.go | 4 +- routes/settings.go | 4 +- services/services.go | 1 - services/user.go | 13 +- utils/auth.go | 35 +- 9 files changed, 1088 insertions(+), 1065 deletions(-) diff --git a/coverage/coverage.out b/coverage/coverage.out index 2f0fd3c..f6f89bf 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -1,34 +1,44 @@ mode: set -github.com/muety/wakapi/utils/collection.go:5.52,6.26 1 0 -github.com/muety/wakapi/utils/collection.go:9.2,9.28 1 0 -github.com/muety/wakapi/utils/collection.go:6.26,8.3 1 0 -github.com/muety/wakapi/utils/collection.go:12.78,14.22 2 0 -github.com/muety/wakapi/utils/collection.go:20.2,20.11 1 0 -github.com/muety/wakapi/utils/collection.go:14.22,15.18 1 0 -github.com/muety/wakapi/utils/collection.go:18.3,18.12 1 0 -github.com/muety/wakapi/utils/collection.go:15.18,17.4 1 0 -github.com/muety/wakapi/utils/date.go:9.48,11.2 1 0 -github.com/muety/wakapi/utils/date.go:13.51,15.2 1 0 -github.com/muety/wakapi/utils/date.go:17.52,19.2 1 0 -github.com/muety/wakapi/utils/date.go:21.51,23.2 1 0 -github.com/muety/wakapi/utils/date.go:26.41,28.21 2 0 -github.com/muety/wakapi/utils/date.go:31.2,31.33 1 0 -github.com/muety/wakapi/utils/date.go:28.21,30.3 1 0 -github.com/muety/wakapi/utils/date.go:35.67,38.33 2 1 -github.com/muety/wakapi/utils/date.go:47.2,47.18 1 1 -github.com/muety/wakapi/utils/date.go:38.33,40.19 2 1 -github.com/muety/wakapi/utils/date.go:43.3,44.10 2 1 -github.com/muety/wakapi/utils/date.go:40.19,42.4 1 1 -github.com/muety/wakapi/utils/date.go:51.36,54.2 2 0 -github.com/muety/wakapi/utils/date.go:56.42,57.28 1 0 -github.com/muety/wakapi/utils/date.go:73.2,73.20 1 0 -github.com/muety/wakapi/utils/date.go:58.52,59.21 1 0 -github.com/muety/wakapi/utils/date.go:60.53,61.22 1 0 -github.com/muety/wakapi/utils/date.go:62.55,63.24 1 0 -github.com/muety/wakapi/utils/date.go:64.54,65.23 1 0 -github.com/muety/wakapi/utils/date.go:66.52,67.21 1 0 -github.com/muety/wakapi/utils/date.go:68.54,69.23 1 0 -github.com/muety/wakapi/utils/date.go:70.52,71.21 1 0 +github.com/muety/wakapi/utils/auth.go:15.79,17.54 2 0 +github.com/muety/wakapi/utils/auth.go:21.2,23.16 3 0 +github.com/muety/wakapi/utils/auth.go:27.2,29.45 3 0 +github.com/muety/wakapi/utils/auth.go:32.2,33.32 2 0 +github.com/muety/wakapi/utils/auth.go:17.54,19.3 1 0 +github.com/muety/wakapi/utils/auth.go:23.16,25.3 1 0 +github.com/muety/wakapi/utils/auth.go:29.45,31.3 1 0 +github.com/muety/wakapi/utils/auth.go:36.65,38.85 2 0 +github.com/muety/wakapi/utils/auth.go:42.2,43.30 2 0 +github.com/muety/wakapi/utils/auth.go:38.85,40.3 1 0 +github.com/muety/wakapi/utils/auth.go:48.57,49.34 1 0 +github.com/muety/wakapi/utils/auth.go:52.2,52.45 1 0 +github.com/muety/wakapi/utils/auth.go:49.34,51.3 1 0 +github.com/muety/wakapi/utils/auth.go:55.57,57.2 1 0 +github.com/muety/wakapi/utils/auth.go:59.55,63.2 3 0 +github.com/muety/wakapi/utils/auth.go:65.55,68.16 3 0 +github.com/muety/wakapi/utils/auth.go:71.2,71.16 1 0 +github.com/muety/wakapi/utils/auth.go:68.16,70.3 1 0 +github.com/muety/wakapi/utils/auth.go:74.57,78.2 3 0 +github.com/muety/wakapi/utils/auth.go:80.57,83.16 3 0 +github.com/muety/wakapi/utils/auth.go:86.2,86.16 1 0 +github.com/muety/wakapi/utils/auth.go:83.16,85.3 1 0 +github.com/muety/wakapi/utils/db.go:10.34,11.37 1 0 +github.com/muety/wakapi/utils/db.go:19.2,20.14 2 0 +github.com/muety/wakapi/utils/db.go:11.37,13.110 2 0 +github.com/muety/wakapi/utils/db.go:17.3,17.20 1 0 +github.com/muety/wakapi/utils/db.go:13.110,16.4 2 0 +github.com/muety/wakapi/utils/db.go:23.39,24.37 1 0 +github.com/muety/wakapi/utils/db.go:32.2,33.14 2 0 +github.com/muety/wakapi/utils/db.go:24.37,26.119 2 0 +github.com/muety/wakapi/utils/db.go:30.3,30.20 1 0 +github.com/muety/wakapi/utils/db.go:26.119,29.4 2 0 +github.com/muety/wakapi/utils/db.go:36.66,37.48 1 0 +github.com/muety/wakapi/utils/db.go:40.2,40.53 1 0 +github.com/muety/wakapi/utils/db.go:37.48,39.3 1 0 +github.com/muety/wakapi/utils/db.go:43.59,44.16 1 0 +github.com/muety/wakapi/utils/db.go:47.2,47.15 1 0 +github.com/muety/wakapi/utils/db.go:50.2,50.14 1 0 +github.com/muety/wakapi/utils/db.go:44.16,46.3 1 0 +github.com/muety/wakapi/utils/db.go:47.15,49.3 1 0 github.com/muety/wakapi/utils/dns.go:9.38,11.21 2 0 github.com/muety/wakapi/utils/dns.go:14.2,15.39 2 0 github.com/muety/wakapi/utils/dns.go:11.21,13.3 1 0 @@ -51,41 +61,44 @@ github.com/muety/wakapi/utils/template.go:39.51,40.12 1 0 github.com/muety/wakapi/utils/template.go:44.17,46.4 1 0 github.com/muety/wakapi/utils/template.go:48.17,50.4 1 0 github.com/muety/wakapi/utils/template.go:55.17,57.4 1 0 -github.com/muety/wakapi/utils/auth.go:14.79,16.54 2 0 -github.com/muety/wakapi/utils/auth.go:20.2,22.16 3 0 -github.com/muety/wakapi/utils/auth.go:26.2,28.45 3 0 -github.com/muety/wakapi/utils/auth.go:31.2,32.32 2 0 -github.com/muety/wakapi/utils/auth.go:16.54,18.3 1 0 -github.com/muety/wakapi/utils/auth.go:22.16,24.3 1 0 -github.com/muety/wakapi/utils/auth.go:28.45,30.3 1 0 -github.com/muety/wakapi/utils/auth.go:35.65,37.85 2 0 -github.com/muety/wakapi/utils/auth.go:41.2,42.30 2 0 -github.com/muety/wakapi/utils/auth.go:37.85,39.3 1 0 -github.com/muety/wakapi/utils/auth.go:45.56,49.2 3 0 -github.com/muety/wakapi/utils/auth.go:51.55,54.16 3 0 -github.com/muety/wakapi/utils/auth.go:57.2,57.16 1 0 -github.com/muety/wakapi/utils/auth.go:54.16,56.3 1 0 +github.com/muety/wakapi/utils/sync.go:11.66,13.12 2 0 +github.com/muety/wakapi/utils/sync.go:17.2,17.9 1 0 +github.com/muety/wakapi/utils/sync.go:13.12,16.3 2 0 +github.com/muety/wakapi/utils/sync.go:18.11,19.15 1 0 +github.com/muety/wakapi/utils/sync.go:20.29,21.14 1 0 +github.com/muety/wakapi/utils/collection.go:5.52,6.26 1 0 +github.com/muety/wakapi/utils/collection.go:9.2,9.28 1 0 +github.com/muety/wakapi/utils/collection.go:6.26,8.3 1 0 +github.com/muety/wakapi/utils/collection.go:12.78,14.22 2 0 +github.com/muety/wakapi/utils/collection.go:20.2,20.11 1 0 +github.com/muety/wakapi/utils/collection.go:14.22,15.18 1 0 +github.com/muety/wakapi/utils/collection.go:18.3,18.12 1 0 +github.com/muety/wakapi/utils/collection.go:15.18,17.4 1 0 github.com/muety/wakapi/utils/cron.go:5.44,7.21 2 0 github.com/muety/wakapi/utils/cron.go:10.2,10.20 1 0 github.com/muety/wakapi/utils/cron.go:7.21,9.3 1 0 -github.com/muety/wakapi/utils/db.go:10.34,11.37 1 0 -github.com/muety/wakapi/utils/db.go:19.2,20.14 2 0 -github.com/muety/wakapi/utils/db.go:11.37,13.110 2 0 -github.com/muety/wakapi/utils/db.go:17.3,17.20 1 0 -github.com/muety/wakapi/utils/db.go:13.110,16.4 2 0 -github.com/muety/wakapi/utils/db.go:23.39,24.37 1 0 -github.com/muety/wakapi/utils/db.go:32.2,33.14 2 0 -github.com/muety/wakapi/utils/db.go:24.37,26.119 2 0 -github.com/muety/wakapi/utils/db.go:30.3,30.20 1 0 -github.com/muety/wakapi/utils/db.go:26.119,29.4 2 0 -github.com/muety/wakapi/utils/db.go:36.66,37.48 1 0 -github.com/muety/wakapi/utils/db.go:40.2,40.53 1 0 -github.com/muety/wakapi/utils/db.go:37.48,39.3 1 0 -github.com/muety/wakapi/utils/db.go:43.59,44.16 1 0 -github.com/muety/wakapi/utils/db.go:47.2,47.15 1 0 -github.com/muety/wakapi/utils/db.go:50.2,50.14 1 0 -github.com/muety/wakapi/utils/db.go:44.16,46.3 1 0 -github.com/muety/wakapi/utils/db.go:47.15,49.3 1 0 +github.com/muety/wakapi/utils/date.go:9.48,11.2 1 0 +github.com/muety/wakapi/utils/date.go:13.51,15.2 1 0 +github.com/muety/wakapi/utils/date.go:17.52,19.2 1 0 +github.com/muety/wakapi/utils/date.go:21.51,23.2 1 0 +github.com/muety/wakapi/utils/date.go:26.41,28.21 2 0 +github.com/muety/wakapi/utils/date.go:31.2,31.33 1 0 +github.com/muety/wakapi/utils/date.go:28.21,30.3 1 0 +github.com/muety/wakapi/utils/date.go:35.67,38.33 2 1 +github.com/muety/wakapi/utils/date.go:47.2,47.18 1 1 +github.com/muety/wakapi/utils/date.go:38.33,40.19 2 1 +github.com/muety/wakapi/utils/date.go:43.3,44.10 2 1 +github.com/muety/wakapi/utils/date.go:40.19,42.4 1 1 +github.com/muety/wakapi/utils/date.go:51.36,54.2 2 0 +github.com/muety/wakapi/utils/date.go:56.42,57.28 1 0 +github.com/muety/wakapi/utils/date.go:73.2,73.20 1 0 +github.com/muety/wakapi/utils/date.go:58.52,59.21 1 0 +github.com/muety/wakapi/utils/date.go:60.53,61.22 1 0 +github.com/muety/wakapi/utils/date.go:62.55,63.24 1 0 +github.com/muety/wakapi/utils/date.go:64.54,65.23 1 0 +github.com/muety/wakapi/utils/date.go:66.52,67.21 1 0 +github.com/muety/wakapi/utils/date.go:68.54,69.23 1 0 +github.com/muety/wakapi/utils/date.go:70.52,71.21 1 0 github.com/muety/wakapi/utils/http.go:20.13,22.2 1 1 github.com/muety/wakapi/utils/http.go:29.34,30.20 1 0 github.com/muety/wakapi/utils/http.go:33.2,33.19 1 0 @@ -131,11 +144,40 @@ github.com/muety/wakapi/utils/strings.go:23.77,24.29 1 0 github.com/muety/wakapi/utils/strings.go:29.2,29.19 1 0 github.com/muety/wakapi/utils/strings.go:24.29,25.18 1 0 github.com/muety/wakapi/utils/strings.go:25.18,27.4 1 0 -github.com/muety/wakapi/utils/sync.go:11.66,13.12 2 0 -github.com/muety/wakapi/utils/sync.go:17.2,17.9 1 0 -github.com/muety/wakapi/utils/sync.go:13.12,16.3 2 0 -github.com/muety/wakapi/utils/sync.go:18.11,19.15 1 0 -github.com/muety/wakapi/utils/sync.go:20.29,21.14 1 0 +github.com/muety/wakapi/config/sentry.go:21.35,23.2 1 0 +github.com/muety/wakapi/config/sentry.go:25.62,28.2 2 0 +github.com/muety/wakapi/config/sentry.go:38.33,45.2 2 0 +github.com/muety/wakapi/config/sentry.go:47.79,50.2 2 0 +github.com/muety/wakapi/config/sentry.go:52.72,56.2 3 0 +github.com/muety/wakapi/config/sentry.go:58.71,62.2 3 0 +github.com/muety/wakapi/config/sentry.go:64.71,68.2 3 0 +github.com/muety/wakapi/config/sentry.go:70.72,74.2 3 0 +github.com/muety/wakapi/config/sentry.go:76.72,80.2 3 0 +github.com/muety/wakapi/config/sentry.go:82.67,87.18 4 0 +github.com/muety/wakapi/config/sentry.go:99.2,99.28 1 0 +github.com/muety/wakapi/config/sentry.go:87.18,88.65 1 0 +github.com/muety/wakapi/config/sentry.go:88.65,91.45 3 0 +github.com/muety/wakapi/config/sentry.go:94.4,95.10 2 0 +github.com/muety/wakapi/config/sentry.go:91.45,93.5 1 0 +github.com/muety/wakapi/config/sentry.go:109.50,115.59 1 0 +github.com/muety/wakapi/config/sentry.go:115.59,117.38 2 0 +github.com/muety/wakapi/config/sentry.go:122.4,122.39 1 0 +github.com/muety/wakapi/config/sentry.go:125.4,125.37 1 0 +github.com/muety/wakapi/config/sentry.go:117.38,118.38 1 0 +github.com/muety/wakapi/config/sentry.go:118.38,120.6 1 0 +github.com/muety/wakapi/config/sentry.go:122.39,124.5 1 0 +github.com/muety/wakapi/config/sentry.go:127.79,128.27 1 0 +github.com/muety/wakapi/config/sentry.go:135.4,135.16 1 0 +github.com/muety/wakapi/config/sentry.go:128.27,129.84 1 0 +github.com/muety/wakapi/config/sentry.go:129.84,130.45 1 0 +github.com/muety/wakapi/config/sentry.go:130.45,132.7 1 0 +github.com/muety/wakapi/config/sentry.go:137.17,139.3 1 0 +github.com/muety/wakapi/config/sentry.go:143.43,148.51 2 0 +github.com/muety/wakapi/config/sentry.go:151.2,151.11 1 0 +github.com/muety/wakapi/config/sentry.go:148.51,150.3 1 0 +github.com/muety/wakapi/config/session.go:9.46,10.25 1 0 +github.com/muety/wakapi/config/session.go:13.2,13.21 1 0 +github.com/muety/wakapi/config/session.go:10.25,12.3 1 0 github.com/muety/wakapi/config/db.go:40.50,41.19 1 0 github.com/muety/wakapi/config/db.go:54.2,54.12 1 0 github.com/muety/wakapi/config/db.go:42.23,46.5 1 0 @@ -150,31 +192,22 @@ github.com/muety/wakapi/config/db.go:84.2,91.3 1 1 github.com/muety/wakapi/config/db.go:75.25,77.3 1 0 github.com/muety/wakapi/config/db.go:80.16,82.3 1 0 github.com/muety/wakapi/config/db.go:94.54,96.2 1 1 -github.com/muety/wakapi/config/db_opts.go:11.56,13.2 1 0 -github.com/muety/wakapi/config/db_opts.go:15.59,17.2 1 0 -github.com/muety/wakapi/config/db_opts.go:19.61,21.39 1 0 -github.com/muety/wakapi/config/db_opts.go:28.2,28.30 1 0 -github.com/muety/wakapi/config/db_opts.go:34.2,34.12 1 0 -github.com/muety/wakapi/config/db_opts.go:21.39,23.100 1 0 -github.com/muety/wakapi/config/db_opts.go:23.100,25.4 1 0 -github.com/muety/wakapi/config/db_opts.go:28.30,29.68 1 0 -github.com/muety/wakapi/config/db_opts.go:29.68,31.4 1 0 -github.com/muety/wakapi/config/jobqueue.go:30.13,32.2 1 1 -github.com/muety/wakapi/config/jobqueue.go:34.18,41.2 6 0 -github.com/muety/wakapi/config/jobqueue.go:43.48,44.34 1 0 -github.com/muety/wakapi/config/jobqueue.go:47.2,50.12 4 0 -github.com/muety/wakapi/config/jobqueue.go:44.34,46.3 1 0 -github.com/muety/wakapi/config/jobqueue.go:53.44,55.2 1 0 -github.com/muety/wakapi/config/jobqueue.go:57.48,58.35 1 0 -github.com/muety/wakapi/config/jobqueue.go:61.2,61.24 1 0 -github.com/muety/wakapi/config/jobqueue.go:58.35,60.3 1 0 -github.com/muety/wakapi/config/jobqueue.go:64.43,66.37 2 0 -github.com/muety/wakapi/config/jobqueue.go:73.2,73.16 1 0 -github.com/muety/wakapi/config/jobqueue.go:66.37,72.3 1 0 -github.com/muety/wakapi/config/jobqueue.go:76.20,77.30 1 0 -github.com/muety/wakapi/config/jobqueue.go:77.30,79.3 1 0 -github.com/muety/wakapi/config/jobqueue.go:82.20,84.2 1 0 -github.com/muety/wakapi/config/jobqueue.go:86.21,88.2 1 0 +github.com/muety/wakapi/config/eventbus.go:27.13,29.2 1 1 +github.com/muety/wakapi/config/eventbus.go:31.26,33.2 1 0 +github.com/muety/wakapi/config/fs.go:9.56,10.19 1 0 +github.com/muety/wakapi/config/fs.go:13.2,13.19 1 0 +github.com/muety/wakapi/config/fs.go:10.19,12.3 1 0 +github.com/muety/wakapi/config/key_utils.go:11.58,15.44 2 0 +github.com/muety/wakapi/config/key_utils.go:30.2,31.16 2 0 +github.com/muety/wakapi/config/key_utils.go:34.2,37.51 3 0 +github.com/muety/wakapi/config/key_utils.go:40.2,40.45 1 0 +github.com/muety/wakapi/config/key_utils.go:15.44,17.17 2 0 +github.com/muety/wakapi/config/key_utils.go:20.3,23.17 3 0 +github.com/muety/wakapi/config/key_utils.go:26.3,26.46 1 0 +github.com/muety/wakapi/config/key_utils.go:17.17,19.4 1 0 +github.com/muety/wakapi/config/key_utils.go:23.17,25.4 1 0 +github.com/muety/wakapi/config/key_utils.go:31.16,33.3 1 0 +github.com/muety/wakapi/config/key_utils.go:37.51,39.3 1 0 github.com/muety/wakapi/config/config.go:183.64,185.2 1 0 github.com/muety/wakapi/config/config.go:187.59,189.2 1 0 github.com/muety/wakapi/config/config.go:191.82,201.2 1 0 @@ -271,56 +304,36 @@ github.com/muety/wakapi/config/config.go:459.48,461.4 1 0 github.com/muety/wakapi/config/config.go:465.55,467.3 1 0 github.com/muety/wakapi/config/config.go:468.56,470.3 1 0 github.com/muety/wakapi/config/config.go:471.65,473.3 1 0 -github.com/muety/wakapi/config/eventbus.go:27.13,29.2 1 1 -github.com/muety/wakapi/config/eventbus.go:31.26,33.2 1 0 -github.com/muety/wakapi/config/fs.go:9.56,10.19 1 0 -github.com/muety/wakapi/config/fs.go:13.2,13.19 1 0 -github.com/muety/wakapi/config/fs.go:10.19,12.3 1 0 -github.com/muety/wakapi/config/key_utils.go:11.58,15.44 2 0 -github.com/muety/wakapi/config/key_utils.go:30.2,31.16 2 0 -github.com/muety/wakapi/config/key_utils.go:34.2,37.51 3 0 -github.com/muety/wakapi/config/key_utils.go:40.2,40.45 1 0 -github.com/muety/wakapi/config/key_utils.go:15.44,17.17 2 0 -github.com/muety/wakapi/config/key_utils.go:20.3,23.17 3 0 -github.com/muety/wakapi/config/key_utils.go:26.3,26.46 1 0 -github.com/muety/wakapi/config/key_utils.go:17.17,19.4 1 0 -github.com/muety/wakapi/config/key_utils.go:23.17,25.4 1 0 -github.com/muety/wakapi/config/key_utils.go:31.16,33.3 1 0 -github.com/muety/wakapi/config/key_utils.go:37.51,39.3 1 0 -github.com/muety/wakapi/config/sentry.go:21.35,23.2 1 0 -github.com/muety/wakapi/config/sentry.go:25.62,28.2 2 0 -github.com/muety/wakapi/config/sentry.go:38.33,45.2 2 0 -github.com/muety/wakapi/config/sentry.go:47.79,50.2 2 0 -github.com/muety/wakapi/config/sentry.go:52.72,56.2 3 0 -github.com/muety/wakapi/config/sentry.go:58.71,62.2 3 0 -github.com/muety/wakapi/config/sentry.go:64.71,68.2 3 0 -github.com/muety/wakapi/config/sentry.go:70.72,74.2 3 0 -github.com/muety/wakapi/config/sentry.go:76.72,80.2 3 0 -github.com/muety/wakapi/config/sentry.go:82.67,87.18 4 0 -github.com/muety/wakapi/config/sentry.go:99.2,99.28 1 0 -github.com/muety/wakapi/config/sentry.go:87.18,88.65 1 0 -github.com/muety/wakapi/config/sentry.go:88.65,91.45 3 0 -github.com/muety/wakapi/config/sentry.go:94.4,95.10 2 0 -github.com/muety/wakapi/config/sentry.go:91.45,93.5 1 0 -github.com/muety/wakapi/config/sentry.go:109.50,115.59 1 0 -github.com/muety/wakapi/config/sentry.go:115.59,117.38 2 0 -github.com/muety/wakapi/config/sentry.go:122.4,122.39 1 0 -github.com/muety/wakapi/config/sentry.go:125.4,125.37 1 0 -github.com/muety/wakapi/config/sentry.go:117.38,118.38 1 0 -github.com/muety/wakapi/config/sentry.go:118.38,120.6 1 0 -github.com/muety/wakapi/config/sentry.go:122.39,124.5 1 0 -github.com/muety/wakapi/config/sentry.go:127.79,128.27 1 0 -github.com/muety/wakapi/config/sentry.go:135.4,135.16 1 0 -github.com/muety/wakapi/config/sentry.go:128.27,129.84 1 0 -github.com/muety/wakapi/config/sentry.go:129.84,130.45 1 0 -github.com/muety/wakapi/config/sentry.go:130.45,132.7 1 0 -github.com/muety/wakapi/config/sentry.go:137.17,139.3 1 0 -github.com/muety/wakapi/config/sentry.go:143.43,148.51 2 0 -github.com/muety/wakapi/config/sentry.go:151.2,151.11 1 0 -github.com/muety/wakapi/config/sentry.go:148.51,150.3 1 0 -github.com/muety/wakapi/config/session.go:9.46,10.25 1 0 -github.com/muety/wakapi/config/session.go:13.2,13.21 1 0 -github.com/muety/wakapi/config/session.go:10.25,12.3 1 0 +github.com/muety/wakapi/config/db_opts.go:11.56,13.2 1 0 +github.com/muety/wakapi/config/db_opts.go:15.59,17.2 1 0 +github.com/muety/wakapi/config/db_opts.go:19.61,21.39 1 0 +github.com/muety/wakapi/config/db_opts.go:28.2,28.30 1 0 +github.com/muety/wakapi/config/db_opts.go:34.2,34.12 1 0 +github.com/muety/wakapi/config/db_opts.go:21.39,23.100 1 0 +github.com/muety/wakapi/config/db_opts.go:23.100,25.4 1 0 +github.com/muety/wakapi/config/db_opts.go:28.30,29.68 1 0 +github.com/muety/wakapi/config/db_opts.go:29.68,31.4 1 0 +github.com/muety/wakapi/config/jobqueue.go:30.13,32.2 1 1 +github.com/muety/wakapi/config/jobqueue.go:34.18,41.2 6 0 +github.com/muety/wakapi/config/jobqueue.go:43.48,44.34 1 0 +github.com/muety/wakapi/config/jobqueue.go:47.2,50.12 4 0 +github.com/muety/wakapi/config/jobqueue.go:44.34,46.3 1 0 +github.com/muety/wakapi/config/jobqueue.go:53.44,55.2 1 0 +github.com/muety/wakapi/config/jobqueue.go:57.48,58.35 1 0 +github.com/muety/wakapi/config/jobqueue.go:61.2,61.24 1 0 +github.com/muety/wakapi/config/jobqueue.go:58.35,60.3 1 0 +github.com/muety/wakapi/config/jobqueue.go:64.43,66.37 2 0 +github.com/muety/wakapi/config/jobqueue.go:73.2,73.16 1 0 +github.com/muety/wakapi/config/jobqueue.go:66.37,72.3 1 0 +github.com/muety/wakapi/config/jobqueue.go:76.20,77.30 1 0 +github.com/muety/wakapi/config/jobqueue.go:77.30,79.3 1 0 +github.com/muety/wakapi/config/jobqueue.go:82.20,84.2 1 0 +github.com/muety/wakapi/config/jobqueue.go:86.21,88.2 1 0 +github.com/muety/wakapi/middlewares/sentry.go:15.60,16.43 1 0 +github.com/muety/wakapi/middlewares/sentry.go:16.43,20.3 1 0 +github.com/muety/wakapi/middlewares/sentry.go:23.78,26.54 3 0 +github.com/muety/wakapi/middlewares/sentry.go:26.54,27.43 1 0 +github.com/muety/wakapi/middlewares/sentry.go:27.43,29.4 1 0 github.com/muety/wakapi/middlewares/authenticate.go:32.91,38.2 1 1 github.com/muety/wakapi/middlewares/authenticate.go:40.90,43.2 2 0 github.com/muety/wakapi/middlewares/authenticate.go:45.90,48.2 2 0 @@ -412,23 +425,6 @@ github.com/muety/wakapi/middlewares/security.go:25.80,26.36 1 0 github.com/muety/wakapi/middlewares/security.go:31.2,31.27 1 0 github.com/muety/wakapi/middlewares/security.go:26.36,27.30 1 0 github.com/muety/wakapi/middlewares/security.go:27.30,29.4 1 0 -github.com/muety/wakapi/middlewares/sentry.go:15.60,16.43 1 0 -github.com/muety/wakapi/middlewares/sentry.go:16.43,20.3 1 0 -github.com/muety/wakapi/middlewares/sentry.go:23.78,26.54 3 0 -github.com/muety/wakapi/middlewares/sentry.go:26.54,27.43 1 0 -github.com/muety/wakapi/middlewares/sentry.go:27.43,29.4 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:12.98,14.16 2 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:17.2,17.51 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:14.16,16.3 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:20.119,22.22 2 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:26.2,34.16 2 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:38.2,41.36 3 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:22.22,24.3 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:34.16,36.3 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:44.90,46.32 2 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:51.2,51.15 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:46.32,47.50 1 0 -github.com/muety/wakapi/routes/utils/summary_utils.go:47.50,49.4 1 0 github.com/muety/wakapi/routes/utils/user_utils.go:15.139,16.68 1 1 github.com/muety/wakapi/routes/utils/user_utils.go:23.2,24.21 2 1 github.com/muety/wakapi/routes/utils/user_utils.go:28.2,29.27 2 1 @@ -487,6 +483,50 @@ github.com/muety/wakapi/routes/utils/project_utils.go:37.2,39.20 3 0 github.com/muety/wakapi/routes/utils/project_utils.go:18.16,20.3 1 0 github.com/muety/wakapi/routes/utils/project_utils.go:24.16,26.3 1 0 github.com/muety/wakapi/routes/utils/project_utils.go:32.35,35.3 2 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:12.98,14.16 2 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:17.2,17.51 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:14.16,16.3 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:20.119,22.22 2 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:26.2,34.16 2 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:38.2,41.36 3 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:22.22,24.3 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:34.16,36.3 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:44.90,46.32 2 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:51.2,51.15 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:46.32,47.50 1 0 +github.com/muety/wakapi/routes/utils/summary_utils.go:47.50,49.4 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:21.116,27.2 1 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:29.58,30.34 1 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:30.34,33.3 2 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:45.68,47.16 2 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:51.2,52.72 2 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:58.2,58.72 1 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:47.16,49.3 1 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:52.72,54.3 1 1 +github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:54.8,56.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:23.116,29.2 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:31.60,32.34 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:32.34,35.3 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:47.70,49.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:53.2,54.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:60.2,61.46 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:49.16,51.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:54.16,58.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:64.116,73.29 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:77.2,85.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:89.2,89.36 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:73.29,75.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:85.16,87.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:29.124,34.2 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:36.62,37.34 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:37.34,40.3 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:52.72,54.16 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:58.2,61.16 4 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:67.2,71.16 4 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:78.2,84.47 2 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:54.16,56.3 1 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:61.16,65.3 3 0 +github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:71.16,76.3 4 0 github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:23.123,29.2 1 0 github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:31.61,32.34 1 0 github.com/muety/wakapi/routes/compat/wakatime/v1/projects.go:32.34,35.3 2 0 @@ -570,690 +610,6 @@ github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:114.17,116.4 1 0 github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:137.37,139.17 2 0 github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:143.3,145.25 3 0 github.com/muety/wakapi/routes/compat/wakatime/v1/summaries.go:139.17,141.4 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:21.116,27.2 1 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:29.58,30.34 1 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:30.34,33.3 2 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:45.68,47.16 2 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:51.2,52.72 2 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:58.2,58.72 1 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:47.16,49.3 1 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:52.72,54.3 1 1 -github.com/muety/wakapi/routes/compat/wakatime/v1/users.go:54.8,56.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:23.116,29.2 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:31.60,32.34 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:32.34,35.3 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:47.70,49.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:53.2,54.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:60.2,61.46 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:49.16,51.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:54.16,58.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:64.116,73.29 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:77.2,85.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:89.2,89.36 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:73.29,75.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/all_time.go:85.16,87.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:29.124,34.2 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:36.62,37.34 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:37.34,40.3 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:52.72,54.16 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:58.2,61.16 4 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:67.2,71.16 4 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:78.2,84.47 2 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:54.16,56.3 1 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:61.16,65.3 3 0 -github.com/muety/wakapi/routes/compat/wakatime/v1/heartbeat.go:71.16,76.3 4 0 -github.com/muety/wakapi/services/alias.go:19.77,24.2 1 1 -github.com/muety/wakapi/services/alias.go:28.60,29.43 1 1 -github.com/muety/wakapi/services/alias.go:32.2,32.14 1 1 -github.com/muety/wakapi/services/alias.go:29.43,31.3 1 1 -github.com/muety/wakapi/services/alias.go:35.62,37.16 2 1 -github.com/muety/wakapi/services/alias.go:40.2,40.12 1 1 -github.com/muety/wakapi/services/alias.go:37.16,39.3 1 1 -github.com/muety/wakapi/services/alias.go:43.59,44.51 1 1 -github.com/muety/wakapi/services/alias.go:44.51,46.3 1 0 -github.com/muety/wakapi/services/alias.go:49.76,50.32 1 0 -github.com/muety/wakapi/services/alias.go:53.2,53.49 1 0 -github.com/muety/wakapi/services/alias.go:50.32,52.3 1 0 -github.com/muety/wakapi/services/alias.go:53.49,55.3 1 0 -github.com/muety/wakapi/services/alias.go:55.8,57.3 1 0 -github.com/muety/wakapi/services/alias.go:60.102,61.38 1 0 -github.com/muety/wakapi/services/alias.go:64.2,64.39 1 0 -github.com/muety/wakapi/services/alias.go:61.38,63.3 1 0 -github.com/muety/wakapi/services/alias.go:67.113,68.38 1 0 -github.com/muety/wakapi/services/alias.go:71.2,71.39 1 0 -github.com/muety/wakapi/services/alias.go:68.38,70.3 1 0 -github.com/muety/wakapi/services/alias.go:74.108,75.32 1 1 -github.com/muety/wakapi/services/alias.go:79.2,79.49 1 1 -github.com/muety/wakapi/services/alias.go:87.2,87.19 1 1 -github.com/muety/wakapi/services/alias.go:75.32,77.3 1 1 -github.com/muety/wakapi/services/alias.go:79.49,80.47 1 1 -github.com/muety/wakapi/services/alias.go:80.47,81.49 1 1 -github.com/muety/wakapi/services/alias.go:81.49,83.5 1 1 -github.com/muety/wakapi/services/alias.go:90.77,92.16 2 0 -github.com/muety/wakapi/services/alias.go:96.2,100.20 3 0 -github.com/muety/wakapi/services/alias.go:92.16,94.3 1 0 -github.com/muety/wakapi/services/alias.go:103.60,104.24 1 0 -github.com/muety/wakapi/services/alias.go:107.2,110.16 2 0 -github.com/muety/wakapi/services/alias.go:114.2,116.12 2 0 -github.com/muety/wakapi/services/alias.go:104.24,106.3 1 0 -github.com/muety/wakapi/services/alias.go:110.16,112.3 1 0 -github.com/muety/wakapi/services/alias.go:119.69,123.28 3 0 -github.com/muety/wakapi/services/alias.go:131.2,134.16 2 0 -github.com/muety/wakapi/services/alias.go:140.2,140.31 1 0 -github.com/muety/wakapi/services/alias.go:144.2,144.12 1 0 -github.com/muety/wakapi/services/alias.go:123.28,124.21 1 0 -github.com/muety/wakapi/services/alias.go:127.3,128.16 2 0 -github.com/muety/wakapi/services/alias.go:124.21,126.4 1 0 -github.com/muety/wakapi/services/alias.go:134.16,135.29 1 0 -github.com/muety/wakapi/services/alias.go:135.29,137.4 1 0 -github.com/muety/wakapi/services/alias.go:140.31,142.3 1 0 -github.com/muety/wakapi/services/alias.go:147.74,148.14 1 0 -github.com/muety/wakapi/services/alias.go:148.14,149.57 1 0 -github.com/muety/wakapi/services/alias.go:149.57,153.4 3 0 -github.com/muety/wakapi/services/alias.go:154.8,155.57 1 0 -github.com/muety/wakapi/services/alias.go:155.57,157.48 2 0 -github.com/muety/wakapi/services/alias.go:162.4,162.52 1 0 -github.com/muety/wakapi/services/alias.go:157.48,158.26 1 0 -github.com/muety/wakapi/services/alias.go:158.26,160.6 1 0 -github.com/muety/wakapi/services/alias.go:167.116,168.32 1 0 -github.com/muety/wakapi/services/alias.go:171.2,171.49 1 0 -github.com/muety/wakapi/services/alias.go:168.32,170.3 1 0 -github.com/muety/wakapi/services/alias.go:171.49,173.47 2 0 -github.com/muety/wakapi/services/alias.go:178.3,178.30 1 0 -github.com/muety/wakapi/services/alias.go:173.47,174.16 1 0 -github.com/muety/wakapi/services/alias.go:174.16,176.5 1 0 -github.com/muety/wakapi/services/alias.go:179.8,181.3 1 0 -github.com/muety/wakapi/services/duration.go:18.78,24.2 2 1 -github.com/muety/wakapi/services/duration.go:26.123,29.42 2 1 -github.com/muety/wakapi/services/duration.go:35.2,36.16 2 1 -github.com/muety/wakapi/services/duration.go:43.2,48.31 4 1 -github.com/muety/wakapi/services/duration.go:99.2,101.31 2 1 -github.com/muety/wakapi/services/duration.go:114.2,114.49 1 1 -github.com/muety/wakapi/services/duration.go:118.2,118.32 1 1 -github.com/muety/wakapi/services/duration.go:29.42,30.90 1 1 -github.com/muety/wakapi/services/duration.go:30.90,32.4 1 1 -github.com/muety/wakapi/services/duration.go:36.16,38.3 1 0 -github.com/muety/wakapi/services/duration.go:48.31,49.42 1 1 -github.com/muety/wakapi/services/duration.go:53.3,54.34 2 1 -github.com/muety/wakapi/services/duration.go:58.3,58.62 1 1 -github.com/muety/wakapi/services/duration.go:62.3,62.20 1 1 -github.com/muety/wakapi/services/duration.go:67.3,77.15 3 1 -github.com/muety/wakapi/services/duration.go:80.3,86.84 2 1 -github.com/muety/wakapi/services/duration.go:96.3,96.10 1 1 -github.com/muety/wakapi/services/duration.go:49.42,50.12 1 1 -github.com/muety/wakapi/services/duration.go:54.34,56.4 1 1 -github.com/muety/wakapi/services/duration.go:58.62,60.4 1 1 -github.com/muety/wakapi/services/duration.go:62.20,64.12 2 1 -github.com/muety/wakapi/services/duration.go:77.15,79.4 1 0 -github.com/muety/wakapi/services/duration.go:86.84,88.41 2 1 -github.com/muety/wakapi/services/duration.go:91.4,91.15 1 1 -github.com/muety/wakapi/services/duration.go:88.41,90.5 1 1 -github.com/muety/wakapi/services/duration.go:92.9,94.4 1 1 -github.com/muety/wakapi/services/duration.go:101.31,102.26 1 1 -github.com/muety/wakapi/services/duration.go:102.26,107.23 1 1 -github.com/muety/wakapi/services/duration.go:110.4,110.36 1 1 -github.com/muety/wakapi/services/duration.go:107.23,109.5 1 1 -github.com/muety/wakapi/services/duration.go:114.49,116.3 1 1 -github.com/muety/wakapi/services/housekeeping.go:20.144,29.2 1 0 -github.com/muety/wakapi/services/housekeeping.go:31.42,32.43 1 0 -github.com/muety/wakapi/services/housekeeping.go:36.2,38.47 2 0 -github.com/muety/wakapi/services/housekeeping.go:62.2,62.16 1 0 -github.com/muety/wakapi/services/housekeeping.go:32.43,34.3 1 0 -github.com/muety/wakapi/services/housekeeping.go:38.47,41.17 2 0 -github.com/muety/wakapi/services/housekeeping.go:47.3,47.27 1 0 -github.com/muety/wakapi/services/housekeeping.go:41.17,44.4 2 0 -github.com/muety/wakapi/services/housekeeping.go:47.27,49.31 1 0 -github.com/muety/wakapi/services/housekeeping.go:53.4,54.35 2 0 -github.com/muety/wakapi/services/housekeeping.go:49.31,50.13 1 0 -github.com/muety/wakapi/services/housekeeping.go:54.35,55.75 1 0 -github.com/muety/wakapi/services/housekeeping.go:55.75,57.6 1 0 -github.com/muety/wakapi/services/housekeeping.go:62.16,64.3 1 0 -github.com/muety/wakapi/services/housekeeping.go:67.94,69.36 2 0 -github.com/muety/wakapi/services/housekeeping.go:75.2,75.73 1 0 -github.com/muety/wakapi/services/housekeeping.go:80.2,81.74 2 0 -github.com/muety/wakapi/services/housekeeping.go:85.2,85.12 1 0 -github.com/muety/wakapi/services/housekeeping.go:69.36,72.3 2 0 -github.com/muety/wakapi/services/housekeeping.go:75.73,77.3 1 0 -github.com/muety/wakapi/services/housekeeping.go:81.74,83.3 1 0 -github.com/muety/wakapi/services/project_label.go:21.111,28.2 1 0 -github.com/muety/wakapi/services/project_label.go:30.80,32.2 1 0 -github.com/muety/wakapi/services/project_label.go:34.90,35.51 1 0 -github.com/muety/wakapi/services/project_label.go:39.2,40.16 2 0 -github.com/muety/wakapi/services/project_label.go:43.2,44.20 2 0 -github.com/muety/wakapi/services/project_label.go:35.51,37.3 1 0 -github.com/muety/wakapi/services/project_label.go:40.16,42.3 1 0 -github.com/muety/wakapi/services/project_label.go:48.108,50.16 2 0 -github.com/muety/wakapi/services/project_label.go:53.2,53.112 1 0 -github.com/muety/wakapi/services/project_label.go:56.2,56.26 1 0 -github.com/muety/wakapi/services/project_label.go:50.16,52.3 1 0 -github.com/muety/wakapi/services/project_label.go:53.112,55.3 1 0 -github.com/muety/wakapi/services/project_label.go:60.116,62.16 2 0 -github.com/muety/wakapi/services/project_label.go:65.2,65.112 1 0 -github.com/muety/wakapi/services/project_label.go:68.2,68.26 1 0 -github.com/muety/wakapi/services/project_label.go:62.16,64.3 1 0 -github.com/muety/wakapi/services/project_label.go:65.112,67.3 1 0 -github.com/muety/wakapi/services/project_label.go:71.98,73.16 2 0 -github.com/muety/wakapi/services/project_label.go:77.2,79.20 3 0 -github.com/muety/wakapi/services/project_label.go:73.16,75.3 1 0 -github.com/muety/wakapi/services/project_label.go:82.74,83.24 1 0 -github.com/muety/wakapi/services/project_label.go:86.2,89.12 4 0 -github.com/muety/wakapi/services/project_label.go:83.24,85.3 1 0 -github.com/muety/wakapi/services/project_label.go:92.89,94.14 2 0 -github.com/muety/wakapi/services/project_label.go:97.2,100.4 1 0 -github.com/muety/wakapi/services/project_label.go:94.14,96.3 1 0 -github.com/muety/wakapi/services/report.go:31.122,44.2 2 0 -github.com/muety/wakapi/services/report.go:46.38,49.45 2 0 -github.com/muety/wakapi/services/report.go:67.2,67.49 1 0 -github.com/muety/wakapi/services/report.go:87.2,87.16 1 0 -github.com/muety/wakapi/services/report.go:49.45,50.46 1 0 -github.com/muety/wakapi/services/report.go:50.46,53.57 2 0 -github.com/muety/wakapi/services/report.go:58.4,58.58 1 0 -github.com/muety/wakapi/services/report.go:53.57,55.5 1 0 -github.com/muety/wakapi/services/report.go:58.58,61.5 2 0 -github.com/muety/wakapi/services/report.go:62.18,64.4 1 0 -github.com/muety/wakapi/services/report.go:67.49,70.17 2 0 -github.com/muety/wakapi/services/report.go:76.3,76.78 1 0 -github.com/muety/wakapi/services/report.go:81.3,82.27 2 0 -github.com/muety/wakapi/services/report.go:70.17,73.4 2 0 -github.com/muety/wakapi/services/report.go:76.78,78.4 1 0 -github.com/muety/wakapi/services/report.go:82.27,84.4 1 0 -github.com/muety/wakapi/services/report.go:87.16,89.3 1 0 -github.com/muety/wakapi/services/report.go:92.87,93.22 1 0 -github.com/muety/wakapi/services/report.go:98.2,104.16 5 0 -github.com/muety/wakapi/services/report.go:109.2,116.65 2 0 -github.com/muety/wakapi/services/report.go:121.2,122.12 2 0 -github.com/muety/wakapi/services/report.go:93.22,96.3 2 0 -github.com/muety/wakapi/services/report.go:104.16,107.3 2 0 -github.com/muety/wakapi/services/report.go:116.65,119.3 2 0 -github.com/muety/wakapi/services/summary.go:28.189,40.33 3 1 -github.com/muety/wakapi/services/summary.go:46.2,46.12 1 1 -github.com/muety/wakapi/services/summary.go:40.33,41.31 1 1 -github.com/muety/wakapi/services/summary.go:41.31,43.4 1 0 -github.com/muety/wakapi/services/summary.go:52.167,55.66 2 1 -github.com/muety/wakapi/services/summary.go:60.2,65.20 4 1 -github.com/muety/wakapi/services/summary.go:71.2,71.65 1 1 -github.com/muety/wakapi/services/summary.go:76.2,77.16 2 1 -github.com/muety/wakapi/services/summary.go:82.2,87.79 5 1 -github.com/muety/wakapi/services/summary.go:92.2,93.30 2 1 -github.com/muety/wakapi/services/summary.go:55.66,57.3 1 0 -github.com/muety/wakapi/services/summary.go:65.20,68.3 2 1 -github.com/muety/wakapi/services/summary.go:71.65,73.3 1 0 -github.com/muety/wakapi/services/summary.go:77.16,79.3 1 0 -github.com/muety/wakapi/services/summary.go:87.79,90.3 2 1 -github.com/muety/wakapi/services/summary.go:96.126,100.41 2 1 -github.com/muety/wakapi/services/summary.go:111.2,112.44 2 1 -github.com/muety/wakapi/services/summary.go:127.2,128.16 2 1 -github.com/muety/wakapi/services/summary.go:132.2,132.30 1 1 -github.com/muety/wakapi/services/summary.go:100.41,103.17 2 1 -github.com/muety/wakapi/services/summary.go:103.17,105.4 1 1 -github.com/muety/wakapi/services/summary.go:105.9,107.4 1 0 -github.com/muety/wakapi/services/summary.go:112.44,113.87 1 1 -github.com/muety/wakapi/services/summary.go:113.87,114.71 1 1 -github.com/muety/wakapi/services/summary.go:120.4,120.36 1 1 -github.com/muety/wakapi/services/summary.go:114.71,118.13 1 0 -github.com/muety/wakapi/services/summary.go:121.9,123.4 1 0 -github.com/muety/wakapi/services/summary.go:128.16,130.3 1 0 -github.com/muety/wakapi/services/summary.go:135.127,138.16 2 1 -github.com/muety/wakapi/services/summary.go:142.2,143.50 2 1 -github.com/muety/wakapi/services/summary.go:148.2,150.26 3 1 -github.com/muety/wakapi/services/summary.go:155.2,163.34 8 1 -github.com/muety/wakapi/services/summary.go:183.2,183.25 1 1 -github.com/muety/wakapi/services/summary.go:188.2,202.30 2 1 -github.com/muety/wakapi/services/summary.go:138.16,140.3 1 0 -github.com/muety/wakapi/services/summary.go:143.50,146.3 2 1 -github.com/muety/wakapi/services/summary.go:150.26,152.3 1 1 -github.com/muety/wakapi/services/summary.go:163.34,165.20 2 1 -github.com/muety/wakapi/services/summary.go:166.30,167.29 1 1 -github.com/muety/wakapi/services/summary.go:168.31,169.30 1 1 -github.com/muety/wakapi/services/summary.go:170.29,171.28 1 1 -github.com/muety/wakapi/services/summary.go:172.25,173.24 1 1 -github.com/muety/wakapi/services/summary.go:174.30,175.29 1 1 -github.com/muety/wakapi/services/summary.go:176.29,177.28 1 1 -github.com/muety/wakapi/services/summary.go:178.29,179.28 1 1 -github.com/muety/wakapi/services/summary.go:183.25,186.3 2 1 -github.com/muety/wakapi/services/summary.go:207.76,209.2 1 0 -github.com/muety/wakapi/services/summary.go:211.62,214.2 2 0 -github.com/muety/wakapi/services/summary.go:216.81,219.2 2 0 -github.com/muety/wakapi/services/summary.go:221.66,224.2 2 0 -github.com/muety/wakapi/services/summary.go:228.125,231.30 2 1 -github.com/muety/wakapi/services/summary.go:235.2,236.28 2 1 -github.com/muety/wakapi/services/summary.go:244.2,244.40 1 1 -github.com/muety/wakapi/services/summary.go:248.2,248.67 1 1 -github.com/muety/wakapi/services/summary.go:231.30,233.3 1 1 -github.com/muety/wakapi/services/summary.go:236.28,242.3 1 1 -github.com/muety/wakapi/services/summary.go:244.40,246.3 1 1 -github.com/muety/wakapi/services/summary.go:251.87,252.72 1 1 -github.com/muety/wakapi/services/summary.go:260.2,261.16 2 1 -github.com/muety/wakapi/services/summary.go:266.2,267.37 2 1 -github.com/muety/wakapi/services/summary.go:271.2,273.30 3 1 -github.com/muety/wakapi/services/summary.go:284.2,285.29 2 1 -github.com/muety/wakapi/services/summary.go:290.2,291.16 2 1 -github.com/muety/wakapi/services/summary.go:252.72,258.3 1 1 -github.com/muety/wakapi/services/summary.go:261.16,264.3 2 0 -github.com/muety/wakapi/services/summary.go:267.37,269.3 1 1 -github.com/muety/wakapi/services/summary.go:273.30,274.48 1 1 -github.com/muety/wakapi/services/summary.go:274.48,275.41 1 1 -github.com/muety/wakapi/services/summary.go:278.4,279.29 2 1 -github.com/muety/wakapi/services/summary.go:275.41,277.5 1 1 -github.com/muety/wakapi/services/summary.go:285.29,286.18 1 1 -github.com/muety/wakapi/services/summary.go:286.18,288.4 1 1 -github.com/muety/wakapi/services/summary.go:294.97,295.24 1 1 -github.com/muety/wakapi/services/summary.go:299.2,316.30 5 1 -github.com/muety/wakapi/services/summary.go:348.2,351.26 3 1 -github.com/muety/wakapi/services/summary.go:295.24,297.3 1 0 -github.com/muety/wakapi/services/summary.go:316.30,318.41 2 1 -github.com/muety/wakapi/services/summary.go:323.3,323.38 1 1 -github.com/muety/wakapi/services/summary.go:327.3,327.37 1 1 -github.com/muety/wakapi/services/summary.go:331.3,331.34 1 1 -github.com/muety/wakapi/services/summary.go:335.3,345.25 10 1 -github.com/muety/wakapi/services/summary.go:318.41,320.12 2 1 -github.com/muety/wakapi/services/summary.go:323.38,325.4 1 0 -github.com/muety/wakapi/services/summary.go:327.37,329.4 1 1 -github.com/muety/wakapi/services/summary.go:331.34,333.4 1 1 -github.com/muety/wakapi/services/summary.go:354.127,358.32 2 1 -github.com/muety/wakapi/services/summary.go:362.2,362.27 1 1 -github.com/muety/wakapi/services/summary.go:370.2,372.26 3 1 -github.com/muety/wakapi/services/summary.go:377.2,377.43 1 1 -github.com/muety/wakapi/services/summary.go:381.2,381.17 1 1 -github.com/muety/wakapi/services/summary.go:358.32,360.3 1 1 -github.com/muety/wakapi/services/summary.go:362.27,363.37 1 1 -github.com/muety/wakapi/services/summary.go:363.37,365.4 1 1 -github.com/muety/wakapi/services/summary.go:365.9,367.4 1 1 -github.com/muety/wakapi/services/summary.go:372.26,375.3 2 1 -github.com/muety/wakapi/services/summary.go:377.43,379.3 1 1 -github.com/muety/wakapi/services/summary.go:384.130,385.25 1 1 -github.com/muety/wakapi/services/summary.go:389.2,392.44 2 1 -github.com/muety/wakapi/services/summary.go:397.2,397.40 1 1 -github.com/muety/wakapi/services/summary.go:428.2,428.54 1 1 -github.com/muety/wakapi/services/summary.go:432.2,432.18 1 1 -github.com/muety/wakapi/services/summary.go:385.25,387.3 1 0 -github.com/muety/wakapi/services/summary.go:392.44,394.3 1 1 -github.com/muety/wakapi/services/summary.go:397.40,399.51 2 1 -github.com/muety/wakapi/services/summary.go:403.3,410.15 3 1 -github.com/muety/wakapi/services/summary.go:422.3,422.22 1 1 -github.com/muety/wakapi/services/summary.go:399.51,400.12 1 1 -github.com/muety/wakapi/services/summary.go:410.15,416.38 3 1 -github.com/muety/wakapi/services/summary.go:416.38,418.5 1 0 -github.com/muety/wakapi/services/summary.go:422.22,424.4 1 1 -github.com/muety/wakapi/services/summary.go:428.54,430.3 1 1 -github.com/muety/wakapi/services/summary.go:435.59,437.2 1 1 -github.com/muety/wakapi/services/summary.go:439.63,440.37 1 0 -github.com/muety/wakapi/services/summary.go:440.37,441.36 1 0 -github.com/muety/wakapi/services/summary.go:441.36,443.4 1 0 -github.com/muety/wakapi/services/summary.go:447.85,448.40 1 1 -github.com/muety/wakapi/services/summary.go:448.40,451.3 2 1 -github.com/muety/wakapi/services/summary.go:454.99,455.42 1 1 -github.com/muety/wakapi/services/summary.go:455.42,457.17 2 1 -github.com/muety/wakapi/services/summary.go:460.3,461.29 2 1 -github.com/muety/wakapi/services/summary.go:464.3,464.22 1 1 -github.com/muety/wakapi/services/summary.go:457.17,459.4 1 0 -github.com/muety/wakapi/services/summary.go:461.29,463.4 1 1 -github.com/muety/wakapi/services/summary.go:468.114,469.33 1 1 -github.com/muety/wakapi/services/summary.go:469.33,472.17 3 1 -github.com/muety/wakapi/services/summary.go:477.3,478.28 2 1 -github.com/muety/wakapi/services/summary.go:481.3,481.24 1 1 -github.com/muety/wakapi/services/summary.go:472.17,473.33 1 1 -github.com/muety/wakapi/services/summary.go:473.33,475.5 1 1 -github.com/muety/wakapi/services/summary.go:478.28,480.4 1 1 -github.com/muety/wakapi/services/aggregation.go:31.142,41.2 1 0 -github.com/muety/wakapi/services/aggregation.go:50.43,53.52 2 0 -github.com/muety/wakapi/services/aggregation.go:53.52,54.80 1 0 -github.com/muety/wakapi/services/aggregation.go:54.80,56.4 1 0 -github.com/muety/wakapi/services/aggregation.go:57.58,59.3 1 0 -github.com/muety/wakapi/services/aggregation.go:62.92,63.47 1 0 -github.com/muety/wakapi/services/aggregation.go:66.2,72.16 4 0 -github.com/muety/wakapi/services/aggregation.go:78.2,79.16 2 0 -github.com/muety/wakapi/services/aggregation.go:85.2,86.44 2 0 -github.com/muety/wakapi/services/aggregation.go:91.2,93.12 3 0 -github.com/muety/wakapi/services/aggregation.go:105.2,105.41 1 0 -github.com/muety/wakapi/services/aggregation.go:123.2,123.12 1 0 -github.com/muety/wakapi/services/aggregation.go:63.47,65.3 1 0 -github.com/muety/wakapi/services/aggregation.go:72.16,75.3 2 0 -github.com/muety/wakapi/services/aggregation.go:79.16,82.3 2 0 -github.com/muety/wakapi/services/aggregation.go:86.44,88.3 1 0 -github.com/muety/wakapi/services/aggregation.go:93.12,94.28 1 0 -github.com/muety/wakapi/services/aggregation.go:94.28,96.47 2 0 -github.com/muety/wakapi/services/aggregation.go:96.47,98.5 1 0 -github.com/muety/wakapi/services/aggregation.go:98.19,100.5 1 0 -github.com/muety/wakapi/services/aggregation.go:105.41,106.71 1 0 -github.com/muety/wakapi/services/aggregation.go:110.3,110.21 1 0 -github.com/muety/wakapi/services/aggregation.go:106.71,107.12 1 0 -github.com/muety/wakapi/services/aggregation.go:110.21,114.4 1 0 -github.com/muety/wakapi/services/aggregation.go:114.9,114.62 1 0 -github.com/muety/wakapi/services/aggregation.go:114.62,118.4 1 0 -github.com/muety/wakapi/services/aggregation.go:126.60,127.115 1 0 -github.com/muety/wakapi/services/aggregation.go:127.115,129.3 1 0 -github.com/muety/wakapi/services/aggregation.go:129.8,131.60 2 0 -github.com/muety/wakapi/services/aggregation.go:131.60,133.4 1 0 -github.com/muety/wakapi/services/aggregation.go:137.83,152.41 5 0 -github.com/muety/wakapi/services/aggregation.go:152.41,162.3 3 0 -github.com/muety/wakapi/services/aggregation.go:165.83,168.27 3 0 -github.com/muety/wakapi/services/aggregation.go:173.2,174.12 2 0 -github.com/muety/wakapi/services/aggregation.go:168.27,169.34 1 0 -github.com/muety/wakapi/services/aggregation.go:169.34,171.4 1 0 -github.com/muety/wakapi/services/aggregation.go:177.79,180.27 3 0 -github.com/muety/wakapi/services/aggregation.go:180.27,182.3 1 0 -github.com/muety/wakapi/services/aggregation.go:185.34,188.2 2 0 -github.com/muety/wakapi/services/diagnostics.go:14.101,19.2 1 0 -github.com/muety/wakapi/services/diagnostics.go:21.101,24.2 2 0 -github.com/muety/wakapi/services/leaderboard.go:30.159,43.33 3 0 -github.com/muety/wakapi/services/leaderboard.go:67.2,67.12 1 0 -github.com/muety/wakapi/services/leaderboard.go:43.33,44.31 1 0 -github.com/muety/wakapi/services/leaderboard.go:44.31,50.18 3 0 -github.com/muety/wakapi/services/leaderboard.go:54.4,54.41 1 0 -github.com/muety/wakapi/services/leaderboard.go:50.18,52.5 1 0 -github.com/muety/wakapi/services/leaderboard.go:54.41,57.5 2 0 -github.com/muety/wakapi/services/leaderboard.go:57.10,57.48 1 0 -github.com/muety/wakapi/services/leaderboard.go:57.48,59.64 2 0 -github.com/muety/wakapi/services/leaderboard.go:62.5,62.22 1 0 -github.com/muety/wakapi/services/leaderboard.go:59.64,61.6 1 0 -github.com/muety/wakapi/services/leaderboard.go:70.43,73.21 2 0 -github.com/muety/wakapi/services/leaderboard.go:82.2,82.76 1 0 -github.com/muety/wakapi/services/leaderboard.go:73.21,75.17 2 0 -github.com/muety/wakapi/services/leaderboard.go:79.3,79.91 1 0 -github.com/muety/wakapi/services/leaderboard.go:75.17,78.4 2 0 -github.com/muety/wakapi/services/leaderboard.go:82.76,83.77 1 0 -github.com/muety/wakapi/services/leaderboard.go:83.77,85.4 1 0 -github.com/muety/wakapi/services/leaderboard.go:89.121,92.29 2 0 -github.com/muety/wakapi/services/leaderboard.go:127.2,129.12 3 0 -github.com/muety/wakapi/services/leaderboard.go:92.29,93.83 1 0 -github.com/muety/wakapi/services/leaderboard.go:98.3,99.17 2 0 -github.com/muety/wakapi/services/leaderboard.go:104.3,104.85 1 0 -github.com/muety/wakapi/services/leaderboard.go:109.3,109.25 1 0 -github.com/muety/wakapi/services/leaderboard.go:93.83,95.12 2 0 -github.com/muety/wakapi/services/leaderboard.go:99.17,101.12 2 0 -github.com/muety/wakapi/services/leaderboard.go:104.85,106.12 2 0 -github.com/muety/wakapi/services/leaderboard.go:109.25,111.18 2 0 -github.com/muety/wakapi/services/leaderboard.go:116.4,116.23 1 0 -github.com/muety/wakapi/services/leaderboard.go:120.4,120.60 1 0 -github.com/muety/wakapi/services/leaderboard.go:111.18,113.13 2 0 -github.com/muety/wakapi/services/leaderboard.go:116.23,117.13 1 0 -github.com/muety/wakapi/services/leaderboard.go:120.60,122.13 2 0 -github.com/muety/wakapi/services/leaderboard.go:132.77,135.2 2 0 -github.com/muety/wakapi/services/leaderboard.go:137.60,140.52 2 0 -github.com/muety/wakapi/services/leaderboard.go:144.2,145.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:148.2,148.19 1 0 -github.com/muety/wakapi/services/leaderboard.go:140.52,142.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:145.16,147.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:151.153,153.2 1 0 -github.com/muety/wakapi/services/leaderboard.go:155.144,157.2 1 0 -github.com/muety/wakapi/services/leaderboard.go:159.174,162.52 2 0 -github.com/muety/wakapi/services/leaderboard.go:166.2,167.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:171.2,171.18 1 0 -github.com/muety/wakapi/services/leaderboard.go:184.2,185.19 2 0 -github.com/muety/wakapi/services/leaderboard.go:162.52,164.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:167.16,169.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:171.18,173.17 2 0 -github.com/muety/wakapi/services/leaderboard.go:173.17,175.4 1 0 -github.com/muety/wakapi/services/leaderboard.go:175.9,176.31 1 0 -github.com/muety/wakapi/services/leaderboard.go:176.31,177.40 1 0 -github.com/muety/wakapi/services/leaderboard.go:177.40,179.6 1 0 -github.com/muety/wakapi/services/leaderboard.go:188.165,191.52 2 0 -github.com/muety/wakapi/services/leaderboard.go:195.2,196.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:200.2,200.17 1 0 -github.com/muety/wakapi/services/leaderboard.go:211.2,212.19 2 0 -github.com/muety/wakapi/services/leaderboard.go:191.52,193.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:196.16,198.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:200.17,202.17 2 0 -github.com/muety/wakapi/services/leaderboard.go:202.17,204.4 1 0 -github.com/muety/wakapi/services/leaderboard.go:204.9,205.31 1 0 -github.com/muety/wakapi/services/leaderboard.go:205.31,207.5 1 0 -github.com/muety/wakapi/services/leaderboard.go:215.129,217.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:221.2,222.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:227.2,233.8 2 0 -github.com/muety/wakapi/services/leaderboard.go:217.16,219.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:222.16,224.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:236.151,238.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:242.2,243.16 2 0 -github.com/muety/wakapi/services/leaderboard.go:247.2,250.42 3 0 -github.com/muety/wakapi/services/leaderboard.go:262.2,262.19 1 0 -github.com/muety/wakapi/services/leaderboard.go:238.16,240.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:243.16,245.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:250.42,260.3 2 0 -github.com/muety/wakapi/services/leaderboard.go:265.131,267.47 2 0 -github.com/muety/wakapi/services/leaderboard.go:270.2,270.23 1 0 -github.com/muety/wakapi/services/leaderboard.go:273.2,273.10 1 0 -github.com/muety/wakapi/services/leaderboard.go:267.47,269.3 1 0 -github.com/muety/wakapi/services/leaderboard.go:270.23,272.3 1 0 -github.com/muety/wakapi/services/misc.go:44.188,56.2 1 0 -github.com/muety/wakapi/services/misc.go:58.36,60.95 2 0 -github.com/muety/wakapi/services/misc.go:64.2,65.111 2 0 -github.com/muety/wakapi/services/misc.go:69.2,69.128 1 0 -github.com/muety/wakapi/services/misc.go:77.2,77.33 1 0 -github.com/muety/wakapi/services/misc.go:82.2,82.33 1 0 -github.com/muety/wakapi/services/misc.go:87.2,87.170 1 0 -github.com/muety/wakapi/services/misc.go:60.95,62.3 1 0 -github.com/muety/wakapi/services/misc.go:65.111,67.3 1 0 -github.com/muety/wakapi/services/misc.go:69.128,71.125 2 0 -github.com/muety/wakapi/services/misc.go:71.125,73.4 1 0 -github.com/muety/wakapi/services/misc.go:77.33,78.71 1 0 -github.com/muety/wakapi/services/misc.go:78.71,80.4 1 0 -github.com/muety/wakapi/services/misc.go:82.33,83.80 1 0 -github.com/muety/wakapi/services/misc.go:83.80,85.4 1 0 -github.com/muety/wakapi/services/misc.go:87.170,88.83 1 0 -github.com/muety/wakapi/services/misc.go:88.83,90.4 1 0 -github.com/muety/wakapi/services/misc.go:94.42,96.36 2 0 -github.com/muety/wakapi/services/misc.go:99.2,102.16 3 0 -github.com/muety/wakapi/services/misc.go:107.2,111.26 4 0 -github.com/muety/wakapi/services/misc.go:123.2,123.30 1 0 -github.com/muety/wakapi/services/misc.go:96.36,98.3 1 0 -github.com/muety/wakapi/services/misc.go:102.16,105.3 2 0 -github.com/muety/wakapi/services/misc.go:111.26,113.46 2 0 -github.com/muety/wakapi/services/misc.go:113.46,116.4 2 0 -github.com/muety/wakapi/services/misc.go:116.18,119.4 2 0 -github.com/muety/wakapi/services/misc.go:123.30,124.58 1 0 -github.com/muety/wakapi/services/misc.go:124.58,128.19 1 0 -github.com/muety/wakapi/services/misc.go:132.4,135.19 1 0 -github.com/muety/wakapi/services/misc.go:128.19,130.5 1 0 -github.com/muety/wakapi/services/misc.go:135.19,137.5 1 0 -github.com/muety/wakapi/services/misc.go:138.9,140.4 1 0 -github.com/muety/wakapi/services/misc.go:144.51,147.45 2 0 -github.com/muety/wakapi/services/misc.go:147.45,148.41 1 0 -github.com/muety/wakapi/services/misc.go:152.3,155.17 3 0 -github.com/muety/wakapi/services/misc.go:160.3,160.33 1 0 -github.com/muety/wakapi/services/misc.go:148.41,151.4 2 0 -github.com/muety/wakapi/services/misc.go:155.17,158.4 2 0 -github.com/muety/wakapi/services/misc.go:160.33,161.31 1 0 -github.com/muety/wakapi/services/misc.go:165.4,169.19 2 0 -github.com/muety/wakapi/services/misc.go:161.31,162.13 1 0 -github.com/muety/wakapi/services/misc.go:169.19,171.5 1 0 -github.com/muety/wakapi/services/misc.go:173.17,175.3 1 0 -github.com/muety/wakapi/services/misc.go:186.54,187.82 1 0 -github.com/muety/wakapi/services/misc.go:191.2,195.16 4 0 -github.com/muety/wakapi/services/misc.go:200.2,201.104 2 0 -github.com/muety/wakapi/services/misc.go:210.2,210.26 1 0 -github.com/muety/wakapi/services/misc.go:187.82,189.3 1 0 -github.com/muety/wakapi/services/misc.go:195.16,198.3 2 0 -github.com/muety/wakapi/services/misc.go:201.104,202.122 1 0 -github.com/muety/wakapi/services/misc.go:202.122,204.4 1 0 -github.com/muety/wakapi/services/misc.go:205.8,208.3 2 0 -github.com/muety/wakapi/services/misc.go:210.26,211.49 1 0 -github.com/muety/wakapi/services/misc.go:215.3,216.65 2 0 -github.com/muety/wakapi/services/misc.go:230.3,230.137 1 0 -github.com/muety/wakapi/services/misc.go:234.3,235.89 2 0 -github.com/muety/wakapi/services/misc.go:211.49,213.4 1 0 -github.com/muety/wakapi/services/misc.go:216.65,218.130 1 0 -github.com/muety/wakapi/services/misc.go:218.130,220.5 1 0 -github.com/muety/wakapi/services/misc.go:220.10,220.25 1 0 -github.com/muety/wakapi/services/misc.go:220.25,223.5 2 0 -github.com/muety/wakapi/services/misc.go:230.137,231.12 1 0 -github.com/muety/wakapi/services/misc.go:235.89,237.4 1 0 -github.com/muety/wakapi/services/misc.go:241.73,243.16 2 0 -github.com/muety/wakapi/services/misc.go:247.2,247.27 1 0 -github.com/muety/wakapi/services/misc.go:243.16,246.3 2 0 -github.com/muety/wakapi/services/misc.go:250.99,252.33 2 0 -github.com/muety/wakapi/services/misc.go:252.33,256.86 3 0 -github.com/muety/wakapi/services/misc.go:261.3,264.18 1 0 -github.com/muety/wakapi/services/misc.go:256.86,259.4 2 0 -github.com/muety/wakapi/services/misc.go:264.18,266.4 1 0 -github.com/muety/wakapi/services/misc.go:270.53,272.16 2 0 -github.com/muety/wakapi/services/misc.go:275.2,275.25 1 0 -github.com/muety/wakapi/services/misc.go:272.16,274.3 1 0 -github.com/muety/wakapi/services/misc.go:278.53,280.16 2 0 -github.com/muety/wakapi/services/misc.go:283.2,283.25 1 0 -github.com/muety/wakapi/services/misc.go:280.16,282.3 1 0 -github.com/muety/wakapi/services/misc.go:286.64,288.16 2 0 -github.com/muety/wakapi/services/misc.go:291.2,291.25 1 0 -github.com/muety/wakapi/services/misc.go:288.16,290.3 1 0 -github.com/muety/wakapi/services/user.go:26.99,36.33 3 0 -github.com/muety/wakapi/services/user.go:57.2,57.12 1 0 -github.com/muety/wakapi/services/user.go:36.33,37.31 1 0 -github.com/muety/wakapi/services/user.go:37.31,43.73 4 0 -github.com/muety/wakapi/services/user.go:47.4,47.24 1 0 -github.com/muety/wakapi/services/user.go:43.73,45.5 1 0 -github.com/muety/wakapi/services/user.go:47.24,48.80 1 0 -github.com/muety/wakapi/services/user.go:48.80,50.6 1 0 -github.com/muety/wakapi/services/user.go:50.11,52.6 1 0 -github.com/muety/wakapi/services/user.go:60.74,61.40 1 0 -github.com/muety/wakapi/services/user.go:65.2,66.16 2 0 -github.com/muety/wakapi/services/user.go:70.2,71.15 2 0 -github.com/muety/wakapi/services/user.go:61.40,63.3 1 0 -github.com/muety/wakapi/services/user.go:66.16,68.3 1 0 -github.com/muety/wakapi/services/user.go:74.72,75.37 1 0 -github.com/muety/wakapi/services/user.go:79.2,80.16 2 0 -github.com/muety/wakapi/services/user.go:84.2,85.15 2 0 -github.com/muety/wakapi/services/user.go:75.37,77.3 1 0 -github.com/muety/wakapi/services/user.go:80.16,82.3 1 0 -github.com/muety/wakapi/services/user.go:88.76,90.2 1 0 -github.com/muety/wakapi/services/user.go:92.86,94.2 1 0 -github.com/muety/wakapi/services/user.go:96.92,98.2 1 0 -github.com/muety/wakapi/services/user.go:100.58,102.2 1 0 -github.com/muety/wakapi/services/user.go:104.71,106.2 1 0 -github.com/muety/wakapi/services/user.go:108.86,110.16 2 0 -github.com/muety/wakapi/services/user.go:113.2,113.112 1 0 -github.com/muety/wakapi/services/user.go:110.16,112.3 1 0 -github.com/muety/wakapi/services/user.go:113.112,115.3 1 0 -github.com/muety/wakapi/services/user.go:118.86,120.2 1 0 -github.com/muety/wakapi/services/user.go:122.94,124.2 1 0 -github.com/muety/wakapi/services/user.go:126.71,128.12 2 0 -github.com/muety/wakapi/services/user.go:132.2,133.42 2 0 -github.com/muety/wakapi/services/user.go:137.2,138.16 2 0 -github.com/muety/wakapi/services/user.go:142.2,143.21 2 0 -github.com/muety/wakapi/services/user.go:128.12,130.3 1 0 -github.com/muety/wakapi/services/user.go:133.42,135.3 1 0 -github.com/muety/wakapi/services/user.go:138.16,140.3 1 0 -github.com/muety/wakapi/services/user.go:146.48,148.2 1 0 -github.com/muety/wakapi/services/user.go:150.102,160.93 2 0 -github.com/muety/wakapi/services/user.go:166.2,166.38 1 0 -github.com/muety/wakapi/services/user.go:160.93,162.3 1 0 -github.com/muety/wakapi/services/user.go:162.8,164.3 1 0 -github.com/muety/wakapi/services/user.go:169.73,173.2 3 0 -github.com/muety/wakapi/services/user.go:175.78,179.2 3 0 -github.com/muety/wakapi/services/user.go:181.122,184.35 2 0 -github.com/muety/wakapi/services/user.go:190.2,190.35 1 0 -github.com/muety/wakapi/services/user.go:194.2,194.18 1 0 -github.com/muety/wakapi/services/user.go:184.35,185.89 1 0 -github.com/muety/wakapi/services/user.go:185.89,187.4 1 0 -github.com/muety/wakapi/services/user.go:190.35,192.3 1 0 -github.com/muety/wakapi/services/user.go:197.106,200.96 3 0 -github.com/muety/wakapi/services/user.go:205.2,205.68 1 0 -github.com/muety/wakapi/services/user.go:200.96,202.3 1 0 -github.com/muety/wakapi/services/user.go:202.8,204.3 1 0 -github.com/muety/wakapi/services/user.go:208.85,210.2 1 0 -github.com/muety/wakapi/services/user.go:212.57,220.2 5 0 -github.com/muety/wakapi/services/user.go:222.38,224.2 1 0 -github.com/muety/wakapi/services/user.go:226.55,228.2 1 0 -github.com/muety/wakapi/services/user.go:230.57,235.2 1 0 -github.com/muety/wakapi/services/user.go:237.57,242.2 1 0 -github.com/muety/wakapi/services/key_value.go:14.89,19.2 1 0 -github.com/muety/wakapi/services/key_value.go:21.83,23.2 1 0 -github.com/muety/wakapi/services/key_value.go:25.90,27.2 1 0 -github.com/muety/wakapi/services/key_value.go:29.78,31.16 2 0 -github.com/muety/wakapi/services/key_value.go:37.2,37.11 1 0 -github.com/muety/wakapi/services/key_value.go:31.16,36.3 1 0 -github.com/muety/wakapi/services/key_value.go:40.72,42.2 1 0 -github.com/muety/wakapi/services/key_value.go:44.60,46.2 1 0 -github.com/muety/wakapi/services/language_mapping.go:18.118,24.2 1 0 -github.com/muety/wakapi/services/language_mapping.go:26.86,28.2 1 0 -github.com/muety/wakapi/services/language_mapping.go:30.96,31.53 1 0 -github.com/muety/wakapi/services/language_mapping.go:35.2,36.16 2 0 -github.com/muety/wakapi/services/language_mapping.go:39.2,40.22 2 0 -github.com/muety/wakapi/services/language_mapping.go:31.53,33.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:36.16,38.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:43.92,46.16 3 0 -github.com/muety/wakapi/services/language_mapping.go:50.2,50.33 1 0 -github.com/muety/wakapi/services/language_mapping.go:53.2,53.22 1 0 -github.com/muety/wakapi/services/language_mapping.go:46.16,48.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:50.33,52.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:56.109,58.16 2 0 -github.com/muety/wakapi/services/language_mapping.go:62.2,63.20 2 0 -github.com/muety/wakapi/services/language_mapping.go:58.16,60.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:66.82,67.26 1 0 -github.com/muety/wakapi/services/language_mapping.go:70.2,72.12 3 0 -github.com/muety/wakapi/services/language_mapping.go:67.26,69.3 1 0 -github.com/muety/wakapi/services/language_mapping.go:75.74,78.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:26.141,40.33 3 0 -github.com/muety/wakapi/services/heartbeat.go:48.2,48.12 1 0 -github.com/muety/wakapi/services/heartbeat.go:40.33,41.31 1 0 -github.com/muety/wakapi/services/heartbeat.go:41.31,45.4 3 0 -github.com/muety/wakapi/services/heartbeat.go:51.72,54.2 2 0 -github.com/muety/wakapi/services/heartbeat.go:56.80,57.26 1 0 -github.com/muety/wakapi/services/heartbeat.go:61.2,65.32 3 0 -github.com/muety/wakapi/services/heartbeat.go:73.2,74.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:77.2,77.12 1 0 -github.com/muety/wakapi/services/heartbeat.go:57.26,59.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:65.32,66.31 1 0 -github.com/muety/wakapi/services/heartbeat.go:70.3,70.46 1 0 -github.com/muety/wakapi/services/heartbeat.go:66.31,69.4 2 0 -github.com/muety/wakapi/services/heartbeat.go:74.16,76.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:80.69,82.8 2 0 -github.com/muety/wakapi/services/heartbeat.go:85.2,86.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:89.2,89.19 1 0 -github.com/muety/wakapi/services/heartbeat.go:82.8,84.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:86.16,88.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:92.76,95.8 3 0 -github.com/muety/wakapi/services/heartbeat.go:98.2,99.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:102.2,102.19 1 0 -github.com/muety/wakapi/services/heartbeat.go:95.8,97.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:99.16,101.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:105.96,109.26 3 0 -github.com/muety/wakapi/services/heartbeat.go:119.2,120.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:124.2,124.28 1 0 -github.com/muety/wakapi/services/heartbeat.go:130.2,130.24 1 0 -github.com/muety/wakapi/services/heartbeat.go:109.26,112.9 3 0 -github.com/muety/wakapi/services/heartbeat.go:112.9,114.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:114.9,116.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:120.16,122.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:124.28,128.3 3 0 -github.com/muety/wakapi/services/heartbeat.go:133.111,135.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:138.2,138.43 1 0 -github.com/muety/wakapi/services/heartbeat.go:135.16,137.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:141.145,143.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:146.2,146.43 1 0 -github.com/muety/wakapi/services/heartbeat.go:143.16,145.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:149.92,151.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:153.116,155.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:157.78,159.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:161.104,163.54 2 0 -github.com/muety/wakapi/services/heartbeat.go:169.2,170.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:174.2,175.28 2 0 -github.com/muety/wakapi/services/heartbeat.go:181.2,182.22 2 0 -github.com/muety/wakapi/services/heartbeat.go:163.54,167.3 3 0 -github.com/muety/wakapi/services/heartbeat.go:170.16,172.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:175.28,176.33 1 0 -github.com/muety/wakapi/services/heartbeat.go:176.33,178.4 1 0 -github.com/muety/wakapi/services/heartbeat.go:185.62,188.2 2 0 -github.com/muety/wakapi/services/heartbeat.go:190.68,193.2 2 0 -github.com/muety/wakapi/services/heartbeat.go:195.87,198.2 2 0 -github.com/muety/wakapi/services/heartbeat.go:200.116,202.16 2 0 -github.com/muety/wakapi/services/heartbeat.go:206.2,206.28 1 0 -github.com/muety/wakapi/services/heartbeat.go:210.2,210.24 1 0 -github.com/muety/wakapi/services/heartbeat.go:202.16,204.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:206.28,208.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:213.96,215.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:217.107,219.55 2 0 -github.com/muety/wakapi/services/heartbeat.go:219.55,225.36 4 0 -github.com/muety/wakapi/services/heartbeat.go:225.36,230.4 2 0 -github.com/muety/wakapi/services/heartbeat.go:234.85,242.2 7 0 -github.com/muety/wakapi/services/heartbeat.go:244.74,245.32 1 0 -github.com/muety/wakapi/services/heartbeat.go:245.32,250.3 1 0 -github.com/muety/wakapi/services/heartbeat.go:253.72,255.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:257.58,259.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:261.60,263.2 1 0 -github.com/muety/wakapi/services/heartbeat.go:265.94,267.48 2 0 -github.com/muety/wakapi/services/heartbeat.go:273.2,273.18 1 0 -github.com/muety/wakapi/services/heartbeat.go:267.48,269.18 2 0 -github.com/muety/wakapi/services/heartbeat.go:269.18,271.4 1 0 github.com/muety/wakapi/routes/api/avatar.go:18.40,20.16 2 0 github.com/muety/wakapi/routes/api/avatar.go:24.2,27.3 1 0 github.com/muety/wakapi/routes/api/avatar.go:20.16,21.13 1 0 @@ -1385,61 +741,6 @@ github.com/muety/wakapi/routes/api/summary.go:28.63,34.2 4 0 github.com/muety/wakapi/routes/api/summary.go:53.73,55.16 2 0 github.com/muety/wakapi/routes/api/summary.go:61.2,61.51 1 0 github.com/muety/wakapi/routes/api/summary.go:55.16,59.3 3 0 -github.com/muety/wakapi/models/duration.go:27.75,28.23 1 0 -github.com/muety/wakapi/models/duration.go:31.2,35.35 1 0 -github.com/muety/wakapi/models/duration.go:38.2,38.18 1 0 -github.com/muety/wakapi/models/duration.go:28.23,30.3 1 0 -github.com/muety/wakapi/models/duration.go:35.35,37.3 1 0 -github.com/muety/wakapi/models/duration.go:41.55,56.2 2 0 -github.com/muety/wakapi/models/duration.go:58.50,61.2 2 0 -github.com/muety/wakapi/models/duration.go:63.39,65.16 2 0 -github.com/muety/wakapi/models/duration.go:68.2,69.10 2 0 -github.com/muety/wakapi/models/duration.go:65.16,67.3 1 0 -github.com/muety/wakapi/models/duration.go:72.49,73.11 1 0 -github.com/muety/wakapi/models/duration.go:90.2,90.15 1 0 -github.com/muety/wakapi/models/duration.go:94.2,94.12 1 0 -github.com/muety/wakapi/models/duration.go:74.22,75.18 1 0 -github.com/muety/wakapi/models/duration.go:76.21,77.17 1 0 -github.com/muety/wakapi/models/duration.go:78.23,79.19 1 0 -github.com/muety/wakapi/models/duration.go:80.17,81.26 1 0 -github.com/muety/wakapi/models/duration.go:82.22,83.18 1 0 -github.com/muety/wakapi/models/duration.go:84.21,85.17 1 0 -github.com/muety/wakapi/models/duration.go:86.21,87.17 1 0 -github.com/muety/wakapi/models/duration.go:90.15,92.3 1 0 -github.com/muety/wakapi/models/durations.go:7.30,9.2 1 0 -github.com/muety/wakapi/models/durations.go:11.40,13.2 1 0 -github.com/muety/wakapi/models/durations.go:15.35,17.2 1 0 -github.com/muety/wakapi/models/durations.go:19.45,21.22 2 0 -github.com/muety/wakapi/models/durations.go:24.2,24.14 1 0 -github.com/muety/wakapi/models/durations.go:21.22,23.3 1 0 -github.com/muety/wakapi/models/durations.go:27.39,30.2 2 0 -github.com/muety/wakapi/models/durations.go:32.39,34.18 1 0 -github.com/muety/wakapi/models/durations.go:37.2,37.16 1 0 -github.com/muety/wakapi/models/durations.go:34.18,36.3 1 0 -github.com/muety/wakapi/models/durations.go:40.38,42.18 1 0 -github.com/muety/wakapi/models/durations.go:45.2,45.24 1 0 -github.com/muety/wakapi/models/durations.go:42.18,44.3 1 0 -github.com/muety/wakapi/models/heartbeats.go:7.31,9.2 1 0 -github.com/muety/wakapi/models/heartbeats.go:11.41,13.2 1 0 -github.com/muety/wakapi/models/heartbeats.go:15.36,17.2 1 0 -github.com/muety/wakapi/models/heartbeats.go:19.43,22.2 2 0 -github.com/muety/wakapi/models/heartbeats.go:24.41,26.18 1 0 -github.com/muety/wakapi/models/heartbeats.go:29.2,29.16 1 0 -github.com/muety/wakapi/models/heartbeats.go:26.18,28.3 1 0 -github.com/muety/wakapi/models/heartbeats.go:32.40,34.18 1 0 -github.com/muety/wakapi/models/heartbeats.go:37.2,37.24 1 0 -github.com/muety/wakapi/models/heartbeats.go:34.18,36.3 1 0 -github.com/muety/wakapi/models/mail.go:23.44,27.2 3 0 -github.com/muety/wakapi/models/mail.go:29.44,33.2 3 0 -github.com/muety/wakapi/models/mail.go:35.34,36.18 1 0 -github.com/muety/wakapi/models/mail.go:39.2,39.21 1 0 -github.com/muety/wakapi/models/mail.go:42.2,42.23 1 0 -github.com/muety/wakapi/models/mail.go:45.2,45.10 1 0 -github.com/muety/wakapi/models/mail.go:36.18,38.3 1 0 -github.com/muety/wakapi/models/mail.go:39.21,41.3 1 0 -github.com/muety/wakapi/models/mail.go:42.23,44.3 1 0 -github.com/muety/wakapi/models/mail.go:48.32,67.2 1 0 -github.com/muety/wakapi/models/mail.go:69.41,71.2 1 0 github.com/muety/wakapi/models/mail_address.go:18.13,21.2 2 1 github.com/muety/wakapi/models/mail_address.go:27.38,29.2 1 0 github.com/muety/wakapi/models/mail_address.go:31.35,33.21 2 1 @@ -1461,48 +762,22 @@ github.com/muety/wakapi/models/mail_address.go:70.40,71.22 1 1 github.com/muety/wakapi/models/mail_address.go:76.2,76.13 1 1 github.com/muety/wakapi/models/mail_address.go:71.22,72.17 1 1 github.com/muety/wakapi/models/mail_address.go:72.17,74.4 1 1 -github.com/muety/wakapi/models/models.go:3.14,5.2 0 1 -github.com/muety/wakapi/models/shared.go:38.52,40.2 1 0 -github.com/muety/wakapi/models/shared.go:42.52,45.16 3 0 -github.com/muety/wakapi/models/shared.go:48.2,50.12 3 0 -github.com/muety/wakapi/models/shared.go:45.16,47.3 1 0 -github.com/muety/wakapi/models/shared.go:53.52,59.22 2 0 -github.com/muety/wakapi/models/shared.go:74.2,77.12 3 0 -github.com/muety/wakapi/models/shared.go:60.14,64.17 2 0 -github.com/muety/wakapi/models/shared.go:67.17,69.8 2 0 -github.com/muety/wakapi/models/shared.go:70.10,71.64 1 0 -github.com/muety/wakapi/models/shared.go:64.17,66.4 1 0 -github.com/muety/wakapi/models/shared.go:80.51,83.2 2 0 -github.com/muety/wakapi/models/shared.go:85.45,87.2 1 1 -github.com/muety/wakapi/models/shared.go:89.37,91.2 1 0 -github.com/muety/wakapi/models/shared.go:93.35,95.2 1 1 -github.com/muety/wakapi/models/shared.go:97.34,99.2 1 0 -github.com/muety/wakapi/models/alias.go:18.32,20.2 1 0 -github.com/muety/wakapi/models/alias.go:22.37,23.35 1 0 -github.com/muety/wakapi/models/alias.go:28.2,28.14 1 0 -github.com/muety/wakapi/models/alias.go:23.35,24.18 1 0 -github.com/muety/wakapi/models/alias.go:24.18,26.4 1 0 -github.com/muety/wakapi/models/heartbeat.go:33.34,35.2 1 1 -github.com/muety/wakapi/models/heartbeat.go:37.55,40.2 2 0 -github.com/muety/wakapi/models/heartbeat.go:42.65,44.46 2 1 -github.com/muety/wakapi/models/heartbeat.go:44.46,45.108 1 1 -github.com/muety/wakapi/models/heartbeat.go:45.108,48.4 2 1 -github.com/muety/wakapi/models/heartbeat.go:52.50,53.11 1 1 -github.com/muety/wakapi/models/heartbeat.go:70.2,70.15 1 1 -github.com/muety/wakapi/models/heartbeat.go:74.2,74.12 1 1 -github.com/muety/wakapi/models/heartbeat.go:54.22,55.18 1 1 -github.com/muety/wakapi/models/heartbeat.go:56.21,57.17 1 1 -github.com/muety/wakapi/models/heartbeat.go:58.23,59.19 1 1 -github.com/muety/wakapi/models/heartbeat.go:60.17,61.26 1 1 -github.com/muety/wakapi/models/heartbeat.go:62.22,63.18 1 1 -github.com/muety/wakapi/models/heartbeat.go:64.21,65.17 1 0 -github.com/muety/wakapi/models/heartbeat.go:66.21,67.17 1 0 -github.com/muety/wakapi/models/heartbeat.go:70.15,72.3 1 1 -github.com/muety/wakapi/models/heartbeat.go:77.37,93.2 1 0 -github.com/muety/wakapi/models/heartbeat.go:101.41,103.16 2 1 -github.com/muety/wakapi/models/heartbeat.go:106.2,107.10 2 1 -github.com/muety/wakapi/models/heartbeat.go:103.16,105.3 1 0 -github.com/muety/wakapi/models/heartbeat.go:110.38,120.2 1 0 +github.com/muety/wakapi/models/durations.go:7.30,9.2 1 0 +github.com/muety/wakapi/models/durations.go:11.40,13.2 1 0 +github.com/muety/wakapi/models/durations.go:15.35,17.2 1 0 +github.com/muety/wakapi/models/durations.go:19.45,21.22 2 0 +github.com/muety/wakapi/models/durations.go:24.2,24.14 1 0 +github.com/muety/wakapi/models/durations.go:21.22,23.3 1 0 +github.com/muety/wakapi/models/durations.go:27.39,30.2 2 0 +github.com/muety/wakapi/models/durations.go:32.39,34.18 1 0 +github.com/muety/wakapi/models/durations.go:37.2,37.16 1 0 +github.com/muety/wakapi/models/durations.go:34.18,36.3 1 0 +github.com/muety/wakapi/models/durations.go:40.38,42.18 1 0 +github.com/muety/wakapi/models/durations.go:45.2,45.24 1 0 +github.com/muety/wakapi/models/durations.go:42.18,44.3 1 0 +github.com/muety/wakapi/models/language_mapping.go:11.42,13.2 1 0 +github.com/muety/wakapi/models/language_mapping.go:15.51,17.2 1 0 +github.com/muety/wakapi/models/language_mapping.go:19.52,21.2 1 0 github.com/muety/wakapi/models/leaderboard.go:28.73,30.2 1 0 github.com/muety/wakapi/models/leaderboard.go:34.56,35.103 1 0 github.com/muety/wakapi/models/leaderboard.go:35.103,37.3 1 0 @@ -1532,106 +807,32 @@ github.com/muety/wakapi/models/leaderboard.go:101.45,103.25 2 0 github.com/muety/wakapi/models/leaderboard.go:108.2,108.19 1 0 github.com/muety/wakapi/models/leaderboard.go:103.25,104.43 1 0 github.com/muety/wakapi/models/leaderboard.go:104.43,106.4 1 0 -github.com/muety/wakapi/models/project_label.go:14.39,16.2 1 0 -github.com/muety/wakapi/models/filters.go:22.33,24.2 1 1 -github.com/muety/wakapi/models/filters.go:26.48,27.22 1 1 -github.com/muety/wakapi/models/filters.go:32.2,32.14 1 1 -github.com/muety/wakapi/models/filters.go:27.22,28.48 1 1 -github.com/muety/wakapi/models/filters.go:28.48,30.4 1 1 -github.com/muety/wakapi/models/filters.go:40.56,42.2 1 1 -github.com/muety/wakapi/models/filters.go:44.66,47.2 2 1 -github.com/muety/wakapi/models/filters.go:49.59,51.2 1 1 -github.com/muety/wakapi/models/filters.go:53.70,54.16 1 1 -github.com/muety/wakapi/models/filters.go:72.2,72.10 1 1 -github.com/muety/wakapi/models/filters.go:55.22,56.41 1 1 -github.com/muety/wakapi/models/filters.go:57.17,58.31 1 0 -github.com/muety/wakapi/models/filters.go:59.23,60.43 1 1 -github.com/muety/wakapi/models/filters.go:61.21,62.39 1 0 -github.com/muety/wakapi/models/filters.go:63.22,64.41 1 0 -github.com/muety/wakapi/models/filters.go:65.20,66.37 1 1 -github.com/muety/wakapi/models/filters.go:67.21,68.39 1 0 -github.com/muety/wakapi/models/filters.go:69.21,70.39 1 0 -github.com/muety/wakapi/models/filters.go:75.49,76.44 1 1 -github.com/muety/wakapi/models/filters.go:93.2,93.29 1 1 -github.com/muety/wakapi/models/filters.go:76.44,78.3 1 1 -github.com/muety/wakapi/models/filters.go:78.8,78.41 1 1 -github.com/muety/wakapi/models/filters.go:78.41,80.3 1 0 -github.com/muety/wakapi/models/filters.go:80.8,80.53 1 1 -github.com/muety/wakapi/models/filters.go:80.53,82.3 1 1 -github.com/muety/wakapi/models/filters.go:82.8,82.49 1 1 -github.com/muety/wakapi/models/filters.go:82.49,84.3 1 0 -github.com/muety/wakapi/models/filters.go:84.8,84.51 1 1 -github.com/muety/wakapi/models/filters.go:84.51,86.3 1 0 -github.com/muety/wakapi/models/filters.go:86.8,86.47 1 1 -github.com/muety/wakapi/models/filters.go:86.47,88.3 1 0 -github.com/muety/wakapi/models/filters.go:88.8,88.49 1 1 -github.com/muety/wakapi/models/filters.go:88.49,90.3 1 0 -github.com/muety/wakapi/models/filters.go:90.8,90.49 1 1 -github.com/muety/wakapi/models/filters.go:90.49,92.3 1 0 -github.com/muety/wakapi/models/filters.go:96.46,97.30 1 1 -github.com/muety/wakapi/models/filters.go:100.2,100.66 1 0 -github.com/muety/wakapi/models/filters.go:97.30,99.3 1 1 -github.com/muety/wakapi/models/filters.go:103.34,106.2 2 1 -github.com/muety/wakapi/models/filters.go:108.31,110.51 2 0 -github.com/muety/wakapi/models/filters.go:113.2,113.14 1 0 -github.com/muety/wakapi/models/filters.go:110.51,112.3 1 0 -github.com/muety/wakapi/models/filters.go:116.51,118.2 1 0 -github.com/muety/wakapi/models/filters.go:120.37,122.51 2 0 -github.com/muety/wakapi/models/filters.go:127.2,127.14 1 0 -github.com/muety/wakapi/models/filters.go:122.51,123.37 1 0 -github.com/muety/wakapi/models/filters.go:123.37,125.4 1 0 -github.com/muety/wakapi/models/filters.go:130.59,131.18 1 0 -github.com/muety/wakapi/models/filters.go:132.22,133.20 1 0 -github.com/muety/wakapi/models/filters.go:134.23,135.21 1 0 -github.com/muety/wakapi/models/filters.go:136.21,137.19 1 0 -github.com/muety/wakapi/models/filters.go:138.17,139.15 1 0 -github.com/muety/wakapi/models/filters.go:140.22,141.20 1 0 -github.com/muety/wakapi/models/filters.go:142.20,143.18 1 0 -github.com/muety/wakapi/models/filters.go:144.21,145.19 1 0 -github.com/muety/wakapi/models/filters.go:146.21,147.19 1 0 -github.com/muety/wakapi/models/filters.go:148.10,149.21 1 0 -github.com/muety/wakapi/models/filters.go:153.33,155.16 2 0 -github.com/muety/wakapi/models/filters.go:158.2,158.32 1 0 -github.com/muety/wakapi/models/filters.go:155.16,157.3 1 0 -github.com/muety/wakapi/models/filters.go:161.44,167.2 1 1 -github.com/muety/wakapi/models/filters.go:170.70,171.22 1 1 -github.com/muety/wakapi/models/filters.go:179.2,179.17 1 1 -github.com/muety/wakapi/models/filters.go:187.2,187.23 1 1 -github.com/muety/wakapi/models/filters.go:195.2,195.21 1 1 -github.com/muety/wakapi/models/filters.go:203.2,203.22 1 1 -github.com/muety/wakapi/models/filters.go:211.2,211.21 1 1 -github.com/muety/wakapi/models/filters.go:220.2,220.10 1 1 -github.com/muety/wakapi/models/filters.go:171.22,173.31 2 1 -github.com/muety/wakapi/models/filters.go:177.3,177.22 1 1 -github.com/muety/wakapi/models/filters.go:173.31,176.4 2 1 -github.com/muety/wakapi/models/filters.go:179.17,181.26 2 0 -github.com/muety/wakapi/models/filters.go:185.3,185.17 1 0 -github.com/muety/wakapi/models/filters.go:181.26,184.4 2 0 -github.com/muety/wakapi/models/filters.go:187.23,189.32 2 1 -github.com/muety/wakapi/models/filters.go:193.3,193.23 1 1 -github.com/muety/wakapi/models/filters.go:189.32,192.4 2 1 -github.com/muety/wakapi/models/filters.go:195.21,197.30 2 0 -github.com/muety/wakapi/models/filters.go:201.3,201.21 1 0 -github.com/muety/wakapi/models/filters.go:197.30,200.4 2 0 -github.com/muety/wakapi/models/filters.go:203.22,205.31 2 0 -github.com/muety/wakapi/models/filters.go:209.3,209.22 1 0 -github.com/muety/wakapi/models/filters.go:205.31,208.4 2 0 -github.com/muety/wakapi/models/filters.go:211.21,213.30 2 0 -github.com/muety/wakapi/models/filters.go:217.3,217.21 1 0 -github.com/muety/wakapi/models/filters.go:213.30,216.4 2 0 -github.com/muety/wakapi/models/filters.go:223.83,224.41 1 1 -github.com/muety/wakapi/models/filters.go:227.2,227.28 1 1 -github.com/muety/wakapi/models/filters.go:230.2,230.10 1 1 -github.com/muety/wakapi/models/filters.go:224.41,226.3 1 0 -github.com/muety/wakapi/models/filters.go:227.28,229.3 1 1 -github.com/muety/wakapi/models/filters.go:233.43,235.2 1 0 -github.com/muety/wakapi/models/interval.go:41.47,42.23 1 0 -github.com/muety/wakapi/models/interval.go:47.2,47.14 1 0 -github.com/muety/wakapi/models/interval.go:42.23,43.13 1 0 -github.com/muety/wakapi/models/interval.go:43.13,45.4 1 0 -github.com/muety/wakapi/models/language_mapping.go:11.42,13.2 1 0 -github.com/muety/wakapi/models/language_mapping.go:15.51,17.2 1 0 -github.com/muety/wakapi/models/language_mapping.go:19.52,21.2 1 0 +github.com/muety/wakapi/models/mail.go:23.44,27.2 3 0 +github.com/muety/wakapi/models/mail.go:29.44,33.2 3 0 +github.com/muety/wakapi/models/mail.go:35.34,36.18 1 0 +github.com/muety/wakapi/models/mail.go:39.2,39.21 1 0 +github.com/muety/wakapi/models/mail.go:42.2,42.23 1 0 +github.com/muety/wakapi/models/mail.go:45.2,45.10 1 0 +github.com/muety/wakapi/models/mail.go:36.18,38.3 1 0 +github.com/muety/wakapi/models/mail.go:39.21,41.3 1 0 +github.com/muety/wakapi/models/mail.go:42.23,44.3 1 0 +github.com/muety/wakapi/models/mail.go:48.32,67.2 1 0 +github.com/muety/wakapi/models/mail.go:69.41,71.2 1 0 +github.com/muety/wakapi/models/shared.go:38.52,40.2 1 0 +github.com/muety/wakapi/models/shared.go:42.52,45.16 3 0 +github.com/muety/wakapi/models/shared.go:48.2,50.12 3 0 +github.com/muety/wakapi/models/shared.go:45.16,47.3 1 0 +github.com/muety/wakapi/models/shared.go:53.52,59.22 2 0 +github.com/muety/wakapi/models/shared.go:74.2,77.12 3 0 +github.com/muety/wakapi/models/shared.go:60.14,64.17 2 0 +github.com/muety/wakapi/models/shared.go:67.17,69.8 2 0 +github.com/muety/wakapi/models/shared.go:70.10,71.64 1 0 +github.com/muety/wakapi/models/shared.go:64.17,66.4 1 0 +github.com/muety/wakapi/models/shared.go:80.51,83.2 2 0 +github.com/muety/wakapi/models/shared.go:85.45,87.2 1 1 +github.com/muety/wakapi/models/shared.go:89.37,91.2 1 0 +github.com/muety/wakapi/models/shared.go:93.35,95.2 1 1 +github.com/muety/wakapi/models/shared.go:97.34,99.2 1 0 github.com/muety/wakapi/models/summary.go:66.29,68.2 1 1 github.com/muety/wakapi/models/summary.go:70.35,72.2 1 0 github.com/muety/wakapi/models/summary.go:74.38,76.2 1 0 @@ -1731,6 +932,43 @@ github.com/muety/wakapi/models/summary.go:368.50,372.2 1 1 github.com/muety/wakapi/models/summary.go:374.33,376.2 1 1 github.com/muety/wakapi/models/summary.go:378.43,380.2 1 1 github.com/muety/wakapi/models/summary.go:382.38,384.2 1 1 +github.com/muety/wakapi/models/heartbeat.go:33.34,35.2 1 1 +github.com/muety/wakapi/models/heartbeat.go:37.55,40.2 2 0 +github.com/muety/wakapi/models/heartbeat.go:42.65,44.46 2 1 +github.com/muety/wakapi/models/heartbeat.go:44.46,45.108 1 1 +github.com/muety/wakapi/models/heartbeat.go:45.108,48.4 2 1 +github.com/muety/wakapi/models/heartbeat.go:52.50,53.11 1 1 +github.com/muety/wakapi/models/heartbeat.go:70.2,70.15 1 1 +github.com/muety/wakapi/models/heartbeat.go:74.2,74.12 1 1 +github.com/muety/wakapi/models/heartbeat.go:54.22,55.18 1 1 +github.com/muety/wakapi/models/heartbeat.go:56.21,57.17 1 1 +github.com/muety/wakapi/models/heartbeat.go:58.23,59.19 1 1 +github.com/muety/wakapi/models/heartbeat.go:60.17,61.26 1 1 +github.com/muety/wakapi/models/heartbeat.go:62.22,63.18 1 1 +github.com/muety/wakapi/models/heartbeat.go:64.21,65.17 1 0 +github.com/muety/wakapi/models/heartbeat.go:66.21,67.17 1 0 +github.com/muety/wakapi/models/heartbeat.go:70.15,72.3 1 1 +github.com/muety/wakapi/models/heartbeat.go:77.37,93.2 1 0 +github.com/muety/wakapi/models/heartbeat.go:101.41,103.16 2 1 +github.com/muety/wakapi/models/heartbeat.go:106.2,107.10 2 1 +github.com/muety/wakapi/models/heartbeat.go:103.16,105.3 1 0 +github.com/muety/wakapi/models/heartbeat.go:110.38,120.2 1 0 +github.com/muety/wakapi/models/heartbeats.go:7.31,9.2 1 0 +github.com/muety/wakapi/models/heartbeats.go:11.41,13.2 1 0 +github.com/muety/wakapi/models/heartbeats.go:15.36,17.2 1 0 +github.com/muety/wakapi/models/heartbeats.go:19.43,22.2 2 0 +github.com/muety/wakapi/models/heartbeats.go:24.41,26.18 1 0 +github.com/muety/wakapi/models/heartbeats.go:29.2,29.16 1 0 +github.com/muety/wakapi/models/heartbeats.go:26.18,28.3 1 0 +github.com/muety/wakapi/models/heartbeats.go:32.40,34.18 1 0 +github.com/muety/wakapi/models/heartbeats.go:37.2,37.24 1 0 +github.com/muety/wakapi/models/heartbeats.go:34.18,36.3 1 0 +github.com/muety/wakapi/models/interval.go:41.47,42.23 1 0 +github.com/muety/wakapi/models/interval.go:47.2,47.14 1 0 +github.com/muety/wakapi/models/interval.go:42.23,43.13 1 0 +github.com/muety/wakapi/models/interval.go:43.13,45.4 1 0 +github.com/muety/wakapi/models/models.go:3.14,5.2 0 1 +github.com/muety/wakapi/models/project_label.go:14.39,16.2 1 0 github.com/muety/wakapi/models/user.go:13.13,15.2 1 1 github.com/muety/wakapi/models/user.go:90.34,92.2 1 0 github.com/muety/wakapi/models/user.go:94.36,95.22 1 1 @@ -1765,3 +1003,769 @@ github.com/muety/wakapi/models/user.go:187.45,189.2 1 0 github.com/muety/wakapi/models/user.go:191.45,193.2 1 0 github.com/muety/wakapi/models/user.go:196.39,198.2 1 0 github.com/muety/wakapi/models/user.go:200.39,203.2 2 0 +github.com/muety/wakapi/models/alias.go:18.32,20.2 1 0 +github.com/muety/wakapi/models/alias.go:22.37,23.35 1 0 +github.com/muety/wakapi/models/alias.go:28.2,28.14 1 0 +github.com/muety/wakapi/models/alias.go:23.35,24.18 1 0 +github.com/muety/wakapi/models/alias.go:24.18,26.4 1 0 +github.com/muety/wakapi/models/duration.go:27.75,28.23 1 0 +github.com/muety/wakapi/models/duration.go:31.2,35.35 1 0 +github.com/muety/wakapi/models/duration.go:38.2,38.18 1 0 +github.com/muety/wakapi/models/duration.go:28.23,30.3 1 0 +github.com/muety/wakapi/models/duration.go:35.35,37.3 1 0 +github.com/muety/wakapi/models/duration.go:41.55,56.2 2 0 +github.com/muety/wakapi/models/duration.go:58.50,61.2 2 0 +github.com/muety/wakapi/models/duration.go:63.39,65.16 2 0 +github.com/muety/wakapi/models/duration.go:68.2,69.10 2 0 +github.com/muety/wakapi/models/duration.go:65.16,67.3 1 0 +github.com/muety/wakapi/models/duration.go:72.49,73.11 1 0 +github.com/muety/wakapi/models/duration.go:90.2,90.15 1 0 +github.com/muety/wakapi/models/duration.go:94.2,94.12 1 0 +github.com/muety/wakapi/models/duration.go:74.22,75.18 1 0 +github.com/muety/wakapi/models/duration.go:76.21,77.17 1 0 +github.com/muety/wakapi/models/duration.go:78.23,79.19 1 0 +github.com/muety/wakapi/models/duration.go:80.17,81.26 1 0 +github.com/muety/wakapi/models/duration.go:82.22,83.18 1 0 +github.com/muety/wakapi/models/duration.go:84.21,85.17 1 0 +github.com/muety/wakapi/models/duration.go:86.21,87.17 1 0 +github.com/muety/wakapi/models/duration.go:90.15,92.3 1 0 +github.com/muety/wakapi/models/filters.go:22.33,24.2 1 1 +github.com/muety/wakapi/models/filters.go:26.48,27.22 1 1 +github.com/muety/wakapi/models/filters.go:32.2,32.14 1 1 +github.com/muety/wakapi/models/filters.go:27.22,28.48 1 1 +github.com/muety/wakapi/models/filters.go:28.48,30.4 1 1 +github.com/muety/wakapi/models/filters.go:40.56,42.2 1 1 +github.com/muety/wakapi/models/filters.go:44.66,47.2 2 1 +github.com/muety/wakapi/models/filters.go:49.59,51.2 1 1 +github.com/muety/wakapi/models/filters.go:53.70,54.16 1 1 +github.com/muety/wakapi/models/filters.go:72.2,72.10 1 1 +github.com/muety/wakapi/models/filters.go:55.22,56.41 1 1 +github.com/muety/wakapi/models/filters.go:57.17,58.31 1 0 +github.com/muety/wakapi/models/filters.go:59.23,60.43 1 1 +github.com/muety/wakapi/models/filters.go:61.21,62.39 1 0 +github.com/muety/wakapi/models/filters.go:63.22,64.41 1 0 +github.com/muety/wakapi/models/filters.go:65.20,66.37 1 1 +github.com/muety/wakapi/models/filters.go:67.21,68.39 1 0 +github.com/muety/wakapi/models/filters.go:69.21,70.39 1 0 +github.com/muety/wakapi/models/filters.go:75.49,76.44 1 1 +github.com/muety/wakapi/models/filters.go:93.2,93.29 1 1 +github.com/muety/wakapi/models/filters.go:76.44,78.3 1 1 +github.com/muety/wakapi/models/filters.go:78.8,78.41 1 1 +github.com/muety/wakapi/models/filters.go:78.41,80.3 1 0 +github.com/muety/wakapi/models/filters.go:80.8,80.53 1 1 +github.com/muety/wakapi/models/filters.go:80.53,82.3 1 1 +github.com/muety/wakapi/models/filters.go:82.8,82.49 1 1 +github.com/muety/wakapi/models/filters.go:82.49,84.3 1 0 +github.com/muety/wakapi/models/filters.go:84.8,84.51 1 1 +github.com/muety/wakapi/models/filters.go:84.51,86.3 1 0 +github.com/muety/wakapi/models/filters.go:86.8,86.47 1 1 +github.com/muety/wakapi/models/filters.go:86.47,88.3 1 0 +github.com/muety/wakapi/models/filters.go:88.8,88.49 1 1 +github.com/muety/wakapi/models/filters.go:88.49,90.3 1 0 +github.com/muety/wakapi/models/filters.go:90.8,90.49 1 1 +github.com/muety/wakapi/models/filters.go:90.49,92.3 1 0 +github.com/muety/wakapi/models/filters.go:96.46,97.30 1 1 +github.com/muety/wakapi/models/filters.go:100.2,100.66 1 0 +github.com/muety/wakapi/models/filters.go:97.30,99.3 1 1 +github.com/muety/wakapi/models/filters.go:103.34,106.2 2 1 +github.com/muety/wakapi/models/filters.go:108.31,110.51 2 0 +github.com/muety/wakapi/models/filters.go:113.2,113.14 1 0 +github.com/muety/wakapi/models/filters.go:110.51,112.3 1 0 +github.com/muety/wakapi/models/filters.go:116.51,118.2 1 0 +github.com/muety/wakapi/models/filters.go:120.37,122.51 2 0 +github.com/muety/wakapi/models/filters.go:127.2,127.14 1 0 +github.com/muety/wakapi/models/filters.go:122.51,123.37 1 0 +github.com/muety/wakapi/models/filters.go:123.37,125.4 1 0 +github.com/muety/wakapi/models/filters.go:130.59,131.18 1 0 +github.com/muety/wakapi/models/filters.go:132.22,133.20 1 0 +github.com/muety/wakapi/models/filters.go:134.23,135.21 1 0 +github.com/muety/wakapi/models/filters.go:136.21,137.19 1 0 +github.com/muety/wakapi/models/filters.go:138.17,139.15 1 0 +github.com/muety/wakapi/models/filters.go:140.22,141.20 1 0 +github.com/muety/wakapi/models/filters.go:142.20,143.18 1 0 +github.com/muety/wakapi/models/filters.go:144.21,145.19 1 0 +github.com/muety/wakapi/models/filters.go:146.21,147.19 1 0 +github.com/muety/wakapi/models/filters.go:148.10,149.21 1 0 +github.com/muety/wakapi/models/filters.go:153.33,155.16 2 0 +github.com/muety/wakapi/models/filters.go:158.2,158.32 1 0 +github.com/muety/wakapi/models/filters.go:155.16,157.3 1 0 +github.com/muety/wakapi/models/filters.go:161.44,167.2 1 1 +github.com/muety/wakapi/models/filters.go:170.70,171.22 1 1 +github.com/muety/wakapi/models/filters.go:179.2,179.17 1 1 +github.com/muety/wakapi/models/filters.go:187.2,187.23 1 1 +github.com/muety/wakapi/models/filters.go:195.2,195.21 1 1 +github.com/muety/wakapi/models/filters.go:203.2,203.22 1 1 +github.com/muety/wakapi/models/filters.go:211.2,211.21 1 1 +github.com/muety/wakapi/models/filters.go:220.2,220.10 1 1 +github.com/muety/wakapi/models/filters.go:171.22,173.31 2 1 +github.com/muety/wakapi/models/filters.go:177.3,177.22 1 1 +github.com/muety/wakapi/models/filters.go:173.31,176.4 2 1 +github.com/muety/wakapi/models/filters.go:179.17,181.26 2 0 +github.com/muety/wakapi/models/filters.go:185.3,185.17 1 0 +github.com/muety/wakapi/models/filters.go:181.26,184.4 2 0 +github.com/muety/wakapi/models/filters.go:187.23,189.32 2 1 +github.com/muety/wakapi/models/filters.go:193.3,193.23 1 1 +github.com/muety/wakapi/models/filters.go:189.32,192.4 2 1 +github.com/muety/wakapi/models/filters.go:195.21,197.30 2 0 +github.com/muety/wakapi/models/filters.go:201.3,201.21 1 0 +github.com/muety/wakapi/models/filters.go:197.30,200.4 2 0 +github.com/muety/wakapi/models/filters.go:203.22,205.31 2 0 +github.com/muety/wakapi/models/filters.go:209.3,209.22 1 0 +github.com/muety/wakapi/models/filters.go:205.31,208.4 2 0 +github.com/muety/wakapi/models/filters.go:211.21,213.30 2 0 +github.com/muety/wakapi/models/filters.go:217.3,217.21 1 0 +github.com/muety/wakapi/models/filters.go:213.30,216.4 2 0 +github.com/muety/wakapi/models/filters.go:223.83,224.41 1 1 +github.com/muety/wakapi/models/filters.go:227.2,227.28 1 1 +github.com/muety/wakapi/models/filters.go:230.2,230.10 1 1 +github.com/muety/wakapi/models/filters.go:224.41,226.3 1 0 +github.com/muety/wakapi/models/filters.go:227.28,229.3 1 1 +github.com/muety/wakapi/models/filters.go:233.43,235.2 1 0 +github.com/muety/wakapi/services/diagnostics.go:14.101,19.2 1 0 +github.com/muety/wakapi/services/diagnostics.go:21.101,24.2 2 0 +github.com/muety/wakapi/services/housekeeping.go:20.144,29.2 1 0 +github.com/muety/wakapi/services/housekeeping.go:31.42,32.43 1 0 +github.com/muety/wakapi/services/housekeeping.go:36.2,38.47 2 0 +github.com/muety/wakapi/services/housekeeping.go:62.2,62.16 1 0 +github.com/muety/wakapi/services/housekeeping.go:32.43,34.3 1 0 +github.com/muety/wakapi/services/housekeeping.go:38.47,41.17 2 0 +github.com/muety/wakapi/services/housekeeping.go:47.3,47.27 1 0 +github.com/muety/wakapi/services/housekeeping.go:41.17,44.4 2 0 +github.com/muety/wakapi/services/housekeeping.go:47.27,49.31 1 0 +github.com/muety/wakapi/services/housekeeping.go:53.4,54.35 2 0 +github.com/muety/wakapi/services/housekeeping.go:49.31,50.13 1 0 +github.com/muety/wakapi/services/housekeeping.go:54.35,55.75 1 0 +github.com/muety/wakapi/services/housekeeping.go:55.75,57.6 1 0 +github.com/muety/wakapi/services/housekeeping.go:62.16,64.3 1 0 +github.com/muety/wakapi/services/housekeeping.go:67.94,69.36 2 0 +github.com/muety/wakapi/services/housekeeping.go:75.2,75.73 1 0 +github.com/muety/wakapi/services/housekeeping.go:80.2,81.74 2 0 +github.com/muety/wakapi/services/housekeeping.go:85.2,85.12 1 0 +github.com/muety/wakapi/services/housekeeping.go:69.36,72.3 2 0 +github.com/muety/wakapi/services/housekeeping.go:75.73,77.3 1 0 +github.com/muety/wakapi/services/housekeeping.go:81.74,83.3 1 0 +github.com/muety/wakapi/services/summary.go:28.189,40.33 3 1 +github.com/muety/wakapi/services/summary.go:46.2,46.12 1 1 +github.com/muety/wakapi/services/summary.go:40.33,41.31 1 1 +github.com/muety/wakapi/services/summary.go:41.31,43.4 1 0 +github.com/muety/wakapi/services/summary.go:52.167,55.66 2 1 +github.com/muety/wakapi/services/summary.go:60.2,65.20 4 1 +github.com/muety/wakapi/services/summary.go:71.2,71.65 1 1 +github.com/muety/wakapi/services/summary.go:76.2,77.16 2 1 +github.com/muety/wakapi/services/summary.go:82.2,87.79 5 1 +github.com/muety/wakapi/services/summary.go:92.2,93.30 2 1 +github.com/muety/wakapi/services/summary.go:55.66,57.3 1 0 +github.com/muety/wakapi/services/summary.go:65.20,68.3 2 1 +github.com/muety/wakapi/services/summary.go:71.65,73.3 1 0 +github.com/muety/wakapi/services/summary.go:77.16,79.3 1 0 +github.com/muety/wakapi/services/summary.go:87.79,90.3 2 1 +github.com/muety/wakapi/services/summary.go:96.126,100.41 2 1 +github.com/muety/wakapi/services/summary.go:111.2,112.44 2 1 +github.com/muety/wakapi/services/summary.go:127.2,128.16 2 1 +github.com/muety/wakapi/services/summary.go:132.2,132.30 1 1 +github.com/muety/wakapi/services/summary.go:100.41,103.17 2 1 +github.com/muety/wakapi/services/summary.go:103.17,105.4 1 1 +github.com/muety/wakapi/services/summary.go:105.9,107.4 1 0 +github.com/muety/wakapi/services/summary.go:112.44,113.87 1 1 +github.com/muety/wakapi/services/summary.go:113.87,114.71 1 1 +github.com/muety/wakapi/services/summary.go:120.4,120.36 1 1 +github.com/muety/wakapi/services/summary.go:114.71,118.13 1 0 +github.com/muety/wakapi/services/summary.go:121.9,123.4 1 0 +github.com/muety/wakapi/services/summary.go:128.16,130.3 1 0 +github.com/muety/wakapi/services/summary.go:135.127,138.16 2 1 +github.com/muety/wakapi/services/summary.go:142.2,143.50 2 1 +github.com/muety/wakapi/services/summary.go:148.2,150.26 3 1 +github.com/muety/wakapi/services/summary.go:155.2,163.34 8 1 +github.com/muety/wakapi/services/summary.go:183.2,183.25 1 1 +github.com/muety/wakapi/services/summary.go:188.2,202.30 2 1 +github.com/muety/wakapi/services/summary.go:138.16,140.3 1 0 +github.com/muety/wakapi/services/summary.go:143.50,146.3 2 1 +github.com/muety/wakapi/services/summary.go:150.26,152.3 1 1 +github.com/muety/wakapi/services/summary.go:163.34,165.20 2 1 +github.com/muety/wakapi/services/summary.go:166.30,167.29 1 1 +github.com/muety/wakapi/services/summary.go:168.31,169.30 1 1 +github.com/muety/wakapi/services/summary.go:170.29,171.28 1 1 +github.com/muety/wakapi/services/summary.go:172.25,173.24 1 1 +github.com/muety/wakapi/services/summary.go:174.30,175.29 1 1 +github.com/muety/wakapi/services/summary.go:176.29,177.28 1 1 +github.com/muety/wakapi/services/summary.go:178.29,179.28 1 1 +github.com/muety/wakapi/services/summary.go:183.25,186.3 2 1 +github.com/muety/wakapi/services/summary.go:207.76,209.2 1 0 +github.com/muety/wakapi/services/summary.go:211.62,214.2 2 0 +github.com/muety/wakapi/services/summary.go:216.81,219.2 2 0 +github.com/muety/wakapi/services/summary.go:221.66,224.2 2 0 +github.com/muety/wakapi/services/summary.go:228.125,231.30 2 1 +github.com/muety/wakapi/services/summary.go:235.2,236.28 2 1 +github.com/muety/wakapi/services/summary.go:244.2,244.40 1 1 +github.com/muety/wakapi/services/summary.go:248.2,248.67 1 1 +github.com/muety/wakapi/services/summary.go:231.30,233.3 1 1 +github.com/muety/wakapi/services/summary.go:236.28,242.3 1 1 +github.com/muety/wakapi/services/summary.go:244.40,246.3 1 1 +github.com/muety/wakapi/services/summary.go:251.87,252.72 1 1 +github.com/muety/wakapi/services/summary.go:260.2,261.16 2 1 +github.com/muety/wakapi/services/summary.go:266.2,267.37 2 1 +github.com/muety/wakapi/services/summary.go:271.2,273.30 3 1 +github.com/muety/wakapi/services/summary.go:284.2,285.29 2 1 +github.com/muety/wakapi/services/summary.go:290.2,291.16 2 1 +github.com/muety/wakapi/services/summary.go:252.72,258.3 1 1 +github.com/muety/wakapi/services/summary.go:261.16,264.3 2 0 +github.com/muety/wakapi/services/summary.go:267.37,269.3 1 1 +github.com/muety/wakapi/services/summary.go:273.30,274.48 1 1 +github.com/muety/wakapi/services/summary.go:274.48,275.41 1 1 +github.com/muety/wakapi/services/summary.go:278.4,279.29 2 1 +github.com/muety/wakapi/services/summary.go:275.41,277.5 1 1 +github.com/muety/wakapi/services/summary.go:285.29,286.18 1 1 +github.com/muety/wakapi/services/summary.go:286.18,288.4 1 1 +github.com/muety/wakapi/services/summary.go:294.97,295.24 1 1 +github.com/muety/wakapi/services/summary.go:299.2,316.30 5 1 +github.com/muety/wakapi/services/summary.go:348.2,351.26 3 1 +github.com/muety/wakapi/services/summary.go:295.24,297.3 1 0 +github.com/muety/wakapi/services/summary.go:316.30,318.41 2 1 +github.com/muety/wakapi/services/summary.go:323.3,323.38 1 1 +github.com/muety/wakapi/services/summary.go:327.3,327.37 1 1 +github.com/muety/wakapi/services/summary.go:331.3,331.34 1 1 +github.com/muety/wakapi/services/summary.go:335.3,345.25 10 1 +github.com/muety/wakapi/services/summary.go:318.41,320.12 2 1 +github.com/muety/wakapi/services/summary.go:323.38,325.4 1 0 +github.com/muety/wakapi/services/summary.go:327.37,329.4 1 1 +github.com/muety/wakapi/services/summary.go:331.34,333.4 1 1 +github.com/muety/wakapi/services/summary.go:354.127,358.32 2 1 +github.com/muety/wakapi/services/summary.go:362.2,362.27 1 1 +github.com/muety/wakapi/services/summary.go:370.2,372.26 3 1 +github.com/muety/wakapi/services/summary.go:377.2,377.43 1 1 +github.com/muety/wakapi/services/summary.go:381.2,381.17 1 1 +github.com/muety/wakapi/services/summary.go:358.32,360.3 1 1 +github.com/muety/wakapi/services/summary.go:362.27,363.37 1 1 +github.com/muety/wakapi/services/summary.go:363.37,365.4 1 1 +github.com/muety/wakapi/services/summary.go:365.9,367.4 1 1 +github.com/muety/wakapi/services/summary.go:372.26,375.3 2 1 +github.com/muety/wakapi/services/summary.go:377.43,379.3 1 1 +github.com/muety/wakapi/services/summary.go:384.130,385.25 1 1 +github.com/muety/wakapi/services/summary.go:389.2,392.44 2 1 +github.com/muety/wakapi/services/summary.go:397.2,397.40 1 1 +github.com/muety/wakapi/services/summary.go:428.2,428.54 1 1 +github.com/muety/wakapi/services/summary.go:432.2,432.18 1 1 +github.com/muety/wakapi/services/summary.go:385.25,387.3 1 0 +github.com/muety/wakapi/services/summary.go:392.44,394.3 1 1 +github.com/muety/wakapi/services/summary.go:397.40,399.51 2 1 +github.com/muety/wakapi/services/summary.go:403.3,410.15 3 1 +github.com/muety/wakapi/services/summary.go:422.3,422.22 1 1 +github.com/muety/wakapi/services/summary.go:399.51,400.12 1 1 +github.com/muety/wakapi/services/summary.go:410.15,416.38 3 1 +github.com/muety/wakapi/services/summary.go:416.38,418.5 1 0 +github.com/muety/wakapi/services/summary.go:422.22,424.4 1 1 +github.com/muety/wakapi/services/summary.go:428.54,430.3 1 1 +github.com/muety/wakapi/services/summary.go:435.59,437.2 1 1 +github.com/muety/wakapi/services/summary.go:439.63,440.37 1 0 +github.com/muety/wakapi/services/summary.go:440.37,441.36 1 0 +github.com/muety/wakapi/services/summary.go:441.36,443.4 1 0 +github.com/muety/wakapi/services/summary.go:447.85,448.40 1 1 +github.com/muety/wakapi/services/summary.go:448.40,451.3 2 1 +github.com/muety/wakapi/services/summary.go:454.99,455.42 1 1 +github.com/muety/wakapi/services/summary.go:455.42,457.17 2 1 +github.com/muety/wakapi/services/summary.go:460.3,461.29 2 1 +github.com/muety/wakapi/services/summary.go:464.3,464.22 1 1 +github.com/muety/wakapi/services/summary.go:457.17,459.4 1 0 +github.com/muety/wakapi/services/summary.go:461.29,463.4 1 1 +github.com/muety/wakapi/services/summary.go:468.114,469.33 1 1 +github.com/muety/wakapi/services/summary.go:469.33,472.17 3 1 +github.com/muety/wakapi/services/summary.go:477.3,478.28 2 1 +github.com/muety/wakapi/services/summary.go:481.3,481.24 1 1 +github.com/muety/wakapi/services/summary.go:472.17,473.33 1 1 +github.com/muety/wakapi/services/summary.go:473.33,475.5 1 1 +github.com/muety/wakapi/services/summary.go:478.28,480.4 1 1 +github.com/muety/wakapi/services/duration.go:18.78,24.2 2 1 +github.com/muety/wakapi/services/duration.go:26.123,29.42 2 1 +github.com/muety/wakapi/services/duration.go:35.2,36.16 2 1 +github.com/muety/wakapi/services/duration.go:43.2,48.31 4 1 +github.com/muety/wakapi/services/duration.go:99.2,101.31 2 1 +github.com/muety/wakapi/services/duration.go:114.2,114.49 1 1 +github.com/muety/wakapi/services/duration.go:118.2,118.32 1 1 +github.com/muety/wakapi/services/duration.go:29.42,30.90 1 1 +github.com/muety/wakapi/services/duration.go:30.90,32.4 1 1 +github.com/muety/wakapi/services/duration.go:36.16,38.3 1 0 +github.com/muety/wakapi/services/duration.go:48.31,49.42 1 1 +github.com/muety/wakapi/services/duration.go:53.3,54.34 2 1 +github.com/muety/wakapi/services/duration.go:58.3,58.62 1 1 +github.com/muety/wakapi/services/duration.go:62.3,62.20 1 1 +github.com/muety/wakapi/services/duration.go:67.3,77.15 3 1 +github.com/muety/wakapi/services/duration.go:80.3,86.84 2 1 +github.com/muety/wakapi/services/duration.go:96.3,96.10 1 1 +github.com/muety/wakapi/services/duration.go:49.42,50.12 1 1 +github.com/muety/wakapi/services/duration.go:54.34,56.4 1 1 +github.com/muety/wakapi/services/duration.go:58.62,60.4 1 1 +github.com/muety/wakapi/services/duration.go:62.20,64.12 2 1 +github.com/muety/wakapi/services/duration.go:77.15,79.4 1 0 +github.com/muety/wakapi/services/duration.go:86.84,88.41 2 1 +github.com/muety/wakapi/services/duration.go:91.4,91.15 1 1 +github.com/muety/wakapi/services/duration.go:88.41,90.5 1 1 +github.com/muety/wakapi/services/duration.go:92.9,94.4 1 1 +github.com/muety/wakapi/services/duration.go:101.31,102.26 1 1 +github.com/muety/wakapi/services/duration.go:102.26,107.23 1 1 +github.com/muety/wakapi/services/duration.go:110.4,110.36 1 1 +github.com/muety/wakapi/services/duration.go:107.23,109.5 1 1 +github.com/muety/wakapi/services/duration.go:114.49,116.3 1 1 +github.com/muety/wakapi/services/heartbeat.go:26.141,40.33 3 0 +github.com/muety/wakapi/services/heartbeat.go:48.2,48.12 1 0 +github.com/muety/wakapi/services/heartbeat.go:40.33,41.31 1 0 +github.com/muety/wakapi/services/heartbeat.go:41.31,45.4 3 0 +github.com/muety/wakapi/services/heartbeat.go:51.72,54.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:56.80,57.26 1 0 +github.com/muety/wakapi/services/heartbeat.go:61.2,65.32 3 0 +github.com/muety/wakapi/services/heartbeat.go:73.2,74.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:77.2,77.12 1 0 +github.com/muety/wakapi/services/heartbeat.go:57.26,59.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:65.32,66.31 1 0 +github.com/muety/wakapi/services/heartbeat.go:70.3,70.46 1 0 +github.com/muety/wakapi/services/heartbeat.go:66.31,69.4 2 0 +github.com/muety/wakapi/services/heartbeat.go:74.16,76.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:80.69,82.8 2 0 +github.com/muety/wakapi/services/heartbeat.go:85.2,86.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:89.2,89.19 1 0 +github.com/muety/wakapi/services/heartbeat.go:82.8,84.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:86.16,88.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:92.76,95.8 3 0 +github.com/muety/wakapi/services/heartbeat.go:98.2,99.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:102.2,102.19 1 0 +github.com/muety/wakapi/services/heartbeat.go:95.8,97.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:99.16,101.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:105.96,109.26 3 0 +github.com/muety/wakapi/services/heartbeat.go:119.2,120.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:124.2,124.28 1 0 +github.com/muety/wakapi/services/heartbeat.go:130.2,130.24 1 0 +github.com/muety/wakapi/services/heartbeat.go:109.26,112.9 3 0 +github.com/muety/wakapi/services/heartbeat.go:112.9,114.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:114.9,116.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:120.16,122.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:124.28,128.3 3 0 +github.com/muety/wakapi/services/heartbeat.go:133.111,135.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:138.2,138.43 1 0 +github.com/muety/wakapi/services/heartbeat.go:135.16,137.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:141.145,143.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:146.2,146.43 1 0 +github.com/muety/wakapi/services/heartbeat.go:143.16,145.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:149.92,151.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:153.116,155.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:157.78,159.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:161.104,163.54 2 0 +github.com/muety/wakapi/services/heartbeat.go:169.2,170.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:174.2,175.28 2 0 +github.com/muety/wakapi/services/heartbeat.go:181.2,182.22 2 0 +github.com/muety/wakapi/services/heartbeat.go:163.54,167.3 3 0 +github.com/muety/wakapi/services/heartbeat.go:170.16,172.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:175.28,176.33 1 0 +github.com/muety/wakapi/services/heartbeat.go:176.33,178.4 1 0 +github.com/muety/wakapi/services/heartbeat.go:185.62,188.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:190.68,193.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:195.87,198.2 2 0 +github.com/muety/wakapi/services/heartbeat.go:200.116,202.16 2 0 +github.com/muety/wakapi/services/heartbeat.go:206.2,206.28 1 0 +github.com/muety/wakapi/services/heartbeat.go:210.2,210.24 1 0 +github.com/muety/wakapi/services/heartbeat.go:202.16,204.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:206.28,208.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:213.96,215.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:217.107,219.55 2 0 +github.com/muety/wakapi/services/heartbeat.go:219.55,225.36 4 0 +github.com/muety/wakapi/services/heartbeat.go:225.36,230.4 2 0 +github.com/muety/wakapi/services/heartbeat.go:234.85,242.2 7 0 +github.com/muety/wakapi/services/heartbeat.go:244.74,245.32 1 0 +github.com/muety/wakapi/services/heartbeat.go:245.32,250.3 1 0 +github.com/muety/wakapi/services/heartbeat.go:253.72,255.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:257.58,259.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:261.60,263.2 1 0 +github.com/muety/wakapi/services/heartbeat.go:265.94,267.48 2 0 +github.com/muety/wakapi/services/heartbeat.go:273.2,273.18 1 0 +github.com/muety/wakapi/services/heartbeat.go:267.48,269.18 2 0 +github.com/muety/wakapi/services/heartbeat.go:269.18,271.4 1 0 +github.com/muety/wakapi/services/language_mapping.go:18.118,24.2 1 0 +github.com/muety/wakapi/services/language_mapping.go:26.86,28.2 1 0 +github.com/muety/wakapi/services/language_mapping.go:30.96,31.53 1 0 +github.com/muety/wakapi/services/language_mapping.go:35.2,36.16 2 0 +github.com/muety/wakapi/services/language_mapping.go:39.2,40.22 2 0 +github.com/muety/wakapi/services/language_mapping.go:31.53,33.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:36.16,38.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:43.92,46.16 3 0 +github.com/muety/wakapi/services/language_mapping.go:50.2,50.33 1 0 +github.com/muety/wakapi/services/language_mapping.go:53.2,53.22 1 0 +github.com/muety/wakapi/services/language_mapping.go:46.16,48.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:50.33,52.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:56.109,58.16 2 0 +github.com/muety/wakapi/services/language_mapping.go:62.2,63.20 2 0 +github.com/muety/wakapi/services/language_mapping.go:58.16,60.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:66.82,67.26 1 0 +github.com/muety/wakapi/services/language_mapping.go:70.2,72.12 3 0 +github.com/muety/wakapi/services/language_mapping.go:67.26,69.3 1 0 +github.com/muety/wakapi/services/language_mapping.go:75.74,78.2 1 0 +github.com/muety/wakapi/services/misc.go:44.188,56.2 1 0 +github.com/muety/wakapi/services/misc.go:58.36,60.95 2 0 +github.com/muety/wakapi/services/misc.go:64.2,65.111 2 0 +github.com/muety/wakapi/services/misc.go:69.2,69.128 1 0 +github.com/muety/wakapi/services/misc.go:77.2,77.33 1 0 +github.com/muety/wakapi/services/misc.go:82.2,82.33 1 0 +github.com/muety/wakapi/services/misc.go:87.2,87.170 1 0 +github.com/muety/wakapi/services/misc.go:60.95,62.3 1 0 +github.com/muety/wakapi/services/misc.go:65.111,67.3 1 0 +github.com/muety/wakapi/services/misc.go:69.128,71.125 2 0 +github.com/muety/wakapi/services/misc.go:71.125,73.4 1 0 +github.com/muety/wakapi/services/misc.go:77.33,78.71 1 0 +github.com/muety/wakapi/services/misc.go:78.71,80.4 1 0 +github.com/muety/wakapi/services/misc.go:82.33,83.80 1 0 +github.com/muety/wakapi/services/misc.go:83.80,85.4 1 0 +github.com/muety/wakapi/services/misc.go:87.170,88.83 1 0 +github.com/muety/wakapi/services/misc.go:88.83,90.4 1 0 +github.com/muety/wakapi/services/misc.go:94.42,96.36 2 0 +github.com/muety/wakapi/services/misc.go:99.2,102.16 3 0 +github.com/muety/wakapi/services/misc.go:107.2,111.26 4 0 +github.com/muety/wakapi/services/misc.go:123.2,123.30 1 0 +github.com/muety/wakapi/services/misc.go:96.36,98.3 1 0 +github.com/muety/wakapi/services/misc.go:102.16,105.3 2 0 +github.com/muety/wakapi/services/misc.go:111.26,113.46 2 0 +github.com/muety/wakapi/services/misc.go:113.46,116.4 2 0 +github.com/muety/wakapi/services/misc.go:116.18,119.4 2 0 +github.com/muety/wakapi/services/misc.go:123.30,124.58 1 0 +github.com/muety/wakapi/services/misc.go:124.58,128.19 1 0 +github.com/muety/wakapi/services/misc.go:132.4,135.19 1 0 +github.com/muety/wakapi/services/misc.go:128.19,130.5 1 0 +github.com/muety/wakapi/services/misc.go:135.19,137.5 1 0 +github.com/muety/wakapi/services/misc.go:138.9,140.4 1 0 +github.com/muety/wakapi/services/misc.go:144.51,147.45 2 0 +github.com/muety/wakapi/services/misc.go:147.45,148.41 1 0 +github.com/muety/wakapi/services/misc.go:152.3,155.17 3 0 +github.com/muety/wakapi/services/misc.go:160.3,160.33 1 0 +github.com/muety/wakapi/services/misc.go:148.41,151.4 2 0 +github.com/muety/wakapi/services/misc.go:155.17,158.4 2 0 +github.com/muety/wakapi/services/misc.go:160.33,161.31 1 0 +github.com/muety/wakapi/services/misc.go:165.4,169.19 2 0 +github.com/muety/wakapi/services/misc.go:161.31,162.13 1 0 +github.com/muety/wakapi/services/misc.go:169.19,171.5 1 0 +github.com/muety/wakapi/services/misc.go:173.17,175.3 1 0 +github.com/muety/wakapi/services/misc.go:186.54,187.82 1 0 +github.com/muety/wakapi/services/misc.go:191.2,195.16 4 0 +github.com/muety/wakapi/services/misc.go:200.2,201.104 2 0 +github.com/muety/wakapi/services/misc.go:210.2,210.26 1 0 +github.com/muety/wakapi/services/misc.go:187.82,189.3 1 0 +github.com/muety/wakapi/services/misc.go:195.16,198.3 2 0 +github.com/muety/wakapi/services/misc.go:201.104,202.122 1 0 +github.com/muety/wakapi/services/misc.go:202.122,204.4 1 0 +github.com/muety/wakapi/services/misc.go:205.8,208.3 2 0 +github.com/muety/wakapi/services/misc.go:210.26,211.49 1 0 +github.com/muety/wakapi/services/misc.go:215.3,216.65 2 0 +github.com/muety/wakapi/services/misc.go:230.3,230.137 1 0 +github.com/muety/wakapi/services/misc.go:234.3,235.89 2 0 +github.com/muety/wakapi/services/misc.go:211.49,213.4 1 0 +github.com/muety/wakapi/services/misc.go:216.65,218.130 1 0 +github.com/muety/wakapi/services/misc.go:218.130,220.5 1 0 +github.com/muety/wakapi/services/misc.go:220.10,220.25 1 0 +github.com/muety/wakapi/services/misc.go:220.25,223.5 2 0 +github.com/muety/wakapi/services/misc.go:230.137,231.12 1 0 +github.com/muety/wakapi/services/misc.go:235.89,237.4 1 0 +github.com/muety/wakapi/services/misc.go:241.73,243.16 2 0 +github.com/muety/wakapi/services/misc.go:247.2,247.27 1 0 +github.com/muety/wakapi/services/misc.go:243.16,246.3 2 0 +github.com/muety/wakapi/services/misc.go:250.99,252.33 2 0 +github.com/muety/wakapi/services/misc.go:252.33,256.86 3 0 +github.com/muety/wakapi/services/misc.go:261.3,264.18 1 0 +github.com/muety/wakapi/services/misc.go:256.86,259.4 2 0 +github.com/muety/wakapi/services/misc.go:264.18,266.4 1 0 +github.com/muety/wakapi/services/misc.go:270.53,272.16 2 0 +github.com/muety/wakapi/services/misc.go:275.2,275.25 1 0 +github.com/muety/wakapi/services/misc.go:272.16,274.3 1 0 +github.com/muety/wakapi/services/misc.go:278.53,280.16 2 0 +github.com/muety/wakapi/services/misc.go:283.2,283.25 1 0 +github.com/muety/wakapi/services/misc.go:280.16,282.3 1 0 +github.com/muety/wakapi/services/misc.go:286.64,288.16 2 0 +github.com/muety/wakapi/services/misc.go:291.2,291.25 1 0 +github.com/muety/wakapi/services/misc.go:288.16,290.3 1 0 +github.com/muety/wakapi/services/project_label.go:21.111,28.2 1 0 +github.com/muety/wakapi/services/project_label.go:30.80,32.2 1 0 +github.com/muety/wakapi/services/project_label.go:34.90,35.51 1 0 +github.com/muety/wakapi/services/project_label.go:39.2,40.16 2 0 +github.com/muety/wakapi/services/project_label.go:43.2,44.20 2 0 +github.com/muety/wakapi/services/project_label.go:35.51,37.3 1 0 +github.com/muety/wakapi/services/project_label.go:40.16,42.3 1 0 +github.com/muety/wakapi/services/project_label.go:48.108,50.16 2 0 +github.com/muety/wakapi/services/project_label.go:53.2,53.112 1 0 +github.com/muety/wakapi/services/project_label.go:56.2,56.26 1 0 +github.com/muety/wakapi/services/project_label.go:50.16,52.3 1 0 +github.com/muety/wakapi/services/project_label.go:53.112,55.3 1 0 +github.com/muety/wakapi/services/project_label.go:60.116,62.16 2 0 +github.com/muety/wakapi/services/project_label.go:65.2,65.112 1 0 +github.com/muety/wakapi/services/project_label.go:68.2,68.26 1 0 +github.com/muety/wakapi/services/project_label.go:62.16,64.3 1 0 +github.com/muety/wakapi/services/project_label.go:65.112,67.3 1 0 +github.com/muety/wakapi/services/project_label.go:71.98,73.16 2 0 +github.com/muety/wakapi/services/project_label.go:77.2,79.20 3 0 +github.com/muety/wakapi/services/project_label.go:73.16,75.3 1 0 +github.com/muety/wakapi/services/project_label.go:82.74,83.24 1 0 +github.com/muety/wakapi/services/project_label.go:86.2,89.12 4 0 +github.com/muety/wakapi/services/project_label.go:83.24,85.3 1 0 +github.com/muety/wakapi/services/project_label.go:92.89,94.14 2 0 +github.com/muety/wakapi/services/project_label.go:97.2,100.4 1 0 +github.com/muety/wakapi/services/project_label.go:94.14,96.3 1 0 +github.com/muety/wakapi/services/report.go:31.122,44.2 2 0 +github.com/muety/wakapi/services/report.go:46.38,49.45 2 0 +github.com/muety/wakapi/services/report.go:67.2,67.49 1 0 +github.com/muety/wakapi/services/report.go:87.2,87.16 1 0 +github.com/muety/wakapi/services/report.go:49.45,50.46 1 0 +github.com/muety/wakapi/services/report.go:50.46,53.57 2 0 +github.com/muety/wakapi/services/report.go:58.4,58.58 1 0 +github.com/muety/wakapi/services/report.go:53.57,55.5 1 0 +github.com/muety/wakapi/services/report.go:58.58,61.5 2 0 +github.com/muety/wakapi/services/report.go:62.18,64.4 1 0 +github.com/muety/wakapi/services/report.go:67.49,70.17 2 0 +github.com/muety/wakapi/services/report.go:76.3,76.78 1 0 +github.com/muety/wakapi/services/report.go:81.3,82.27 2 0 +github.com/muety/wakapi/services/report.go:70.17,73.4 2 0 +github.com/muety/wakapi/services/report.go:76.78,78.4 1 0 +github.com/muety/wakapi/services/report.go:82.27,84.4 1 0 +github.com/muety/wakapi/services/report.go:87.16,89.3 1 0 +github.com/muety/wakapi/services/report.go:92.87,93.22 1 0 +github.com/muety/wakapi/services/report.go:98.2,104.16 5 0 +github.com/muety/wakapi/services/report.go:109.2,116.65 2 0 +github.com/muety/wakapi/services/report.go:121.2,122.12 2 0 +github.com/muety/wakapi/services/report.go:93.22,96.3 2 0 +github.com/muety/wakapi/services/report.go:104.16,107.3 2 0 +github.com/muety/wakapi/services/report.go:116.65,119.3 2 0 +github.com/muety/wakapi/services/user.go:26.99,36.33 3 0 +github.com/muety/wakapi/services/user.go:57.2,57.12 1 0 +github.com/muety/wakapi/services/user.go:36.33,37.31 1 0 +github.com/muety/wakapi/services/user.go:37.31,43.73 4 0 +github.com/muety/wakapi/services/user.go:47.4,47.24 1 0 +github.com/muety/wakapi/services/user.go:43.73,45.5 1 0 +github.com/muety/wakapi/services/user.go:47.24,48.80 1 0 +github.com/muety/wakapi/services/user.go:48.80,50.6 1 0 +github.com/muety/wakapi/services/user.go:50.11,52.6 1 0 +github.com/muety/wakapi/services/user.go:60.74,61.40 1 0 +github.com/muety/wakapi/services/user.go:65.2,66.16 2 0 +github.com/muety/wakapi/services/user.go:70.2,71.15 2 0 +github.com/muety/wakapi/services/user.go:61.40,63.3 1 0 +github.com/muety/wakapi/services/user.go:66.16,68.3 1 0 +github.com/muety/wakapi/services/user.go:74.72,75.37 1 0 +github.com/muety/wakapi/services/user.go:79.2,80.16 2 0 +github.com/muety/wakapi/services/user.go:84.2,85.15 2 0 +github.com/muety/wakapi/services/user.go:75.37,77.3 1 0 +github.com/muety/wakapi/services/user.go:80.16,82.3 1 0 +github.com/muety/wakapi/services/user.go:88.76,90.2 1 0 +github.com/muety/wakapi/services/user.go:92.86,94.2 1 0 +github.com/muety/wakapi/services/user.go:96.92,98.2 1 0 +github.com/muety/wakapi/services/user.go:100.58,102.2 1 0 +github.com/muety/wakapi/services/user.go:104.71,106.2 1 0 +github.com/muety/wakapi/services/user.go:108.86,110.16 2 0 +github.com/muety/wakapi/services/user.go:113.2,113.112 1 0 +github.com/muety/wakapi/services/user.go:110.16,112.3 1 0 +github.com/muety/wakapi/services/user.go:113.112,115.3 1 0 +github.com/muety/wakapi/services/user.go:118.86,120.2 1 0 +github.com/muety/wakapi/services/user.go:122.94,124.2 1 0 +github.com/muety/wakapi/services/user.go:126.71,128.12 2 0 +github.com/muety/wakapi/services/user.go:132.2,133.42 2 0 +github.com/muety/wakapi/services/user.go:137.2,138.16 2 0 +github.com/muety/wakapi/services/user.go:142.2,143.21 2 0 +github.com/muety/wakapi/services/user.go:128.12,130.3 1 0 +github.com/muety/wakapi/services/user.go:133.42,135.3 1 0 +github.com/muety/wakapi/services/user.go:138.16,140.3 1 0 +github.com/muety/wakapi/services/user.go:146.48,148.2 1 0 +github.com/muety/wakapi/services/user.go:150.102,160.95 2 0 +github.com/muety/wakapi/services/user.go:166.2,166.38 1 0 +github.com/muety/wakapi/services/user.go:160.95,162.3 1 0 +github.com/muety/wakapi/services/user.go:162.8,164.3 1 0 +github.com/muety/wakapi/services/user.go:169.73,173.2 3 0 +github.com/muety/wakapi/services/user.go:175.78,179.2 3 0 +github.com/muety/wakapi/services/user.go:181.122,184.35 2 0 +github.com/muety/wakapi/services/user.go:190.2,190.35 1 0 +github.com/muety/wakapi/services/user.go:194.2,194.18 1 0 +github.com/muety/wakapi/services/user.go:184.35,185.89 1 0 +github.com/muety/wakapi/services/user.go:185.89,187.4 1 0 +github.com/muety/wakapi/services/user.go:190.35,192.3 1 0 +github.com/muety/wakapi/services/user.go:197.85,199.2 1 0 +github.com/muety/wakapi/services/user.go:201.57,209.2 5 0 +github.com/muety/wakapi/services/user.go:211.38,213.2 1 0 +github.com/muety/wakapi/services/user.go:215.55,217.2 1 0 +github.com/muety/wakapi/services/user.go:219.57,224.2 1 0 +github.com/muety/wakapi/services/user.go:226.57,231.2 1 0 +github.com/muety/wakapi/services/aggregation.go:31.142,41.2 1 0 +github.com/muety/wakapi/services/aggregation.go:50.43,53.52 2 0 +github.com/muety/wakapi/services/aggregation.go:53.52,54.80 1 0 +github.com/muety/wakapi/services/aggregation.go:54.80,56.4 1 0 +github.com/muety/wakapi/services/aggregation.go:57.58,59.3 1 0 +github.com/muety/wakapi/services/aggregation.go:62.92,63.47 1 0 +github.com/muety/wakapi/services/aggregation.go:66.2,72.16 4 0 +github.com/muety/wakapi/services/aggregation.go:78.2,79.16 2 0 +github.com/muety/wakapi/services/aggregation.go:85.2,86.44 2 0 +github.com/muety/wakapi/services/aggregation.go:91.2,93.12 3 0 +github.com/muety/wakapi/services/aggregation.go:105.2,105.41 1 0 +github.com/muety/wakapi/services/aggregation.go:123.2,123.12 1 0 +github.com/muety/wakapi/services/aggregation.go:63.47,65.3 1 0 +github.com/muety/wakapi/services/aggregation.go:72.16,75.3 2 0 +github.com/muety/wakapi/services/aggregation.go:79.16,82.3 2 0 +github.com/muety/wakapi/services/aggregation.go:86.44,88.3 1 0 +github.com/muety/wakapi/services/aggregation.go:93.12,94.28 1 0 +github.com/muety/wakapi/services/aggregation.go:94.28,96.47 2 0 +github.com/muety/wakapi/services/aggregation.go:96.47,98.5 1 0 +github.com/muety/wakapi/services/aggregation.go:98.19,100.5 1 0 +github.com/muety/wakapi/services/aggregation.go:105.41,106.71 1 0 +github.com/muety/wakapi/services/aggregation.go:110.3,110.21 1 0 +github.com/muety/wakapi/services/aggregation.go:106.71,107.12 1 0 +github.com/muety/wakapi/services/aggregation.go:110.21,114.4 1 0 +github.com/muety/wakapi/services/aggregation.go:114.9,114.62 1 0 +github.com/muety/wakapi/services/aggregation.go:114.62,118.4 1 0 +github.com/muety/wakapi/services/aggregation.go:126.60,127.115 1 0 +github.com/muety/wakapi/services/aggregation.go:127.115,129.3 1 0 +github.com/muety/wakapi/services/aggregation.go:129.8,131.60 2 0 +github.com/muety/wakapi/services/aggregation.go:131.60,133.4 1 0 +github.com/muety/wakapi/services/aggregation.go:137.83,152.41 5 0 +github.com/muety/wakapi/services/aggregation.go:152.41,162.3 3 0 +github.com/muety/wakapi/services/aggregation.go:165.83,168.27 3 0 +github.com/muety/wakapi/services/aggregation.go:173.2,174.12 2 0 +github.com/muety/wakapi/services/aggregation.go:168.27,169.34 1 0 +github.com/muety/wakapi/services/aggregation.go:169.34,171.4 1 0 +github.com/muety/wakapi/services/aggregation.go:177.79,180.27 3 0 +github.com/muety/wakapi/services/aggregation.go:180.27,182.3 1 0 +github.com/muety/wakapi/services/aggregation.go:185.34,188.2 2 0 +github.com/muety/wakapi/services/alias.go:19.77,24.2 1 1 +github.com/muety/wakapi/services/alias.go:28.60,29.43 1 1 +github.com/muety/wakapi/services/alias.go:32.2,32.14 1 1 +github.com/muety/wakapi/services/alias.go:29.43,31.3 1 1 +github.com/muety/wakapi/services/alias.go:35.62,37.16 2 1 +github.com/muety/wakapi/services/alias.go:40.2,40.12 1 1 +github.com/muety/wakapi/services/alias.go:37.16,39.3 1 1 +github.com/muety/wakapi/services/alias.go:43.59,44.51 1 1 +github.com/muety/wakapi/services/alias.go:44.51,46.3 1 0 +github.com/muety/wakapi/services/alias.go:49.76,50.32 1 0 +github.com/muety/wakapi/services/alias.go:53.2,53.49 1 0 +github.com/muety/wakapi/services/alias.go:50.32,52.3 1 0 +github.com/muety/wakapi/services/alias.go:53.49,55.3 1 0 +github.com/muety/wakapi/services/alias.go:55.8,57.3 1 0 +github.com/muety/wakapi/services/alias.go:60.102,61.38 1 0 +github.com/muety/wakapi/services/alias.go:64.2,64.39 1 0 +github.com/muety/wakapi/services/alias.go:61.38,63.3 1 0 +github.com/muety/wakapi/services/alias.go:67.113,68.38 1 0 +github.com/muety/wakapi/services/alias.go:71.2,71.39 1 0 +github.com/muety/wakapi/services/alias.go:68.38,70.3 1 0 +github.com/muety/wakapi/services/alias.go:74.108,75.32 1 1 +github.com/muety/wakapi/services/alias.go:79.2,79.49 1 1 +github.com/muety/wakapi/services/alias.go:87.2,87.19 1 1 +github.com/muety/wakapi/services/alias.go:75.32,77.3 1 1 +github.com/muety/wakapi/services/alias.go:79.49,80.47 1 1 +github.com/muety/wakapi/services/alias.go:80.47,81.49 1 1 +github.com/muety/wakapi/services/alias.go:81.49,83.5 1 1 +github.com/muety/wakapi/services/alias.go:90.77,92.16 2 0 +github.com/muety/wakapi/services/alias.go:96.2,100.20 3 0 +github.com/muety/wakapi/services/alias.go:92.16,94.3 1 0 +github.com/muety/wakapi/services/alias.go:103.60,104.24 1 0 +github.com/muety/wakapi/services/alias.go:107.2,110.16 2 0 +github.com/muety/wakapi/services/alias.go:114.2,116.12 2 0 +github.com/muety/wakapi/services/alias.go:104.24,106.3 1 0 +github.com/muety/wakapi/services/alias.go:110.16,112.3 1 0 +github.com/muety/wakapi/services/alias.go:119.69,123.28 3 0 +github.com/muety/wakapi/services/alias.go:131.2,134.16 2 0 +github.com/muety/wakapi/services/alias.go:140.2,140.31 1 0 +github.com/muety/wakapi/services/alias.go:144.2,144.12 1 0 +github.com/muety/wakapi/services/alias.go:123.28,124.21 1 0 +github.com/muety/wakapi/services/alias.go:127.3,128.16 2 0 +github.com/muety/wakapi/services/alias.go:124.21,126.4 1 0 +github.com/muety/wakapi/services/alias.go:134.16,135.29 1 0 +github.com/muety/wakapi/services/alias.go:135.29,137.4 1 0 +github.com/muety/wakapi/services/alias.go:140.31,142.3 1 0 +github.com/muety/wakapi/services/alias.go:147.74,148.14 1 0 +github.com/muety/wakapi/services/alias.go:148.14,149.57 1 0 +github.com/muety/wakapi/services/alias.go:149.57,153.4 3 0 +github.com/muety/wakapi/services/alias.go:154.8,155.57 1 0 +github.com/muety/wakapi/services/alias.go:155.57,157.48 2 0 +github.com/muety/wakapi/services/alias.go:162.4,162.52 1 0 +github.com/muety/wakapi/services/alias.go:157.48,158.26 1 0 +github.com/muety/wakapi/services/alias.go:158.26,160.6 1 0 +github.com/muety/wakapi/services/alias.go:167.116,168.32 1 0 +github.com/muety/wakapi/services/alias.go:171.2,171.49 1 0 +github.com/muety/wakapi/services/alias.go:168.32,170.3 1 0 +github.com/muety/wakapi/services/alias.go:171.49,173.47 2 0 +github.com/muety/wakapi/services/alias.go:178.3,178.30 1 0 +github.com/muety/wakapi/services/alias.go:173.47,174.16 1 0 +github.com/muety/wakapi/services/alias.go:174.16,176.5 1 0 +github.com/muety/wakapi/services/alias.go:179.8,181.3 1 0 +github.com/muety/wakapi/services/key_value.go:14.89,19.2 1 0 +github.com/muety/wakapi/services/key_value.go:21.83,23.2 1 0 +github.com/muety/wakapi/services/key_value.go:25.90,27.2 1 0 +github.com/muety/wakapi/services/key_value.go:29.78,31.16 2 0 +github.com/muety/wakapi/services/key_value.go:37.2,37.11 1 0 +github.com/muety/wakapi/services/key_value.go:31.16,36.3 1 0 +github.com/muety/wakapi/services/key_value.go:40.72,42.2 1 0 +github.com/muety/wakapi/services/key_value.go:44.60,46.2 1 0 +github.com/muety/wakapi/services/leaderboard.go:30.159,43.33 3 0 +github.com/muety/wakapi/services/leaderboard.go:67.2,67.12 1 0 +github.com/muety/wakapi/services/leaderboard.go:43.33,44.31 1 0 +github.com/muety/wakapi/services/leaderboard.go:44.31,50.18 3 0 +github.com/muety/wakapi/services/leaderboard.go:54.4,54.41 1 0 +github.com/muety/wakapi/services/leaderboard.go:50.18,52.5 1 0 +github.com/muety/wakapi/services/leaderboard.go:54.41,57.5 2 0 +github.com/muety/wakapi/services/leaderboard.go:57.10,57.48 1 0 +github.com/muety/wakapi/services/leaderboard.go:57.48,59.64 2 0 +github.com/muety/wakapi/services/leaderboard.go:62.5,62.22 1 0 +github.com/muety/wakapi/services/leaderboard.go:59.64,61.6 1 0 +github.com/muety/wakapi/services/leaderboard.go:70.43,73.21 2 0 +github.com/muety/wakapi/services/leaderboard.go:82.2,82.76 1 0 +github.com/muety/wakapi/services/leaderboard.go:73.21,75.17 2 0 +github.com/muety/wakapi/services/leaderboard.go:79.3,79.91 1 0 +github.com/muety/wakapi/services/leaderboard.go:75.17,78.4 2 0 +github.com/muety/wakapi/services/leaderboard.go:82.76,83.77 1 0 +github.com/muety/wakapi/services/leaderboard.go:83.77,85.4 1 0 +github.com/muety/wakapi/services/leaderboard.go:89.121,92.29 2 0 +github.com/muety/wakapi/services/leaderboard.go:127.2,129.12 3 0 +github.com/muety/wakapi/services/leaderboard.go:92.29,93.83 1 0 +github.com/muety/wakapi/services/leaderboard.go:98.3,99.17 2 0 +github.com/muety/wakapi/services/leaderboard.go:104.3,104.85 1 0 +github.com/muety/wakapi/services/leaderboard.go:109.3,109.25 1 0 +github.com/muety/wakapi/services/leaderboard.go:93.83,95.12 2 0 +github.com/muety/wakapi/services/leaderboard.go:99.17,101.12 2 0 +github.com/muety/wakapi/services/leaderboard.go:104.85,106.12 2 0 +github.com/muety/wakapi/services/leaderboard.go:109.25,111.18 2 0 +github.com/muety/wakapi/services/leaderboard.go:116.4,116.23 1 0 +github.com/muety/wakapi/services/leaderboard.go:120.4,120.60 1 0 +github.com/muety/wakapi/services/leaderboard.go:111.18,113.13 2 0 +github.com/muety/wakapi/services/leaderboard.go:116.23,117.13 1 0 +github.com/muety/wakapi/services/leaderboard.go:120.60,122.13 2 0 +github.com/muety/wakapi/services/leaderboard.go:132.77,135.2 2 0 +github.com/muety/wakapi/services/leaderboard.go:137.60,140.52 2 0 +github.com/muety/wakapi/services/leaderboard.go:144.2,145.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:148.2,148.19 1 0 +github.com/muety/wakapi/services/leaderboard.go:140.52,142.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:145.16,147.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:151.153,153.2 1 0 +github.com/muety/wakapi/services/leaderboard.go:155.144,157.2 1 0 +github.com/muety/wakapi/services/leaderboard.go:159.174,162.52 2 0 +github.com/muety/wakapi/services/leaderboard.go:166.2,167.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:171.2,171.18 1 0 +github.com/muety/wakapi/services/leaderboard.go:184.2,185.19 2 0 +github.com/muety/wakapi/services/leaderboard.go:162.52,164.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:167.16,169.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:171.18,173.17 2 0 +github.com/muety/wakapi/services/leaderboard.go:173.17,175.4 1 0 +github.com/muety/wakapi/services/leaderboard.go:175.9,176.31 1 0 +github.com/muety/wakapi/services/leaderboard.go:176.31,177.40 1 0 +github.com/muety/wakapi/services/leaderboard.go:177.40,179.6 1 0 +github.com/muety/wakapi/services/leaderboard.go:188.165,191.52 2 0 +github.com/muety/wakapi/services/leaderboard.go:195.2,196.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:200.2,200.17 1 0 +github.com/muety/wakapi/services/leaderboard.go:211.2,212.19 2 0 +github.com/muety/wakapi/services/leaderboard.go:191.52,193.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:196.16,198.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:200.17,202.17 2 0 +github.com/muety/wakapi/services/leaderboard.go:202.17,204.4 1 0 +github.com/muety/wakapi/services/leaderboard.go:204.9,205.31 1 0 +github.com/muety/wakapi/services/leaderboard.go:205.31,207.5 1 0 +github.com/muety/wakapi/services/leaderboard.go:215.129,217.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:221.2,222.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:227.2,233.8 2 0 +github.com/muety/wakapi/services/leaderboard.go:217.16,219.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:222.16,224.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:236.151,238.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:242.2,243.16 2 0 +github.com/muety/wakapi/services/leaderboard.go:247.2,250.42 3 0 +github.com/muety/wakapi/services/leaderboard.go:262.2,262.19 1 0 +github.com/muety/wakapi/services/leaderboard.go:238.16,240.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:243.16,245.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:250.42,260.3 2 0 +github.com/muety/wakapi/services/leaderboard.go:265.131,267.47 2 0 +github.com/muety/wakapi/services/leaderboard.go:270.2,270.23 1 0 +github.com/muety/wakapi/services/leaderboard.go:273.2,273.10 1 0 +github.com/muety/wakapi/services/leaderboard.go:267.47,269.3 1 0 +github.com/muety/wakapi/services/leaderboard.go:270.23,272.3 1 0 diff --git a/go.mod b/go.mod index a1b52f9..8ba7949 100644 --- a/go.mod +++ b/go.mod @@ -40,6 +40,7 @@ require ( require ( github.com/BurntSushi/toml v1.3.2 // indirect github.com/KyleBanks/depth v1.2.1 // indirect + github.com/alexedwards/argon2id v0.0.0-20230305115115-4b3c3280a736 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/glebarez/go-sqlite v1.21.2 // indirect diff --git a/go.sum b/go.sum index e8f870d..a783579 100644 --- a/go.sum +++ b/go.sum @@ -7,6 +7,8 @@ github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8 github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= +github.com/alexedwards/argon2id v0.0.0-20230305115115-4b3c3280a736 h1:qZaEtLxnqY5mJ0fVKbk31NVhlgi0yrKm51Pq/I5wcz4= +github.com/alexedwards/argon2id v0.0.0-20230305115115-4b3c3280a736/go.mod h1:mTeFRcTdnpzOlRjMoFYC/80HwVUreupyAiqPkCZQOXc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -178,6 +180,7 @@ go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= @@ -199,6 +202,7 @@ golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= @@ -224,11 +228,13 @@ golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= diff --git a/mocks/user_service.go b/mocks/user_service.go index d4776b0..f8c5403 100644 --- a/mocks/user_service.go +++ b/mocks/user_service.go @@ -99,11 +99,6 @@ func (m *UserServiceMock) SetWakatimeApiCredentials(user *models.User, s1, s2 st return args.Get(0).(*models.User), args.Error(1) } -func (m *UserServiceMock) MigrateMd5Password(user *models.User, login *models.Login) (*models.User, error) { - args := m.Called(user, login) - return args.Get(0).(*models.User), args.Error(1) -} - func (m *UserServiceMock) GenerateResetToken(user *models.User) (*models.User, error) { args := m.Called(user) return args.Get(0).(*models.User), args.Error(1) diff --git a/routes/login.go b/routes/login.go index 7300d31..51582d3 100644 --- a/routes/login.go +++ b/routes/login.go @@ -93,7 +93,7 @@ func (h *LoginHandler) PostLogin(w http.ResponseWriter, r *http.Request) { return } - if !utils.CompareBcrypt(user.Password, login.Password, h.config.Security.PasswordSalt) { + if !utils.ComparePassword(user.Password, login.Password, h.config.Security.PasswordSalt) { w.WriteHeader(http.StatusUnauthorized) templates[conf.LoginTemplate].Execute(w, h.buildViewModel(r, w).WithError("invalid credentials")) return @@ -252,7 +252,7 @@ func (h *LoginHandler) PostSetPassword(w http.ResponseWriter, r *http.Request) { user.Password = setRequest.Password user.ResetToken = "" - if hash, err := utils.HashBcrypt(user.Password, h.config.Security.PasswordSalt); err != nil { + if hash, err := utils.HashPassword(user.Password, h.config.Security.PasswordSalt); err != nil { w.WriteHeader(http.StatusInternalServerError) conf.Log().Request(r).Error("failed to set new password - %v", err) templates[conf.SetPasswordTemplate].Execute(w, h.buildViewModel(r, w).WithError("failed to set new password")) diff --git a/routes/settings.go b/routes/settings.go index 7e1645f..34ea0fe 100644 --- a/routes/settings.go +++ b/routes/settings.go @@ -217,7 +217,7 @@ func (h *SettingsHandler) actionChangePassword(w http.ResponseWriter, r *http.Re return http.StatusBadRequest, "", "missing parameters" } - if !utils.CompareBcrypt(user.Password, credentials.PasswordOld, h.config.Security.PasswordSalt) { + if !utils.ComparePassword(user.Password, credentials.PasswordOld, h.config.Security.PasswordSalt) { return http.StatusUnauthorized, "", "invalid credentials" } @@ -226,7 +226,7 @@ func (h *SettingsHandler) actionChangePassword(w http.ResponseWriter, r *http.Re } user.Password = credentials.PasswordNew - if hash, err := utils.HashBcrypt(user.Password, h.config.Security.PasswordSalt); err != nil { + if hash, err := utils.HashPassword(user.Password, h.config.Security.PasswordSalt); err != nil { return http.StatusInternalServerError, "", conf.ErrInternalServerError } else { user.Password = hash diff --git a/services/services.go b/services/services.go index 4b43e0d..ce4637c 100644 --- a/services/services.go +++ b/services/services.go @@ -139,7 +139,6 @@ type IUserService interface { Delete(*models.User) error ResetApiKey(*models.User) (*models.User, error) SetWakatimeApiCredentials(*models.User, string, string) (*models.User, error) - MigrateMd5Password(*models.User, *models.Login) (*models.User, error) GenerateResetToken(*models.User) (*models.User, error) FlushCache() FlushUserCache(string) diff --git a/services/user.go b/services/user.go index 54f0f10..1a9e8a4 100644 --- a/services/user.go +++ b/services/user.go @@ -157,7 +157,7 @@ func (srv *UserService) CreateOrGet(signup *models.Signup, isAdmin bool) (*model IsAdmin: isAdmin, } - if hash, err := utils.HashBcrypt(u.Password, srv.config.Security.PasswordSalt); err != nil { + if hash, err := utils.HashPassword(u.Password, srv.config.Security.PasswordSalt); err != nil { return nil, false, err } else { u.Password = hash @@ -194,17 +194,6 @@ func (srv *UserService) SetWakatimeApiCredentials(user *models.User, apiKey stri return user, nil } -func (srv *UserService) MigrateMd5Password(user *models.User, login *models.Login) (*models.User, error) { - srv.FlushUserCache(user.ID) - user.Password = login.Password - if hash, err := utils.HashBcrypt(user.Password, srv.config.Security.PasswordSalt); err != nil { - return nil, err - } else { - user.Password = hash - } - return srv.repository.UpdateField(user, "password", user.Password) -} - func (srv *UserService) GenerateResetToken(user *models.User) (*models.User, error) { return srv.repository.UpdateField(user, "reset_token", uuid.NewV4()) } diff --git a/utils/auth.go b/utils/auth.go index 1c68041..c706035 100644 --- a/utils/auth.go +++ b/utils/auth.go @@ -3,6 +3,7 @@ package utils import ( "encoding/base64" "errors" + "github.com/alexedwards/argon2id" "golang.org/x/crypto/bcrypt" "net/http" "regexp" @@ -42,9 +43,22 @@ func ExtractBearerAuth(r *http.Request) (key string, err error) { return string(keyBytes), err } -func CompareBcrypt(wanted, actual, pepper string) bool { - plainPassword := []byte(strings.TrimSpace(actual) + pepper) - err := bcrypt.CompareHashAndPassword([]byte(wanted), plainPassword) +// password hashing + +func ComparePassword(hashed, plain, pepper string) bool { + if hashed[0:10] == "$argon2id$" { + return CompareArgon2Id(hashed, plain, pepper) + } + return CompareBcrypt(hashed, plain, pepper) +} + +func HashPassword(plain, pepper string) (string, error) { + return HashArgon2Id(plain, pepper) +} + +func CompareBcrypt(hashed, plain, pepper string) bool { + plainPepperedPassword := []byte(strings.TrimSpace(plain) + pepper) + err := bcrypt.CompareHashAndPassword([]byte(hashed), plainPepperedPassword) return err == nil } @@ -56,3 +70,18 @@ func HashBcrypt(plain, pepper string) (string, error) { } return "", err } + +func CompareArgon2Id(hashed, plain, pepper string) bool { + plainPepperedPassword := strings.TrimSpace(plain) + pepper + match, err := argon2id.ComparePasswordAndHash(plainPepperedPassword, hashed) + return err == nil && match +} + +func HashArgon2Id(plain, pepper string) (string, error) { + plainPepperedPassword := strings.TrimSpace(plain) + pepper + hash, err := argon2id.CreateHash(plainPepperedPassword, argon2id.DefaultParams) + if err == nil { + return hash, nil + } + return "", err +}