{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":676255355,"defaultBranch":"main","name":"snos","ownerLogin":"keep-starknet-strange","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-08-08T19:31:45.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/118723009?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1716995264.0","currentOid":""},"activityList":{"items":[{"before":"12a4db26059e65a7f45636407ecc5bc5246f50fd","after":"ceebf0cd30a8a1497dab0b2348d6b18d2764a418","ref":"refs/heads/main","pushedAt":"2024-06-04T15:58:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Fix: make `BinaryFactTree::update` take self and not &mut self (#223)\n\nMutating the input and returning it is redundant. We now take ownership\r\nof the previous tree and return the updated one.","shortMessageHtmlLink":"Fix: make BinaryFactTree::update take self and not &mut self (#223)"}},{"before":"ab1a0a1500018b8480881a5830c849fa443d7369","after":"12a4db26059e65a7f45636407ecc5bc5246f50fd","ref":"refs/heads/main","pushedAt":"2024-06-04T15:58:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Fix: remove duplication in Cairo structs for deprecated syscalls (#224)","shortMessageHtmlLink":"Fix: remove duplication in Cairo structs for deprecated syscalls (#224)"}},{"before":"20bc9abd601d79a2d34af61d45c1550601b74a1b","after":"ab1a0a1500018b8480881a5830c849fa443d7369","ref":"refs/heads/main","pushedAt":"2024-06-04T15:54:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Internal: replace hardcoded strings by vars (#222)\n\nProblem: we still use hardcoded strings in a lot of places to access\r\nscope and Cairo variables. This is confusing and error-prone.\r\n\r\nSolution: Use strings defined in `vars` for every variable access.","shortMessageHtmlLink":"Internal: replace hardcoded strings by vars (#222)"}},{"before":"9aa35e27512655db4d5ef5b3b9a53171bb038930","after":"20bc9abd601d79a2d34af61d45c1550601b74a1b","ref":"refs/heads/main","pushedAt":"2024-06-04T15:38:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Internal: remove dead code (#221)","shortMessageHtmlLink":"Internal: remove dead code (#221)"}},{"before":"ab4d2acc383c3f167a864bdbc3e7cc19ae79add4","after":"9aa35e27512655db4d5ef5b3b9a53171bb038930","ref":"refs/heads/main","pushedAt":"2024-06-04T15:11:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Chore: bump cairo-lang, blockifier and cairo-vm (#220)\n\nNow that `cairo-vm` supports `cairo-lang` 2.6.x, we can upgrade a few\r\ndependencies.\r\n\r\n* Created a new fork of blockifier to use latest stable (0.5.0) + a few\r\n modifications because we want `Clone` implementations. PRed the fork\r\n to upstream blockifier (https://github.com/starkware-libs/blockifier/pull/1950).\r\n* Bumped cairo-vm to latest main\r\n* Removed the constraint to 2.5.4 for cairo-lang-* crates.","shortMessageHtmlLink":"Chore: bump cairo-lang, blockifier and cairo-vm (#220)"}},{"before":"70d57002aea524ec3c793a768aa40772a71847fc","after":"ab4d2acc383c3f167a864bdbc3e7cc19ae79add4","ref":"refs/heads/main","pushedAt":"2024-06-04T09:25:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Fix:occurences->occurrences (#219)","shortMessageHtmlLink":"Fix:occurences->occurrences (#219)"}},{"before":"e0a814de55a1c7515f96189770066bfd9a637bf0","after":"70d57002aea524ec3c793a768aa40772a71847fc","ref":"refs/heads/main","pushedAt":"2024-06-03T21:10:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Fix: build Starknet OS output struct from VM output (#218)\n\nProblem: the integration tests failed because the code to build the\r\nStarknet OS output structure had never been used with real outputs.\r\n\r\nSolution: reimplement the `from_run` method of `StarknetOsOutput`. The\r\nnew version also supports KZG DA.","shortMessageHtmlLink":"Fix: build Starknet OS output struct from VM output (#218)"}},{"before":"c870ff3545b96b61ed6c9600a48750f654c9309d","after":"e0a814de55a1c7515f96189770066bfd9a637bf0","ref":"refs/heads/main","pushedAt":"2024-06-03T20:50:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Feature: enable class tree updates (#217)\n\nProblem: we still pass an empty commitment info to the OS at startup.\r\n\r\nSolution: use the correct class commitment info generated from the\r\nSharedState objects.\r\n\r\nAdditionally:\r\n* Implement the `use_kzg_da` hint, note that the implementation only\r\n returns `false` for now.\r\n* Added a mechanism to switch between Pedersen and Poseidon hashing in\r\n the Patricia hints. We enable a boolean flag after finishing the state\r\n update.\r\n\r\nThe tests now fail when building the OS output.\r\n\r\n---------\r\n\r\nCo-authored-by: Stephen Shelton ","shortMessageHtmlLink":"Feature: enable class tree updates (#217)"}},{"before":"8c40e790b8807513c0e558e6f122506428eade7a","after":"c870ff3545b96b61ed6c9600a48750f654c9309d","ref":"refs/heads/main","pushedAt":"2024-06-03T20:43:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Internal: clean up initial state creation (#216)\n\nProblem: the initial state creation for tests is messy and hard to\r\nmaintain.\r\n\r\nSolution: introduce a builder pattern to make it easier to add contracts\r\nand configure the initial state.","shortMessageHtmlLink":"Internal: clean up initial state creation (#216)"}},{"before":"da26557078111b5d489154b162f3f810174f5b69","after":"8c40e790b8807513c0e558e6f122506428eade7a","ref":"refs/heads/main","pushedAt":"2024-06-03T20:33:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Internal: introduce the `Hash` type for hashes (#215)\n\nProblem: we did not use a custom type when porting most of the code,\r\nresulting in hashes being `Vec` all over the place. This is\r\ninconvenient and error-prone.\r\n\r\nSolution: introduce the `Hash` type to encapsulate all hashes. With\r\nthis, hashes are now type-safe and provide implementations of `From` for\r\ncommon types in Cairo VM and Starknet API.","shortMessageHtmlLink":"Internal: introduce the Hash type for hashes (#215)"}},{"before":"21552c99ded04f54bb6cd66392852479a5981537","after":"da26557078111b5d489154b162f3f810174f5b69","ref":"refs/heads/main","pushedAt":"2024-05-29T15:55:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Hook up state commitment info to OsInput (#213)\n\nThis PR hooks up the state commitment info to the OsInput.","shortMessageHtmlLink":"Hook up state commitment info to OsInput (#213)"}},{"before":"21552c99ded04f54bb6cd66392852479a5981537","after":null,"ref":"refs/heads/dev/code-cleanup-post-shared-state","pushedAt":"2024-05-29T15:07:44.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"}},{"before":"ca747bdb2cc4e28fa1aa1c9682d90a5b2d6138c5","after":"21552c99ded04f54bb6cd66392852479a5981537","ref":"refs/heads/main","pushedAt":"2024-05-29T15:07:42.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Feature: logging (#212)\n\nUse the `log` and `env_logger` crates to display logs instead of\r\n`println!`.\r\n\r\nRemoved a few useless logs.","shortMessageHtmlLink":"Feature: logging (#212)"}},{"before":"0bc73dc58dfd4b2bc24b4fb5c2bf3b4ccd8ecb48","after":"21552c99ded04f54bb6cd66392852479a5981537","ref":"refs/heads/dev/code-cleanup-post-shared-state","pushedAt":"2024-05-29T13:53:33.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Feature: logging (#212)\n\nUse the `log` and `env_logger` crates to display logs instead of\r\n`println!`.\r\n\r\nRemoved a few useless logs.","shortMessageHtmlLink":"Feature: logging (#212)"}},{"before":"ca747bdb2cc4e28fa1aa1c9682d90a5b2d6138c5","after":"0bc73dc58dfd4b2bc24b4fb5c2bf3b4ccd8ecb48","ref":"refs/heads/dev/code-cleanup-post-shared-state","pushedAt":"2024-05-29T10:42:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Fix: remove dead code related to shared state (#210)\n\nProblem: there is code from earlier attempts at implementing\r\n`SharedState` the Merkle trie, storage trait etc in the repo.\r\nThis code is unused.\r\n\r\nSolution: remove it.","shortMessageHtmlLink":"Fix: remove dead code related to shared state (#210)"}},{"before":null,"after":"ca747bdb2cc4e28fa1aa1c9682d90a5b2d6138c5","ref":"refs/heads/dev/code-cleanup-post-shared-state","pushedAt":"2024-05-29T10:17:49.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Global State Setup (#209)\n\nThis PR brings the global state (`\"SharedState\"`) setup that has been a WIP for a while onto main. It should allow SNOS to correctly setup the class tries, including proper class and compiled class hashing as well as storage and retrieval of class information.","shortMessageHtmlLink":"Global State Setup (#209)"}},{"before":"ee3347d0d4a0d16d552ddf8ed7a52ba45b9b50d8","after":"ca747bdb2cc4e28fa1aa1c9682d90a5b2d6138c5","ref":"refs/heads/main","pushedAt":"2024-05-29T10:09:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Global State Setup (#209)\n\nThis PR brings the global state (`\"SharedState\"`) setup that has been a WIP for a while onto main. It should allow SNOS to correctly setup the class tries, including proper class and compiled class hashing as well as storage and retrieval of class information.","shortMessageHtmlLink":"Global State Setup (#209)"}},{"before":"ab64a9c02f79c01460e6e562a91ca34eb43fc8a8","after":null,"ref":"refs/heads/herman/COMPUTE_IDS_HIGH_LOW","pushedAt":"2024-05-23T12:18:22.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"HermanObst","name":"Herman Obst Demaestri","path":"/HermanObst","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/70286869?s=80&v=4"}},{"before":"2627cebefee8cddcd77a74cfe697cf323ee3fc06","after":"ee3347d0d4a0d16d552ddf8ed7a52ba45b9b50d8","ref":"refs/heads/main","pushedAt":"2024-05-22T15:18:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Internal: compile Cairo 1 contracts to Sierra (#208)\n\nProblem: we need the Sierra representation to compute class hashes\r\ncorrectly in upcoming PRs.\r\n\r\nSolution: compile the contracts manually and add them to the repository.\r\n\r\nAdded a script to repeat the operation if needed.","shortMessageHtmlLink":"Internal: compile Cairo 1 contracts to Sierra (#208)"}},{"before":"4f691b10d287de3667557b73ecef836ff608242b","after":"2627cebefee8cddcd77a74cfe697cf323ee3fc06","ref":"refs/heads/main","pushedAt":"2024-05-21T10:39:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Remove FeatureContracts (#207)\n\nThis PR removes the use of `FeatureContract`s in our test code. The main problem with these was their use of faked class hashes.\r\n\r\nThe PR also cleans up some of the test fixtures and the structs used in test setup and execution.","shortMessageHtmlLink":"Remove FeatureContracts (#207)"}},{"before":"61d51a1c5a1e5a31827cb8416d48fd7045b234d9","after":"4f691b10d287de3667557b73ecef836ff608242b","ref":"refs/heads/main","pushedAt":"2024-05-16T19:40:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"notlesh","name":"Stephen Shelton","path":"/notlesh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2967426?s=80&v=4"},"commit":{"message":"Internal: utility function to get root scope variable (#206)\n\nAdded a utility function to make the code used for\r\nPATRICIA_SKIP_VALIDATION_RUNNER reusable for other variables, if we ever\r\nneed it.","shortMessageHtmlLink":"Internal: utility function to get root scope variable (#206)"}},{"before":"70b5e3b3be1ae5ae89a4bcb1dbe9cdaa979ad38c","after":"61d51a1c5a1e5a31827cb8416d48fd7045b234d9","ref":"refs/heads/main","pushedAt":"2024-05-16T19:30:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"notlesh","name":"Stephen Shelton","path":"/notlesh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2967426?s=80&v=4"},"commit":{"message":"Fix: improve handling of sync -> async calls in hints (#205)\n\nProblem: we often encounter cases where `execute_coroutine_threadsafe()`\r\ncauses a \"cannot start a runtime from with a runtime\" error. These\r\nerrors are avoided by carefully placing the call. Ultimately, we have a\r\nlot of calls to `execute_coroutine_threadsafe()` deep inside the code\r\nand this is brittle.\r\n\r\nSolution: acknowledge that most of the codebase needs to be async and\r\nhandle sync -> async transitions from the highest level possible. Also,\r\nwe now implement `execute_coroutine()` (we dropped the meaningless\r\n\"threadsafe\" suffix) to use `task::block_in_place` to run the coroutine\r\non the calling thread. This is fine because we always end up here from\r\nthe main thread running the OS.\r\n\r\nNote that async tests must now use the `multi_thread` thread pool to\r\nenable using `task::block_in_place`, otherwise the OS panics.\r\n\r\nReplaced all the RefCell instances by tokio::sync::RwLock instances as\r\nwe need to hold references across await boundaries and clippy was\r\n(rightfully) having none of that.","shortMessageHtmlLink":"Fix: improve handling of sync -> async calls in hints (#205)"}},{"before":"8d6ae349889d433355e49472257674a15e63509e","after":"70b5e3b3be1ae5ae89a4bcb1dbe9cdaa979ad38c","ref":"refs/heads/main","pushedAt":"2024-05-15T17:02:21.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Fix: Cairo 0 hashes were not computed correctly by the OS (#204)\n\nProblem: the deprecated class hash hints were not computing the \"hinted\"\r\nclass hash, a todo was left in the code with a default value.\r\n\r\nSolution: use the implementation from Pathfinder. As Pathfinder does not\r\nexpose this functionality directly, we forked Pathfinder v0.12.0 and\r\nmade modifications to expose the functionality.","shortMessageHtmlLink":"Fix: Cairo 0 hashes were not computed correctly by the OS (#204)"}},{"before":"21d2d42eb87f3b860d27e2c5d1c2daed118bd2b0","after":"8d6ae349889d433355e49472257674a15e63509e","ref":"refs/heads/main","pushedAt":"2024-05-15T14:50:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Internal: move Cairo 0 hash-related hints to dedicated module (#203)\n\nThis makes it easier to identify changes related to hashing.","shortMessageHtmlLink":"Internal: move Cairo 0 hash-related hints to dedicated module (#203)"}},{"before":"c6d3a3d7be067ad24e6062c0bacfe5c6bf958ad0","after":"21d2d42eb87f3b860d27e2c5d1c2daed118bd2b0","ref":"refs/heads/main","pushedAt":"2024-05-15T14:06:59.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Feature: add Poseidon hashing (#202)\n\nProblem: we require an implementation of `HashFunctionType` for Poseidon\r\nhashing.\r\n\r\nSolution: add a new `PoseidonHash` struct that uses starknet-crypto\r\nprimitives.","shortMessageHtmlLink":"Feature: add Poseidon hashing (#202)"}},{"before":"01ed09975cb8b0cdb878f569fe2f8aac5c9e9a7a","after":"c6d3a3d7be067ad24e6062c0bacfe5c6bf958ad0","ref":"refs/heads/main","pushedAt":"2024-05-14T13:52:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"odesenfans","name":"Olivier Desenfans","path":"/odesenfans","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8036060?s=80&v=4"},"commit":{"message":"Internal: move `prefix()` from Serializable to new trait (#201)\n\nProblem: we wish to implement `prefix()` for JSON-serializable structs,\r\nbut this then requires to duplicate the implementation of the\r\n`serialize()` and `deserialize()` methods as there is no specialization\r\nin Rust.\r\n\r\nSolution: move `prefix()` to the new `SerializationPrefix` trait.","shortMessageHtmlLink":"Internal: move prefix() from Serializable to new trait (#201)"}},{"before":null,"after":"127d3581bb090cc6b57c3d4821e3f6fd3d538904","ref":"refs/heads/notlesh/contract-loader-import-pathfinder-serialization","pushedAt":"2024-05-13T21:27:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"notlesh","name":"Stephen Shelton","path":"/notlesh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2967426?s=80&v=4"},"commit":{"message":":kirby_inhaling_codebase:","shortMessageHtmlLink":":kirby_inhaling_codebase:"}},{"before":"87ad36cfc615578f8b3395c4cce2b9fa72622159","after":"01ed09975cb8b0cdb878f569fe2f8aac5c9e9a7a","ref":"refs/heads/main","pushedAt":"2024-05-02T17:26:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"notlesh","name":"Stephen Shelton","path":"/notlesh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2967426?s=80&v=4"},"commit":{"message":"Update test expectations (#198)\n\n* Update test expectations\r\n\r\n* Don't rely on file in Default impl\r\n\r\n* Revert cairo-lang submodule change\r\n\r\n* Remove cairo_resource_fee_weights\r\n\r\n* clippy\r\n\r\n* Remove TODO comment","shortMessageHtmlLink":"Update test expectations (#198)"}},{"before":null,"after":"16e99d4e47fa1b64319615dcd020232bf1a454f2","ref":"refs/heads/mk/syscalls_refactor","pushedAt":"2024-05-01T17:08:55.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"maciejka","name":"Maciej Kamiński @ StarkWare","path":"/maciejka","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/190855?s=80&v=4"},"commit":{"message":"fmt","shortMessageHtmlLink":"fmt"}},{"before":"16e99d4e47fa1b64319615dcd020232bf1a454f2","after":null,"ref":"refs/heads/mk/syscalls_refactor","pushedAt":"2024-04-30T15:30:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"maciejka","name":"Maciej Kamiński @ StarkWare","path":"/maciejka","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/190855?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEXDj8zQA","startCursor":null,"endCursor":null}},"title":"Activity · keep-starknet-strange/snos"}