{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":741991694,"defaultBranch":"main","name":"precise-leak-sanitizer","ownerLogin":"hygoni","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-01-11T14:36:40.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/50040414?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1720356435.0","currentOid":""},"activityList":{"items":[{"before":"95ed3a5570f1e2160c365337d21609c7f5ede807","after":null,"ref":"refs/heads/optimize-is-same-object","pushedAt":"2024-07-07T12:47:15.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"}},{"before":"dfe345ad590f4b0792f8e5f8fc0a3e865497321b","after":"86d632e8671ec0c1b3d2c299ed6eb1faf53baf8b","ref":"refs/heads/main","pushedAt":"2024-07-07T12:47:00.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"Merge pull request #118 from hygoni/optimize-is-same-object\n\ncompiler-rt: Optimize IsSameObject()","shortMessageHtmlLink":"Merge pull request #118 from hygoni/optimize-is-same-object"}},{"before":"30d385922e013696b95ef19ac6a8e3abe33d8bfa","after":"95ed3a5570f1e2160c365337d21609c7f5ede807","ref":"refs/heads/optimize-is-same-object","pushedAt":"2024-07-07T12:46:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"compiler-rt: Optimize IsSameObject()\n\nNow that we use multi-level shadow scheme, IsSameObject() doesn't need\nto call GetBlockBegin() which is dozens of times slower. Just check\nif the two metadata from the pointers are the same.\n\nThis improves the slowdowns in SPEC CPU2017 502.gcc_r from 350x to 7x.\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"compiler-rt: Optimize IsSameObject()"}},{"before":null,"after":"30d385922e013696b95ef19ac6a8e3abe33d8bfa","ref":"refs/heads/optimize-is-same-object","pushedAt":"2024-07-07T10:57:20.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"Optimize IsSameObject()\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"Optimize IsSameObject()"}},{"before":"fd5e8a569572e79d42884f83822a73c58b1ee12a","after":null,"ref":"refs/heads/suppress-report-based-on-count","pushedAt":"2024-07-01T13:59:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"}},{"before":"ba04e9e5029119d5404875db64eeea74675165d0","after":"dfe345ad590f4b0792f8e5f8fc0a3e865497321b","ref":"refs/heads/main","pushedAt":"2024-07-01T13:59:12.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"Merge pull request #117 from hygoni/suppress-report-based-on-count\n\ncompiler-rt: do not check leak when certain number of reports","shortMessageHtmlLink":"Merge pull request #117 from hygoni/suppress-report-based-on-count"}},{"before":null,"after":"fd5e8a569572e79d42884f83822a73c58b1ee12a","ref":"refs/heads/suppress-report-based-on-count","pushedAt":"2024-06-30T09:04:43.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"compiler-rt: do not check leak when certain number of reports\n\nWhile running deepsjeng_r, PLSan generates too many false reports\nand we are still investigating it. Because generating leak reports\nis very inefficient, do not even check after certain threshold.","shortMessageHtmlLink":"compiler-rt: do not check leak when certain number of reports"}},{"before":null,"after":"18a6b1e25c9ce02a8a8b51f79b6ee9770ca5b735","ref":"refs/heads/fix-refcount-overflow","pushedAt":"2024-05-21T08:04:47.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"compiler-rt: Ramp up refcount to 32-bit\n\nThis adds 3 more false positives, but they are LSan's false positive\nwithout PLSan report.\n\n - testcases/c++/noleak/class-3.cpp\n - testcases/c++/noleak/class-4.cpp\n - testcases/c++/noleak/frag-1.cpp\n\n...And foo-1.c is not introduced by this commit.\nIt was already there for a while - which should be solved separately.\n\n - testcases/c/noleak/foo-1.c\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"compiler-rt: Ramp up refcount to 32-bit"}},{"before":"d90c6e2626cffc44b569318bdc6c993996b2eb39","after":"f69364c2884f3ada876076f9e10f3c92594914ce","ref":"refs/heads/fix-refcount-overflow-wip","pushedAt":"2024-05-21T06:58:46.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"broken imsi\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"broken imsi"}},{"before":"00f471e497e6d5b2624d8e626d95b023efa47e22","after":"d90c6e2626cffc44b569318bdc6c993996b2eb39","ref":"refs/heads/fix-refcount-overflow-wip","pushedAt":"2024-05-21T06:58:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"broken imsi\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"broken imsi"}},{"before":null,"after":"00f471e497e6d5b2624d8e626d95b023efa47e22","ref":"refs/heads/fix-refcount-overflow-wip","pushedAt":"2024-05-21T01:28:26.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"Nullify freed pointers\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"Nullify freed pointers"}},{"before":"a2b338fedefd0fc894e44bf2b55373336ed55697","after":null,"ref":"refs/heads/optimize-runtime-library","pushedAt":"2024-05-06T01:13:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"}},{"before":"4af5c2f8769e2d974171f4ddd0544d4bcc6e8049","after":"ba04e9e5029119d5404875db64eeea74675165d0","ref":"refs/heads/main","pushedAt":"2024-05-06T01:13:16.000Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"Merge pull request #115 from hygoni/optimize-runtime-library\n\n(Bugfix) commpiler-rt: Do not check memory leak for freed objects","shortMessageHtmlLink":"Merge pull request #115 from hygoni/optimize-runtime-library"}},{"before":null,"after":"a2b338fedefd0fc894e44bf2b55373336ed55697","ref":"refs/heads/optimize-runtime-library","pushedAt":"2024-05-05T09:39:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"commpiler-rt: Do not check memory leak for freed objects\n\nCurrently __plsan_free_local_variable() checks memory leaks for\nalready-freed objects, and this always produces false positives.\nJust skip when encountered a freed object.\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"commpiler-rt: Do not check memory leak for freed objects"}},{"before":"6f79361c10f96592f044e7367fa4a5f819d254c4","after":null,"ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-05-05T06:57:09.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"}},{"before":"fd70bb59d7f3d91661f32372cc194ef8abdb9540","after":"4af5c2f8769e2d974171f4ddd0544d4bcc6e8049","ref":"refs/heads/main","pushedAt":"2024-05-05T06:57:06.000Z","pushType":"pr_merge","commitsCount":10,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"Merge pull request #114 from hygoni/108-implement-fast-metadata-lookup\n\n108 implement fast metadata lookup","shortMessageHtmlLink":"Merge pull request #114 from hygoni/108-implement-fast-metadata-lookup"}},{"before":"7a2111a12059d5ade91586a68c349901149c0434","after":"6f79361c10f96592f044e7367fa4a5f819d254c4","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-15T04:34:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"llvm: use i8* instead of void* in llvm pass\n\nLLVM pass does not have void pointer type.\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"llvm: use i8* instead of void* in llvm pass"}},{"before":"c44e365afb92cf0627a6c8f649e146c6b684b039","after":"7a2111a12059d5ade91586a68c349901149c0434","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-14T15:32:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"make page_shift and table_size constant\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"make page_shift and table_size constant"}},{"before":"d515ad51cb6ec7ad9a6e011055d0c971edb1dad7","after":"c44e365afb92cf0627a6c8f649e146c6b684b039","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-14T15:09:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"compiler-rt: inline frequently called functions\n\ninline\nplsan_{reference_count,store,free_local_variable,memset,memcpy,memmove}.\n\nBefore:\ntest-arraylist : 50.56\ntest-avl-tree : 48.20\ntest-binary-heap : 22.28\ntest-binomial-heap : 20.92\ntest-bloom-filter : 5.67\ntest-compare-functions : 3.48\ntest-hash-functions : 6.44\ntest-hash-table : 12.28\ntest-list : 4.34\ntest-queue : 18.65\ntest-rb-tree : 31.28\ntest-set : 11.70\ntest-slist : 5.36\ntest-sortedarray : 7.47\ntest-trie : 4.79\n\nAfter:\ntest-arraylist : 50.28\ntest-avl-tree : 45.37\ntest-binary-heap : 18.87\ntest-binomial-heap : 20.55\ntest-bloom-filter : 6.10\ntest-compare-functions : 3.63\ntest-hash-functions : 6.18\ntest-hash-table : 11.86\ntest-list : 5.00\ntest-queue : 16.13\ntest-rb-tree : 40.05\ntest-set : 10.92\ntest-slist : 6.43\ntest-sortedarray : 7.70\ntest-trie : 5.13\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"compiler-rt: inline frequently called functions"}},{"before":"3335ed3f7137624fffff0b942ec2101fa28db068","after":"d515ad51cb6ec7ad9a6e011055d0c971edb1dad7","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-14T14:51:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"compiler-rt: optimize reference_count() and plsan_memset()\n\nThis optimizes memset()/memmove() intensive workloads (like\ntest-arraylist case)\n\nBefore:\ntest-arraylist : 101.16\ntest-avl-tree : 51.40\ntest-binary-heap : 27.44\ntest-binomial-heap : 21.08\ntest-bloom-filter : 6.69\ntest-compare-functions : 4.39\ntest-hash-functions : 7.28\ntest-hash-table : 13.15\ntest-list : 4.47\ntest-queue : 16.12\ntest-rb-tree : 37.14\ntest-set : 12.15\ntest-slist : 4.08\ntest-sortedarray : 7.11\ntest-trie : 4.66\n\nAfter:\ntest-arraylist : 50.56\ntest-avl-tree : 48.20\ntest-binary-heap : 22.28\ntest-binomial-heap : 20.92\ntest-bloom-filter : 5.67\ntest-compare-functions : 3.48\ntest-hash-functions : 6.44\ntest-hash-table : 12.28\ntest-list : 4.34\ntest-queue : 18.65\ntest-rb-tree : 31.28\ntest-set : 11.70\ntest-slist : 5.36\ntest-sortedarray : 7.47\ntest-trie : 4.79\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"compiler-rt: optimize reference_count() and plsan_memset()"}},{"before":"7a701889c90b422cf78f3d2cbb6db705005ac6d4","after":"3335ed3f7137624fffff0b942ec2101fa28db068","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-14T14:30:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"compiler-rt: inline GetMetadata() function\n\nInlining GetMetadata() improves the performance slightly.\n\nBefore:\ntest-arraylist : 118.22\ntest-avl-tree : 60.77\ntest-binary-heap : 28.25\ntest-binomial-heap : 25.02\ntest-bloom-filter : 6.19\ntest-compare-functions : 4.00\ntest-hash-functions : 7.78\ntest-hash-table : 14.92\ntest-list : 7.50\ntest-queue : 20.15\ntest-rb-tree : 43.92\ntest-set : 14.48\ntest-slist : 6.69\ntest-sortedarray : 7.24\ntest-trie : 5.74\n\nAfter:\ntest-arraylist : 101.16\ntest-avl-tree : 51.40\ntest-binary-heap : 27.44\ntest-binomial-heap : 21.08\ntest-bloom-filter : 6.69\ntest-compare-functions : 4.39\ntest-hash-functions : 7.28\ntest-hash-table : 13.15\ntest-list : 4.47\ntest-queue : 16.12\ntest-rb-tree : 37.14\ntest-set : 12.15\ntest-slist : 4.08\ntest-sortedarray : 7.11\ntest-trie : 4.66\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"compiler-rt: inline GetMetadata() function"}},{"before":"3c5f937a05bdd478a102c5119ae0ef9221137e2e","after":"7a701889c90b422cf78f3d2cbb6db705005ac6d4","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-14T13:09:32.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"compiler-rt: METAlloc-like lookup primary allocator's metadata\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"compiler-rt: METAlloc-like lookup primary allocator's metadata"}},{"before":"2a401b8ee6e0150a1cee748e2e32d55fceab726d","after":"3c5f937a05bdd478a102c5119ae0ef9221137e2e","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-14T12:57:50.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"compiler-rt: METAlloc-like lookup primary allocator's metadata\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"compiler-rt: METAlloc-like lookup primary allocator's metadata"}},{"before":"8dffb06ef9836da03b6637e5ff91dbbb84c092b8","after":"2a401b8ee6e0150a1cee748e2e32d55fceab726d","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-14T12:41:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"[buggy yet] lookup primary allocator metadata\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"[buggy yet] lookup primary allocator metadata"}},{"before":"d5550a21a184881cd262558ed93c4f511dc1e609","after":"8dffb06ef9836da03b6637e5ff91dbbb84c092b8","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-14T12:08:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"codingstyle -imsi\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"codingstyle -imsi"}},{"before":"0db1cca2fb90f9ea4b4a30bec4db1b27d6ed8bc6","after":"d5550a21a184881cd262558ed93c4f511dc1e609","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-14T12:06:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"Fix bug\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"Fix bug"}},{"before":"fd70bb59d7f3d91661f32372cc194ef8abdb9540","after":"0db1cca2fb90f9ea4b4a30bec4db1b27d6ed8bc6","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-08T13:37:11.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"[buggy yet] lookup primary allocator metadata\n\nSigned-off-by: Hyeonggon Yoo <42.hyeyoo@gmail.com>","shortMessageHtmlLink":"[buggy yet] lookup primary allocator metadata"}},{"before":"6d6a23577840d31d4c53de68089926c2748239e9","after":"d4241d23300a7b0de4b4d4ffc37dc578e9ae0707","ref":"refs/heads/108-Implement-fast-metadata-lookup","pushedAt":"2024-04-08T04:47:55.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"kimseongyu","name":"kimseongyu","path":"/kimseongyu","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50648835?s=80&v=4"},"commit":{"message":"IMSI 2","shortMessageHtmlLink":"IMSI 2"}},{"before":null,"after":"fd70bb59d7f3d91661f32372cc194ef8abdb9540","ref":"refs/heads/108-implement-fast-metadata-lookup","pushedAt":"2024-04-08T01:45:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"},"commit":{"message":"Merge pull request #112 from hygoni/111-deallocation-fix\n\ncompiler-rt: Deallocate memory in Deallocate() function","shortMessageHtmlLink":"Merge pull request #112 from hygoni/111-deallocation-fix"}},{"before":"d3f669603a2caa3038f7ed227c798ddfd40577ec","after":null,"ref":"refs/heads/91-do-not-require-lstdc++-linker-option-to-build-with-fsanitize=precise-leak","pushedAt":"2024-04-08T01:44:11.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"hygoni","name":"hyeyoo","path":"/hygoni","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/50040414?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEeNkvRAA","startCursor":null,"endCursor":null}},"title":"Activity ยท hygoni/precise-leak-sanitizer"}