diff --git a/coverage/coverage.out b/coverage/coverage.out index 93be6d14..770e74e7 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -1,53 +1,4 @@ mode: set -github.com/echovault/echovault/internal/aof/engine.go:48.56,49.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:49.30,51.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:54.57,55.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:55.30,57.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:60.59,61.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:61.30,63.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:66.58,67.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:67.30,69.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:72.59,73.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:73.30,75.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:78.90,79.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:79.30,81.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:84.103,85.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:85.30,87.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:90.87,91.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:91.30,93.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:96.74,97.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:97.30,99.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:102.72,103.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:103.30,105.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:108.69,115.29 1 1 -github.com/echovault/echovault/internal/aof/engine.go:115.30,115.31 0 0 -github.com/echovault/echovault/internal/aof/engine.go:116.30,116.31 0 0 -github.com/echovault/echovault/internal/aof/engine.go:117.65,117.79 1 0 -github.com/echovault/echovault/internal/aof/engine.go:118.77,118.78 0 0 -github.com/echovault/echovault/internal/aof/engine.go:119.58,119.59 0 0 -github.com/echovault/echovault/internal/aof/engine.go:124.2,124.33 1 1 -github.com/echovault/echovault/internal/aof/engine.go:124.33,126.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:129.2,136.16 2 1 -github.com/echovault/echovault/internal/aof/engine.go:136.16,138.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:139.2,149.16 3 1 -github.com/echovault/echovault/internal/aof/engine.go:149.16,151.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:152.2,154.20 2 1 -github.com/echovault/echovault/internal/aof/engine.go:157.64,158.68 1 1 -github.com/echovault/echovault/internal/aof/engine.go:158.68,160.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:163.42,171.62 5 1 -github.com/echovault/echovault/internal/aof/engine.go:171.62,173.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:176.2,176.54 1 1 -github.com/echovault/echovault/internal/aof/engine.go:176.54,178.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:180.2,180.12 1 1 -github.com/echovault/echovault/internal/aof/engine.go:183.39,184.55 1 1 -github.com/echovault/echovault/internal/aof/engine.go:184.55,186.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:187.2,187.53 1 1 -github.com/echovault/echovault/internal/aof/engine.go:187.53,189.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:190.2,190.12 1 1 -github.com/echovault/echovault/internal/aof/engine.go:193.31,194.53 1 1 -github.com/echovault/echovault/internal/aof/engine.go:194.53,196.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:197.2,197.51 1 1 -github.com/echovault/echovault/internal/aof/engine.go:197.51,199.3 1 0 github.com/echovault/echovault/internal/aof/log/store.go:55.54,56.28 1 1 github.com/echovault/echovault/internal/aof/log/store.go:56.28,58.3 1 1 github.com/echovault/echovault/internal/aof/log/store.go:61.55,62.28 1 1 @@ -71,11 +22,11 @@ github.com/echovault/echovault/internal/aof/log/store.go:111.3,111.15 1 1 github.com/echovault/echovault/internal/aof/log/store.go:116.2,116.51 1 1 github.com/echovault/echovault/internal/aof/log/store.go:116.51,117.13 1 1 github.com/echovault/echovault/internal/aof/log/store.go:117.13,119.17 2 1 -github.com/echovault/echovault/internal/aof/log/store.go:119.17,121.5 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:119.17,121.5 1 1 github.com/echovault/echovault/internal/aof/log/store.go:122.4,122.8 1 1 github.com/echovault/echovault/internal/aof/log/store.go:122.8,124.40 2 1 -github.com/echovault/echovault/internal/aof/log/store.go:124.40,127.11 3 0 -github.com/echovault/echovault/internal/aof/log/store.go:129.5,130.15 2 1 +github.com/echovault/echovault/internal/aof/log/store.go:124.40,127.11 3 1 +github.com/echovault/echovault/internal/aof/log/store.go:129.5,130.15 2 0 github.com/echovault/echovault/internal/aof/log/store.go:135.2,135.19 1 1 github.com/echovault/echovault/internal/aof/log/store.go:138.63,140.21 1 1 github.com/echovault/echovault/internal/aof/log/store.go:140.21,142.3 1 0 @@ -168,6 +119,55 @@ github.com/echovault/echovault/internal/config/config.go:254.2,256.45 2 0 github.com/echovault/echovault/internal/config/config.go:256.45,258.3 1 0 github.com/echovault/echovault/internal/config/config.go:260.2,260.18 1 0 github.com/echovault/echovault/internal/config/default.go:9.29,42.2 3 0 +github.com/echovault/echovault/internal/aof/engine.go:48.56,49.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:49.30,51.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:54.57,55.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:55.30,57.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:60.59,61.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:61.30,63.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:66.58,67.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:67.30,69.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:72.59,73.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:73.30,75.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:78.90,79.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:79.30,81.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:84.103,85.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:85.30,87.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:90.87,91.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:91.30,93.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:96.74,97.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:97.30,99.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:102.72,103.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:103.30,105.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:108.69,115.29 1 1 +github.com/echovault/echovault/internal/aof/engine.go:115.30,115.31 0 0 +github.com/echovault/echovault/internal/aof/engine.go:116.30,116.31 0 0 +github.com/echovault/echovault/internal/aof/engine.go:117.65,117.79 1 0 +github.com/echovault/echovault/internal/aof/engine.go:118.77,118.78 0 0 +github.com/echovault/echovault/internal/aof/engine.go:119.58,119.59 0 0 +github.com/echovault/echovault/internal/aof/engine.go:124.2,124.33 1 1 +github.com/echovault/echovault/internal/aof/engine.go:124.33,126.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:129.2,136.16 2 1 +github.com/echovault/echovault/internal/aof/engine.go:136.16,138.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:139.2,149.16 3 1 +github.com/echovault/echovault/internal/aof/engine.go:149.16,151.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:152.2,154.20 2 1 +github.com/echovault/echovault/internal/aof/engine.go:157.64,158.68 1 1 +github.com/echovault/echovault/internal/aof/engine.go:158.68,160.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:163.42,171.62 5 1 +github.com/echovault/echovault/internal/aof/engine.go:171.62,173.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:176.2,176.54 1 1 +github.com/echovault/echovault/internal/aof/engine.go:176.54,178.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:180.2,180.12 1 1 +github.com/echovault/echovault/internal/aof/engine.go:183.39,184.55 1 1 +github.com/echovault/echovault/internal/aof/engine.go:184.55,186.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:187.2,187.53 1 1 +github.com/echovault/echovault/internal/aof/engine.go:187.53,189.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:190.2,190.12 1 1 +github.com/echovault/echovault/internal/aof/engine.go:193.31,194.53 1 1 +github.com/echovault/echovault/internal/aof/engine.go:194.53,196.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:197.2,197.51 1 1 +github.com/echovault/echovault/internal/aof/engine.go:197.51,199.3 1 0 github.com/echovault/echovault/internal/aof/preamble/store.go:44.54,45.28 1 1 github.com/echovault/echovault/internal/aof/preamble/store.go:45.28,47.3 1 1 github.com/echovault/echovault/internal/aof/preamble/store.go:50.55,51.28 1 0 @@ -220,306 +220,52 @@ github.com/echovault/echovault/internal/aof/preamble/store.go:175.21,177.3 1 0 github.com/echovault/echovault/internal/aof/preamble/store.go:178.2,178.41 1 0 github.com/echovault/echovault/internal/aof/preamble/store.go:178.41,180.3 1 0 github.com/echovault/echovault/internal/aof/preamble/store.go:181.2,181.12 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:35.30,42.2 3 1 -github.com/echovault/echovault/internal/eviction/lfu.go:44.34,46.2 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:48.44,50.54 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:50.54,52.3 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:54.2,54.56 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:57.39,61.2 3 1 -github.com/echovault/echovault/internal/eviction/lfu.go:63.38,72.2 3 1 -github.com/echovault/echovault/internal/eviction/lfu.go:74.34,83.2 8 1 -github.com/echovault/echovault/internal/eviction/lfu.go:85.43,87.26 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:87.26,90.3 2 1 -github.com/echovault/echovault/internal/eviction/lfu.go:92.2,92.69 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:92.69,94.3 1 1 -github.com/echovault/echovault/internal/eviction/lfu.go:95.2,97.27 3 1 -github.com/echovault/echovault/internal/eviction/lfu.go:100.43,101.73 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:101.73,103.3 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:104.2,104.19 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:104.19,106.3 1 0 -github.com/echovault/echovault/internal/eviction/lfu.go:109.50,112.2 2 1 -github.com/echovault/echovault/internal/eviction/lru.go:34.30,41.2 3 1 -github.com/echovault/echovault/internal/eviction/lru.go:43.34,45.2 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:47.44,49.2 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:51.39,55.2 3 1 -github.com/echovault/echovault/internal/eviction/lru.go:57.38,64.2 2 1 -github.com/echovault/echovault/internal/eviction/lru.go:66.34,75.2 8 1 -github.com/echovault/echovault/internal/eviction/lru.go:77.43,79.26 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:79.26,81.3 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:83.2,83.69 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:83.69,85.3 1 1 -github.com/echovault/echovault/internal/eviction/lru.go:86.2,88.27 3 1 -github.com/echovault/echovault/internal/eviction/lru.go:91.43,92.73 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:92.73,94.3 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:95.2,95.19 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:95.19,97.3 1 0 -github.com/echovault/echovault/internal/eviction/lru.go:100.50,103.2 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:28.68,30.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:30.16,32.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:34.2,38.36 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:38.36,40.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:42.2,42.49 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:42.49,44.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:46.2,46.16 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:46.16,47.17 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:47.17,49.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:50.3,50.95 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:50.95,52.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:53.3,53.59 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:56.2,57.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:57.9,59.95 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:59.95,61.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:62.3,62.59 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:65.2,66.44 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:67.16,69.33 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:69.33,70.26 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:70.26,72.5 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:74.3,74.34 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:74.34,76.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:77.10,79.34 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:79.34,80.29 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:80.29,82.5 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:84.3,84.23 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:87.2,87.94 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:87.94,89.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:91.2,91.51 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:94.68,96.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:100.2,104.16 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:104.16,106.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:108.2,109.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:109.9,111.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:113.2,116.31 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:116.31,118.19 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:118.19,120.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:122.3,122.34 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:122.34,124.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:126.3,126.31 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:126.31,128.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:130.3,130.35 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:130.35,133.12 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:135.3,135.32 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:138.2,138.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:141.69,143.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:143.16,145.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:147.2,149.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:149.16,151.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:153.2,154.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:154.9,156.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:158.2,162.31 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:162.31,164.10 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:164.10,166.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:169.3,169.34 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:169.34,171.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:173.3,173.31 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:173.31,175.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:177.3,177.35 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:177.35,180.12 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:182.3,182.32 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:185.2,185.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:188.71,190.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:190.16,192.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:194.2,198.16 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:198.16,200.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:202.2,203.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:203.9,205.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:207.2,210.31 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:210.31,212.19 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:212.19,214.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:216.3,216.34 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:216.34,218.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:220.3,220.35 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:220.35,223.12 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:225.3,225.31 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:225.31,227.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:229.3,229.18 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:232.2,232.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:235.69,237.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:237.16,239.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:241.2,244.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:244.16,246.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:248.2,249.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:249.9,251.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:253.2,254.27 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:254.27,255.32 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:255.32,257.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:259.3,259.33 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:259.33,262.12 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:264.3,264.29 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:264.29,266.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:269.2,269.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:272.74,274.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:274.16,276.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:278.2,282.30 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:282.30,284.17 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:284.17,286.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:287.3,287.13 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:287.13,289.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:290.3,290.12 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:293.2,294.30 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:294.30,295.57 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:295.57,297.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:297.9,299.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:302.2,302.16 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:302.16,304.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:306.2,307.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:307.9,309.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:312.2,312.24 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:312.24,314.17 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:314.17,316.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:317.3,317.34 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:317.34,319.18 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:319.18,320.36 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:320.36,322.14 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:324.5,324.37 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:324.37,327.14 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:329.5,329.33 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:329.33,331.14 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:335.3,335.26 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:339.2,340.29 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:340.29,342.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:345.2,347.46 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:347.46,351.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:351.16,352.59 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:352.59,354.5 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:358.2,359.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:359.16,361.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:362.2,362.38 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:362.38,364.17 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:364.17,365.41 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:365.41,367.13 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:369.4,369.42 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:369.42,372.13 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:374.4,374.38 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:374.38,376.13 2 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:381.2,381.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:384.68,386.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:386.16,388.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:390.2,393.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:393.16,395.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:397.2,398.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:398.9,400.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:402.2,402.55 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:405.69,407.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:407.16,409.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:411.2,414.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:414.16,416.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:418.2,419.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:419.9,421.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:423.2,424.29 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:424.29,426.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:428.2,428.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:431.71,433.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:433.16,435.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:437.2,444.58 6 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:444.58,446.17 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:446.17,448.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:449.3,449.21 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:450.8,452.17 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:452.17,454.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:455.3,455.19 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:458.2,458.16 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:458.16,460.59 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:460.59,462.93 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:462.93,464.5 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:465.4,465.96 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:466.9,468.93 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:468.93,470.5 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:471.4,471.60 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:475.2,476.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:476.9,478.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:480.2,480.24 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:480.24,482.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:484.2,484.28 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:485.10,486.69 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:487.11,489.59 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:489.59,491.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:491.9,493.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:494.15,496.59 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:496.59,498.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:498.9,500.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:503.2,503.91 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:503.91,505.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:507.2,507.40 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:507.40,509.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:511.2,512.47 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:515.71,517.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:517.16,519.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:521.2,524.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:524.16,526.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:528.2,529.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:529.9,531.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:533.2,534.33 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:534.33,536.34 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:536.34,538.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:539.3,539.35 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:539.35,542.4 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:543.3,543.31 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:543.31,545.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:548.2,548.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:551.71,553.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:553.16,555.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:557.2,561.16 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:561.16,563.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:565.2,566.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:566.9,568.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:570.2,570.24 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:570.24,572.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:574.2,574.30 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:577.68,579.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:579.16,581.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:583.2,587.16 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:587.16,589.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:591.2,592.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:592.9,594.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:596.2,598.31 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:598.31,599.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:599.25,602.4 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:605.2,605.91 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:605.91,607.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:609.2,609.51 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:612.36,746.2 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:23.74,24.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:24.18,26.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:27.2,31.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:34.76,35.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:35.18,37.3 1 0 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:38.2,42.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:45.74,46.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:46.18,48.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:49.2,53.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:56.75,57.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:57.18,59.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:60.2,64.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:67.77,68.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:68.18,70.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:71.2,75.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:78.75,79.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:79.19,81.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:82.2,86.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:89.80,90.34 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:90.34,92.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:93.2,93.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:93.19,99.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:100.2,104.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:107.74,108.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:108.19,110.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:111.2,115.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:118.75,119.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:119.19,121.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:122.2,126.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:129.77,130.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:130.19,132.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:133.2,137.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:140.77,141.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:141.19,143.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:144.2,148.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:151.77,152.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:152.19,154.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:155.2,159.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:162.74,163.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:163.18,165.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:166.2,170.8 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:39.30,47.2 3 1 +github.com/echovault/echovault/internal/eviction/lfu.go:49.58,51.69 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:51.69,53.3 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:55.2,55.19 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:55.19,58.3 2 0 +github.com/echovault/echovault/internal/eviction/lfu.go:58.8,60.3 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:64.32,67.2 2 0 +github.com/echovault/echovault/internal/eviction/lfu.go:69.34,71.2 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:73.44,75.54 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:75.54,77.3 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:79.2,79.56 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:82.39,86.2 3 1 +github.com/echovault/echovault/internal/eviction/lfu.go:88.38,97.2 3 1 +github.com/echovault/echovault/internal/eviction/lfu.go:99.34,108.2 8 1 +github.com/echovault/echovault/internal/eviction/lfu.go:110.43,113.26 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:113.26,116.3 2 1 +github.com/echovault/echovault/internal/eviction/lfu.go:118.2,118.69 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:118.69,120.3 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:121.2,123.27 3 1 +github.com/echovault/echovault/internal/eviction/lfu.go:126.43,127.73 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:127.73,129.3 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:130.2,130.19 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:130.19,132.3 1 0 +github.com/echovault/echovault/internal/eviction/lfu.go:135.50,138.2 2 1 +github.com/echovault/echovault/internal/eviction/lru.go:38.30,46.2 3 1 +github.com/echovault/echovault/internal/eviction/lru.go:48.59,50.69 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:50.69,52.3 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:53.2,53.19 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:53.19,56.3 2 0 +github.com/echovault/echovault/internal/eviction/lru.go:56.8,58.3 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:61.32,64.2 2 0 +github.com/echovault/echovault/internal/eviction/lru.go:66.34,68.2 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:70.44,72.2 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:74.39,78.2 3 1 +github.com/echovault/echovault/internal/eviction/lru.go:80.38,87.2 2 1 +github.com/echovault/echovault/internal/eviction/lru.go:89.34,98.2 8 1 +github.com/echovault/echovault/internal/eviction/lru.go:100.43,103.26 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:103.26,105.3 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:107.2,107.69 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:107.69,109.3 1 1 +github.com/echovault/echovault/internal/eviction/lru.go:110.2,112.27 3 1 +github.com/echovault/echovault/internal/eviction/lru.go:115.43,116.73 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:116.73,118.3 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:119.2,119.19 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:119.19,121.3 1 0 +github.com/echovault/echovault/internal/eviction/lru.go:124.50,127.2 2 1 github.com/echovault/echovault/internal/modules/list/commands.go:27.68,29.16 2 1 github.com/echovault/echovault/internal/modules/list/commands.go:29.16,31.3 1 0 github.com/echovault/echovault/internal/modules/list/commands.go:33.2,36.16 3 1 @@ -729,848 +475,564 @@ github.com/echovault/echovault/internal/modules/list/key_funcs.go:115.2,119.8 1 github.com/echovault/echovault/internal/modules/list/key_funcs.go:122.75,123.19 1 1 github.com/echovault/echovault/internal/modules/list/key_funcs.go:123.19,125.3 1 1 github.com/echovault/echovault/internal/modules/list/key_funcs.go:126.2,130.8 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:34.67,36.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:36.16,38.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:40.2,47.16 7 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:47.16,49.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:53.2,53.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:53.17,54.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:54.17,56.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:56.9,58.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:61.2,61.45 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:61.45,63.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:63.17,65.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:66.8,66.52 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:66.52,68.16 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:68.16,70.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:73.2,75.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:75.17,77.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:80.2,80.29 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:80.29,82.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:84.2,84.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:87.68,89.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:89.16,91.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:93.2,96.41 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:96.41,97.15 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:97.15,99.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:103.2,103.65 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:103.65,105.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:107.2,107.42 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:110.67,112.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:112.16,114.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:115.2,118.16 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:118.16,120.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:122.2,124.51 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:127.68,129.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:129.16,131.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:133.2,134.74 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:134.74,135.19 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:135.19,137.12 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:139.3,139.41 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:142.2,144.41 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:144.41,145.24 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:145.24,147.12 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:149.3,149.96 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:152.2,152.19 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:155.67,157.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:157.16,159.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:160.2,161.76 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:161.76,162.14 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:162.14,163.12 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:165.3,166.17 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:166.17,168.12 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:170.3,170.13 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:172.2,172.51 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:175.71,177.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:177.16,179.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:181.2,184.16 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:184.16,186.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:188.2,189.31 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:189.31,191.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:193.2,195.30 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:198.74,200.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:200.16,202.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:204.2,207.16 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:207.16,209.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:211.2,213.31 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:213.31,215.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:217.2,218.57 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:218.57,220.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:222.2,222.47 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:225.67,227.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:227.16,229.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:231.2,236.16 4 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:236.16,238.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:240.2,242.31 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:242.31,244.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:246.2,247.50 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:247.50,249.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:251.2,251.12 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:251.12,253.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:255.2,255.47 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:258.70,260.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:260.16,262.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:264.2,269.16 4 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:269.16,271.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:273.2,274.53 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:274.53,276.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:276.8,278.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:280.2,280.16 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:280.16,282.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:284.2,284.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:284.30,287.3 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:289.2,291.44 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:292.12,293.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:293.39,295.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:296.3,296.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:297.12,298.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:298.39,300.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:301.3,301.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:302.12,303.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:303.39,305.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:306.3,306.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:306.39,308.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:309.3,309.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:310.12,311.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:311.39,312.40 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:312.40,314.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:315.4,315.58 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:317.3,317.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:318.10,319.82 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:322.2,322.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:325.72,327.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:327.16,329.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:331.2,336.16 4 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:336.16,338.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:340.2,341.55 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:341.55,343.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:343.8,345.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:347.2,347.16 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:347.16,349.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:351.2,351.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:351.30,354.3 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:356.2,358.44 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:359.12,360.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:360.39,362.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:363.3,363.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:364.12,365.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:365.39,367.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:368.3,368.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:369.12,370.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:370.39,372.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:373.3,373.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:373.39,375.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:376.3,376.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:377.12,378.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:378.39,379.40 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:379.40,381.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:382.4,382.58 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:384.3,384.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:385.10,386.82 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:389.2,389.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:392.68,395.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:395.16,397.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:399.2,407.32 6 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:407.32,410.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:410.8,412.35 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:413.15,416.18 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:416.18,418.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:419.12,420.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:421.14,422.23 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:423.11,425.62 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:427.3,427.33 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:431.2,431.115 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:431.115,433.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:436.2,436.54 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:439.68,442.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:442.16,444.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:446.2,454.32 6 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:454.32,457.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:457.8,459.35 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:460.15,463.18 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:463.18,465.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:466.12,467.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:468.14,469.23 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:470.11,472.62 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:474.3,474.33 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:478.2,478.115 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:478.115,480.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:483.2,483.54 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:486.70,489.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:489.16,491.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:494.2,495.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:495.16,497.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:499.2,507.32 6 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:507.32,510.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:510.8,512.35 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:513.15,515.18 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:515.18,517.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:518.12,519.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:520.14,521.23 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:522.11,524.62 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:526.3,526.41 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:530.2,530.115 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:530.115,532.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:535.2,535.54 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:538.75,541.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:541.16,543.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:546.2,547.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:547.16,549.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:551.2,559.32 6 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:559.32,562.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:562.8,564.35 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:565.15,567.18 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:567.18,569.19 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:569.19,571.6 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:572.5,572.49 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:574.16,575.25 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:576.14,577.34 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:578.12,579.34 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:580.11,582.62 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:584.3,584.43 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:588.2,588.115 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:588.115,590.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:593.2,594.30 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:596.70,599.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:599.16,601.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:604.2,605.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:605.16,607.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:609.2,617.32 6 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:617.32,620.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:620.8,622.35 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:623.15,625.18 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:625.18,627.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:628.12,629.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:630.14,631.23 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:632.11,634.62 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:636.3,636.41 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:640.2,640.115 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:640.115,642.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:645.2,645.54 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:648.70,649.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:649.30,651.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:653.2,660.28 5 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:660.28,662.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:665.2,665.99 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:665.99,667.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:670.2,670.65 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:670.65,672.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:674.2,674.31 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:677.69,678.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:678.30,680.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:682.2,682.54 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:682.54,685.3 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:687.2,689.42 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:692.73,697.2 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:699.70,701.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:701.16,703.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:704.2,707.16 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:707.16,709.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:711.2,714.16 4 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:714.16,716.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:718.2,718.51 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:721.69,723.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:723.16,725.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:727.2,730.16 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:730.16,732.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:734.2,741.17 4 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:741.17,743.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:746.2,748.28 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:748.28,752.3 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:755.2,755.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:755.17,757.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:760.2,762.16 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:762.16,764.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:766.2,767.19 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:768.12,769.73 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:770.12,771.78 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:772.14,773.29 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:774.14,775.31 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:776.17,777.25 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:778.10,779.98 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:782.2,784.51 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:788.36,1036.84 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:1036.84,1040.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:1055.84,1059.5 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:24.73,25.34 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:25.34,27.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:28.2,32.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:35.74,36.25 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:36.25,38.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:39.2,40.30 2 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:40.30,41.15 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:41.15,43.4 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:45.2,49.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:52.73,53.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:53.19,55.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:56.2,60.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:63.74,64.18 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:64.18,66.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:67.2,71.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:74.73,75.18 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:75.18,77.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:78.2,82.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:85.77,86.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:86.19,88.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:89.2,93.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:96.80,97.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:97.19,99.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:100.2,104.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:107.73,108.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:108.19,110.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:111.2,115.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:118.76,119.34 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:119.34,121.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:122.2,126.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:129.78,130.34 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:130.34,132.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:133.2,137.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:140.74,141.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:141.19,143.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:144.2,146.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:149.74,150.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:150.19,152.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:153.2,155.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:158.76,159.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:159.19,161.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:162.2,164.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:167.81,168.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:168.19,170.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:171.2,173.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:176.76,177.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:177.19,179.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:180.2,182.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:185.76,186.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:186.19,188.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:189.2,191.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:194.76,195.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:195.19,197.3 1 0 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:198.2,202.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:205.76,206.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:206.19,208.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:209.2,213.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:216.75,217.34 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:217.34,219.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:220.2,224.8 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:32.100,33.19 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:33.19,35.3 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:36.2,36.33 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:37.13,39.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:41.12,42.27 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:42.27,44.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:45.3,46.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:48.12,49.27 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:49.27,51.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:52.3,53.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:55.12,56.19 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:56.19,58.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:59.3,59.30 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:59.30,61.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:62.3,64.17 3 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:64.17,66.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:67.3,68.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:70.12,71.19 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:71.19,73.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:74.3,74.30 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:74.30,76.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:77.3,79.17 3 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:79.17,81.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:82.3,83.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:85.14,86.19 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:86.19,88.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:89.3,89.30 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:89.30,91.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:92.3,94.17 3 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:94.17,96.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:97.3,98.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:100.14,101.19 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:101.19,103.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:104.3,104.30 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:104.30,106.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:107.3,109.17 3 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:109.17,111.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:112.3,113.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:115.10,116.96 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:26.68,28.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:28.16,30.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:32.2,37.16 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:37.16,39.91 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:39.91,41.4 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:42.3,42.70 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:45.2,46.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:46.9,48.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:50.2,52.51 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:55.69,57.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:57.16,59.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:61.2,64.16 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:64.16,66.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:68.2,69.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:69.9,71.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:73.2,75.57 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:78.69,80.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:80.16,82.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:84.2,87.34 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:87.34,89.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:91.2,92.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:92.9,94.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:96.2,97.41 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:97.41,99.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:99.10,100.12 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:102.3,102.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:105.2,109.26 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:109.26,111.24 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:111.24,113.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:116.2,116.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:119.74,121.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:121.16,123.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:125.2,129.34 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:129.34,131.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:133.2,134.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:134.9,136.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:138.2,139.40 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:139.40,141.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:141.10,142.12 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:144.3,144.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:147.2,152.99 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:152.99,154.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:156.2,156.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:159.70,161.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:161.16,163.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:165.2,169.37 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:169.37,170.14 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:170.14,172.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:173.3,174.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:174.10,177.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:178.3,178.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:181.2,181.20 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:181.20,183.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:185.2,189.26 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:189.26,191.24 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:191.24,193.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:196.2,196.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:199.74,201.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:201.16,203.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:205.2,209.67 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:209.67,211.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:212.2,212.35 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:212.35,214.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:215.2,215.20 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:215.20,217.38 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:217.38,219.4 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:221.3,221.71 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:221.71,223.4 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:223.9,225.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:228.2,230.37 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:230.37,231.14 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:231.14,233.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:234.3,235.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:235.10,238.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:239.3,239.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:242.2,242.20 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:242.20,244.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:246.2,248.69 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:251.75,253.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:253.16,255.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:257.2,261.37 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:261.37,262.14 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:262.14,264.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:265.3,266.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:266.10,269.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:270.3,270.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:273.2,276.104 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:276.104,278.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:280.2,280.69 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:283.73,285.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:285.16,287.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:289.2,292.16 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:292.16,294.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:296.2,297.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:297.9,299.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:301.2,301.38 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:301.38,303.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:305.2,305.30 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:308.72,310.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:310.16,312.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:314.2,317.16 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:317.16,319.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:321.2,322.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:322.9,324.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:326.2,329.26 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:329.26,331.24 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:331.24,333.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:336.2,336.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:339.74,341.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:341.16,343.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:345.2,349.16 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:349.16,351.29 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:351.29,353.27 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:353.27,355.5 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:357.3,357.26 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:360.2,361.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:361.9,363.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:365.2,366.36 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:366.36,367.31 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:367.31,369.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:369.9,371.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:373.2,375.25 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:378.69,380.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:380.16,382.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:384.2,388.24 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:388.24,390.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:392.2,395.9 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:395.9,397.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:399.2,400.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:400.9,402.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:404.2,406.49 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:409.68,411.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:411.16,413.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:415.2,419.30 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:419.30,421.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:421.10,423.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:424.3,424.12 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:427.2,427.16 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:427.16,429.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:431.2,432.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:432.9,434.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:436.2,439.28 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:439.28,441.26 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:441.26,443.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:446.2,446.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:449.75,451.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:451.16,453.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:455.2,459.30 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:459.30,461.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:461.10,463.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:464.3,464.12 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:467.2,467.16 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:467.16,469.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:471.2,472.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:472.9,474.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:476.2,479.28 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:479.28,481.26 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:481.26,483.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:486.2,486.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:489.68,491.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:491.16,493.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:495.2,499.16 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:499.16,501.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:503.2,504.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:504.9,506.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:508.2,510.51 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:513.70,515.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:515.16,517.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:519.2,522.33 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:522.33,524.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:524.10,526.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:527.3,527.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:530.2,533.35 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:533.35,535.33 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:535.33,537.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:540.2,540.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:543.75,545.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:545.16,547.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:549.2,554.33 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:554.33,556.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:556.10,558.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:559.3,559.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:562.2,564.100 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:564.100,566.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:567.2,567.65 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:570.36,723.2 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:25.74,26.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:26.18,28.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:29.2,33.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:36.75,37.19 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:37.19,39.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:40.2,44.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:47.75,48.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:48.18,50.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:51.2,55.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:58.80,59.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:59.18,61.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:62.2,66.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:69.76,70.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:70.18,72.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:73.2,77.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:80.80,81.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:81.18,83.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:85.2,85.56 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:85.56,87.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:89.2,89.20 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:89.20,95.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:97.2,101.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:104.81,105.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:105.18,107.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:108.2,112.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:115.79,116.19 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:116.19,118.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:119.2,123.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:126.78,127.19 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:127.19,129.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:130.2,134.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:137.80,138.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:138.18,140.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:141.2,145.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:148.75,149.19 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:149.19,151.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:152.2,156.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:159.74,160.34 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:160.34,162.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:163.2,167.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:170.81,171.34 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:171.34,173.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:174.2,178.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:181.74,182.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:182.18,184.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:185.2,189.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:192.76,193.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:193.18,195.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:196.2,200.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:203.81,204.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:204.18,206.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:207.2,211.8 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:28.34,35.2 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:37.41,39.26 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:39.26,40.23 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:40.23,43.4 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:45.2,46.14 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:49.43,51.2 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:53.35,55.32 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:55.32,57.3 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:58.2,58.12 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:61.35,63.2 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:65.47,68.16 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:68.16,70.3 1 0 -github.com/echovault/echovault/internal/modules/set/set.go:72.2,72.49 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:72.49,74.3 1 0 -github.com/echovault/echovault/internal/modules/set/set.go:76.2,80.15 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:80.15,82.47 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:82.47,85.4 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:86.8,88.43 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:88.43,90.38 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:90.38,92.59 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:92.59,94.6 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:95.5,95.8 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:100.2,100.12 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:103.44,105.26 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:105.26,106.24 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:106.24,109.4 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:111.2,112.14 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:115.41,119.2 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:121.41,123.2 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:126.46,129.27 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:129.27,130.31 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:130.31,131.24 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:131.24,133.5 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:136.2,137.13 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:140.54,141.22 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:141.22,143.3 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:144.2,146.10 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:152.57,154.19 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:155.9,156.24 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:157.9,160.43 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:160.43,161.56 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:161.56,163.10 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:165.4,165.32 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:165.32,167.5 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:169.3,169.36 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:170.10,172.11 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:172.11,174.4 1 0 -github.com/echovault/echovault/internal/modules/set/set.go:175.3,176.11 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:176.11,178.4 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:179.3,179.42 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:184.31,185.19 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:186.9,187.17 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:188.9,191.15 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:192.10,195.28 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:55.56,56.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:56.30,58.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:61.59,62.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:62.30,64.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:67.64,68.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:68.30,70.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:73.59,74.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:74.30,76.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:79.59,80.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:80.30,82.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:85.60,86.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:86.30,88.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:91.90,92.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:92.30,94.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:97.77,98.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:98.30,100.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:103.73,104.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:104.30,106.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:109.103,110.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:110.30,112.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:115.65,122.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:122.31,122.32 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:123.31,123.32 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:124.60,126.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:127.85,127.86 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:128.48,128.49 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:129.43,131.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:134.2,134.33 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:134.33,136.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:138.2,138.34 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:138.34,139.13 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:139.13,141.17 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:141.17,143.5 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:144.4,144.8 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:144.8,146.62 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:146.62,147.50 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:147.50,149.7 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:155.2,155.15 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:158.44,177.58 6 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:177.58,180.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:183.2,185.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:185.16,186.37 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:186.37,189.18 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:189.18,192.5 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:193.4,193.24 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:194.9,197.4 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:200.2,201.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:201.16,204.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:205.2,205.35 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:205.35,208.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:210.2,212.20 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:212.20,213.53 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:213.53,216.4 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:220.2,225.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:225.16,228.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:230.2,231.49 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:231.49,233.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:236.2,239.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:239.16,242.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:245.2,246.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:246.16,249.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:252.2,257.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:257.16,260.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:261.2,261.39 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:261.39,264.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:265.2,265.33 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:265.33,267.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:268.2,268.34 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:268.34,271.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:274.2,275.58 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:275.58,277.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:280.2,281.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:281.16,284.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:285.2,285.15 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:285.15,286.35 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:286.35,288.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:292.2,292.39 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:292.39,294.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:295.2,295.32 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:295.32,297.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:300.2,305.12 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:308.39,310.50 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:310.50,312.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:313.2,313.16 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:313.16,315.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:316.2,316.15 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:316.15,317.36 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:317.36,319.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:322.2,325.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:325.16,327.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:329.2,329.52 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:329.52,331.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:333.2,333.46 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:333.46,335.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:337.2,342.50 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:342.50,344.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:345.2,345.16 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:345.16,347.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:348.2,348.15 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:348.15,349.36 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:349.36,351.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:354.2,355.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:355.16,357.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:359.2,360.58 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:360.58,362.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:364.2,366.99 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:366.99,367.34 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:367.34,369.4 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:372.2,374.12 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:377.46,379.2 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:381.42,383.2 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:25.72,27.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:27.16,29.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:31.2,35.9 4 1 -github.com/echovault/echovault/internal/modules/string/commands.go:35.9,37.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:39.2,41.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:41.16,43.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:45.2,46.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:46.9,48.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:51.2,51.24 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:51.24,53.94 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:53.94,55.4 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:56.3,56.58 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:60.2,60.16 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:60.16,62.94 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:62.94,64.4 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:65.3,65.58 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:68.2,70.35 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:70.35,72.24 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:72.24,75.12 3 1 -github.com/echovault/echovault/internal/modules/string/commands.go:78.3,79.8 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:82.2,82.103 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:82.103,84.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:86.2,86.59 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:89.70,91.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:91.16,93.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:95.2,98.16 3 1 -github.com/echovault/echovault/internal/modules/string/commands.go:98.16,100.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:102.2,104.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:104.9,106.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:108.2,108.56 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:111.70,113.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:113.16,115.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:117.2,124.24 6 1 -github.com/echovault/echovault/internal/modules/string/commands.go:124.24,126.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:128.2,128.16 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:128.16,130.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:132.2,133.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:133.9,135.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:137.2,137.15 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:137.15,139.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:140.2,140.13 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:140.13,142.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:144.2,144.30 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:144.30,146.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:148.2,148.22 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:148.22,150.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:152.2,152.17 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:152.17,155.3 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:157.2,159.14 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:159.14,161.38 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:161.38,163.4 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:164.3,164.12 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:167.2,167.65 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:170.70,172.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:172.16,174.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:176.2,179.16 4 1 -github.com/echovault/echovault/internal/modules/string/commands.go:179.16,182.18 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:182.18,184.4 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:185.3,185.57 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:187.2,188.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:188.9,190.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:191.2,194.17 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:194.17,196.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:197.2,197.59 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:200.36,249.2 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:24.78,25.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:25.19,27.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:28.2,32.8 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:35.76,36.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:36.19,38.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:39.2,43.8 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:46.76,47.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:47.19,49.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:50.2,54.8 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:57.76,58.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:58.19,60.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:61.2,65.8 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:28.68,30.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:30.16,32.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:34.2,38.36 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:38.36,40.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:42.2,42.49 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:42.49,44.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:46.2,46.16 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:46.16,47.17 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:47.17,49.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:50.3,50.95 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:50.95,52.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:53.3,53.59 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:56.2,57.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:57.9,59.95 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:59.95,61.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:62.3,62.59 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:65.2,66.44 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:67.16,69.33 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:69.33,70.26 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:70.26,72.5 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:74.3,74.34 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:74.34,76.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:77.10,79.34 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:79.34,80.29 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:80.29,82.5 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:84.3,84.23 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:87.2,87.94 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:87.94,89.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:91.2,91.51 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:94.68,96.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:96.16,98.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:100.2,104.16 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:104.16,106.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:108.2,109.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:109.9,111.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:113.2,116.31 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:116.31,118.19 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:118.19,120.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:122.3,122.34 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:122.34,124.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:126.3,126.31 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:126.31,128.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:130.3,130.35 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:130.35,133.12 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:135.3,135.32 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:138.2,138.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:141.69,143.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:143.16,145.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:147.2,149.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:149.16,151.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:153.2,154.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:154.9,156.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:158.2,162.31 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:162.31,164.10 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:164.10,166.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:169.3,169.34 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:169.34,171.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:173.3,173.31 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:173.31,175.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:177.3,177.35 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:177.35,180.12 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:182.3,182.32 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:185.2,185.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:188.71,190.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:190.16,192.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:194.2,198.16 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:198.16,200.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:202.2,203.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:203.9,205.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:207.2,210.31 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:210.31,212.19 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:212.19,214.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:216.3,216.34 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:216.34,218.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:220.3,220.35 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:220.35,223.12 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:225.3,225.31 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:225.31,227.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:229.3,229.18 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:232.2,232.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:235.69,237.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:237.16,239.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:241.2,244.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:244.16,246.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:248.2,249.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:249.9,251.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:253.2,254.27 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:254.27,255.32 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:255.32,257.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:259.3,259.33 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:259.33,262.12 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:264.3,264.29 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:264.29,266.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:269.2,269.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:272.74,274.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:274.16,276.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:278.2,282.30 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:282.30,284.17 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:284.17,286.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:287.3,287.13 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:287.13,289.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:290.3,290.12 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:293.2,294.30 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:294.30,295.57 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:295.57,297.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:297.9,299.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:302.2,302.16 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:302.16,304.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:306.2,307.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:307.9,309.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:312.2,312.24 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:312.24,314.17 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:314.17,316.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:317.3,317.34 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:317.34,319.18 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:319.18,320.36 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:320.36,322.14 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:324.5,324.37 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:324.37,327.14 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:329.5,329.33 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:329.33,331.14 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:335.3,335.26 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:339.2,340.29 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:340.29,342.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:345.2,347.46 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:347.46,351.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:351.16,352.59 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:352.59,354.5 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:358.2,359.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:359.16,361.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:362.2,362.38 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:362.38,364.17 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:364.17,365.41 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:365.41,367.13 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:369.4,369.42 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:369.42,372.13 3 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:374.4,374.38 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:374.38,376.13 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:381.2,381.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:384.68,386.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:386.16,388.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:390.2,393.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:393.16,395.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:397.2,398.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:398.9,400.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:402.2,402.55 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:405.69,407.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:407.16,409.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:411.2,414.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:414.16,416.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:418.2,419.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:419.9,421.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:423.2,424.29 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:424.29,426.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:428.2,428.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:431.71,433.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:433.16,435.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:437.2,444.58 6 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:444.58,446.17 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:446.17,448.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:449.3,449.21 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:450.8,452.17 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:452.17,454.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:455.3,455.19 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:458.2,458.16 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:458.16,460.59 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:460.59,462.93 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:462.93,464.5 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:465.4,465.96 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:466.9,468.93 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:468.93,470.5 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:471.4,471.60 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:475.2,476.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:476.9,478.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:480.2,480.24 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:480.24,482.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:484.2,484.28 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:485.10,486.69 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:487.11,489.59 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:489.59,491.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:491.9,493.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:494.15,496.59 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:496.59,498.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:498.9,500.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:503.2,503.91 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:503.91,505.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:507.2,507.40 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:507.40,509.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:511.2,512.47 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:515.71,517.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:517.16,519.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:521.2,524.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:524.16,526.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:528.2,529.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:529.9,531.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:533.2,534.33 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:534.33,536.34 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:536.34,538.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:539.3,539.35 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:539.35,542.4 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:543.3,543.31 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:543.31,545.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:548.2,548.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:551.71,553.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:553.16,555.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:557.2,561.16 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:561.16,563.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:565.2,566.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:566.9,568.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:570.2,570.24 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:570.24,572.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:574.2,574.30 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:577.68,579.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:579.16,581.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:583.2,587.16 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:587.16,589.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:591.2,592.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:592.9,594.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:596.2,598.31 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:598.31,599.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:599.25,602.4 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:605.2,605.91 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:605.91,607.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:609.2,609.51 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:612.36,746.2 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:23.74,24.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:24.18,26.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:27.2,31.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:34.76,35.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:35.18,37.3 1 0 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:38.2,42.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:45.74,46.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:46.18,48.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:49.2,53.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:56.75,57.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:57.18,59.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:60.2,64.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:67.77,68.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:68.18,70.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:71.2,75.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:78.75,79.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:79.19,81.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:82.2,86.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:89.80,90.34 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:90.34,92.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:93.2,93.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:93.19,99.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:100.2,104.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:107.74,108.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:108.19,110.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:111.2,115.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:118.75,119.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:119.19,121.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:122.2,126.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:129.77,130.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:130.19,132.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:133.2,137.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:140.77,141.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:141.19,143.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:144.2,148.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:151.77,152.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:152.19,154.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:155.2,159.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:162.74,163.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:163.18,165.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:166.2,170.8 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:26.68,28.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:28.16,30.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:32.2,37.16 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:37.16,39.91 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:39.91,41.4 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:42.3,42.70 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:45.2,46.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:46.9,48.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:50.2,52.51 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:55.69,57.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:57.16,59.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:61.2,64.16 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:64.16,66.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:68.2,69.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:69.9,71.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:73.2,75.57 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:78.69,80.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:80.16,82.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:84.2,87.34 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:87.34,89.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:91.2,92.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:92.9,94.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:96.2,97.41 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:97.41,99.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:99.10,100.12 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:102.3,102.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:105.2,109.26 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:109.26,111.24 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:111.24,113.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:116.2,116.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:119.74,121.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:121.16,123.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:125.2,129.34 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:129.34,131.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:133.2,134.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:134.9,136.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:138.2,139.40 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:139.40,141.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:141.10,142.12 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:144.3,144.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:147.2,152.99 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:152.99,154.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:156.2,156.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:159.70,161.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:161.16,163.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:165.2,169.37 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:169.37,170.14 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:170.14,172.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:173.3,174.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:174.10,177.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:178.3,178.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:181.2,181.20 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:181.20,183.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:185.2,189.26 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:189.26,191.24 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:191.24,193.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:196.2,196.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:199.74,201.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:201.16,203.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:205.2,209.67 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:209.67,211.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:212.2,212.35 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:212.35,214.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:215.2,215.20 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:215.20,217.38 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:217.38,219.4 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:221.3,221.71 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:221.71,223.4 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:223.9,225.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:228.2,230.37 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:230.37,231.14 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:231.14,233.4 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:234.3,235.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:235.10,238.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:239.3,239.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:242.2,242.20 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:242.20,244.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:246.2,248.69 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:251.75,253.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:253.16,255.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:257.2,261.37 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:261.37,262.14 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:262.14,264.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:265.3,266.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:266.10,269.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:270.3,270.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:273.2,276.104 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:276.104,278.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:280.2,280.69 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:283.73,285.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:285.16,287.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:289.2,292.16 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:292.16,294.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:296.2,297.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:297.9,299.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:301.2,301.38 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:301.38,303.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:305.2,305.30 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:308.72,310.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:310.16,312.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:314.2,317.16 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:317.16,319.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:321.2,322.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:322.9,324.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:326.2,329.26 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:329.26,331.24 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:331.24,333.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:336.2,336.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:339.74,341.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:341.16,343.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:345.2,349.16 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:349.16,351.29 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:351.29,353.27 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:353.27,355.5 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:357.3,357.26 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:360.2,361.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:361.9,363.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:365.2,366.36 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:366.36,367.31 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:367.31,369.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:369.9,371.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:373.2,375.25 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:378.69,380.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:380.16,382.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:384.2,388.24 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:388.24,390.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:392.2,395.9 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:395.9,397.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:399.2,400.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:400.9,402.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:404.2,406.49 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:409.68,411.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:411.16,413.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:415.2,419.30 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:419.30,421.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:421.10,423.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:424.3,424.12 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:427.2,427.16 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:427.16,429.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:431.2,432.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:432.9,434.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:436.2,439.28 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:439.28,441.26 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:441.26,443.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:446.2,446.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:449.75,451.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:451.16,453.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:455.2,459.30 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:459.30,461.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:461.10,463.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:464.3,464.12 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:467.2,467.16 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:467.16,469.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:471.2,472.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:472.9,474.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:476.2,479.28 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:479.28,481.26 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:481.26,483.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:486.2,486.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:489.68,491.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:491.16,493.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:495.2,499.16 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:499.16,501.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:503.2,504.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:504.9,506.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:508.2,510.51 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:513.70,515.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:515.16,517.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:519.2,522.33 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:522.33,524.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:524.10,526.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:527.3,527.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:530.2,533.35 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:533.35,535.33 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:535.33,537.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:540.2,540.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:543.75,545.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:545.16,547.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:549.2,554.33 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:554.33,556.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:556.10,558.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:559.3,559.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:562.2,564.100 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:564.100,566.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:567.2,567.65 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:570.36,723.2 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:25.74,26.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:26.18,28.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:29.2,33.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:36.75,37.19 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:37.19,39.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:40.2,44.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:47.75,48.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:48.18,50.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:51.2,55.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:58.80,59.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:59.18,61.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:62.2,66.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:69.76,70.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:70.18,72.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:73.2,77.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:80.80,81.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:81.18,83.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:85.2,85.56 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:85.56,87.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:89.2,89.20 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:89.20,95.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:97.2,101.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:104.81,105.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:105.18,107.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:108.2,112.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:115.79,116.19 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:116.19,118.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:119.2,123.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:126.78,127.19 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:127.19,129.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:130.2,134.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:137.80,138.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:138.18,140.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:141.2,145.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:148.75,149.19 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:149.19,151.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:152.2,156.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:159.74,160.34 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:160.34,162.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:163.2,167.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:170.81,171.34 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:171.34,173.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:174.2,178.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:181.74,182.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:182.18,184.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:185.2,189.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:192.76,193.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:193.18,195.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:196.2,200.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:203.81,204.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:204.18,206.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:207.2,211.8 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:28.34,35.2 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:37.41,39.26 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:39.26,40.23 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:40.23,43.4 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:45.2,46.14 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:49.43,51.2 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:53.35,55.32 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:55.32,57.3 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:58.2,58.12 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:61.35,63.2 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:65.47,68.16 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:68.16,70.3 1 0 +github.com/echovault/echovault/internal/modules/set/set.go:72.2,72.49 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:72.49,74.3 1 0 +github.com/echovault/echovault/internal/modules/set/set.go:76.2,80.15 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:80.15,82.47 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:82.47,85.4 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:86.8,88.43 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:88.43,90.38 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:90.38,92.59 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:92.59,94.6 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:95.5,95.8 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:100.2,100.12 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:103.44,105.26 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:105.26,106.24 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:106.24,109.4 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:111.2,112.14 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:115.41,119.2 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:121.41,123.2 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:126.46,129.27 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:129.27,130.31 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:130.31,131.24 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:131.24,133.5 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:136.2,137.13 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:140.54,141.22 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:141.22,143.3 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:144.2,146.10 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:152.57,154.19 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:155.9,156.24 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:157.9,160.43 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:160.43,161.56 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:161.56,163.10 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:165.4,165.32 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:165.32,167.5 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:169.3,169.36 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:170.10,172.11 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:172.11,174.4 1 0 +github.com/echovault/echovault/internal/modules/set/set.go:175.3,176.11 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:176.11,178.4 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:179.3,179.42 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:184.31,185.19 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:186.9,187.17 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:188.9,191.15 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:192.10,195.28 3 1 github.com/echovault/echovault/internal/modules/sorted_set/commands.go:29.68,31.16 2 1 github.com/echovault/echovault/internal/modules/sorted_set/commands.go:31.16,33.3 1 0 github.com/echovault/echovault/internal/modules/sorted_set/commands.go:35.2,45.43 8 1 @@ -2382,6 +1844,263 @@ github.com/echovault/echovault/internal/modules/sorted_set/utils.go:162.3,162.13 github.com/echovault/echovault/internal/modules/sorted_set/utils.go:163.12,164.16 1 1 github.com/echovault/echovault/internal/modules/sorted_set/utils.go:164.16,166.4 1 1 github.com/echovault/echovault/internal/modules/sorted_set/utils.go:167.3,167.13 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:55.56,56.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:56.30,58.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:61.59,62.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:62.30,64.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:67.64,68.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:68.30,70.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:73.59,74.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:74.30,76.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:79.59,80.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:80.30,82.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:85.60,86.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:86.30,88.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:91.90,92.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:92.30,94.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:97.77,98.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:98.30,100.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:103.73,104.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:104.30,106.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:109.103,110.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:110.30,112.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:115.65,122.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:122.31,122.32 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:123.31,123.32 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:124.60,126.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:127.85,127.86 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:128.48,128.49 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:129.43,131.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:134.2,134.33 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:134.33,136.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:138.2,138.34 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:138.34,139.13 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:139.13,141.17 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:141.17,143.5 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:144.4,144.8 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:144.8,146.62 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:146.62,147.50 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:147.50,149.7 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:155.2,155.15 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:158.44,177.58 6 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:177.58,180.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:183.2,185.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:185.16,186.37 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:186.37,189.18 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:189.18,192.5 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:193.4,193.24 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:194.9,197.4 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:200.2,201.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:201.16,204.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:205.2,205.35 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:205.35,208.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:210.2,212.20 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:212.20,213.53 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:213.53,216.4 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:220.2,225.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:225.16,228.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:230.2,231.49 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:231.49,233.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:236.2,239.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:239.16,242.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:245.2,246.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:246.16,249.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:252.2,257.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:257.16,260.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:261.2,261.39 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:261.39,264.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:265.2,265.33 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:265.33,267.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:268.2,268.34 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:268.34,271.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:274.2,275.58 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:275.58,277.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:280.2,281.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:281.16,284.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:285.2,285.15 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:285.15,286.35 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:286.35,288.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:292.2,292.39 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:292.39,294.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:295.2,295.32 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:295.32,297.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:300.2,305.12 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:308.39,310.50 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:310.50,312.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:313.2,313.16 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:313.16,315.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:316.2,316.15 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:316.15,317.36 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:317.36,319.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:322.2,325.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:325.16,327.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:329.2,329.52 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:329.52,331.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:333.2,333.46 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:333.46,335.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:337.2,342.50 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:342.50,344.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:345.2,345.16 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:345.16,347.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:348.2,348.15 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:348.15,349.36 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:349.36,351.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:354.2,355.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:355.16,357.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:359.2,360.58 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:360.58,362.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:364.2,366.99 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:366.99,367.34 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:367.34,369.4 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:372.2,374.12 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:377.46,379.2 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:381.42,383.2 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:25.72,27.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:27.16,29.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:31.2,35.9 4 1 +github.com/echovault/echovault/internal/modules/string/commands.go:35.9,37.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:39.2,41.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:41.16,43.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:45.2,46.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:46.9,48.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:51.2,51.24 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:51.24,53.94 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:53.94,55.4 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:56.3,56.58 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:60.2,60.16 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:60.16,62.94 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:62.94,64.4 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:65.3,65.58 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:68.2,70.35 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:70.35,72.24 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:72.24,75.12 3 1 +github.com/echovault/echovault/internal/modules/string/commands.go:78.3,79.8 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:82.2,82.103 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:82.103,84.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:86.2,86.59 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:89.70,91.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:91.16,93.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:95.2,98.16 3 1 +github.com/echovault/echovault/internal/modules/string/commands.go:98.16,100.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:102.2,104.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:104.9,106.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:108.2,108.56 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:111.70,113.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:113.16,115.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:117.2,124.24 6 1 +github.com/echovault/echovault/internal/modules/string/commands.go:124.24,126.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:128.2,128.16 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:128.16,130.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:132.2,133.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:133.9,135.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:137.2,137.15 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:137.15,139.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:140.2,140.13 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:140.13,142.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:144.2,144.30 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:144.30,146.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:148.2,148.22 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:148.22,150.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:152.2,152.17 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:152.17,155.3 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:157.2,159.14 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:159.14,161.38 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:161.38,163.4 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:164.3,164.12 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:167.2,167.65 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:170.70,172.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:172.16,174.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:176.2,179.16 4 1 +github.com/echovault/echovault/internal/modules/string/commands.go:179.16,182.18 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:182.18,184.4 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:185.3,185.57 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:187.2,188.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:188.9,190.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:191.2,194.17 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:194.17,196.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:197.2,197.59 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:200.36,249.2 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:24.78,25.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:25.19,27.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:28.2,32.8 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:35.76,36.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:36.19,38.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:39.2,43.8 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:46.76,47.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:47.19,49.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:50.2,54.8 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:57.76,58.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:58.19,60.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:61.2,65.8 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:28.68,29.56 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:29.56,31.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:32.2,33.9 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:33.9,35.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:36.2,39.116 3 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:39.116,41.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:42.2,42.42 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:45.68,46.29 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:47.10,48.54 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:49.9,50.34 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:51.9,52.94 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:56.68,57.30 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:57.30,59.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:60.2,60.93 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:63.69,64.65 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:64.65,66.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:68.2,68.30 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:68.30,72.3 3 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:74.2,90.16 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:90.16,92.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:95.2,96.16 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:96.16,98.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:99.2,99.45 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:99.45,101.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:102.2,105.31 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:105.31,107.10 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:107.10,109.4 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:110.3,116.17 3 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:116.17,118.4 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:122.2,128.60 5 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:131.70,132.30 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:132.30,134.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:136.2,137.16 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:137.16,139.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:140.2,140.18 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:140.18,142.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:144.2,147.42 3 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:150.70,151.30 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:151.30,153.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:155.2,156.16 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:156.16,158.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:160.2,161.16 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:161.16,163.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:165.2,165.36 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:165.36,167.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:169.2,171.42 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:174.36,184.84 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:184.84,190.5 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:201.84,207.5 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:216.84,222.5 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:233.84,239.5 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:248.84,254.5 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:271.84,277.5 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:20.80,21.19 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:21.19,23.3 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:24.2,24.33 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:25.14,26.19 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:26.19,28.4 1 0 +github.com/echovault/echovault/internal/modules/connection/utils.go:29.3,32.43 4 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:33.17,34.19 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:34.19,36.4 1 0 +github.com/echovault/echovault/internal/modules/connection/utils.go:37.3,38.43 2 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:39.10,40.76 1 0 +github.com/echovault/echovault/internal/modules/connection/utils.go:44.104,47.34 2 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:47.34,50.3 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:50.8,53.3 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:55.2,62.44 8 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:62.44,64.3 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:65.2,65.12 1 1 github.com/echovault/echovault/internal/modules/admin/commands.go:27.78,33.29 4 1 github.com/echovault/echovault/internal/modules/admin/commands.go:33.29,34.54 1 1 github.com/echovault/echovault/internal/modules/admin/commands.go:34.54,40.42 4 1 @@ -2475,75 +2194,6 @@ github.com/echovault/echovault/internal/modules/admin/commands.go:380.86,384.7 1 github.com/echovault/echovault/internal/modules/admin/commands.go:385.75,388.38 3 1 github.com/echovault/echovault/internal/modules/admin/commands.go:388.38,390.8 1 1 github.com/echovault/echovault/internal/modules/admin/commands.go:391.7,391.30 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:28.68,29.56 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:29.56,31.3 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:32.2,33.9 2 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:33.9,35.3 1 0 -github.com/echovault/echovault/internal/modules/connection/commands.go:36.2,39.116 3 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:39.116,41.3 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:42.2,42.42 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:45.68,46.29 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:47.10,48.54 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:49.9,50.34 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:51.9,52.94 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:56.68,57.30 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:57.30,59.3 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:60.2,60.93 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:63.69,64.65 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:64.65,66.3 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:68.2,68.30 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:68.30,72.3 3 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:74.2,90.16 2 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/modules/connection/commands.go:95.2,96.16 2 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/modules/connection/commands.go:99.2,99.45 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:99.45,101.3 1 0 -github.com/echovault/echovault/internal/modules/connection/commands.go:102.2,105.31 2 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:105.31,107.10 2 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:107.10,109.4 1 0 -github.com/echovault/echovault/internal/modules/connection/commands.go:110.3,116.17 3 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:116.17,118.4 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:122.2,128.60 5 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:131.70,132.30 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:132.30,134.3 1 0 -github.com/echovault/echovault/internal/modules/connection/commands.go:136.2,137.16 2 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:137.16,139.3 1 0 -github.com/echovault/echovault/internal/modules/connection/commands.go:140.2,140.18 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:140.18,142.3 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:144.2,147.42 3 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:150.70,151.30 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:151.30,153.3 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:155.2,156.16 2 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:156.16,158.3 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:160.2,161.16 2 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:161.16,163.3 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:165.2,165.36 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:165.36,167.3 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:169.2,171.42 2 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:174.36,184.84 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:184.84,190.5 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:201.84,207.5 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:216.84,222.5 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:233.84,239.5 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:248.84,254.5 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:271.84,277.5 1 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:20.80,21.19 1 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:21.19,23.3 1 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:24.2,24.33 1 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:25.14,26.19 1 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:26.19,28.4 1 0 -github.com/echovault/echovault/internal/modules/connection/utils.go:29.3,32.43 4 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:33.17,34.19 1 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:34.19,36.4 1 0 -github.com/echovault/echovault/internal/modules/connection/utils.go:37.3,38.43 2 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:39.10,40.76 1 0 -github.com/echovault/echovault/internal/modules/connection/utils.go:44.104,47.34 2 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:47.34,50.3 1 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:50.8,53.3 1 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:55.2,62.44 8 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:62.44,64.3 1 1 -github.com/echovault/echovault/internal/modules/connection/utils.go:65.2,65.12 1 1 github.com/echovault/echovault/internal/modules/acl/acl.go:53.55,56.20 2 1 github.com/echovault/echovault/internal/modules/acl/acl.go:56.20,58.70 1 1 github.com/echovault/echovault/internal/modules/acl/acl.go:58.70,61.4 2 0 @@ -3140,6 +2790,412 @@ github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:263.2,263.20 1 github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:266.47,271.38 4 0 github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:271.38,273.3 1 0 github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:275.2,275.17 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:35.67,37.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:37.16,39.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:41.2,48.16 7 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:48.16,50.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:54.2,54.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:54.17,55.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:55.17,57.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:57.9,59.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:62.2,62.45 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:62.45,64.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:64.17,66.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:67.8,67.52 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:67.52,69.16 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:69.16,71.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:74.2,76.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:76.17,78.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:81.2,81.29 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:81.29,83.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:85.2,85.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:88.68,90.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:90.16,92.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:94.2,97.41 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:97.41,98.15 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:98.15,100.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:104.2,104.65 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:104.65,106.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:108.2,108.42 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:111.67,113.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:113.16,115.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:116.2,119.16 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:119.16,121.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:123.2,125.51 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:128.68,130.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:130.16,132.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:134.2,135.74 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:135.74,136.19 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:136.19,138.12 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:140.3,140.41 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:143.2,145.41 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:145.41,146.24 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:146.24,148.12 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:150.3,150.96 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:153.2,153.19 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:156.67,158.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:158.16,160.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:161.2,162.76 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:162.76,163.14 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:163.14,164.12 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:166.3,167.17 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:167.17,169.12 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:171.3,171.13 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:173.2,173.51 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:176.71,178.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:178.16,180.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:182.2,185.16 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:185.16,187.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:189.2,190.31 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:190.31,192.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:194.2,196.30 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:199.74,201.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:201.16,203.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:205.2,208.16 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:208.16,210.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:212.2,214.31 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:214.31,216.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:218.2,219.57 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:219.57,221.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:223.2,223.47 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:226.67,228.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:228.16,230.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:232.2,237.16 4 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:237.16,239.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:241.2,243.31 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:243.31,245.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:247.2,248.50 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:248.50,250.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:252.2,252.12 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:252.12,254.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:256.2,256.47 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:259.70,261.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:261.16,263.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:265.2,270.16 4 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:270.16,272.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:274.2,275.53 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:275.53,277.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:277.8,279.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:281.2,281.16 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:281.16,283.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:285.2,285.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:285.30,288.3 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:290.2,292.44 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:293.12,294.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:294.39,296.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:297.3,297.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:298.12,299.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:299.39,301.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:302.3,302.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:303.12,304.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:304.39,306.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:307.3,307.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:307.39,309.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:310.3,310.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:311.12,312.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:312.39,313.40 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:313.40,315.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:316.4,316.58 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:318.3,318.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:319.10,320.82 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:323.2,323.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:326.72,328.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:328.16,330.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:332.2,337.16 4 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:337.16,339.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:341.2,342.55 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:342.55,344.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:344.8,346.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:348.2,348.16 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:348.16,350.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:352.2,352.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:352.30,355.3 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:357.2,359.44 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:360.12,361.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:361.39,363.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:364.3,364.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:365.12,366.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:366.39,368.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:369.3,369.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:370.12,371.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:371.39,373.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:374.3,374.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:374.39,376.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:377.3,377.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:378.12,379.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:379.39,380.40 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:380.40,382.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:383.4,383.58 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:385.3,385.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:386.10,387.82 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:390.2,390.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:393.68,396.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:396.16,398.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:400.2,408.32 6 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:408.32,411.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:411.8,413.35 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:414.15,417.18 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:417.18,419.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:420.12,421.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:422.14,423.23 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:424.11,426.62 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:428.3,428.33 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:432.2,432.115 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:432.115,434.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:437.2,437.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:440.68,443.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:443.16,445.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:447.2,455.32 6 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:455.32,458.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:458.8,460.35 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:461.15,464.18 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:464.18,466.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:467.12,468.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:469.14,470.23 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:471.11,473.62 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:475.3,475.33 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:479.2,479.115 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:479.115,481.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:484.2,484.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:487.70,490.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:490.16,492.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:495.2,496.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:496.16,498.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:500.2,508.32 6 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:508.32,511.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:511.8,513.35 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:514.15,516.18 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:516.18,518.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:519.12,520.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:521.14,522.23 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:523.11,525.62 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:527.3,527.41 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:531.2,531.115 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:531.115,533.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:536.2,536.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:539.75,542.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:542.16,544.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:547.2,548.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:548.16,550.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:552.2,560.32 6 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:560.32,563.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:563.8,565.35 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:566.15,568.18 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:568.18,570.19 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:570.19,572.6 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:573.5,573.49 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:575.16,576.25 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:577.14,578.34 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:579.12,580.34 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:581.11,583.62 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:585.3,585.43 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:589.2,589.115 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:589.115,591.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:594.2,595.30 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:597.70,600.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:600.16,602.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:605.2,606.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:606.16,608.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:610.2,618.32 6 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:618.32,621.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:621.8,623.35 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:624.15,626.18 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:626.18,628.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:629.12,630.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:631.14,632.23 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:633.11,635.62 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:637.3,637.41 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:641.2,641.115 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:641.115,643.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:646.2,646.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:649.70,650.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:650.30,652.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:654.2,661.28 5 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:661.28,663.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:666.2,666.99 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:666.99,668.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:671.2,671.65 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:671.65,673.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:675.2,675.31 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:678.69,679.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:679.30,681.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:683.2,683.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:683.54,686.3 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:688.2,690.42 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:693.73,698.2 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:700.70,702.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:702.16,704.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:705.2,708.16 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:708.16,710.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:712.2,715.16 4 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:715.16,717.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:719.2,719.51 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:722.69,724.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:724.16,726.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:728.2,731.16 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:731.16,733.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:735.2,742.17 4 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:742.17,744.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:747.2,749.28 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:749.28,753.3 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:756.2,756.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:756.17,758.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:761.2,763.16 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:763.16,765.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:767.2,768.19 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:769.12,770.73 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:771.12,772.78 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:773.14,774.29 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:775.14,776.31 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:777.17,778.25 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:779.10,780.98 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:783.2,785.51 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:789.68,791.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:791.16,793.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:794.2,797.16 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:797.16,799.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:801.2,804.18 4 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:805.22,806.25 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:807.19,808.26 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:809.23,810.24 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:811.21,812.23 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:813.19,814.23 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:815.23,816.31 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:816.31,818.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:818.9,818.44 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:818.44,820.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:820.9,822.4 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:823.10,824.41 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:826.2,826.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:829.69,831.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:831.16,833.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:835.2,836.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:836.16,838.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:840.2,840.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:843.71,845.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:845.16,847.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:849.2,851.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:851.16,853.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:855.2,855.50 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:858.75,860.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:860.16,862.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:864.2,865.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:865.16,867.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:869.2,869.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:872.36,1120.84 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:1120.84,1124.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:1139.84,1143.5 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:24.73,25.34 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:25.34,27.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:28.2,32.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:35.74,36.25 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:36.25,38.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:39.2,40.30 2 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:40.30,41.15 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:41.15,43.4 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:45.2,49.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:52.73,53.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:53.19,55.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:56.2,60.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:63.74,64.18 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:64.18,66.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:67.2,71.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:74.73,75.18 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:75.18,77.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:78.2,82.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:85.77,86.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:86.19,88.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:89.2,93.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:96.80,97.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:97.19,99.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:100.2,104.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:107.73,108.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:108.19,110.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:111.2,115.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:118.76,119.34 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:119.34,121.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:122.2,126.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:129.78,130.34 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:130.34,132.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:133.2,137.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:140.74,141.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:141.19,143.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:144.2,146.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:149.74,150.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:150.19,152.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:153.2,155.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:158.76,159.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:159.19,161.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:162.2,164.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:167.81,168.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:168.19,170.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:171.2,173.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:176.76,177.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:177.19,179.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:180.2,182.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:185.76,186.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:186.19,188.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:189.2,191.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:194.76,195.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:195.19,197.3 1 0 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:198.2,202.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:205.76,206.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:206.19,208.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:209.2,213.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:216.75,217.34 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:217.34,219.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:220.2,224.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:227.74,228.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:228.19,230.3 1 0 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:231.2,235.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:238.75,239.18 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:239.18,241.3 1 0 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:242.2,246.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:249.77,250.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:250.19,252.3 1 0 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:253.2,257.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:260.81,261.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:261.19,263.3 1 0 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:264.2,268.8 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:32.100,33.19 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:33.19,35.3 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:36.2,36.33 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:37.13,39.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:41.12,42.27 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:42.27,44.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:45.3,46.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:48.12,49.27 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:49.27,51.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:52.3,53.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:55.12,56.19 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:56.19,58.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:59.3,59.30 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:59.30,61.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:62.3,64.17 3 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:64.17,66.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:67.3,68.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:70.12,71.19 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:71.19,73.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:74.3,74.30 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:74.30,76.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:77.3,79.17 3 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:79.17,81.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:82.3,83.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:85.14,86.19 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:86.19,88.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:89.3,89.30 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:89.30,91.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:92.3,94.17 3 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:94.17,96.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:97.3,98.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:100.14,101.19 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:101.19,103.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:104.3,104.30 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:104.30,106.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:107.3,109.17 3 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:109.17,111.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:112.3,113.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:115.10,116.96 1 1 github.com/echovault/echovault/echovault/api_acl.go:126.71,128.23 2 1 github.com/echovault/echovault/echovault/api_acl.go:128.23,130.3 1 1 github.com/echovault/echovault/echovault/api_acl.go:131.2,132.16 2 1 @@ -3404,6 +3460,17 @@ github.com/echovault/echovault/echovault/api_generic.go:639.24,641.3 1 1 github.com/echovault/echovault/echovault/api_generic.go:643.2,644.16 2 1 github.com/echovault/echovault/echovault/api_generic.go:644.16,646.3 1 0 github.com/echovault/echovault/echovault/api_generic.go:647.2,647.40 1 1 +github.com/echovault/echovault/echovault/api_generic.go:658.61,661.25 3 1 +github.com/echovault/echovault/echovault/api_generic.go:661.25,663.3 1 1 +github.com/echovault/echovault/echovault/api_generic.go:665.2,666.16 2 1 +github.com/echovault/echovault/echovault/api_generic.go:666.16,668.3 1 0 +github.com/echovault/echovault/echovault/api_generic.go:669.2,669.41 1 1 +github.com/echovault/echovault/echovault/api_generic.go:680.62,682.16 2 1 +github.com/echovault/echovault/echovault/api_generic.go:682.16,684.3 1 1 +github.com/echovault/echovault/echovault/api_generic.go:685.2,685.41 1 1 +github.com/echovault/echovault/echovault/api_generic.go:696.70,698.16 2 1 +github.com/echovault/echovault/echovault/api_generic.go:698.16,700.3 1 1 +github.com/echovault/echovault/echovault/api_generic.go:701.2,701.39 1 1 github.com/echovault/echovault/echovault/api_hash.go:46.91,49.36 2 1 github.com/echovault/echovault/echovault/api_hash.go:49.36,51.3 1 1 github.com/echovault/echovault/echovault/api_hash.go:53.2,54.16 2 1 @@ -3949,17 +4016,17 @@ github.com/echovault/echovault/echovault/echovault.go:319.3,319.17 1 1 github.com/echovault/echovault/echovault/echovault.go:319.17,321.4 1 0 github.com/echovault/echovault/echovault/echovault.go:322.3,322.34 1 1 github.com/echovault/echovault/echovault/echovault.go:326.2,326.61 1 1 -github.com/echovault/echovault/echovault/echovault.go:326.61,327.13 1 0 -github.com/echovault/echovault/echovault/echovault.go:327.13,329.17 2 0 +github.com/echovault/echovault/echovault/echovault.go:326.61,327.13 1 1 +github.com/echovault/echovault/echovault/echovault.go:327.13,329.17 2 1 github.com/echovault/echovault/echovault/echovault.go:329.17,331.5 1 0 -github.com/echovault/echovault/echovault/echovault.go:332.4,332.8 1 0 -github.com/echovault/echovault/echovault/echovault.go:332.8,333.12 1 0 -github.com/echovault/echovault/echovault/echovault.go:334.21,337.61 2 0 -github.com/echovault/echovault/echovault/echovault.go:337.61,340.56 3 0 -github.com/echovault/echovault/echovault/echovault.go:340.56,341.69 1 0 +github.com/echovault/echovault/echovault/echovault.go:332.4,332.8 1 1 +github.com/echovault/echovault/echovault/echovault.go:332.8,333.12 1 1 +github.com/echovault/echovault/echovault/echovault.go:334.21,337.61 2 1 +github.com/echovault/echovault/echovault/echovault.go:337.61,340.56 3 1 +github.com/echovault/echovault/echovault/echovault.go:340.56,341.69 1 1 github.com/echovault/echovault/echovault/echovault.go:341.69,343.9 1 0 -github.com/echovault/echovault/echovault/echovault.go:344.8,344.17 1 0 -github.com/echovault/echovault/echovault/echovault.go:347.6,347.15 1 0 +github.com/echovault/echovault/echovault/echovault.go:344.8,344.17 1 1 +github.com/echovault/echovault/echovault/echovault.go:347.6,347.15 1 1 github.com/echovault/echovault/echovault/echovault.go:348.30,349.11 1 0 github.com/echovault/echovault/echovault/echovault.go:355.2,355.69 1 1 github.com/echovault/echovault/echovault/echovault.go:355.69,357.3 1 0 @@ -4013,56 +4080,56 @@ github.com/echovault/echovault/echovault/echovault.go:515.17,517.9 2 0 github.com/echovault/echovault/echovault/echovault.go:520.3,521.43 2 1 github.com/echovault/echovault/echovault/echovault.go:521.43,522.9 1 1 github.com/echovault/echovault/echovault/echovault.go:524.3,524.17 1 1 -github.com/echovault/echovault/echovault/echovault.go:524.17,525.87 1 1 -github.com/echovault/echovault/echovault/echovault.go:525.87,527.5 1 0 -github.com/echovault/echovault/echovault/echovault.go:528.4,528.12 1 1 -github.com/echovault/echovault/echovault/echovault.go:531.3,534.20 2 1 -github.com/echovault/echovault/echovault/echovault.go:534.20,535.12 1 0 -github.com/echovault/echovault/echovault/echovault.go:538.3,538.28 1 1 -github.com/echovault/echovault/echovault/echovault.go:538.28,540.12 2 1 -github.com/echovault/echovault/echovault/echovault.go:544.3,545.7 2 0 -github.com/echovault/echovault/echovault/echovault.go:545.7,547.41 1 0 -github.com/echovault/echovault/echovault/echovault.go:547.41,549.19 2 0 -github.com/echovault/echovault/echovault/echovault.go:549.19,551.6 1 0 -github.com/echovault/echovault/echovault/echovault.go:552.5,552.10 1 0 -github.com/echovault/echovault/echovault/echovault.go:554.4,555.21 2 0 -github.com/echovault/echovault/echovault/echovault.go:555.21,556.10 1 0 -github.com/echovault/echovault/echovault/echovault.go:558.4,558.27 1 0 -github.com/echovault/echovault/echovault/echovault.go:568.34,570.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:573.47,574.38 1 1 -github.com/echovault/echovault/echovault/echovault.go:574.38,576.3 1 0 -github.com/echovault/echovault/echovault/echovault.go:578.2,578.12 1 1 -github.com/echovault/echovault/echovault/echovault.go:578.12,579.27 1 1 -github.com/echovault/echovault/echovault/echovault.go:579.27,581.53 1 0 -github.com/echovault/echovault/echovault/echovault.go:581.53,583.5 1 0 -github.com/echovault/echovault/echovault/echovault.go:584.4,584.10 1 0 -github.com/echovault/echovault/echovault/echovault.go:587.3,587.62 1 1 -github.com/echovault/echovault/echovault/echovault.go:587.62,589.4 1 0 -github.com/echovault/echovault/echovault/echovault.go:592.2,592.12 1 1 -github.com/echovault/echovault/echovault/echovault.go:595.42,597.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:599.43,601.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:603.56,605.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:608.56,610.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:612.44,614.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:616.45,618.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:621.45,622.40 1 1 -github.com/echovault/echovault/echovault/echovault.go:622.40,624.3 1 0 -github.com/echovault/echovault/echovault/echovault.go:625.2,625.54 1 1 -github.com/echovault/echovault/echovault/echovault.go:625.54,627.3 1 0 -github.com/echovault/echovault/echovault/echovault.go:628.2,628.12 1 1 -github.com/echovault/echovault/echovault/echovault.go:633.37,634.35 1 1 -github.com/echovault/echovault/echovault/echovault.go:634.35,635.13 1 1 -github.com/echovault/echovault/echovault/echovault.go:635.13,635.42 1 1 -github.com/echovault/echovault/echovault/echovault.go:636.3,636.13 1 1 -github.com/echovault/echovault/echovault/echovault.go:636.13,636.45 1 1 -github.com/echovault/echovault/echovault/echovault.go:637.3,638.71 2 1 -github.com/echovault/echovault/echovault/echovault.go:638.71,640.4 1 0 -github.com/echovault/echovault/echovault/echovault.go:642.2,642.27 1 1 -github.com/echovault/echovault/echovault/echovault.go:642.27,644.3 1 1 -github.com/echovault/echovault/echovault/echovault.go:645.2,645.26 1 1 -github.com/echovault/echovault/echovault/echovault.go:645.26,648.3 2 1 -github.com/echovault/echovault/echovault/echovault.go:651.45,669.40 3 1 -github.com/echovault/echovault/echovault/echovault.go:669.40,672.3 2 0 +github.com/echovault/echovault/echovault/echovault.go:524.17,526.87 2 1 +github.com/echovault/echovault/echovault/echovault.go:526.87,528.5 1 0 +github.com/echovault/echovault/echovault/echovault.go:529.4,529.12 1 1 +github.com/echovault/echovault/echovault/echovault.go:532.3,535.20 2 1 +github.com/echovault/echovault/echovault/echovault.go:535.20,536.12 1 0 +github.com/echovault/echovault/echovault/echovault.go:539.3,539.28 1 1 +github.com/echovault/echovault/echovault/echovault.go:539.28,541.12 2 1 +github.com/echovault/echovault/echovault/echovault.go:545.3,546.7 2 0 +github.com/echovault/echovault/echovault/echovault.go:546.7,548.41 1 0 +github.com/echovault/echovault/echovault/echovault.go:548.41,550.19 2 0 +github.com/echovault/echovault/echovault/echovault.go:550.19,552.6 1 0 +github.com/echovault/echovault/echovault/echovault.go:553.5,553.10 1 0 +github.com/echovault/echovault/echovault/echovault.go:555.4,556.21 2 0 +github.com/echovault/echovault/echovault/echovault.go:556.21,557.10 1 0 +github.com/echovault/echovault/echovault/echovault.go:559.4,559.27 1 0 +github.com/echovault/echovault/echovault/echovault.go:569.34,571.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:574.47,575.38 1 1 +github.com/echovault/echovault/echovault/echovault.go:575.38,577.3 1 0 +github.com/echovault/echovault/echovault/echovault.go:579.2,579.12 1 1 +github.com/echovault/echovault/echovault/echovault.go:579.12,580.27 1 1 +github.com/echovault/echovault/echovault/echovault.go:580.27,582.53 1 0 +github.com/echovault/echovault/echovault/echovault.go:582.53,584.5 1 0 +github.com/echovault/echovault/echovault/echovault.go:585.4,585.10 1 0 +github.com/echovault/echovault/echovault/echovault.go:588.3,588.62 1 1 +github.com/echovault/echovault/echovault/echovault.go:588.62,590.4 1 0 +github.com/echovault/echovault/echovault/echovault.go:593.2,593.12 1 1 +github.com/echovault/echovault/echovault/echovault.go:596.42,598.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:600.43,602.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:604.56,606.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:609.56,611.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:613.44,615.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:617.45,619.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:622.45,623.40 1 1 +github.com/echovault/echovault/echovault/echovault.go:623.40,625.3 1 0 +github.com/echovault/echovault/echovault/echovault.go:626.2,626.54 1 1 +github.com/echovault/echovault/echovault/echovault.go:626.54,628.3 1 0 +github.com/echovault/echovault/echovault/echovault.go:629.2,629.12 1 1 +github.com/echovault/echovault/echovault/echovault.go:634.37,635.35 1 1 +github.com/echovault/echovault/echovault/echovault.go:635.35,636.13 1 1 +github.com/echovault/echovault/echovault/echovault.go:636.13,636.42 1 1 +github.com/echovault/echovault/echovault/echovault.go:637.3,637.13 1 1 +github.com/echovault/echovault/echovault/echovault.go:637.13,637.45 1 1 +github.com/echovault/echovault/echovault/echovault.go:638.3,639.71 2 1 +github.com/echovault/echovault/echovault/echovault.go:639.71,641.4 1 0 +github.com/echovault/echovault/echovault/echovault.go:643.2,643.27 1 1 +github.com/echovault/echovault/echovault/echovault.go:643.27,645.3 1 1 +github.com/echovault/echovault/echovault/echovault.go:646.2,646.26 1 1 +github.com/echovault/echovault/echovault/echovault.go:646.26,649.3 2 1 +github.com/echovault/echovault/echovault/echovault.go:652.45,670.40 3 1 +github.com/echovault/echovault/echovault/echovault.go:670.40,673.3 2 0 github.com/echovault/echovault/echovault/keyspace.go:38.60,40.28 1 0 github.com/echovault/echovault/echovault/keyspace.go:40.28,42.3 1 0 github.com/echovault/echovault/echovault/keyspace.go:45.2,46.55 2 0 @@ -4072,227 +4139,241 @@ github.com/echovault/echovault/echovault/keyspace.go:51.2,56.59 4 0 github.com/echovault/echovault/echovault/keyspace.go:56.59,57.24 1 0 github.com/echovault/echovault/echovault/keyspace.go:58.18,64.5 1 0 github.com/echovault/echovault/echovault/keyspace.go:65.18,71.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:78.46,91.20 9 0 -github.com/echovault/echovault/echovault/keyspace.go:91.20,92.35 1 0 -github.com/echovault/echovault/echovault/keyspace.go:92.35,101.4 4 0 -github.com/echovault/echovault/echovault/keyspace.go:102.3,102.9 1 0 -github.com/echovault/echovault/echovault/keyspace.go:106.2,112.58 4 0 -github.com/echovault/echovault/echovault/keyspace.go:115.88,123.27 5 1 -github.com/echovault/echovault/echovault/keyspace.go:123.27,126.3 2 1 -github.com/echovault/echovault/echovault/keyspace.go:128.2,128.15 1 1 -github.com/echovault/echovault/echovault/keyspace.go:131.79,138.9 5 1 -github.com/echovault/echovault/echovault/keyspace.go:138.9,140.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:142.2,142.23 1 1 -github.com/echovault/echovault/echovault/keyspace.go:145.95,153.27 5 1 -github.com/echovault/echovault/echovault/keyspace.go:153.27,155.10 2 1 -github.com/echovault/echovault/echovault/keyspace.go:155.10,157.12 2 1 -github.com/echovault/echovault/echovault/keyspace.go:160.3,160.83 1 1 -github.com/echovault/echovault/echovault/keyspace.go:160.83,161.29 1 0 -github.com/echovault/echovault/echovault/keyspace.go:161.29,164.19 2 0 -github.com/echovault/echovault/echovault/keyspace.go:164.19,166.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:167.10,167.65 1 0 -github.com/echovault/echovault/echovault/keyspace.go:167.65,170.19 2 0 -github.com/echovault/echovault/echovault/keyspace.go:170.19,172.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:173.10,173.66 1 0 -github.com/echovault/echovault/echovault/keyspace.go:173.66,178.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:179.4,180.12 2 0 -github.com/echovault/echovault/echovault/keyspace.go:183.3,183.28 1 1 -github.com/echovault/echovault/echovault/keyspace.go:187.2,187.46 1 1 -github.com/echovault/echovault/echovault/keyspace.go:187.46,188.61 1 1 -github.com/echovault/echovault/echovault/keyspace.go:188.61,190.4 1 0 -github.com/echovault/echovault/echovault/keyspace.go:193.2,193.15 1 1 -github.com/echovault/echovault/echovault/keyspace.go:196.95,200.115 3 1 -github.com/echovault/echovault/echovault/keyspace.go:200.115,202.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:204.2,207.35 2 1 -github.com/echovault/echovault/echovault/keyspace.go:207.35,209.3 1 1 -github.com/echovault/echovault/echovault/keyspace.go:211.2,211.34 1 1 -github.com/echovault/echovault/echovault/keyspace.go:211.34,213.47 2 1 -github.com/echovault/echovault/echovault/keyspace.go:213.47,215.4 1 1 -github.com/echovault/echovault/echovault/keyspace.go:216.3,220.28 2 1 -github.com/echovault/echovault/echovault/keyspace.go:220.28,222.4 1 1 -github.com/echovault/echovault/echovault/keyspace.go:226.2,226.63 1 1 -github.com/echovault/echovault/echovault/keyspace.go:226.63,227.31 1 1 -github.com/echovault/echovault/echovault/keyspace.go:227.31,229.18 2 1 -github.com/echovault/echovault/echovault/keyspace.go:229.18,231.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:235.2,235.12 1 1 -github.com/echovault/echovault/echovault/keyspace.go:238.101,251.65 6 1 -github.com/echovault/echovault/echovault/keyspace.go:251.65,253.3 1 1 -github.com/echovault/echovault/echovault/keyspace.go:254.2,257.11 2 1 -github.com/echovault/echovault/echovault/keyspace.go:257.11,258.44 1 1 -github.com/echovault/echovault/echovault/keyspace.go:258.44,260.18 2 1 -github.com/echovault/echovault/echovault/keyspace.go:260.18,262.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:267.75,276.117 5 1 -github.com/echovault/echovault/echovault/keyspace.go:276.117,278.3 1 1 -github.com/echovault/echovault/echovault/keyspace.go:281.2,281.9 1 1 -github.com/echovault/echovault/echovault/keyspace.go:282.108,283.46 1 0 +github.com/echovault/echovault/echovault/keyspace.go:78.46,85.20 5 0 +github.com/echovault/echovault/echovault/keyspace.go:85.20,86.35 1 0 +github.com/echovault/echovault/echovault/keyspace.go:86.35,99.4 8 0 +github.com/echovault/echovault/echovault/keyspace.go:100.3,100.9 1 0 +github.com/echovault/echovault/echovault/keyspace.go:104.2,114.48 8 0 +github.com/echovault/echovault/echovault/keyspace.go:117.88,125.27 5 1 +github.com/echovault/echovault/echovault/keyspace.go:125.27,128.3 2 1 +github.com/echovault/echovault/echovault/keyspace.go:130.2,130.15 1 1 +github.com/echovault/echovault/echovault/keyspace.go:133.79,140.9 5 1 +github.com/echovault/echovault/echovault/keyspace.go:140.9,142.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:144.2,144.23 1 1 +github.com/echovault/echovault/echovault/keyspace.go:147.95,155.27 5 1 +github.com/echovault/echovault/echovault/keyspace.go:155.27,157.10 2 1 +github.com/echovault/echovault/echovault/keyspace.go:157.10,159.12 2 1 +github.com/echovault/echovault/echovault/keyspace.go:162.3,162.83 1 1 +github.com/echovault/echovault/echovault/keyspace.go:162.83,163.29 1 0 +github.com/echovault/echovault/echovault/keyspace.go:163.29,166.19 2 0 +github.com/echovault/echovault/echovault/keyspace.go:166.19,168.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:169.10,169.65 1 0 +github.com/echovault/echovault/echovault/keyspace.go:169.65,172.19 2 0 +github.com/echovault/echovault/echovault/keyspace.go:172.19,174.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:175.10,175.66 1 0 +github.com/echovault/echovault/echovault/keyspace.go:175.66,180.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:181.4,182.12 2 0 +github.com/echovault/echovault/echovault/keyspace.go:185.3,185.28 1 1 +github.com/echovault/echovault/echovault/keyspace.go:189.2,189.46 1 1 +github.com/echovault/echovault/echovault/keyspace.go:189.46,190.64 1 1 +github.com/echovault/echovault/echovault/keyspace.go:190.64,192.4 1 0 +github.com/echovault/echovault/echovault/keyspace.go:195.2,195.15 1 1 +github.com/echovault/echovault/echovault/keyspace.go:198.95,202.115 3 1 +github.com/echovault/echovault/echovault/keyspace.go:202.115,204.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:206.2,209.35 2 1 +github.com/echovault/echovault/echovault/keyspace.go:209.35,211.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:213.2,213.34 1 1 +github.com/echovault/echovault/echovault/keyspace.go:213.34,215.47 2 1 +github.com/echovault/echovault/echovault/keyspace.go:215.47,217.4 1 1 +github.com/echovault/echovault/echovault/keyspace.go:218.3,222.28 2 1 +github.com/echovault/echovault/echovault/keyspace.go:222.28,224.4 1 1 +github.com/echovault/echovault/echovault/keyspace.go:228.2,228.63 1 1 +github.com/echovault/echovault/echovault/keyspace.go:228.63,229.31 1 1 +github.com/echovault/echovault/echovault/keyspace.go:229.31,231.18 2 1 +github.com/echovault/echovault/echovault/keyspace.go:231.18,233.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:237.2,237.12 1 1 +github.com/echovault/echovault/echovault/keyspace.go:240.101,253.65 6 1 +github.com/echovault/echovault/echovault/keyspace.go:253.65,255.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:256.2,259.11 2 1 +github.com/echovault/echovault/echovault/keyspace.go:259.11,260.44 1 1 +github.com/echovault/echovault/echovault/keyspace.go:260.44,262.18 2 1 +github.com/echovault/echovault/echovault/keyspace.go:262.18,264.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:269.75,278.117 5 1 +github.com/echovault/echovault/echovault/keyspace.go:278.117,280.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:283.2,283.9 1 1 github.com/echovault/echovault/echovault/keyspace.go:284.108,285.46 1 0 -github.com/echovault/echovault/echovault/keyspace.go:288.2,290.12 2 1 -github.com/echovault/echovault/echovault/keyspace.go:293.55,311.2 10 1 -github.com/echovault/echovault/echovault/keyspace.go:313.68,315.6 1 1 -github.com/echovault/echovault/echovault/keyspace.go:315.6,316.83 1 1 -github.com/echovault/echovault/echovault/keyspace.go:316.83,318.9 2 1 -github.com/echovault/echovault/echovault/keyspace.go:321.2,322.38 2 1 -github.com/echovault/echovault/echovault/keyspace.go:322.38,324.27 2 1 -github.com/echovault/echovault/echovault/keyspace.go:324.27,326.4 1 1 -github.com/echovault/echovault/echovault/keyspace.go:328.2,329.13 2 1 -github.com/echovault/echovault/echovault/keyspace.go:334.86,337.27 2 1 -github.com/echovault/echovault/echovault/keyspace.go:337.27,339.84 1 1 -github.com/echovault/echovault/echovault/keyspace.go:339.84,341.4 1 1 -github.com/echovault/echovault/echovault/keyspace.go:343.3,343.35 1 1 -github.com/echovault/echovault/echovault/keyspace.go:343.35,345.4 1 1 -github.com/echovault/echovault/echovault/keyspace.go:346.3,346.56 1 0 -github.com/echovault/echovault/echovault/keyspace.go:347.29,350.34 3 0 -github.com/echovault/echovault/echovault/keyspace.go:351.29,354.34 3 0 -github.com/echovault/echovault/echovault/keyspace.go:355.30,357.61 2 0 -github.com/echovault/echovault/echovault/keyspace.go:357.61,359.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:360.4,360.34 1 0 -github.com/echovault/echovault/echovault/keyspace.go:361.30,363.61 2 0 -github.com/echovault/echovault/echovault/keyspace.go:363.61,365.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:366.4,366.34 1 0 -github.com/echovault/echovault/echovault/keyspace.go:370.2,377.34 6 0 -github.com/echovault/echovault/echovault/keyspace.go:377.34,380.87 3 0 -github.com/echovault/echovault/echovault/keyspace.go:380.87,381.56 1 0 -github.com/echovault/echovault/echovault/keyspace.go:381.56,383.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:384.4,384.13 1 0 -github.com/echovault/echovault/echovault/keyspace.go:388.2,388.12 1 0 -github.com/echovault/echovault/echovault/keyspace.go:388.12,391.3 2 0 -github.com/echovault/echovault/echovault/keyspace.go:393.2,393.9 1 0 -github.com/echovault/echovault/echovault/keyspace.go:394.24,395.57 1 0 -github.com/echovault/echovault/echovault/keyspace.go:396.18,396.18 0 0 -github.com/echovault/echovault/echovault/keyspace.go:399.2,399.12 1 0 -github.com/echovault/echovault/echovault/keyspace.go:403.71,405.34 1 0 -github.com/echovault/echovault/echovault/keyspace.go:405.34,407.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:409.2,416.50 4 0 -github.com/echovault/echovault/echovault/keyspace.go:416.50,418.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:420.2,422.50 3 0 -github.com/echovault/echovault/echovault/keyspace.go:422.50,424.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:428.2,428.9 1 0 -github.com/echovault/echovault/echovault/keyspace.go:429.125,434.7 3 0 -github.com/echovault/echovault/echovault/keyspace.go:434.7,436.50 1 0 -github.com/echovault/echovault/echovault/keyspace.go:436.50,438.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:440.4,441.29 2 0 -github.com/echovault/echovault/echovault/keyspace.go:441.29,443.54 1 0 -github.com/echovault/echovault/echovault/keyspace.go:443.54,445.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:446.10,446.65 1 0 -github.com/echovault/echovault/echovault/keyspace.go:446.65,448.63 1 0 -github.com/echovault/echovault/echovault/keyspace.go:448.63,450.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:453.4,456.52 3 0 -github.com/echovault/echovault/echovault/keyspace.go:456.52,458.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:460.125,465.7 3 0 -github.com/echovault/echovault/echovault/keyspace.go:465.7,467.50 1 0 -github.com/echovault/echovault/echovault/keyspace.go:467.50,469.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:471.4,472.29 2 0 -github.com/echovault/echovault/echovault/keyspace.go:472.29,474.54 1 0 -github.com/echovault/echovault/echovault/keyspace.go:474.54,476.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:477.10,477.65 1 0 -github.com/echovault/echovault/echovault/keyspace.go:477.65,480.63 1 0 -github.com/echovault/echovault/echovault/keyspace.go:480.63,482.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:486.4,489.52 3 0 -github.com/echovault/echovault/echovault/keyspace.go:489.52,491.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:493.105,496.7 1 0 -github.com/echovault/echovault/echovault/keyspace.go:496.7,498.30 1 0 -github.com/echovault/echovault/echovault/keyspace.go:498.30,501.5 2 0 -github.com/echovault/echovault/echovault/keyspace.go:503.4,504.39 2 0 -github.com/echovault/echovault/echovault/keyspace.go:504.39,505.23 1 0 -github.com/echovault/echovault/echovault/keyspace.go:505.23,506.31 1 0 -github.com/echovault/echovault/echovault/keyspace.go:506.31,507.19 1 0 -github.com/echovault/echovault/echovault/keyspace.go:507.19,508.33 1 0 -github.com/echovault/echovault/echovault/keyspace.go:508.33,510.58 1 0 -github.com/echovault/echovault/echovault/keyspace.go:510.58,512.10 1 0 -github.com/echovault/echovault/echovault/keyspace.go:513.14,513.69 1 0 -github.com/echovault/echovault/echovault/keyspace.go:513.69,514.67 1 0 -github.com/echovault/echovault/echovault/keyspace.go:514.67,516.10 1 0 -github.com/echovault/echovault/echovault/keyspace.go:519.8,522.56 3 0 -github.com/echovault/echovault/echovault/keyspace.go:522.56,524.9 1 0 -github.com/echovault/echovault/echovault/keyspace.go:526.7,526.12 1 0 -github.com/echovault/echovault/echovault/keyspace.go:531.106,534.7 1 0 -github.com/echovault/echovault/echovault/keyspace.go:534.7,541.29 5 0 -github.com/echovault/echovault/echovault/keyspace.go:541.29,543.54 1 0 -github.com/echovault/echovault/echovault/keyspace.go:543.54,545.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:546.10,546.65 1 0 -github.com/echovault/echovault/echovault/keyspace.go:546.65,547.63 1 0 -github.com/echovault/echovault/echovault/keyspace.go:547.63,549.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:553.4,556.52 3 0 -github.com/echovault/echovault/echovault/keyspace.go:556.52,558.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:560.10,561.13 1 0 -github.com/echovault/echovault/echovault/keyspace.go:570.77,572.57 1 0 -github.com/echovault/echovault/echovault/keyspace.go:572.57,574.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:576.2,583.60 4 0 -github.com/echovault/echovault/echovault/keyspace.go:583.60,585.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:586.2,593.33 6 0 -github.com/echovault/echovault/echovault/keyspace.go:593.33,594.7 1 0 -github.com/echovault/echovault/echovault/keyspace.go:594.7,598.35 3 0 -github.com/echovault/echovault/echovault/keyspace.go:598.35,600.10 2 0 -github.com/echovault/echovault/echovault/keyspace.go:604.2,609.25 4 0 -github.com/echovault/echovault/echovault/keyspace.go:609.25,612.28 2 0 -github.com/echovault/echovault/echovault/keyspace.go:612.28,613.51 1 0 -github.com/echovault/echovault/echovault/keyspace.go:613.51,615.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:616.9,616.64 1 0 -github.com/echovault/echovault/echovault/keyspace.go:616.64,617.60 1 0 -github.com/echovault/echovault/echovault/keyspace.go:617.60,619.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:624.2,624.21 1 0 -github.com/echovault/echovault/echovault/keyspace.go:624.21,626.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:628.2,631.58 2 0 -github.com/echovault/echovault/echovault/keyspace.go:631.58,635.3 2 0 -github.com/echovault/echovault/echovault/keyspace.go:637.2,637.12 1 0 -github.com/echovault/echovault/echovault/keyspace.go:640.64,647.15 5 1 -github.com/echovault/echovault/echovault/keyspace.go:647.15,649.3 1 1 -github.com/echovault/echovault/echovault/keyspace.go:651.2,655.45 4 1 -github.com/echovault/echovault/echovault/keyspace.go:655.45,656.19 1 1 -github.com/echovault/echovault/echovault/keyspace.go:656.19,658.9 2 1 -github.com/echovault/echovault/echovault/keyspace.go:659.9,661.4 1 0 -github.com/echovault/echovault/echovault/keyspace.go:665.2,665.16 1 1 +github.com/echovault/echovault/echovault/keyspace.go:286.108,287.46 1 0 +github.com/echovault/echovault/echovault/keyspace.go:290.2,292.12 2 1 +github.com/echovault/echovault/echovault/keyspace.go:295.55,313.2 10 1 +github.com/echovault/echovault/echovault/keyspace.go:315.68,317.6 1 1 +github.com/echovault/echovault/echovault/keyspace.go:317.6,318.83 1 1 +github.com/echovault/echovault/echovault/keyspace.go:318.83,320.9 2 1 +github.com/echovault/echovault/echovault/keyspace.go:323.2,324.38 2 1 +github.com/echovault/echovault/echovault/keyspace.go:324.38,326.27 2 1 +github.com/echovault/echovault/echovault/keyspace.go:326.27,328.4 1 1 +github.com/echovault/echovault/echovault/keyspace.go:330.2,331.13 2 1 +github.com/echovault/echovault/echovault/keyspace.go:336.95,341.83 3 1 +github.com/echovault/echovault/echovault/keyspace.go:341.83,343.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:345.2,345.34 1 1 +github.com/echovault/echovault/echovault/keyspace.go:345.34,347.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:349.2,352.27 3 1 +github.com/echovault/echovault/echovault/keyspace.go:352.27,354.48 1 1 +github.com/echovault/echovault/echovault/keyspace.go:354.48,355.12 1 1 +github.com/echovault/echovault/echovault/keyspace.go:358.3,360.56 2 1 +github.com/echovault/echovault/echovault/keyspace.go:361.29,364.50 3 1 +github.com/echovault/echovault/echovault/keyspace.go:365.29,368.50 3 1 +github.com/echovault/echovault/echovault/keyspace.go:369.30,371.61 2 0 +github.com/echovault/echovault/echovault/keyspace.go:371.61,373.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:374.4,374.50 1 0 +github.com/echovault/echovault/echovault/keyspace.go:375.30,377.61 2 0 +github.com/echovault/echovault/echovault/keyspace.go:377.61,379.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:380.4,380.50 1 0 +github.com/echovault/echovault/echovault/keyspace.go:384.2,388.34 4 1 +github.com/echovault/echovault/echovault/keyspace.go:388.34,391.87 3 1 +github.com/echovault/echovault/echovault/keyspace.go:391.87,392.56 1 1 +github.com/echovault/echovault/echovault/keyspace.go:392.56,394.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:395.4,395.13 1 1 +github.com/echovault/echovault/echovault/keyspace.go:399.2,399.12 1 1 +github.com/echovault/echovault/echovault/keyspace.go:399.12,402.3 2 1 +github.com/echovault/echovault/echovault/keyspace.go:404.2,404.9 1 1 +github.com/echovault/echovault/echovault/keyspace.go:405.24,406.71 1 0 +github.com/echovault/echovault/echovault/keyspace.go:407.18,407.18 0 1 +github.com/echovault/echovault/echovault/keyspace.go:410.2,410.26 1 1 +github.com/echovault/echovault/echovault/keyspace.go:414.71,416.34 1 1 +github.com/echovault/echovault/echovault/keyspace.go:416.34,418.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:420.2,427.50 4 1 +github.com/echovault/echovault/echovault/keyspace.go:427.50,429.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:431.2,433.50 3 0 +github.com/echovault/echovault/echovault/keyspace.go:433.50,435.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:440.2,440.9 1 0 +github.com/echovault/echovault/echovault/keyspace.go:441.125,446.7 3 0 +github.com/echovault/echovault/echovault/keyspace.go:446.7,448.50 1 0 +github.com/echovault/echovault/echovault/keyspace.go:448.50,450.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:452.4,453.29 2 0 +github.com/echovault/echovault/echovault/keyspace.go:453.29,455.54 1 0 +github.com/echovault/echovault/echovault/keyspace.go:455.54,458.6 2 0 +github.com/echovault/echovault/echovault/keyspace.go:459.10,459.65 1 0 +github.com/echovault/echovault/echovault/keyspace.go:459.65,461.63 1 0 +github.com/echovault/echovault/echovault/keyspace.go:461.63,463.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:466.4,469.52 3 0 +github.com/echovault/echovault/echovault/keyspace.go:469.52,471.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:473.125,478.7 3 0 +github.com/echovault/echovault/echovault/keyspace.go:478.7,480.50 1 0 +github.com/echovault/echovault/echovault/keyspace.go:480.50,482.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:484.4,485.29 2 0 +github.com/echovault/echovault/echovault/keyspace.go:485.29,487.54 1 0 +github.com/echovault/echovault/echovault/keyspace.go:487.54,490.6 2 0 +github.com/echovault/echovault/echovault/keyspace.go:491.10,491.65 1 0 +github.com/echovault/echovault/echovault/keyspace.go:491.65,494.63 1 0 +github.com/echovault/echovault/echovault/keyspace.go:494.63,496.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:500.4,503.52 3 0 +github.com/echovault/echovault/echovault/keyspace.go:503.52,505.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:507.105,510.7 1 0 +github.com/echovault/echovault/echovault/keyspace.go:510.7,512.30 1 0 +github.com/echovault/echovault/echovault/keyspace.go:512.30,515.5 2 0 +github.com/echovault/echovault/echovault/keyspace.go:517.4,518.39 2 0 +github.com/echovault/echovault/echovault/keyspace.go:518.39,519.23 1 0 +github.com/echovault/echovault/echovault/keyspace.go:519.23,520.31 1 0 +github.com/echovault/echovault/echovault/keyspace.go:520.31,521.19 1 0 +github.com/echovault/echovault/echovault/keyspace.go:521.19,522.33 1 0 +github.com/echovault/echovault/echovault/keyspace.go:522.33,524.58 1 0 +github.com/echovault/echovault/echovault/keyspace.go:524.58,527.10 2 0 +github.com/echovault/echovault/echovault/keyspace.go:528.14,528.69 1 0 +github.com/echovault/echovault/echovault/keyspace.go:528.69,529.67 1 0 +github.com/echovault/echovault/echovault/keyspace.go:529.67,531.10 1 0 +github.com/echovault/echovault/echovault/keyspace.go:534.8,537.56 3 0 +github.com/echovault/echovault/echovault/keyspace.go:537.56,539.9 1 0 +github.com/echovault/echovault/echovault/keyspace.go:541.7,541.12 1 0 +github.com/echovault/echovault/echovault/keyspace.go:546.106,549.7 1 0 +github.com/echovault/echovault/echovault/keyspace.go:549.7,556.29 5 0 +github.com/echovault/echovault/echovault/keyspace.go:556.29,558.54 1 0 +github.com/echovault/echovault/echovault/keyspace.go:558.54,561.6 2 0 +github.com/echovault/echovault/echovault/keyspace.go:562.10,562.65 1 0 +github.com/echovault/echovault/echovault/keyspace.go:562.65,563.63 1 0 +github.com/echovault/echovault/echovault/keyspace.go:563.63,565.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:569.4,572.52 3 0 +github.com/echovault/echovault/echovault/keyspace.go:572.52,574.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:576.10,577.13 1 0 +github.com/echovault/echovault/echovault/keyspace.go:586.77,588.57 1 1 +github.com/echovault/echovault/echovault/keyspace.go:588.57,590.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:592.2,599.60 4 1 +github.com/echovault/echovault/echovault/keyspace.go:599.60,601.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:602.2,609.33 6 1 +github.com/echovault/echovault/echovault/keyspace.go:609.33,610.7 1 0 +github.com/echovault/echovault/echovault/keyspace.go:610.7,614.35 3 0 +github.com/echovault/echovault/echovault/keyspace.go:614.35,616.10 2 0 +github.com/echovault/echovault/echovault/keyspace.go:620.2,625.25 4 1 +github.com/echovault/echovault/echovault/keyspace.go:625.25,628.28 2 0 +github.com/echovault/echovault/echovault/keyspace.go:628.28,629.51 1 0 +github.com/echovault/echovault/echovault/keyspace.go:629.51,631.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:632.9,632.64 1 0 +github.com/echovault/echovault/echovault/keyspace.go:632.64,633.60 1 0 +github.com/echovault/echovault/echovault/keyspace.go:633.60,635.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:640.2,640.21 1 1 +github.com/echovault/echovault/echovault/keyspace.go:640.21,642.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:644.2,647.58 2 0 +github.com/echovault/echovault/echovault/keyspace.go:647.58,651.3 2 0 +github.com/echovault/echovault/echovault/keyspace.go:653.2,653.12 1 0 +github.com/echovault/echovault/echovault/keyspace.go:656.64,663.15 5 1 +github.com/echovault/echovault/echovault/keyspace.go:663.15,665.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:667.2,671.45 4 1 +github.com/echovault/echovault/echovault/keyspace.go:671.45,672.19 1 1 +github.com/echovault/echovault/echovault/keyspace.go:672.19,674.9 2 1 +github.com/echovault/echovault/echovault/keyspace.go:675.9,677.4 1 1 +github.com/echovault/echovault/echovault/keyspace.go:681.2,681.16 1 1 +github.com/echovault/echovault/echovault/keyspace.go:684.86,689.34 4 1 +github.com/echovault/echovault/echovault/keyspace.go:689.34,693.3 3 1 +github.com/echovault/echovault/echovault/keyspace.go:693.8,695.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:697.2,697.16 1 1 +github.com/echovault/echovault/echovault/keyspace.go:697.16,699.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:701.2,701.18 1 1 +github.com/echovault/echovault/echovault/keyspace.go:704.94,709.34 4 1 +github.com/echovault/echovault/echovault/keyspace.go:709.34,713.3 3 1 +github.com/echovault/echovault/echovault/keyspace.go:713.8,715.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:717.2,717.16 1 1 +github.com/echovault/echovault/echovault/keyspace.go:717.16,719.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:721.2,724.18 3 1 github.com/echovault/echovault/echovault/modules.go:29.75,32.42 3 1 github.com/echovault/echovault/echovault/modules.go:32.42,33.46 1 1 github.com/echovault/echovault/echovault/modules.go:33.46,35.4 1 1 github.com/echovault/echovault/echovault/modules.go:37.2,37.72 1 1 -github.com/echovault/echovault/echovault/modules.go:40.125,64.58 1 1 -github.com/echovault/echovault/echovault/modules.go:64.58,68.4 3 1 -github.com/echovault/echovault/echovault/modules.go:69.67,73.4 3 1 -github.com/echovault/echovault/echovault/modules.go:74.90,84.24 5 1 -github.com/echovault/echovault/echovault/modules.go:84.24,86.5 1 0 -github.com/echovault/echovault/echovault/modules.go:89.4,90.37 2 1 -github.com/echovault/echovault/echovault/modules.go:90.37,92.5 1 1 -github.com/echovault/echovault/echovault/modules.go:93.4,98.43 3 1 -github.com/echovault/echovault/echovault/modules.go:103.137,106.25 2 1 -github.com/echovault/echovault/echovault/modules.go:106.25,112.3 3 1 -github.com/echovault/echovault/echovault/modules.go:112.8,118.3 3 1 -github.com/echovault/echovault/echovault/modules.go:119.2,122.16 3 1 -github.com/echovault/echovault/echovault/modules.go:122.16,124.3 1 1 -github.com/echovault/echovault/echovault/modules.go:126.2,126.19 1 1 -github.com/echovault/echovault/echovault/modules.go:126.19,128.3 1 1 -github.com/echovault/echovault/echovault/modules.go:131.2,131.39 1 1 -github.com/echovault/echovault/echovault/modules.go:131.39,133.3 1 0 -github.com/echovault/echovault/echovault/modules.go:135.2,136.16 2 1 -github.com/echovault/echovault/echovault/modules.go:136.16,138.3 1 1 -github.com/echovault/echovault/echovault/modules.go:140.2,144.16 4 1 -github.com/echovault/echovault/echovault/modules.go:144.16,146.3 1 1 -github.com/echovault/echovault/echovault/modules.go:147.2,148.8 2 1 -github.com/echovault/echovault/echovault/modules.go:148.8,151.3 2 1 -github.com/echovault/echovault/echovault/modules.go:153.2,153.51 1 1 -github.com/echovault/echovault/echovault/modules.go:153.51,156.87 1 1 -github.com/echovault/echovault/echovault/modules.go:156.87,158.4 1 0 -github.com/echovault/echovault/echovault/modules.go:162.2,162.50 1 1 -github.com/echovault/echovault/echovault/modules.go:162.50,163.7 1 1 -github.com/echovault/echovault/echovault/modules.go:163.7,164.42 1 1 -github.com/echovault/echovault/echovault/modules.go:164.42,166.10 2 1 -github.com/echovault/echovault/echovault/modules.go:171.2,171.43 1 1 -github.com/echovault/echovault/echovault/modules.go:171.43,173.17 2 1 -github.com/echovault/echovault/echovault/modules.go:173.17,175.4 1 1 -github.com/echovault/echovault/echovault/modules.go:177.3,177.62 1 1 -github.com/echovault/echovault/echovault/modules.go:177.62,181.4 3 1 -github.com/echovault/echovault/echovault/modules.go:183.3,185.18 2 1 -github.com/echovault/echovault/echovault/modules.go:189.2,189.32 1 1 -github.com/echovault/echovault/echovault/modules.go:189.32,192.17 3 1 -github.com/echovault/echovault/echovault/modules.go:192.17,194.4 1 0 -github.com/echovault/echovault/echovault/modules.go:195.3,195.18 1 1 -github.com/echovault/echovault/echovault/modules.go:199.2,199.34 1 1 -github.com/echovault/echovault/echovault/modules.go:199.34,202.3 2 1 -github.com/echovault/echovault/echovault/modules.go:204.2,204.72 1 1 -github.com/echovault/echovault/echovault/modules.go:207.59,209.2 1 1 -github.com/echovault/echovault/echovault/modules.go:211.47,213.2 1 1 -github.com/echovault/echovault/echovault/modules.go:215.50,217.2 1 1 -github.com/echovault/echovault/echovault/modules.go:219.49,221.2 1 1 +github.com/echovault/echovault/echovault/modules.go:40.125,67.58 1 1 +github.com/echovault/echovault/echovault/modules.go:67.58,71.4 3 1 +github.com/echovault/echovault/echovault/modules.go:72.67,76.4 3 1 +github.com/echovault/echovault/echovault/modules.go:77.90,87.24 5 1 +github.com/echovault/echovault/echovault/modules.go:87.24,89.5 1 0 +github.com/echovault/echovault/echovault/modules.go:92.4,93.37 2 1 +github.com/echovault/echovault/echovault/modules.go:93.37,95.5 1 1 +github.com/echovault/echovault/echovault/modules.go:96.4,101.43 3 1 +github.com/echovault/echovault/echovault/modules.go:106.137,109.25 2 1 +github.com/echovault/echovault/echovault/modules.go:109.25,115.3 3 1 +github.com/echovault/echovault/echovault/modules.go:115.8,121.3 3 1 +github.com/echovault/echovault/echovault/modules.go:122.2,125.16 3 1 +github.com/echovault/echovault/echovault/modules.go:125.16,127.3 1 1 +github.com/echovault/echovault/echovault/modules.go:129.2,129.19 1 1 +github.com/echovault/echovault/echovault/modules.go:129.19,131.3 1 1 +github.com/echovault/echovault/echovault/modules.go:134.2,134.39 1 1 +github.com/echovault/echovault/echovault/modules.go:134.39,136.3 1 0 +github.com/echovault/echovault/echovault/modules.go:138.2,139.16 2 1 +github.com/echovault/echovault/echovault/modules.go:139.16,141.3 1 1 +github.com/echovault/echovault/echovault/modules.go:143.2,147.16 4 1 +github.com/echovault/echovault/echovault/modules.go:147.16,149.3 1 1 +github.com/echovault/echovault/echovault/modules.go:150.2,151.8 2 1 +github.com/echovault/echovault/echovault/modules.go:151.8,154.3 2 1 +github.com/echovault/echovault/echovault/modules.go:156.2,156.51 1 1 +github.com/echovault/echovault/echovault/modules.go:156.51,159.87 1 1 +github.com/echovault/echovault/echovault/modules.go:159.87,161.4 1 0 +github.com/echovault/echovault/echovault/modules.go:165.2,165.50 1 1 +github.com/echovault/echovault/echovault/modules.go:165.50,166.7 1 1 +github.com/echovault/echovault/echovault/modules.go:166.7,167.42 1 1 +github.com/echovault/echovault/echovault/modules.go:167.42,169.10 2 1 +github.com/echovault/echovault/echovault/modules.go:174.2,174.43 1 1 +github.com/echovault/echovault/echovault/modules.go:174.43,176.17 2 1 +github.com/echovault/echovault/echovault/modules.go:176.17,178.4 1 1 +github.com/echovault/echovault/echovault/modules.go:180.3,180.62 1 1 +github.com/echovault/echovault/echovault/modules.go:180.62,184.4 3 1 +github.com/echovault/echovault/echovault/modules.go:186.3,188.18 2 1 +github.com/echovault/echovault/echovault/modules.go:192.2,192.32 1 1 +github.com/echovault/echovault/echovault/modules.go:192.32,195.17 3 1 +github.com/echovault/echovault/echovault/modules.go:195.17,197.4 1 0 +github.com/echovault/echovault/echovault/modules.go:198.3,198.18 1 1 +github.com/echovault/echovault/echovault/modules.go:202.2,202.34 1 1 +github.com/echovault/echovault/echovault/modules.go:202.34,205.3 2 1 +github.com/echovault/echovault/echovault/modules.go:207.2,207.72 1 1 +github.com/echovault/echovault/echovault/modules.go:210.59,212.2 1 1 +github.com/echovault/echovault/echovault/modules.go:214.47,216.2 1 1 +github.com/echovault/echovault/echovault/modules.go:218.50,220.2 1 1 +github.com/echovault/echovault/echovault/modules.go:222.49,224.2 1 1 github.com/echovault/echovault/echovault/plugin.go:37.72,41.41 3 1 github.com/echovault/echovault/echovault/plugin.go:41.41,42.37 1 1 github.com/echovault/echovault/echovault/plugin.go:42.37,44.4 1 1 diff --git a/docs/docs/commands/connection/hello.mdx b/docs/docs/commands/connection/hello.mdx index 08a3b129..8bf53e26 100644 --- a/docs/docs/commands/connection/hello.mdx +++ b/docs/docs/commands/connection/hello.mdx @@ -83,4 +83,4 @@ This command returns a contextual client report. > HELLO 3 AUTH myuser mypass ``` - \ No newline at end of file + diff --git a/docs/docs/commands/connection/select.mdx b/docs/docs/commands/connection/select.mdx index 62e52f7b..8fcf71c0 100644 --- a/docs/docs/commands/connection/select.mdx +++ b/docs/docs/commands/connection/select.mdx @@ -47,4 +47,4 @@ When this command is executed in a RAFT cluster, the database will be created in > SELECT 1 ``` - \ No newline at end of file + diff --git a/docs/docs/commands/connection/swapdb.mdx b/docs/docs/commands/connection/swapdb.mdx index 63f4c246..cb9779fc 100644 --- a/docs/docs/commands/connection/swapdb.mdx +++ b/docs/docs/commands/connection/swapdb.mdx @@ -49,4 +49,4 @@ and the other way around. If either one of the databases does not exist, it will > SWAPDB 1 2 ``` - \ No newline at end of file + diff --git a/docs/docs/commands/generic/objectfreq.mdx b/docs/docs/commands/generic/objectfreq.mdx new file mode 100644 index 00000000..2fd27e1d --- /dev/null +++ b/docs/docs/commands/generic/objectfreq.mdx @@ -0,0 +1,49 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# OBJECTFREQ + +### Syntax +``` +OBJECTFREQ keys +``` + +### Module +generic + +### Categories +keyspace +read +slow + +### Description +Get the time in seconds since the last access to the value stored at the key. +The command is only available when the maxmemory-policy configuration directive is set to one of the LRU policies. +This command returns an integer representing the access frequency. If the key doesn't exist -1 and an error is returned. + +### Examples + + + + Get a key's access frequency: + ```go + vault, err := echovault.NewEchoVault() + if err != nil { + log.Fatal(err) + } + freq, err := vault.ObjectFreq("key") + ``` + + + Get the access frequency of a key: + ``` + > OBJECTFREQ key + ``` + + diff --git a/docs/docs/commands/generic/objectidletime.mdx b/docs/docs/commands/generic/objectidletime.mdx new file mode 100644 index 00000000..2f6ab302 --- /dev/null +++ b/docs/docs/commands/generic/objectidletime.mdx @@ -0,0 +1,50 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# OBJECTIDLETIME + +### Syntax +``` +OBJECTIDLETIME key +``` + +### Module +generic + +### Categories +keyspace +read +slow + +### Description +Get the time in seconds since the last access to the value stored at the key. +The command is only available when the maxmemory-policy configuration directive is set to one of the LRU policies. +This commands returns a float representing the seconds since the key was last accessed. If the key doesn't exist -1 +and an error is returned. + +### Examples + + + + Get a key's idle time: + ```go + vault, err := echovault.NewEchoVault() + if err != nil { + log.Fatal(err) + } + idletime, err := vault.ObjectIdleTime("key") + ``` + + + Get the idle time of a key: + ``` + > OBJECTIDLETIME key + ``` + + diff --git a/docs/docs/commands/generic/touch.mdx b/docs/docs/commands/generic/touch.mdx new file mode 100644 index 00000000..2553a429 --- /dev/null +++ b/docs/docs/commands/generic/touch.mdx @@ -0,0 +1,62 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# TOUCH + +### Syntax +``` +TOUCH keys [key ...] +``` + +### Module +generic + +### Categories +keyspace +read +fast + +### Description +Alters the last access time or access count of the key(s) depending on whether LFU or LRU strategy was used. +A key is ignored if it does not exist. This commands returns the number of keys that were touched. + +### Examples + + + + Touch a key: + ```go + vault, err := echovault.NewEchoVault() + if err != nil { + log.Fatal(err) + } + touched, err := vault.Touch("key1") + ``` + + Touch multiple keys: + ```go + vault, err := echovault.NewEchoVault() + if err != nil { + log.Fatal(err) + } + touched, err := vault.Touch("key1", "key2", "key3") + ``` + + + Touch a key: + ``` + > TOUCH key1 + ``` + + Touch multiple keys: + ``` + > TOUCH key1 key2 key3 + ``` + + diff --git a/echovault/api_generic.go b/echovault/api_generic.go index 0f5bbe44..1df10acd 100644 --- a/echovault/api_generic.go +++ b/echovault/api_generic.go @@ -646,3 +646,57 @@ func (server *EchoVault) GetEx(key string, opts GetExOptions) (string, error) { } return internal.ParseStringResponse(b) } + +// Touch Alters the last access time or access count of the key(s) depending on whether LFU or LRU strategy was used. +// A key is ignored if it does not exist. +// +// Parameters: +// +// `keys` - ...string - the keys whose access time or access count should be incremented based on eviction policy. +// +// Returns: An integer representing the number of keys successfully touched. If a key doesn't exist it is simply ignored. +func (server *EchoVault) Touch(keys ...string) (int, error) { + cmd := make([]string, len(keys)+1) + cmd[0] = "TOUCH" + for i, k := range keys { + cmd[i+1] = k + } + + b, err := server.handleCommand(server.context, internal.EncodeCommand(cmd), nil, false, true) + if err != nil { + return -1, err + } + return internal.ParseIntegerResponse(b) +} + +// ObjectFreq retrieves the access frequency count of an object stored at . +// The command is only available when the maxmemory-policy configuration directive is set to one of the LFU policies. +// +// Parameters: +// +// `key` - string - the key whose access frequency should be retrieved. +// +// Returns: An integer representing the access frequency. If the key doesn't exist -1 and an error is returned. +func (server *EchoVault) ObjectFreq(key string) (int, error) { + b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"OBJECTFREQ", key}), nil, false, true) + if err != nil { + return -1, err + } + return internal.ParseIntegerResponse(b) +} + +// ObjectIdleTime retrieves the time in seconds since the last access to the value stored at . +// The command is only available when the maxmemory-policy configuration directive is set to one of the LRU policies. +// +// Parameters: +// +// `key` - string - the key whose last access time should be retrieved. +// +// Returns: A float64 representing the seconds since the key was last accessed. If the key doesn't exist -1 and an error is returned. +func (server *EchoVault) ObjectIdleTime(key string) (float64, error) { + b, err := server.handleCommand(server.context, internal.EncodeCommand([]string{"OBJECTIDLETIME", key}), nil, false, true) + if err != nil { + return -1, err + } + return internal.ParseFloatResponse(b) +} diff --git a/echovault/api_generic_test.go b/echovault/api_generic_test.go index 428de624..d3f8c773 100644 --- a/echovault/api_generic_test.go +++ b/echovault/api_generic_test.go @@ -24,6 +24,8 @@ import ( "github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal/clock" + "github.com/echovault/echovault/internal/config" + "github.com/echovault/echovault/internal/constants" ) func TestEchoVault_DEL(t *testing.T) { @@ -1377,7 +1379,7 @@ func TestEchoVault_GETDEL(t *testing.T) { return } } - //Check value received + // Check value received got, err := server.GetDel(tt.key) if (err != nil) != tt.wantErr { t.Errorf("GETDEL() error = %v, wantErr %v", err, tt.wantErr) @@ -1386,7 +1388,7 @@ func TestEchoVault_GETDEL(t *testing.T) { if got != tt.want { t.Errorf("GETDEL() got = %v, want %v", got, tt.want) } - //Check key was deleted + // Check key was deleted if tt.presetValue != nil { got, err := server.Get(tt.key) if (err != nil) != tt.wantErr { @@ -1514,7 +1516,7 @@ func TestEchoVault_GETEX(t *testing.T) { return } } - //Check value received + // Check value received got, err := server.GetEx(tt.key, tt.getExOpts) if (err != nil) != tt.wantErr { t.Errorf("GETEX() GET error = %v, wantErr %v", err, tt.wantErr) @@ -1523,7 +1525,7 @@ func TestEchoVault_GETEX(t *testing.T) { if got != tt.want { t.Errorf("GETEX() GET - got = %v, want %v", got, tt.want) } - //Check expiry was set + // Check expiry was set if tt.presetValue != nil { actual, err := server.TTL(tt.key) if (err != nil) != tt.wantErr { @@ -1537,3 +1539,211 @@ func TestEchoVault_GETEX(t *testing.T) { }) } } + +// Tests Touch and OBJECTFREQ commands +func TestEchoVault_LFU_TOUCH(t *testing.T) { + + duration := time.Duration(30) * time.Second + + server := createEchoVaultWithConfig(config.Config{ + DataDir: "", + EvictionPolicy: constants.AllKeysLFU, + EvictionInterval: duration, + MaxMemory: 4000000, + }) + + tests := []struct { + name string + keys []string + setKeys []bool + want int + wantErrs []bool + }{ + { + name: "1. Touch key that exists.", + keys: []string{"Key1"}, + setKeys: []bool{true}, + want: 1, + wantErrs: []bool{false}, + }, + { + name: "2. Touch key that doesn't exist.", + keys: []string{"Key2"}, + setKeys: []bool{false}, + want: 0, + wantErrs: []bool{true}, + }, + { + name: "3. Touch multiple keys that all exist.", + keys: []string{"Key3", "Key3.1"}, + setKeys: []bool{true, true}, + want: 2, + wantErrs: []bool{false, false}, + }, + { + name: "4. Touch multiple keys, some don't exist.", + keys: []string{"Key4", "Key4.9"}, + setKeys: []bool{true, false}, + want: 1, + wantErrs: []bool{false, true}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Preset values + for i, key := range tt.keys { + if tt.setKeys[i] { + err := presetValue(server, context.Background(), key, "___") + if err != nil { + t.Error(err) + return + } + } + } + + // Touch keys + got, err := server.Touch(tt.keys...) + if err != nil { + t.Errorf("TOUCH() error - %v", err) + } + + if got != tt.want { + t.Errorf("TOUCH() got %v, want %v, using keys %v setKeys %v", got, tt.want, tt.keys, tt.setKeys) + } + + // Another touch to help testing object freq + got, err = server.Touch(tt.keys...) + if err != nil { + t.Errorf("TOUCH() error - %v", err) + } + + if got != tt.want { + t.Errorf("TOUCH() got %v, want %v, using keys %v setKeys %v", got, tt.want, tt.keys, tt.setKeys) + } + + // Wait to avoid race + ticker := time.NewTicker(200 * time.Millisecond) + <-ticker.C + ticker.Stop() + + // Objectfreq + for i, key := range tt.keys { + actual, err := server.ObjectFreq(key) + if (err != nil) != tt.wantErrs[i] { + t.Errorf("OBJECTFREQ() error: %v, wanted error: %v", err, tt.wantErrs[i]) + } + if !tt.wantErrs[i] && actual != 3 { + t.Errorf("OBJECTFREQ() error - expected 3 got %v for key %v", actual, key) + } + + // Check error for object idletime + _, err = server.ObjectIdleTime(key) + if err == nil { + t.Errorf("OBJECTIDLETIME() error - expected error when used on server with lfu eviction policy but got none.") + } + + } + + }) + } +} + +// Tests Touch and OBJECTIDLETIME commands +func TestEchoVault_LRU_TOUCH(t *testing.T) { + + duration := time.Duration(30) * time.Second + + server := createEchoVaultWithConfig(config.Config{ + DataDir: "", + EvictionPolicy: constants.AllKeysLRU, + EvictionInterval: duration, + MaxMemory: 4000000, + }) + + tests := []struct { + name string + keys []string + setKeys []bool + want int + wantErrs []bool + }{ + { + name: "1. Touch key that exists.", + keys: []string{"Key1"}, + setKeys: []bool{true}, + want: 1, + wantErrs: []bool{false}, + }, + { + name: "2. Touch key that doesn't exist.", + keys: []string{"Key2"}, + setKeys: []bool{false}, + want: 0, + wantErrs: []bool{true}, + }, + { + name: "3. Touch multiple keys that all exist.", + keys: []string{"Key3", "Key3.1"}, + setKeys: []bool{true, true}, + want: 2, + wantErrs: []bool{false, false}, + }, + { + name: "4. Touch multiple keys, some don't exist.", + keys: []string{"Key4", "Key4.9"}, + setKeys: []bool{true, false}, + want: 1, + wantErrs: []bool{false, true}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + // Preset values + for i, key := range tt.keys { + if tt.setKeys[i] { + err := presetValue(server, context.Background(), key, "___") + if err != nil { + t.Error(err) + return + } + } + } + + // Touch keys + got, err := server.Touch(tt.keys...) + if err != nil { + t.Errorf("TOUCH() error - %v", err) + } + + if got != tt.want { + t.Errorf("TOUCH() got %v, want %v, using keys %v setKeys %v", got, tt.want, tt.keys, tt.setKeys) + } + + // Sleep to more easily test Object idle time + ticker := time.NewTicker(200 * time.Millisecond) + <-ticker.C + ticker.Stop() + + // Objectidletime + for i, key := range tt.keys { + actual, err := server.ObjectIdleTime(key) + if (err != nil) != tt.wantErrs[i] { + t.Errorf("OBJECTIDLETIME() error: %v, wanted error: %v", err, tt.wantErrs[i]) + } + if !tt.wantErrs[i] && actual < 0.2 { + t.Errorf("OBJECTIDLETIME() error - expected 0.2 got %v", actual) + } + + // Check error for object freq + _, err = server.ObjectFreq(key) + if err == nil { + t.Errorf("OBJECTFREQ() error - expected error when used on server with lru eviction policy but got none.") + } + + } + + }) + } +} diff --git a/echovault/echovault.go b/echovault/echovault.go index d2f60754..7886de94 100644 --- a/echovault/echovault.go +++ b/echovault/echovault.go @@ -85,14 +85,14 @@ type EchoVault struct { // LFU cache used when eviction policy is allkeys-lfu or volatile-lfu. lfuCache struct { // Mutex as only one goroutine can edit the LFU cache at a time. - mutex sync.Mutex + mutex *sync.Mutex // LFU cache for each database represented by a min heap. cache map[int]*eviction.CacheLFU } // LRU cache used when eviction policy is allkeys-lru or volatile-lru. lruCache struct { // Mutex as only one goroutine can edit the LRU at a time. - mutex sync.Mutex + mutex *sync.Mutex // LRU cache represented by a max heap. cache map[int]*eviction.CacheLRU } @@ -522,6 +522,7 @@ func (server *EchoVault) handleConnection(conn net.Conn) { break } if err != nil { + log.Println(err) if _, err = w.Write([]byte(fmt.Sprintf("-Error %s\r\n", err.Error()))); err != nil { log.Println(err) } @@ -651,18 +652,18 @@ func (server *EchoVault) ShutDown() { func (server *EchoVault) initialiseCaches() { // Set up LFU cache. server.lfuCache = struct { - mutex sync.Mutex + mutex *sync.Mutex cache map[int]*eviction.CacheLFU }{ - mutex: sync.Mutex{}, + mutex: &sync.Mutex{}, cache: make(map[int]*eviction.CacheLFU), } // set up LRU cache. server.lruCache = struct { - mutex sync.Mutex + mutex *sync.Mutex cache map[int]*eviction.CacheLRU }{ - mutex: sync.Mutex{}, + mutex: &sync.Mutex{}, cache: make(map[int]*eviction.CacheLRU), } // Initialise caches for each preloaded database. diff --git a/echovault/keyspace.go b/echovault/keyspace.go index d1a61824..6ee3e5a6 100644 --- a/echovault/keyspace.go +++ b/echovault/keyspace.go @@ -82,12 +82,6 @@ func (server *EchoVault) Flush(database int) { server.keysWithExpiry.rwMutex.Lock() defer server.keysWithExpiry.rwMutex.Unlock() - server.lfuCache.mutex.Lock() - defer server.lfuCache.mutex.Unlock() - - server.lruCache.mutex.Lock() - defer server.lruCache.mutex.Unlock() - if database == -1 { for db, _ := range server.store { // Clear db store. @@ -95,9 +89,13 @@ func (server *EchoVault) Flush(database int) { // Clear db volatile key tracker. clear(server.keysWithExpiry.keys[db]) // Clear db LFU cache. - server.lfuCache.cache[db] = eviction.NewCacheLFU() + server.lfuCache.cache[db].Mutex.Lock() + server.lfuCache.cache[db].Flush() + server.lfuCache.cache[db].Mutex.Unlock() // Clear db LRU cache. - server.lruCache.cache[db] = eviction.NewCacheLRU() + server.lruCache.cache[db].Mutex.Lock() + server.lruCache.cache[db].Flush() + server.lruCache.cache[db].Mutex.Unlock() } return } @@ -107,9 +105,13 @@ func (server *EchoVault) Flush(database int) { // Clear db volatile key tracker. clear(server.keysWithExpiry.keys[database]) // Clear db LFU cache. - server.lfuCache.cache[database] = eviction.NewCacheLFU() + server.lfuCache.cache[database].Mutex.Lock() + server.lfuCache.cache[database].Flush() + server.lfuCache.cache[database].Mutex.Unlock() // Clear db LRU cache. - server.lruCache.cache[database] = eviction.NewCacheLRU() + server.lruCache.cache[database].Mutex.Lock() + server.lruCache.cache[database].Flush() + server.lruCache.cache[database].Mutex.Unlock() } func (server *EchoVault) keysExist(ctx context.Context, keys []string) map[string]bool { @@ -185,7 +187,7 @@ func (server *EchoVault) getValues(ctx context.Context, keys []string) map[strin // Asynchronously update the keys in the cache. go func(ctx context.Context, keys []string) { - if err := server.updateKeysInCache(ctx, keys); err != nil { + if _, err := server.updateKeysInCache(ctx, keys); err != nil { log.Printf("getValues error: %+v\n", err) } }(ctx, keys) @@ -225,7 +227,7 @@ func (server *EchoVault) setValues(ctx context.Context, entries map[string]inter // Asynchronously update the keys in the cache. go func(ctx context.Context, entries map[string]interface{}) { for key, _ := range entries { - err := server.updateKeysInCache(ctx, []string{key}) + _, err := server.updateKeysInCache(ctx, []string{key}) if err != nil { log.Printf("setValues error: %+v\n", err) } @@ -256,7 +258,7 @@ func (server *EchoVault) setExpiry(ctx context.Context, key string, expireAt tim // If touch is true, update the keys status in the cache. if touch { go func(ctx context.Context, key string) { - err := server.updateKeysInCache(ctx, []string{key}) + _, err := server.updateKeysInCache(ctx, []string{key}) if err != nil { log.Printf("setExpiry error: %+v\n", err) } @@ -331,45 +333,54 @@ func (server *EchoVault) getState() map[int]map[string]interface{} { // updateKeysInCache updates either the key access count or the most recent access time in the cache // depending on whether an LFU or LRU strategy was used. -func (server *EchoVault) updateKeysInCache(ctx context.Context, keys []string) error { +func (server *EchoVault) updateKeysInCache(ctx context.Context, keys []string) (int64, error) { database := ctx.Value("Database").(int) + var touchCounter int64 + + // Only update cache when in standalone mode or when raft leader. + if server.isInCluster() || (server.isInCluster() && !server.raft.IsRaftLeader()) { + return touchCounter, nil + } + // If max memory is 0, there's no max so no need to update caches. + if server.config.MaxMemory == 0 { + return touchCounter, nil + } + + server.storeLock.Lock() + defer server.storeLock.Unlock() for _, key := range keys { - // Only update cache when in standalone mode or when raft leader. - if server.isInCluster() || (server.isInCluster() && !server.raft.IsRaftLeader()) { - return nil - } - // If max memory is 0, there's no max so no need to update caches. - if server.config.MaxMemory == 0 { - return nil + // Verify key exists + if _, ok := server.store[database][key]; !ok { + continue } + + touchCounter++ + switch strings.ToLower(server.config.EvictionPolicy) { case constants.AllKeysLFU: - server.lfuCache.mutex.Lock() + server.lfuCache.cache[database].Mutex.Lock() server.lfuCache.cache[database].Update(key) - server.lfuCache.mutex.Unlock() + server.lfuCache.cache[database].Mutex.Unlock() case constants.AllKeysLRU: - server.lruCache.mutex.Lock() + server.lruCache.cache[database].Mutex.Lock() server.lruCache.cache[database].Update(key) - server.lruCache.mutex.Unlock() + server.lruCache.cache[database].Mutex.Unlock() case constants.VolatileLFU: - server.lfuCache.mutex.Lock() + server.lfuCache.cache[database].Mutex.Lock() if server.store[database][key].ExpireAt != (time.Time{}) { server.lfuCache.cache[database].Update(key) } - server.lfuCache.mutex.Unlock() + server.lfuCache.cache[database].Mutex.Unlock() case constants.VolatileLRU: - server.lruCache.mutex.Lock() + server.lruCache.cache[database].Mutex.Lock() if server.store[database][key].ExpireAt != (time.Time{}) { server.lruCache.cache[database].Update(key) } - server.lruCache.mutex.Unlock() + server.lruCache.cache[database].Mutex.Unlock() } } - server.storeLock.Lock() - defer server.storeLock.Unlock() - wg := sync.WaitGroup{} errChan := make(chan error) doneChan := make(chan struct{}) @@ -379,7 +390,7 @@ func (server *EchoVault) updateKeysInCache(ctx context.Context, keys []string) e ctx := context.WithValue(ctx, "Database", db) go func(ctx context.Context, database int, wg *sync.WaitGroup, errChan *chan error) { if err := server.adjustMemoryUsage(ctx); err != nil { - *errChan <- fmt.Errorf("adjustMemoryUsade database %d", database) + *errChan <- fmt.Errorf("adjustMemoryUsage database %d, error: %v", database, err) } wg.Done() }(ctx, db, &wg, &errChan) @@ -392,11 +403,11 @@ func (server *EchoVault) updateKeysInCache(ctx context.Context, keys []string) e select { case err := <-errChan: - return fmt.Errorf("adjustMemoryUsage error: %+v", err) + return touchCounter, fmt.Errorf("adjustMemoryUsage error: %+v", err) case <-doneChan: } - return nil + return touchCounter, nil } // adjustMemoryUsage should only be called from standalone echovault or from raft cluster leader. @@ -422,6 +433,7 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { if memStats.HeapInuse < server.config.MaxMemory { return nil } + // We've done a GC, but we're still at or above the max memory limit. // Start a loop that evicts keys until either the heap is empty or // we're below the max memory limit. @@ -429,8 +441,8 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { case slices.Contains([]string{constants.AllKeysLFU, constants.VolatileLFU}, strings.ToLower(server.config.EvictionPolicy)): // Remove keys from LFU cache until we're below the max memory limit or // until the LFU cache is empty. - server.lfuCache.mutex.Lock() - defer server.lfuCache.mutex.Unlock() + server.lfuCache.cache[database].Mutex.Lock() + defer server.lfuCache.cache[database].Mutex.Unlock() for { // Return if cache is empty if server.lfuCache.cache[database].Len() == 0 { @@ -441,6 +453,7 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { if !server.isInCluster() { // If in standalone mode, directly delete the key if err := server.deleteKey(ctx, key); err != nil { + log.Printf("Evicting key %v from database %v \n", key, database) return fmt.Errorf("adjustMemoryUsage -> LFU cache eviction: %+v", err) } } else if server.isInCluster() && server.raft.IsRaftLeader() { @@ -460,8 +473,8 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { case slices.Contains([]string{constants.AllKeysLRU, constants.VolatileLRU}, strings.ToLower(server.config.EvictionPolicy)): // Remove keys from th LRU cache until we're below the max memory limit or // until the LRU cache is empty. - server.lruCache.mutex.Lock() - defer server.lruCache.mutex.Unlock() + server.lruCache.cache[database].Mutex.Lock() + defer server.lruCache.cache[database].Mutex.Unlock() for { // Return if cache is empty if server.lruCache.cache[database].Len() == 0 { @@ -472,6 +485,7 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { if !server.isInCluster() { // If in standalone mode, directly delete the key. if err := server.deleteKey(ctx, key); err != nil { + log.Printf("Evicting key %v from database %v \n", key, database) return fmt.Errorf("adjustMemoryUsage -> LRU cache eviction: %+v", err) } } else if server.isInCluster() && server.raft.IsRaftLeader() { @@ -508,6 +522,7 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { if !server.isInCluster() { // If in standalone mode, directly delete the key if err := server.deleteKey(ctx, key); err != nil { + log.Printf("Evicting key %v from database %v \n", key, db) return fmt.Errorf("adjustMemoryUsage -> all keys random: %+v", err) } } else if server.isInCluster() && server.raft.IsRaftLeader() { @@ -541,6 +556,7 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { if !server.isInCluster() { // If in standalone mode, directly delete the key if err := server.deleteKey(ctx, key); err != nil { + log.Printf("Evicting key %v from database %v \n", key, database) return fmt.Errorf("adjustMemoryUsage -> volatile keys random: %+v", err) } } else if server.isInCluster() && server.raft.IsRaftLeader() { @@ -664,3 +680,46 @@ func (server *EchoVault) randomKey(ctx context.Context) string { return randkey } + +func (server *EchoVault) getObjectFreq(ctx context.Context, key string) (int, error) { + database := ctx.Value("Database").(int) + + var freq int + var err error + if server.lfuCache.cache != nil { + server.lfuCache.cache[database].Mutex.Lock() + freq, err = server.lfuCache.cache[database].GetCount(key) + server.lfuCache.cache[database].Mutex.Unlock() + } else { + return -1, errors.New("error: eviction policy must be a type of LFU") + } + + if err != nil { + return -1, err + } + + return freq, nil +} + +func (server *EchoVault) getObjectIdleTime(ctx context.Context, key string) (float64, error) { + database := ctx.Value("Database").(int) + + var accessTime int64 + var err error + if server.lruCache.cache != nil { + server.lruCache.cache[database].Mutex.Lock() + accessTime, err = server.lruCache.cache[database].GetTime(key) + server.lruCache.cache[database].Mutex.Unlock() + } else { + return -1, errors.New("error: eviction policy must be a type of LRU") + } + + if err != nil { + return -1, err + } + + lastAccess := time.UnixMilli(accessTime) + secs := time.Now().Sub(lastAccess).Seconds() + + return secs, nil +} diff --git a/echovault/modules.go b/echovault/modules.go index 7505e4f9..1287d674 100644 --- a/echovault/modules.go +++ b/echovault/modules.go @@ -58,7 +58,10 @@ func (server *EchoVault) getHandlerFuncParams(ctx context.Context, cmd []string, GetAllCommands: server.getCommands, GetClock: server.getClock, Flush: server.Flush, - Randomkey: server.randomKey, + Randomkey: server.randomKey, + Touchkey: server.updateKeysInCache, + GetObjectFrequency: server.getObjectFreq, + GetObjectIdleTime: server.getObjectIdleTime, SwapDBs: server.SwapDBs, GetServerInfo: server.GetServerInfo, DeleteKey: func(ctx context.Context, key string) error { diff --git a/internal/eviction/lfu.go b/internal/eviction/lfu.go index 1a2405d9..59a0de29 100644 --- a/internal/eviction/lfu.go +++ b/internal/eviction/lfu.go @@ -16,7 +16,10 @@ package eviction import ( "container/heap" + "errors" + "fmt" "slices" + "sync" "time" ) @@ -30,17 +33,39 @@ type EntryLFU struct { type CacheLFU struct { keys map[string]bool entries []*EntryLFU + Mutex *sync.Mutex // Lock for retrieving count } func NewCacheLFU() *CacheLFU { cache := CacheLFU{ keys: make(map[string]bool), entries: make([]*EntryLFU, 0), + Mutex: &sync.Mutex{}, } heap.Init(&cache) return &cache } +func (cache *CacheLFU) GetCount(key string) (int, error) { + + entryIdx := slices.IndexFunc(cache.entries, func(e *EntryLFU) bool { + return e.key == key + }) + + if entryIdx > -1 { + entry := cache.entries[entryIdx] + return entry.count, nil + } else { + return -1, errors.New(fmt.Sprintf("Key: %s does not exist.", key)) + } + +} + +func (cache *CacheLFU) Flush() { + clear(cache.keys) + clear(cache.entries) +} + func (cache *CacheLFU) Len() int { return len(cache.entries) } @@ -83,6 +108,7 @@ func (cache *CacheLFU) Pop() any { } func (cache *CacheLFU) Update(key string) { + // If the key is not contained in the cache, push it. if !cache.contains(key) { heap.Push(cache, key) diff --git a/internal/eviction/lru.go b/internal/eviction/lru.go index 46ffe58c..959bd46c 100644 --- a/internal/eviction/lru.go +++ b/internal/eviction/lru.go @@ -16,7 +16,10 @@ package eviction import ( "container/heap" + "errors" + "fmt" "slices" + "sync" "time" ) @@ -29,17 +32,37 @@ type EntryLRU struct { type CacheLRU struct { keys map[string]bool entries []*EntryLRU + Mutex *sync.Mutex // Lock for retrieving unixTime } func NewCacheLRU() *CacheLRU { cache := CacheLRU{ keys: make(map[string]bool), entries: make([]*EntryLRU, 0), + Mutex: &sync.Mutex{}, } heap.Init(&cache) return &cache } +func (cache *CacheLRU) GetTime(key string) (int64, error) { + + entryIdx := slices.IndexFunc(cache.entries, func(e *EntryLRU) bool { + return e.key == key + }) + if entryIdx > -1 { + entry := cache.entries[entryIdx] + return entry.unixTime, nil + } else { + return -1, errors.New(fmt.Sprintf("Error: key %s does not exist.", key)) + } +} + +func (cache *CacheLRU) Flush() { + clear(cache.keys) + clear(cache.entries) +} + func (cache *CacheLRU) Len() int { return len(cache.entries) } @@ -75,6 +98,7 @@ func (cache *CacheLRU) Pop() any { } func (cache *CacheLRU) Update(key string) { + // If the key does not already exist in the cache, then push it if !cache.contains(key) { heap.Push(cache, key) diff --git a/internal/modules/generic/commands.go b/internal/modules/generic/commands.go index 5c99c652..3b6a8709 100644 --- a/internal/modules/generic/commands.go +++ b/internal/modules/generic/commands.go @@ -826,6 +826,49 @@ func handleType(params internal.HandlerFuncParams) ([]byte, error) { return []byte(fmt.Sprintf("+%v\r\n", type_string)), nil } +func handleTouch(params internal.HandlerFuncParams) ([]byte, error) { + keys, err := touchKeyFunc(params.Command) + if err != nil { + return nil, err + } + + touchedKeys, err := params.Touchkey(params.Context, keys.ReadKeys) + if err != nil { + return nil, err + } + + return []byte(fmt.Sprintf("+%v\r\n", touchedKeys)), nil +} + +func handleObjFreq(params internal.HandlerFuncParams) ([]byte, error) { + key, err := objFreqKeyFunc(params.Command) + if err != nil { + return nil, err + } + + freq, err := params.GetObjectFrequency(params.Context, key.ReadKeys[0]) + + if err != nil { + return nil, err + } + + return []byte(fmt.Sprintf("+%v\r\n", freq)), nil +} + +func handleObjIdleTime(params internal.HandlerFuncParams) ([]byte, error) { + key, err := objIdleTimeKeyFunc(params.Command) + if err != nil { + return nil, err + } + + idletime, err := params.GetObjectIdleTime(params.Context, key.ReadKeys[0]) + if err != nil { + return nil, err + } + + return []byte(fmt.Sprintf("+%v\r\n", idletime)), nil +} + func Commands() []internal.Command { return []internal.Command{ { @@ -1136,5 +1179,35 @@ Delete all the keys in the currently selected database. This command is always s KeyExtractionFunc: typeKeyFunc, HandlerFunc: handleType, }, + { + Command: "touch", + Module: constants.GenericModule, + Categories: []string{constants.KeyspaceCategory, constants.ReadCategory, constants.FastCategory}, + Description: `(TOUCH keys [key ...]) Alters the last access time or access count of the key(s) depending on whether LFU or LRU strategy was used. +A key is ignored if it does not exist. This commands returns the number of keys that were touched.`, + Sync: true, + KeyExtractionFunc: touchKeyFunc, + HandlerFunc: handleTouch, + }, + { + Command: "objectfreq", + Module: constants.GenericModule, + Categories: []string{constants.KeyspaceCategory, constants.ReadCategory, constants.SlowCategory}, + Description: `(OBJECTFREQ key) Get the access frequency count of an object stored at . +The command is only available when the maxmemory-policy configuration directive is set to one of the LFU policies.`, + Sync: false, + KeyExtractionFunc: objFreqKeyFunc, + HandlerFunc: handleObjFreq, + }, + { + Command: "objectidletime", + Module: constants.GenericModule, + Categories: []string{constants.KeyspaceCategory, constants.ReadCategory, constants.SlowCategory}, + Description: `(OBJECTIDLETIME key) Get the time in seconds since the last access to the value stored at . +The command is only available when the maxmemory-policy configuration directive is set to one of the LRU policies.`, + Sync: false, + KeyExtractionFunc: objIdleTimeKeyFunc, + HandlerFunc: handleObjIdleTime, + }, } } diff --git a/internal/modules/generic/commands_test.go b/internal/modules/generic/commands_test.go index c17e1bd9..f3180e3c 100644 --- a/internal/modules/generic/commands_test.go +++ b/internal/modules/generic/commands_test.go @@ -37,6 +37,7 @@ type KeyData struct { ExpireAt time.Time } +// Testing against a server with no eviction policy. func Test_Generic(t *testing.T) { mockClock := clock.NewClock() port, err := internal.GetFreePort() @@ -3172,69 +3173,69 @@ func Test_Generic(t *testing.T) { }{ { name: "Test TYPE with preset string value", - key: "TypeTestString", + key: "TypeKeyString", presetValue: "Hello", - command: []string{"TYPE", "TypeTestString"}, + command: []string{"TYPE", "TypeKeyString"}, expectedResponse: "string", expectedError: nil, }, { name: "Test TYPE with preset integer value", - key: "TypeTestInteger", + key: "TypeKeyInteger", presetValue: 1, - command: []string{"TYPE", "TypeTestInteger"}, + command: []string{"TYPE", "TypeKeyInteger"}, expectedResponse: "integer", expectedError: nil, }, { name: "Test TYPE with preset float value", - key: "TypeTestFloat", + key: "TypeKeyFloat", presetValue: 1.12, - command: []string{"TYPE", "TypeTestFloat"}, + command: []string{"TYPE", "TypeKeyFloat"}, expectedResponse: "float", expectedError: nil, }, { name: "Test TYPE with preset set value", - key: "TypeTestSet", + key: "TypeKeySet", presetValue: set.NewSet([]string{"one", "two", "three", "four"}), - command: []string{"TYPE", "TypeTestSet"}, + command: []string{"TYPE", "TypeKeySet"}, expectedResponse: "set", expectedError: nil, }, { name: "Test TYPE with preset list value", - key: "TypeTestList", + key: "TypeKeyList", presetValue: []string{"value1", "value2", "value3", "value4"}, - command: []string{"TYPE", "TypeTestList"}, + command: []string{"TYPE", "TypeKeyList"}, expectedResponse: "list", expectedError: nil, }, { name: "Test TYPE with preset list of integers value", - key: "TypeTestList2", + key: "TypeKeyList2", presetValue: []int{1, 2, 3, 4}, - command: []string{"TYPE", "TypeTestList2"}, + command: []string{"TYPE", "TypeKeyList2"}, expectedResponse: "list", expectedError: nil, }, { name: "Test TYPE with preset zset of integers value", - key: "TypeTestZSet", + key: "TypeKeyZSet", presetValue: sorted_set.NewSortedSet([]sorted_set.MemberParam{ {Value: "member1", Score: sorted_set.Score(5.5)}, {Value: "member2", Score: sorted_set.Score(67.77)}, {Value: "member3", Score: sorted_set.Score(10)}, }), - command: []string{"TYPE", "TypeTestZSet"}, + command: []string{"TYPE", "TypeKeyZSet"}, expectedResponse: "zset", expectedError: nil, }, { name: "Test TYPE with preset hash of map[string]string", - key: "TypeTestHash", + key: "TypeKeyHash", presetValue: map[string]string{"field1": "value1"}, - command: []string{"TYPE", "TypeTestHash"}, + command: []string{"TYPE", "TypeKeyHash"}, expectedResponse: "hash", expectedError: nil, }, @@ -3332,3 +3333,360 @@ func Test_Generic(t *testing.T) { } }) } + +// Certain commands will need to be tested in a server with an eviction policy. +// This is for testing against an LFU evictiona policy. +func Test_LFU_Generic(t *testing.T) { + // mockClock := clock.NewClock() + port, err := internal.GetFreePort() + if err != nil { + t.Error(err) + return + } + + duration := time.Duration(30) * time.Second + + mockServer, err := echovault.NewEchoVault( + echovault.WithConfig(config.Config{ + BindAddr: "localhost", + Port: uint16(port), + DataDir: "", + EvictionPolicy: constants.AllKeysLFU, + EvictionInterval: duration, + MaxMemory: 4000000, + }), + ) + if err != nil { + t.Error(err) + return + } + + go func() { + mockServer.Start() + }() + + t.Cleanup(func() { + mockServer.ShutDown() + }) + + // Tests TOUCH and OBJECT FREQ + t.Run("Test_HandleTOUCH", func(t *testing.T) { + t.Parallel() + conn, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + defer func() { + _ = conn.Close() + }() + client := resp.NewConn(conn) + + tests := []struct { + name string + keys []string + setKeys []bool + wantErrs []bool + expected int64 + }{ + { + name: "1. Touch key that exists.", + keys: []string{"TouchKey1"}, + setKeys: []bool{true}, + wantErrs: []bool{false}, + expected: 1, + }, + { + name: "2. Touch multiple keys that exist.", + keys: []string{"TouchKey2", "TouchKey2.1", "TouchKey2.2"}, + setKeys: []bool{true, true, true}, + wantErrs: []bool{false, false, false}, + expected: 3, + }, + { + name: "3. Touch multiple keys, some don't exist.", + keys: []string{"TouchKey3", "TouchKey3.1", "TouchKey3.9", "TouchKey3.0"}, + setKeys: []bool{true, true, false, false}, + wantErrs: []bool{false, false, true, true}, + expected: 2, + }, + { + name: "4. Touch key that doesn't exist.", + keys: []string{"TouchKey4"}, + setKeys: []bool{false}, + wantErrs: []bool{true}, + expected: 0, + }, + } + + for _, tt := range tests { + + t.Run(tt.name, func(t *testing.T) { + func(keys []string, setKeys, wantErrs []bool, expected int64) { + // Preset the values + for i, k := range keys { + if setKeys[i] { + command := make([]resp.Value, 3) + command[0] = resp.StringValue("SET") + command[1] = resp.StringValue(k) + command[2] = resp.StringValue("___") + err = client.WriteArray(command) + if err != nil { + t.Error(err) + } + + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + + if !strings.EqualFold(res.String(), "ok") { + t.Errorf("expected preset response to be \"OK\", got %s", res.String()) + } + } + } + + // Verify correct value returned + command := make([]resp.Value, len(keys)+1) + command[0] = resp.StringValue("TOUCH") + for i := 1; i < len(command); i++ { + ki := i - 1 + command[i] = resp.StringValue(keys[ki]) + } + + if err = client.WriteArray(command); err != nil { + t.Error(err) + } + + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + + if int64(res.Integer()) != expected { + t.Errorf("expected value %v, got %v", expected, res.Integer()) + } + + // Touch one more time to test OBJRECT FREQ + if err = client.WriteArray(command); err != nil { + t.Error(err) + } + _, _, err = client.ReadValue() + if err != nil { + t.Error(err) + } + + // Verify access frequency (count field) was updated in lfu cache + for i, k := range keys { + cmd := []resp.Value{ + resp.StringValue("OBJECTFREQ"), + resp.StringValue(k), + } + + if err = client.WriteArray(cmd); err != nil { + t.Error(err) + } + + res, _, err := client.ReadValue() + if wantErrs[i] { + if res.Error() == nil { + t.Errorf("OBJECTFREQ Expected error, got none with value: %v", res.Integer()) + } else { + if res.Integer() != 0 { + t.Errorf("OBJECTFREQ key doesn't exist, expect frequency of 0, go %v", res.Integer()) + } + continue + } + } else if err != nil { + t.Error(err) + } + + if res.Integer() != 3 { + t.Errorf("OBJECTFREQ expected frequency of 3, got %v", res.Integer()) + } + + } + + }(tt.keys, tt.setKeys, tt.wantErrs, tt.expected) + }) + + } + }) + +} + +// Certain commands will need to be tested in a server with an eviction policy. +// This is for testing against an LRU evictiona policy. +func Test_LRU_Generic(t *testing.T) { + // mockClock := clock.NewClock() + port, err := internal.GetFreePort() + if err != nil { + t.Error(err) + return + } + + duration := time.Duration(30) * time.Second + + mockServer, err := echovault.NewEchoVault( + echovault.WithConfig(config.Config{ + BindAddr: "localhost", + Port: uint16(port), + DataDir: "", + EvictionPolicy: constants.AllKeysLRU, + EvictionInterval: duration, + MaxMemory: 4000000, + }), + ) + if err != nil { + t.Error(err) + return + } + + go func() { + mockServer.Start() + }() + + t.Cleanup(func() { + mockServer.ShutDown() + }) + + // Tests TOUCH and OBJECT IDLETIME + t.Run("Test_HandleTOUCH", func(t *testing.T) { + t.Parallel() + conn, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + defer func() { + _ = conn.Close() + }() + client := resp.NewConn(conn) + + tests := []struct { + name string + keys []string + setKeys []bool + wantErrs []bool + expected int64 + }{ + { + name: "1. Touch key that exists.", + keys: []string{"TouchKey1"}, + setKeys: []bool{true}, + wantErrs: []bool{false}, + expected: 1, + }, + { + name: "2. Touch multiple keys that exist.", + keys: []string{"TouchKey2", "TouchKey2.1", "TouchKey2.2"}, + setKeys: []bool{true, true, true}, + wantErrs: []bool{false, false, false}, + expected: 3, + }, + { + name: "3. Touch multiple keys, some don't exist.", + keys: []string{"TouchKey3", "TouchKey3.1", "TouchKey3.9", "TouchKey3.0"}, + setKeys: []bool{true, true, false, false}, + wantErrs: []bool{false, false, true, true}, + expected: 2, + }, + { + name: "4. Touch key that doesn't exist.", + keys: []string{"TouchKey4"}, + setKeys: []bool{false}, + wantErrs: []bool{true}, + expected: 0, + }, + } + + for _, tt := range tests { + + t.Run(tt.name, func(t *testing.T) { + func(keys []string, setKeys, wantErrs []bool, expected int64) { + // Preset the values + for i, k := range keys { + if setKeys[i] { + command := make([]resp.Value, 3) + command[0] = resp.StringValue("SET") + command[1] = resp.StringValue(k) + command[2] = resp.StringValue("___") + err = client.WriteArray(command) + if err != nil { + t.Error(err) + } + + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + + if !strings.EqualFold(res.String(), "ok") { + t.Errorf("expected preset response to be \"OK\", got %s", res.String()) + } + } + } + + // Verify correct value returned + command := make([]resp.Value, len(keys)+1) + command[0] = resp.StringValue("TOUCH") + for i := 1; i < len(command); i++ { + ki := i - 1 + command[i] = resp.StringValue(keys[ki]) + } + + if err = client.WriteArray(command); err != nil { + t.Error(err) + } + + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + + if int64(res.Integer()) != expected { + t.Errorf("expected value %v, got %v", expected, res.Integer()) + } + + // Allow some time to easily verify touch command is successful + time.Sleep(3 * time.Second) + + // Verify access frequency (count field) was updated in lfu cache + for i, k := range keys { + cmd := []resp.Value{ + resp.StringValue("OBJECTIDLETIME"), + resp.StringValue(k), + } + + if err = client.WriteArray(cmd); err != nil { + t.Error(err) + } + + res, _, err := client.ReadValue() + if wantErrs[i] { + if res.Error() == nil { + t.Errorf("OBJECTIDLETIME Expected error, got none with value: %v", res.Float()) + } else { + if res.Float() != 0 { + t.Errorf("OBJECTIDLETIME key doesn't exist, expect idle time of 0, go %v", res.Float()) + } + continue + } + } else if err != nil { + t.Error(err) + } + + if res.Float() < 3 { + t.Errorf("OBJECTIDLETIME expected idle time of at least 3, got %v", res.Float()) + } + + } + + }(tt.keys, tt.setKeys, tt.wantErrs, tt.expected) + }) + + } + + }) + +} diff --git a/internal/modules/generic/key_funcs.go b/internal/modules/generic/key_funcs.go index 57876843..c1a3c776 100644 --- a/internal/modules/generic/key_funcs.go +++ b/internal/modules/generic/key_funcs.go @@ -234,3 +234,36 @@ func typeKeyFunc(cmd []string) (internal.KeyExtractionFuncResult, error) { WriteKeys: make([]string, 0), }, nil } + +func touchKeyFunc(cmd []string) (internal.KeyExtractionFuncResult, error) { + if len(cmd) < 2 { + return internal.KeyExtractionFuncResult{}, errors.New(constants.WrongArgsResponse) + } + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), + ReadKeys: cmd[1:], + WriteKeys: make([]string, 0), + }, nil +} + +func objFreqKeyFunc(cmd []string) (internal.KeyExtractionFuncResult, error) { + if len(cmd) != 2 { + return internal.KeyExtractionFuncResult{}, errors.New(constants.WrongArgsResponse) + } + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), + ReadKeys: cmd[1:], + WriteKeys: make([]string, 0), + }, nil +} + +func objIdleTimeKeyFunc(cmd []string) (internal.KeyExtractionFuncResult, error) { + if len(cmd) != 2 { + return internal.KeyExtractionFuncResult{}, errors.New(constants.WrongArgsResponse) + } + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), + ReadKeys: cmd[1:], + WriteKeys: make([]string, 0), + }, nil +} diff --git a/internal/types.go b/internal/types.go index dd3cff55..23de999f 100644 --- a/internal/types.go +++ b/internal/types.go @@ -145,8 +145,15 @@ type HandlerFuncParams struct { // FlushDB flushes the specified database keys. It accepts the integer index of the database to be flushed. // If -1 is passed as the index, then all databases will be flushed. Flush func(database int) - // Randomkey returns a random key - Randomkey func(ctx context.Context) string + // Randomkey returns a random key + Randomkey func(ctx context.Context) string + // (TOUCH key [key ...]) Alters the last access time or access count of the key(s) depending on whether LFU or LRU strategy was used. + // A key is ignored if it does not exist. + Touchkey func(ctx context.Context, keys []string) (int64, error) + // GetObjectFrequency retrieves the access frequency count of a key. Can only be used with LFU type eviction policies. + GetObjectFrequency func(ctx context.Context, keys string) (int, error) + // GetObjectIdleTime retrieves the time in seconds since the last access of a key. Can only be used with LRU type eviction policies. + GetObjectIdleTime func(ctx context.Context, keys string) (float64, error) } // HandlerFunc is a functions described by a command where the bulk of the command handling is done.