Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Unsolved
Collapse
Discussion Forum to share and further the development of home control and automation, independent of platforms.
  1. Home
  2. Software
  3. Multi-System Reactor
  4. MSR web UI stops connecting after a period of time
Arming Envisalink panel from MSR
T
Topic thumbnail image
Multi-System Reactor
[Solved] DynamicGroupController updating members issue
CrilleC
Edit: Solved in latest-26221. Bare-metal latest-26193 I have this group: "OKforLarm": name: OK för Larm select: - include_controller: vera - include_capability: door_sensor filter_expression: entity.attributes.door_sensor.state It contains the entities I expect but behaves a bit odd. When I open vera>device_10097 the entity attribute door_sensor.state changes to true but it won't show up as member in the group, when I also open vera>device_10095 they both shows as members and when I close vera>device_10095 it disappear from the group but when I close vera>device_10097 it lingers in the group until I restart Reactor.
Multi-System Reactor
Reactor (Multi-System/Multi-Hub) Announcements
toggledbitsT
Build 21228 has been released. Docker images available from DockerHub as usual, and bare-metal packages here. Home Assistant up to version 2021.8.6 supported; the online version of the manual will now state the current supported versions; Fix an error in OWMWeatherController that could cause it to stop updating; Unify the approach to entity filtering on all hub interface classes (controllers); this works for device entities only; it may be extended to other entities later; Improve error detail in messages for EzloController during auth phase; Add isRuleSet() and isRuleEnabled() functions to expressions extensions; Implement set action for lock and passage capabilities (makes them more easily scriptable in some cases); Fix a place in the UI where 24-hour time was not being displayed.
Multi-System Reactor
DynamicGroupController and attributes
therealdbT
Hey @toggledbits I'm back to trying to optimize a couple of things based on dynamic group. First of all, I think I found a typo in the doc: primary_attribute: "binary_sensor.state" primary_attribute_value: | d = false; each id in members: d = getEntity(id)?.attributes?.power_switch?.state or d, d I think the correct code snippet is d = false, All that said, my use case for dynamic groups is to group 3 different climate devices, so I could easily command them at the same time. Commands are good, but sometimes I want to check if any of the devices are on, and that's easily done with a similar snippet as the one you have in the docs. But this is limited to the primary attribute, while I want to have any of the attributes in the group to be driven by a similar logic (while all are null in the group). ie, access hvac_control.mode and see if any of the unit is set to cool, or heat. Is that possible, without re-defining an expression in each of my rules? Thanks!
Multi-System Reactor
Upgrade Issues
T
Topic thumbnail image
Multi-System Reactor
[SOLVED] Conflicting Set Reaction Groups Appear to Fire Simultaneously in Single Rule Evaluation
G
Topic thumbnail image
Multi-System Reactor
[SOLVED] Question regarding "in" vs "contains" vs contents of the string
G
Topic thumbnail image
Multi-System Reactor
Logon screen timeout
G
Noticing since 170 that the lock screen doesn't switch to the logon prompt but, rather, stays on the active UI until such time as you go to click something within it. Then it jumps to the login screen. Brave browser Brave 1.92.139 (Official Build) (arm64) Chromium: 150.0.7871.114
Multi-System Reactor
[MSR] Copy&past of actions and/or drag&drop between set/reset
therealdbT
Hey @toggledbits One thing that bothers me while doing work on new systems/new features, is that I cannot copy&paste actions, and I cannot drag&drop between set and resets. #1 is for when I want to copy an action between different rules opened in two separate browser windows, while #2 is when I just need to flip a bunch of actions in the reset, or move some logic back and forth. Both will be appreciated, but I understand the technical challenges. Thanks!
Multi-System Reactor
Upgrade advice - upgrade from aarch64 to ARM64 image
T
I'm currently on version 26011. I understand that the aarch64 image is no longer supported. So, I therefore need to update to the ARM64 image. Can anyone possibly suggest how I update my docker compose.yaml file (see below). Ideally I'd like to keep my existing reactions etc. rather than start from scratch. # Multi-System Reactor template docker-compose.yml (version 22160) # # Change the lines indicated by "DO"... # services: reactor: container_name: reactor environment: # DO change the TZ: line to set your local time zone. # See valid TZ list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones TZ: GB # # DO NOT change this path. Your directory location is in "source" below. REACTOR_DATA_PREFIX: /var/reactor # DO change the image below to the one you are using (e.g. armv7l or aarch64 for RPi 4) image: toggledbits/reactor:latest-aarch64 restart: "always" expose: - 8111 ports: - 8111:8111 volumes: # DO change the /home/username/reactor below to the directory you created for # your local data; DO NOT change the /var/reactor part - /home/pi/docker/reactor:/var/reactor - /etc/localtime:/etc/localtime:ro tmpfs: /tmp
Multi-System Reactor
Alexa for MSR, any interest?
MikeReadingtonM
Topic thumbnail image
Multi-System Reactor
[RESOLVED] Telegram notification broke with latest update
3
Topic thumbnail image
Multi-System Reactor
[RESOLVED] Phantom device, “INFO” appears
wmarcolinW
Topic thumbnail image
Multi-System Reactor
[RESOLVED] Mode Status NULL
wmarcolinW
Topic thumbnail image
Multi-System Reactor
[RESOLVED] HTTP query failing after version 26177
wmarcolinW
Topic thumbnail image
Multi-System Reactor
Question about the find function
wmarcolinW
Topic thumbnail image
Multi-System Reactor
[Answered] OK to remove old json files?
3
Topic thumbnail image
Multi-System Reactor
Deprecation Announcement: 32-bit ARM *docker* images
toggledbitsT
If you are using the armv7l docker image, the OpenJS Foundation that publishes node is no longer producing 32-bit builds as of v24. That means the last supported LTS version of node for armv7l is v22, which will go End-of-Life in May 2027. Therefore, the Reactor armv7l image is now deprecated and will only be produced until node v22 goes EOL, and I will not publish armv7l images beyond that date. If you are running an RPi 3 or earlier with Reactor, you are on this image, and will need to upgrade hardware to a 64-bit model and use the arm64 image. If you need help getting it done, ask in this category.
Multi-System Reactor
[Solved] build 26150 - engine not starting
G
@toggledbits I pulled the image (well, Watchtower did) and within minutes the whole system went offline. The log looks like it ends with 26143. [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-mkahsmgf/26qq82mw-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lqyfljfi/22f8on0t-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lsb61rw8/24oenqi2-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lrh58he0/rule-lrh58he0:S-1c00gfib-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lrh58he0/1c00dylr-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lrh58he0/1nam9w5u-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-miuh2qqi/22ls4lql-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-kwc6rmci/rule-kwc6rmci:S-1vj8sdfc-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-kwc6rmci/rule-kwc6rmci:S-1qanz01x-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-ladyja6a/24lq19p6-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-mk0o8iox/23oy468y-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-miscg2h3/rule-miscg2h3:S-22gmbq1c-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-kxgrfjke/238p0old-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-m7ccsso5/re-m7ccsso5-1r0myjxa-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-ladyja6a/19nl9wq2-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-ladyja6a/rule-ladyja6a:S-yl3xk9t-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-ladyja6a/rule-ladyja6a:S-yl3vv5m-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-ln7j2nqp/re-ln7j2nqp-22mx9lzd-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-ln7j2nqp/22mx87c8-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-licneppy/1mzwe7ht-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-ml3194ih/25jqt1j4-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-kxgrg7kf/227hshak-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-reactorexmachina/13ua1p95-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-reactorexmachina/13uagam7-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-grpvl9oypg/rule-grpvl9oypg:R-134x4cbv-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-grpvl9oypg/rule-grpvl9oypg:R-134x2fyl-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#re-lscjrws1/238p5c22-cons [latest-26143]2026-05-31T15:23:44.547Z <default:INFO> Closing container Container#Predicate#rule-lbwr0jvq/1xkczf03-cons [latest-26143]2026-05-31T15:23:44.547Z <Structure:NOTICE> Structure Structure#1 stopped [latest-26143]2026-05-31T15:23:44.547Z <app:NOTICE> Closing APIs... [latest-26143]2026-05-31T15:23:44.547Z <wsapi:NOTICE> wsapi: closing... [latest-26143]2026-05-31T15:23:44.547Z <wsapi:NOTICE> wsapi: disconnecting from "192.168.1.23#82" (1001 service closing) [latest-26143]2026-05-31T15:23:44.548Z <httpapi:NOTICE> HTTP API closing... [latest-26143]2026-05-31T15:23:44.549Z <wsapi:NOTICE> wsapi: server closed [latest-26143]2026-05-31T15:23:44.549Z <httpapi:INFO> HTTP server closed. [latest-26143]2026-05-31T15:23:44.549Z <app:NOTICE> Stopping timers... [latest-26143]2026-05-31T15:23:44.551Z <app:null> Shutdown complete, process ID 1 [latest-26143]2026-05-31T15:23:44.551Z <app:null> Closing logs... [latest-26143]2026-05-31T15:23:44.551Z <default:null> Closing log I can SSH to the VM. Alas, I do not have the previous image for 26143 as I'm a little too quick sometimes on housekeeping.
Multi-System Reactor
http request action & digest auth
tunnusT
I’m using the HTTP Request action in MSR and need to authenticate against an endpoint that uses HTTP Digest authentication. Now that endpoint was changed to use SHA-256 in digest auth, so I would like to know if MSR supports it, or is it limited to MD5-based digest auth?
Multi-System Reactor

MSR web UI stops connecting after a period of time

Scheduled Pinned Locked Moved Multi-System Reactor
11 Posts 3 Posters 2.2k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • cw-kidC Offline
    cw-kidC Offline
    cw-kid
    wrote on last edited by cw-kid
    #2

    Just opened a new Chrome tab and tried to connect to the web UI and I had a blank page for a long time now eventually I see this

    6d8d9415-2f84-4c33-be94-35d0357b2404-image.png

    I just checked the reactor service is still running it says

    abb349bb-b56a-4adc-a181-91e9c3cb2321-image.png

    If I stop and start the reactor service in the terminal, I can now connect to it OK in the web browser. However after some time passes I then cannot connect to it again.

    The version I am running is latest-22252-65e94b36

    This problem started whilst I was on build 22248 and then I updated from that version to the 22252 version.

    I've looked at the logs but they are massive and I am not sure what I am looking for.

    I've got plenty of disk space so the little HP Thin Client box is not currently running low.

    eecfb58c-9f2c-4977-8020-7423d9aa4d36-image.png

    1 Reply Last reply
    0
    • cw-kidC Offline
      cw-kidC Offline
      cw-kid
      wrote on last edited by cw-kid
      #3

      Probably not related but I am also seeing this new Info alert I have never had before.

      bdbec2b2-e19a-4ad9-a0df-4850174ce6af-image.png

      I tried to edit that rule as it suggest but the alert has come back.

      This is the rule and the action it is mentioning.

      e1de2aee-e69d-4b89-9326-779e92d6667f-image.png

      EDIT:

      Oh it says <RESET> don't think I edited the reset just the reaction. I have now edited the reset Content Type field and saved the rule again. Will see if that Info alert comes back?

      EDIT 2:

      Just seen a similar Info alert for a different rule

      2ee95fe2-f5a5-4e0d-848d-3cb02c9e1a89-image.png

      I edited the Request Headers field and save the rule, but when I reset the rule the Info alert as come back again. So I don't know how to fix this issue.

      4ed87e6c-6132-4b2a-b56e-2d64432e4931-image.png

      1 Reply Last reply
      0
      • toggledbitsT Offline
        toggledbitsT Offline
        toggledbits
        wrote on last edited by
        #4

        You ps-4 wrapper script doesn't seem to be exiting in some or all cases, and may be consuming a resource that then causes a wait. You should not be seeing that shell script listed more than once, and then only if you happen to catch it while it's running. Everything else in the thread is expected. Follow the directions given in the alert. The alert is not related.

        If your ps4-wrapper script is doing any kind of curl or other network request, make sure you give the command's timeout option with something reasonably within the expected performance of the target.

        Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

        cw-kidC 1 Reply Last reply
        0
        • toggledbitsT toggledbits

          You ps-4 wrapper script doesn't seem to be exiting in some or all cases, and may be consuming a resource that then causes a wait. You should not be seeing that shell script listed more than once, and then only if you happen to catch it while it's running. Everything else in the thread is expected. Follow the directions given in the alert. The alert is not related.

          If your ps4-wrapper script is doing any kind of curl or other network request, make sure you give the command's timeout option with something reasonably within the expected performance of the target.

          cw-kidC Offline
          cw-kidC Offline
          cw-kid
          wrote on last edited by cw-kid
          #5

          @toggledbits

          Hi Patrick

          Yes I am seeing it list in here for an extended period of time.

          I've also seen it say "delayed" in there as well.

          7b176ea3-4ab5-455d-8908-cfc471531999-image.png

          I think you wrote this shell script for me., file name is ps4-wrapper.sh

          #!/bin/sh
          while true; do
              # Run command and capture its output and exit status
              output=`ps4-waker $*`
              status=$?
              # If output was produced, stop looping.
              if [ -n "$output" ]; then
                  break;
              fi
              sleep 1 # slow retries down a little
          done
          # Echo back the command output and exit with its exit status.
          echo "$output"
          exit $status
          

          I haven't changed anything to do with the Playstation 4 rules and script. Its the thing that sends the PS4 status information to the MultiString device in Vera.

          It doesn't normally say "Unknown" either.

          2873f52c-eec6-417c-a591-4f0d18a39302-image.png

          1 Reply Last reply
          0
          • cw-kidC Offline
            cw-kidC Offline
            cw-kid
            wrote on last edited by cw-kid
            #6

            Here's the rule in question

            e0838e3b-2441-4c47-80e2-f9c5f72190e2-image.png

            1dc52e2f-39d0-4a24-8858-0cd272ba5e4d-image.png 97bf814f-6bac-4291-990a-0d8da865521b-image.png aba402d2-0585-4735-9b96-fcf099f69a2d-image.png e093615b-a713-4e5d-93f2-ad8c0488c253-image.png

            These are the Global Expressions related to my PS4 rules. Looks like one has an issue now.

            As I said I have not touched any of these rules or scripts since they were setup and working, which was ages ago now.

            842ee82f-b321-4177-80da-15347dd54775-image.png

            This was the original thread about this PS4 setup here.

            I've not played on it for a while, I just tried to turn it on starting a Logitech Harmony activity but the PS4 did not turn ON for some reason. So maybe something with this setup is broken now.

            1 Reply Last reply
            0
            • cw-kidC Offline
              cw-kidC Offline
              cw-kid
              wrote on last edited by cw-kid
              #7

              Turned on the PS4 instead using the controller for it and I saw this message "Checking the system storage status" maybe the PS4 was in a bad state of shutdown / sleep.

              I just reset the PS4 Waker Check rule and now the Global Expressions are fine.

              1b2a436e-7b9e-465d-a17e-949e1056c2f2-image.png

              PS4 status data now also sent to the Multi String device in Vera OK.

              5bf9302f-9990-432a-a6c1-4643fe197844-image.png

              I will turn OFF the PS4 now and see if the problem comes back?

              But I think it might have been related to the PS4 being in a bad shutdown / sleep state.

              OK with the PS4 / Harmony activity now OFF in the MSR Status "Running Reactions" these don't stay in there for too long now and then disappear

              db162059-62ec-4e81-bf9f-098319266138-image.png

              So fingers crossed I will monitor it.

              Also starting the PS4 Harmony activity again now the PS4 is turned on by MSR / PS4 Waker script. So that is working again also.

              The PS4 before was not is its proper "Rest Mode" of sleep and thus this was causing issues with the MSR rules and script it seems.

              1 Reply Last reply
              0
              • toggledbitsT Offline
                toggledbitsT Offline
                toggledbits
                wrote on last edited by
                #8

                Change your ps4-wrapper.sh to this (replace it entirely):

                #!/bin/bash
                count=0
                while true; do
                    # Run command and capture its output and exit status
                    output=`ps4-waker $*`
                    status=$?
                    # If output was produced, stop looping.
                    if [ -n "$output" ]; then
                        break;
                    fi
                    count=$(( $count + 1 ))
                    if [ $count -ge 10 ]; then
                        echo "ps4-waker produced no output after 10 tries"
                        exit 255
                    fi
                    sleep 1 # slow retries down a little
                done
                # Echo back the command output and exit with its exit status.
                echo "$output"
                exit $status
                

                This version will retry 10 times to get what it wants, and exit with an error status if it doesn't get what it wants by then.

                Author of Multi-system Reactor and Reactor, DelayLight, Switchboard, and about a dozen other plugins that run on Vera and openLuup.

                cw-kidC 2 Replies Last reply
                0
                • toggledbitsT toggledbits

                  Change your ps4-wrapper.sh to this (replace it entirely):

                  #!/bin/bash
                  count=0
                  while true; do
                      # Run command and capture its output and exit status
                      output=`ps4-waker $*`
                      status=$?
                      # If output was produced, stop looping.
                      if [ -n "$output" ]; then
                          break;
                      fi
                      count=$(( $count + 1 ))
                      if [ $count -ge 10 ]; then
                          echo "ps4-waker produced no output after 10 tries"
                          exit 255
                      fi
                      sleep 1 # slow retries down a little
                  done
                  # Echo back the command output and exit with its exit status.
                  echo "$output"
                  exit $status
                  

                  This version will retry 10 times to get what it wants, and exit with an error status if it doesn't get what it wants by then.

                  cw-kidC Offline
                  cw-kidC Offline
                  cw-kid
                  wrote on last edited by
                  #9

                  @toggledbits

                  OK great thank you very much Patrick. I will change the script.

                  1 Reply Last reply
                  0
                  • toggledbitsT toggledbits

                    Change your ps4-wrapper.sh to this (replace it entirely):

                    #!/bin/bash
                    count=0
                    while true; do
                        # Run command and capture its output and exit status
                        output=`ps4-waker $*`
                        status=$?
                        # If output was produced, stop looping.
                        if [ -n "$output" ]; then
                            break;
                        fi
                        count=$(( $count + 1 ))
                        if [ $count -ge 10 ]; then
                            echo "ps4-waker produced no output after 10 tries"
                            exit 255
                        fi
                        sleep 1 # slow retries down a little
                    done
                    # Echo back the command output and exit with its exit status.
                    echo "$output"
                    exit $status
                    

                    This version will retry 10 times to get what it wants, and exit with an error status if it doesn't get what it wants by then.

                    cw-kidC Offline
                    cw-kidC Offline
                    cw-kid
                    wrote on last edited by cw-kid
                    #10

                    @toggledbits

                    All seems to be working OK with the new script !

                    Regarding the other issue with the Info Alerts for some of my rules.

                    It says make a trivial edit of the headers argument and then save the rule. I think I have done this, but the alerts return back again.

                    Like on the Covid Stats rule I totally removed accept: application/json and saved the rule then I added it back in to the headers field and saved the rule again.

                    tunnusT 1 Reply Last reply
                    0
                    • cw-kidC cw-kid

                      @toggledbits

                      All seems to be working OK with the new script !

                      Regarding the other issue with the Info Alerts for some of my rules.

                      It says make a trivial edit of the headers argument and then save the rule. I think I have done this, but the alerts return back again.

                      Like on the Covid Stats rule I totally removed accept: application/json and saved the rule then I added it back in to the headers field and saved the rule again.

                      tunnusT Offline
                      tunnusT Offline
                      tunnus
                      wrote on last edited by
                      #11

                      @cw-kid had the same situation, only after I totally removed "accept: ..." and didn't add it back, those alerts stopped

                      Using MSR on Docker (Synology NAS), having InfluxDB, Grafana & Home Assistant, Zigbee2MQTT & ZWA-2

                      1 Reply Last reply
                      0
                      • toggledbitsT toggledbits locked this topic on
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      Recent Topics

                      • Arming Envisalink panel from MSR
                        T
                        tamorgen
                        0
                        7
                        126

                      • [Solved] DynamicGroupController updating members issue
                        CrilleC
                        Crille
                        0
                        5
                        81

                      • Reactor (Multi-System/Multi-Hub) Announcements
                        toggledbitsT
                        toggledbits
                        5
                        148
                        129.3k

                      • DynamicGroupController and attributes
                        therealdbT
                        therealdb
                        1
                        5
                        94

                      • Upgrade Issues
                        T
                        tbully
                        0
                        9
                        223

                      • [SOLVED] Conflicting Set Reaction Groups Appear to Fire Simultaneously in Single Rule Evaluation
                        toggledbitsT
                        toggledbits
                        0
                        10
                        242

                      • [SOLVED] Question regarding "in" vs "contains" vs contents of the string
                        G
                        gwp1
                        0
                        5
                        124

                      • openLuup console disappeared - 500 - Internal Server Error
                        A
                        a-lurker
                        0
                        2
                        171

                      • Logon screen timeout
                        G
                        gwp1
                        0
                        5
                        190

                      • [MSR] Copy&past of actions and/or drag&drop between set/reset
                        toggledbitsT
                        toggledbits
                        0
                        9
                        356

                      • Upgrade advice - upgrade from aarch64 to ARM64 image
                        toggledbitsT
                        toggledbits
                        0
                        4
                        213
                      Powered by NodeBB | Contributors
                      Hosted freely by 10RUPTiV - Solutions Technologiques | Contact us
                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Unsolved