{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":6500256,"defaultBranch":"master","name":"openmrn","ownerLogin":"bakerstu","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2012-11-02T02:20:12.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/2278798?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1725710451.0","currentOid":""},"activityList":{"items":[{"before":"a0ed8db6deca5d579b76771536f25429598527a4","after":null,"ref":"refs/heads/bracz-nohandler-oir","pushedAt":"2024-09-07T12:00:51.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"}},{"before":"a7dd5450948d49991de41f610c248bf1311c5de0","after":"5ad34b13e49c5b37d3b2167dfdd94c49cb12b366","ref":"refs/heads/master","pushedAt":"2024-09-07T12:00:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Handles unhandled-addressed-messages by generating an OIR reply. (#798)\n\nThis PR fixes a stadnards compliance issue. The standard requires that when an addressed message arrives for a node which is not equipped for handling said message (including any unknown but addressed MTI arriving), then an Optional IOnteraction Rejected (OIR) message has to be sent back to the originating node, identifying that this target node is not able to handle that message.\r\n\r\n- Adds a \"fallback handler\" to the Dispatcher object. The fallback handler is invoked when no handler matched on the incoming message.\r\n- Implements a handler that responds with an OIR for all local nodes. Registers this handler as the fallback handler for the MessageDIspatcher in IfCan and IfTcp. This OIR response will be suppressed for incoming OIR and TDE errors to avoid infinite loops of error messages. (In a normal setup OpenMRN does not listen to these messages. Without this case two OpenMRN nodes will have an infinite message loop chatting with each other sending OIR messages back and forth.)\r\n\r\nFixes some bugs exposed by this behavior.\r\n- The TCP parser had forgotten to clear the message it was filling, causing messages to unexpectedly be marked as addressed messages.\r\n- A number of tests had issues when OIR messages were generated, this PR fixes these issues as well. Sometimes the MTI was mistyped, sometimes a message was verified at the CAN level but not actually processed at the destination node.\r\n\r\n===\r\n\r\n* Adds fallback handler to the dispatcher object.\r\n\r\n* Adds test for fallback handler feature.\r\n\r\n* Adds helper functions to generate OIR payload.\r\n\r\n* Adds handler for sending back OIR when an addressed but unhandled message arrives.\r\n\r\n* Instantiates the flow for unhandled addressed messages in IfCan and IfTcp.\r\n\r\n* Updates tests to correctly deal with generated OIR messages.\r\n\r\n* Adds a NullErrorHandler so that OIR/TDE messages never generate an OIR reply.\r\n\r\n* Adds debug printouts.\r\n\r\n* Fixes MTI on messages sent in this test.\r\n\r\n* Adds a test for generated OIRs.\r\n\r\n* Adds missing Clear command to the TCP parser code.\r\n\r\n* Fixes compile error in these macros.\r\n\r\n* Adds handlers for stream messages coming into the two-node-stream setup.\r\nThis is needed to avoid generating OIR replies due to missing handlers.\r\n\r\n* fix whitespace\r\n\r\n* Adds documentation comment.\r\n\r\n* Removes NullErrorHandler. Instead, prevents generating an OIR for any\r\nincoming unhandled error message (OIR and TDE).\r\n\r\n* Fix/add comments.","shortMessageHtmlLink":"Handles unhandled-addressed-messages by generating an OIR reply. (#798)"}},{"before":"883cd862876ff4199525c39094b6fbbd0a5a1bd8","after":"a0ed8db6deca5d579b76771536f25429598527a4","ref":"refs/heads/bracz-nohandler-oir","pushedAt":"2024-09-07T11:54:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Fix/add comments.","shortMessageHtmlLink":"Fix/add comments."}},{"before":"cc64e1b259d159eeea39ee66e539bdc2519b9807","after":"883cd862876ff4199525c39094b6fbbd0a5a1bd8","ref":"refs/heads/bracz-nohandler-oir","pushedAt":"2024-09-07T11:49:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Removes NullErrorHandler. Instead, prevents generating an OIR for any\nincoming unhandled error message (OIR and TDE).","shortMessageHtmlLink":"Removes NullErrorHandler. Instead, prevents generating an OIR for any"}},{"before":"82a39dada2298f91720750021a65cccbf6a30cc5","after":"cc64e1b259d159eeea39ee66e539bdc2519b9807","ref":"refs/heads/bracz-nohandler-oir","pushedAt":"2024-08-23T21:50:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Adds documentation comment.","shortMessageHtmlLink":"Adds documentation comment."}},{"before":"a78c557c004fd702bb8f030013b4701da01992c6","after":"82a39dada2298f91720750021a65cccbf6a30cc5","ref":"refs/heads/bracz-nohandler-oir","pushedAt":"2024-08-23T21:37:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"fix whitespace","shortMessageHtmlLink":"fix whitespace"}},{"before":"e5e22e4c17e3f08a7c50eb1208fe4b75dfc11d99","after":"a78c557c004fd702bb8f030013b4701da01992c6","ref":"refs/heads/bracz-nohandler-oir","pushedAt":"2024-08-23T21:36:19.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Adds handlers for stream messages coming into the two-node-stream setup.\nThis is needed to avoid generating OIR replies due to missing handlers.","shortMessageHtmlLink":"Adds handlers for stream messages coming into the two-node-stream setup."}},{"before":"9aa5ecdbfe7932ca08b1815d46989eceb15ce0b4","after":"e5e22e4c17e3f08a7c50eb1208fe4b75dfc11d99","ref":"refs/heads/bracz-nohandler-oir","pushedAt":"2024-08-22T22:00:03.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Adds missing Clear command to the TCP parser code.","shortMessageHtmlLink":"Adds missing Clear command to the TCP parser code."}},{"before":"8e2f595c3d1f1bc4af09eb27abc83b9c135dec8f","after":null,"ref":"refs/heads/bracz-testio-factory-reset","pushedAt":"2024-08-22T20:30:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"}},{"before":"4ef35ba97bab9d625cfa3345626e5953e358eff8","after":"a7dd5450948d49991de41f610c248bf1311c5de0","ref":"refs/heads/master","pushedAt":"2024-08-22T20:30:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Adds factory reset handler to linux:io_board. (#797)\n\nThis is necessary to initialize the username and user description fields.\r\nWithout the initialization these are filled by 0xFF bytes without null\r\ntermination, which is not standards compliant.","shortMessageHtmlLink":"Adds factory reset handler to linux:io_board. (#797)"}},{"before":null,"after":"8e2f595c3d1f1bc4af09eb27abc83b9c135dec8f","ref":"refs/heads/bracz-testio-factory-reset","pushedAt":"2024-08-22T20:29:53.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Adds factory reset handler to linux:io_board.\n\nThis is necessary to initialize the username and user description fields.\nWithout the initialization these are filled by 0xFF bytes without null\ntermination, which is not standards compliant.","shortMessageHtmlLink":"Adds factory reset handler to linux:io_board."}},{"before":"1aa6beb0b88afd7a0a5dbc227bcbf1d64e552fd3","after":"9aa5ecdbfe7932ca08b1815d46989eceb15ce0b4","ref":"refs/heads/bracz-nohandler-oir","pushedAt":"2024-08-22T19:10:48.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Merge branch 'master' into bracz-nohandler-oir\n\n* master:\n Fixes a standards compliance issue with the alias conflict handler. (#793)\n Bug fixes in DataBuffer (#791)\n Fixes race conditions in HubDeviceSelect. (#795)\n Fixes missing translation of enums when reading the security mode from a simplelink profile. (#796)","shortMessageHtmlLink":"Merge branch 'master' into bracz-nohandler-oir"}},{"before":"de1699695294bf5fde65c4a03e3236bb66f9b5de","after":null,"ref":"refs/heads/md-espi2c","pushedAt":"2024-08-21T12:36:37.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"atanisoft","name":"Mike Dunston","path":"/atanisoft","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6457044?s=80&v=4"}},{"before":"efdbf72283f20dac8ec4520c2b3996599be3d3bd","after":null,"ref":"refs/heads/md-fixactions","pushedAt":"2024-08-21T12:34:26.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"atanisoft","name":"Mike Dunston","path":"/atanisoft","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6457044?s=80&v=4"}},{"before":"1ad4ef7bae4e735dc67f9c85ab3eef4978a69162","after":null,"ref":"refs/heads/md-hassertdie","pushedAt":"2024-08-21T12:34:24.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"atanisoft","name":"Mike Dunston","path":"/atanisoft","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/6457044?s=80&v=4"}},{"before":"63fc8ea81db6598f25aa39506027e8c41e5ee210","after":null,"ref":"refs/heads/bracz-amr-standard-compliance","pushedAt":"2024-08-21T07:11:10.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"}},{"before":"5b75c8ecf78a6000ac1b8fd840db7782337aa3c7","after":"4ef35ba97bab9d625cfa3345626e5953e358eff8","ref":"refs/heads/master","pushedAt":"2024-08-21T07:11:07.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Fixes a standards compliance issue with the alias conflict handler. (#793)\n\nThe standard requires that at the time when an alias conflict is detected, the device to issue an AMR frame with the conflicted alias.\r\n\r\nThis PR adds the missing AMR frame. Adjusts tests to heck for this frame. Fixes a bug in the Global AME handler that was unexpectedly emitting AMD frames for removed aliases, because the cache entry was not correctly wiped when the remove was processed, and the iteration also picked up such deleted entries.\r\n\r\n===\r\n\r\n* Fixes a standards compliance issue with the alias conflict handler.\r\n\r\nThe standard requires that at the time when an alias conflict is detected,\r\nthe device to issue an AMR frame with the conflicted alias.\r\n\r\nThis PR adds the missing AMR frame. Adjusts tests to heck for this frame.\r\nFixes a bug in the Global AME handler that was unexpectedly emitting AMD\r\nframes for removed aliases, because the cache entry was not correctly wiped\r\nwhen the remove was processed, and the iteration also picked up such deleted\r\nentries.\r\n\r\n* Adds a test verifying that reserved but not used aliases do not generate an AMR\r\nframe upon conflict.\r\n\r\n* Fixes bug around reserved but unused aliases incorrectly generating\r\nan AMR frame upon conflict.","shortMessageHtmlLink":"Fixes a standards compliance issue with the alias conflict handler. (#…"}},{"before":"f4949f69f6239c04e7aa3dd81d2fab1af8ab9c89","after":"63fc8ea81db6598f25aa39506027e8c41e5ee210","ref":"refs/heads/bracz-amr-standard-compliance","pushedAt":"2024-08-20T21:23:16.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Fixes bug around reserved but unused aliases incorrectly generating\nan AMR frame upon conflict.","shortMessageHtmlLink":"Fixes bug around reserved but unused aliases incorrectly generating"}},{"before":"809a4c22118e516c29c19b717fa53aea64cc36d7","after":null,"ref":"refs/heads/bracz-callback-event-identified","pushedAt":"2024-08-20T16:27:04.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"}},{"before":"0e5b6399d02bbe14af4d6650c0ffb01727ee2b3c","after":null,"ref":"refs/heads/bracz-fix-flaky-test","pushedAt":"2024-08-20T16:25:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"}},{"before":"4444eafc9c3516c03c30a65f173c5861c6d0433f","after":null,"ref":"refs/heads/bracz-databuffer-fixes","pushedAt":"2024-08-20T16:11:54.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"}},{"before":"2f7da9f8676a911a76d1e23f79050d764fbad4f1","after":"5b75c8ecf78a6000ac1b8fd840db7782337aa3c7","ref":"refs/heads/master","pushedAt":"2024-08-20T16:11:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Bug fixes in DataBuffer (#791)\n\nThere were several corner cases in appending to a Datauffer that were incorrectly handled and causing crashes in DirectHub.\r\nThis PR fixes bugs and adds tests including several fuzz tests for databuffers.\r\n\r\n===\r\n\r\n* Adds more convenient read API to databuffer.\r\n\r\n* Adds fuzz test to data buffer.\r\nRewrites conditions in move read pointer forward, because it was incorrect.\r\n\r\n* Ensures that try_append_to will always complete for an empty data buffer.\r\n\r\n* Adds more fuzz testing capability to the data buffer test.\r\n\r\n* Fix some crashing cornercases.\r\n\r\n* Adds more fuzz test debugging.\r\n\r\n* Expands the cases where try_append_from succeeds.\r\n- Handles the case when the src or dst buffer is empty.\r\n- Detects when the append happens exactly at a buffer boundary and the\r\n buffers are already linked buffer.\r\n- Adds a parameter that makes this work even when the link is not there yet\r\n\r\n* Adds a debugging facility that verifies that data buffer unrefs are correct.\r\n\r\n* Finishes fuzz tests.\r\n\r\n* Rewrite data read advance to be much simpler.\r\nThis fixes a buffer refcount bug when a buffer ended up with a zero length\r\nand too few refs.\r\n\r\n* Fix bug when we take bytes from an appendable data buffer.\r\nWe took over o.free_ but this makes the current buffer appendable, which is wrong.\r\n\r\n* Removes unnecessary forward declaration.\r\n\r\n* Fix indentation and style.","shortMessageHtmlLink":"Bug fixes in DataBuffer (#791)"}},{"before":"b1d64905ebc7cbf0e6c811fd82bca0a10ea33821","after":null,"ref":"refs/heads/bracz-hubdeviceselect-races","pushedAt":"2024-08-20T16:10:51.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"}},{"before":"c8f2cbd917a84da6823b45ec44f7d0df5a3d7e9c","after":"2f7da9f8676a911a76d1e23f79050d764fbad4f1","ref":"refs/heads/master","pushedAt":"2024-08-20T16:10:48.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Fixes race conditions in HubDeviceSelect. (#795)\n\nThese were problematic when the shutdown/close happened on a different thread than the executor. Caused flakey tests.\r\n\r\nUpdates a test helper to use heap memory because that plays nicer with Valgrind's data race checker.\r\n\r\n===\r\n\r\n* Fixes race conditions in HubDeviceSelect.\r\n\r\nThese were problematic when the shutdown/close happened on a different thread\r\nthan the executor. Caused flakey tests.\r\n\r\n* Fix whitespace.","shortMessageHtmlLink":"Fixes race conditions in HubDeviceSelect. (#795)"}},{"before":"616e307b314abbb12f08f9d42cbcaad376d36764","after":"b1d64905ebc7cbf0e6c811fd82bca0a10ea33821","ref":"refs/heads/bracz-hubdeviceselect-races","pushedAt":"2024-08-20T13:55:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Fix whitespace.","shortMessageHtmlLink":"Fix whitespace."}},{"before":"bc8997dc932ffc2e375480cacd8ee1ad684b0785","after":"4444eafc9c3516c03c30a65f173c5861c6d0433f","ref":"refs/heads/bracz-databuffer-fixes","pushedAt":"2024-08-20T13:49:18.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Fix indentation and style.","shortMessageHtmlLink":"Fix indentation and style."}},{"before":"2a46897790f43509ea7ab87bbaa64f97e04c3ecc","after":null,"ref":"refs/heads/bracz-security-read-fix","pushedAt":"2024-08-20T13:39:05.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"}},{"before":"c387390ffea0aa805610316b33b0e2682fee1aaa","after":"c8f2cbd917a84da6823b45ec44f7d0df5a3d7e9c","ref":"refs/heads/master","pushedAt":"2024-08-20T13:39:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Fixes missing translation of enums when reading the security mode from a simplelink profile. (#796)\n\nThe external enum is not the same as the internal enum. We have translation functions `security_type_from_simplelink` and `security_type_to_simplelink`. We forgot to call this function on one of the codepaths.\r\n\r\nUpdates the setup_ap function to be able to be called with nullptr as ssid and security key, to just update the security type.\r\n\r\n===\r\n\r\n* Fixes missing translation of enums when reading the security mode from a\r\nsimplelink profile.\r\n\r\n* Updates the setup AP API to be able to update just the security type.","shortMessageHtmlLink":"Fixes missing translation of enums when reading the security mode fro…"}},{"before":"80220e377fb1f1401b7d6d3b79b2731c4f390fc5","after":"2a46897790f43509ea7ab87bbaa64f97e04c3ecc","ref":"refs/heads/bracz-security-read-fix","pushedAt":"2024-08-19T02:37:45.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Updates the setup AP API to be able to update just the security type.","shortMessageHtmlLink":"Updates the setup AP API to be able to update just the security type."}},{"before":null,"after":"80220e377fb1f1401b7d6d3b79b2731c4f390fc5","ref":"refs/heads/bracz-security-read-fix","pushedAt":"2024-08-19T02:31:18.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"balazsracz","name":"Balazs Racz","path":"/balazsracz","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3719690?s=80&v=4"},"commit":{"message":"Fixes missing translation of enums when reading the security mode from a\nsimplelink profile.","shortMessageHtmlLink":"Fixes missing translation of enums when reading the security mode from a"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wN1QxMjowMDo1MS4wMDAwMDBazwAAAASvnuU9","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0wN1QxMjowMDo1MS4wMDAwMDBazwAAAASvnuU9","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0xOVQwMjozMToxOC4wMDAwMDBazwAAAASdk0Sk"}},"title":"Activity · bakerstu/openmrn"}