Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. js-controller 4.0.x jetzt für alle User im STABLE!

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    js-controller 4.0.x jetzt für alle User im STABLE!

    This topic has been deleted. Only users with topic management privileges can see it.
    • padrino
      padrino Most Active @wendy2702 last edited by

      So, wollte eigentlich erstmal auf 3.3 upgraden, hab aber nicht mitbekommen, dass V4 im Stable ist... Also hat das System automatisch versucht V4 zu installieren.
      Ergebnis, mein iob ist hin. 😞
      Installation spuckte nach gut 5 Minuten folgendes aus:

      pi@raspberrypi:/opt/iobroker $ iobroker upgrade self
      Update js-controller from @3.1.6 to @4.0.15
      NPM version: 6.14.15
      npm install iobroker.js-controller@4.0.15 --loglevel error --unsafe-perm --prefix "/opt/iobroker" (System call)
      In file included from ../../nan/nan.h:56,
                       from ../src/unix_dgram.cc:5:
      /home/iobroker/.cache/node-gyp/12.22.6/include/node/node.h:736:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
             (node::addon_register_func) (regfunc),                          \
                                                 ^
      /home/iobroker/.cache/node-gyp/12.22.6/include/node/node.h:770:3: note: in expansion of macro ‘NODE_MODULE_X’
         NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
         ^~~~~~~~~~~~~
      ../src/unix_dgram.cc:404:1: note: in expansion of macro ‘NODE_MODULE’
       NODE_MODULE(unix_dgram, Initialize)
       ^~~~~~~~~~~
       Objects 127.0.0.1:59278 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.features.useSets"]
       States 127.0.0.1:60766 Error from InMemDB: Error: GET-UNSUPPORTED for namespace meta.: Data=["meta.states.protocolVersion"]
       Objects 127.0.0.1:59278 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.protocolVersion"]
       Objects 127.0.0.1:59278 Error from InMemDB: Error: scan NOT SUPPORTED
      /opt/iobroker/node_modules/standard-as-callback/built/index.js:6
              throw e;
              ^
      
      ReplyError: Error scan NOT SUPPORTED
          at parseError (/opt/iobroker/node_modules/redis-parser/lib/parser.js:179:12)
          at parseType (/opt/iobroker/node_modules/redis-parser/lib/parser.js:302:14)
      Emitted 'error' event on ScanStream instance at:
          at /opt/iobroker/node_modules/ioredis/built/ScanStream.js:38:22
          at tryCatcher (/opt/iobroker/node_modules/standard-as-callback/built/utils.js:12:23)
          at /opt/iobroker/node_modules/standard-as-callback/built/index.js:33:51
          at processTicksAndRejections (internal/process/task_queues.js:97:5) {
        command: {
          name: 'scan',
          args: [ '0', 'MATCH', 'cfg.o.system.host.*', 'COUNT', '250' ]
        }
      }
      npm ERR! code ELIFECYCLE
      npm ERR! errno 1
      npm ERR! iobroker.js-controller@4.0.15 install: `node iobroker.js setup first`
      npm ERR! Exit status 1
      npm ERR!
      npm ERR! Failed at the iobroker.js-controller@4.0.15 install script.
      npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
      
      npm ERR! A complete log of this run can be found in:
      npm ERR!     /home/iobroker/.npm/_logs/2022-02-28T19_25_50_415Z-debug.log
      host.raspberrypi Cannot install iobroker.js-controller@4.0.15: 1
      pi@raspberrypi:/opt/iobroker $
      
      

      iobroker start bleibt nun still, sprich admin nicht erreichbar...

      gebe ich nur iobroker ein kommt

      pi@raspberrypi:/opt/iobroker $ iobroker
      internal/modules/cjs/loader.js:818
        throw err;
        ^
      
      Error: Cannot find module '/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js'
          at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
          at Function.Module._load (internal/modules/cjs/loader.js:667:27)
          at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
          at internal/main/run_main_module.js:17:47 {
        code: 'MODULE_NOT_FOUND',
        requireStack: []
      }
      
      

      Ich weiß schon, wieso ich normal nach dem Prinzip "never change a running system" handele, denn, wenn wie jetzt was schief geht steht man als noob wie der Ochs vorm Scheunentor. 😞

      Thomas Braun apollon77 2 Replies Last reply Reply Quote 0
      • Thomas Braun
        Thomas Braun Most Active @padrino last edited by Thomas Braun

        @padrino sagte in js-controller 4.0.x jetzt für alle User im STABLE!:

        Ich weiß schon, wieso ich normal nach dem Prinzip "never change a running system" handele

        Der dämliche Spruch hat sich jetzt genau in die Situation gebracht.
        Je größer die Versionssprünge werfen umso heikler wird das u.U.

        iobroker status
        

        sagt? Aber besser in einem eigenen Thread.

        padrino 1 Reply Last reply Reply Quote 0
        • padrino
          padrino Most Active @Thomas Braun last edited by

          @thomas-braun sagte in js-controller 4.0.x jetzt für alle User im STABLE!:

          Der dämliche Spruch hat sich jetzt genau in die Situation gebracht.

          Naja, es lief ja vor dem Update... was ja unbestritten ist. 🤷

          @thomas-braun sagte in js-controller 4.0.x jetzt für alle User im STABLE!:

          Je größer die Versionssprünge werfen umso heikler wird das u.U.

          Sollte dann nicht der Installer das berücksichtigen und erstmal "klein" updaten, oder einem dazu raten?

          Auf jeden Fall, hat mir jetzt ein
          npm install iobroker.js-controller@3.3
          mir iob wohl erstmal wieder zum Laufen gebracht.

          Thomas Braun 1 Reply Last reply Reply Quote 0
          • Thomas Braun
            Thomas Braun Most Active @padrino last edited by

            @padrino

            Dann kannst du ja jetzt das System auf Stand bringen. Ich würde mit nodeJS anfangen und das auf v14 bringen.

            1 Reply Last reply Reply Quote 0
            • apollon77
              apollon77 @padrino last edited by

              @padrino Ok, lösung ist sehr einfach: Nicht "iob uplgrade self nehmen" ... ALso fix durchcontroller per npm drüberbügeln 🙂

              • iobroker stoppen
              • cd /opt/iobroker
              • npm iobroker.js-controller@4.0.15 --production
              • iobroker starten
              1 Reply Last reply Reply Quote 1
              • S
                sandro_gera last edited by sandro_gera

                Hallo an alle,

                auf meine Slave Raspberry 3b hat das update wunderbar funktioniert.
                Leider bekomme ich schon beim Backup auf meine Master, Raspberry 4, folgende Fehlermeldung.

                pi@RaspBerry4BioBroker:~ $ iob backup
                Server Objects 192.168.178.16:45850 Error from InMemDB: Error: CONFIG-UNSUPPORTED for ["set","notify-keyspace-events","Exe"]
                Server Objects 192.168.178.16:45850 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.features.useSets"]
                Server Objects 192.168.178.16:45850 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.protocolVersion"]
                Server Objects 192.168.178.16:45856 Error from InMemDB: Error: PSUBSCRIBE-UNSUPPORTED for namespace cfg.: Data=["meta.*"]
                host.RaspBerry4BioBroker 7321 states saved
                host.RaspBerry4BioBroker 8839 objects saved
                Server Objects 192.168.178.16:45856 Error from InMemDB: Error: subscribe NOT SUPPORTED
                Server States 192.168.178.16:56964 Error from InMemDB: Error: GET-UNSUPPORTED for namespace meta.: Data=["meta.states.protocolVersion"]
                Server States 192.168.178.16:56966 Error from InMemDB: Error: PSUBSCRIBE-UNSUPPORTED for namespace meta.: Data=["meta.*"]
                Backup created: /opt/iobroker/backups/2022_03_01-11_17_31_backupiobroker.tar.gz
                
                

                Die ip Adress von meinem Slave ist die 192.168.178.16 der Master hat die 17.

                Ich habe wie immer zuerst den Slave geupdatet.

                Ich blick da nicht durch und hoffe mir kann jemand helfen.

                Ich hab IOBroker auf dem Slave gestopt.
                Danach lief das bachup auf dem Master durch.
                Allerdinge bekomme ich beim Upate des Masters jetzt folgende Fehlermeldung.

                pi@RaspBerry4BioBroker:~ $ iob upgrade self
                Update js-controller from @3.3.22 to @4.0.15
                NPM version: 6.14.16
                npm install iobroker.js-controller@4.0.15 --loglevel error --unsafe-perm --prefix "/opt/iobroker" (System call)
                In file included from ../../nan/nan.h:56,
                                 from ../src/unix_dgram.cc:5:
                /home/iobroker/.cache/node-gyp/14.19.0/include/node/node.h:793:43: warning: cast between incompatible function types from ‘void (*)(v8::Local<v8::Object>)’ to ‘node::addon_register_func’ {aka ‘void (*)(v8::Local<v8::Object>, v8::Local<v8::Value>, void*)’} [-Wcast-function-type]
                       (node::addon_register_func) (regfunc),                          \
                                                           ^
                /home/iobroker/.cache/node-gyp/14.19.0/include/node/node.h:827:3: note: in expansion of macro ‘NODE_MODULE_X’
                   NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
                   ^~~~~~~~~~~~~
                ../src/unix_dgram.cc:404:1: note: in expansion of macro ‘NODE_MODULE’
                 NODE_MODULE(unix_dgram, Initialize)
                 ^~~~~~~~~~~
                Server Objects 127.0.0.1:36656 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.features.useSets"]
                Server States 127.0.0.1:56862 Error from InMemDB: Error: GET-UNSUPPORTED for namespace meta.: Data=["meta.states.protocolVersion"]
                Server Objects 127.0.0.1:36656 Error from InMemDB: Error: GET-UNSUPPORTED for namespace cfg.: Data=["meta.objects.protocolVersion"]
                Server States 127.0.0.1:56864 Error from InMemDB: Error: PSUBSCRIBE-UNSUPPORTED for namespace meta.: Data=["meta.*"]
                Server Objects 127.0.0.1:36656 Error from InMemDB: Error: Unknown LUA script load
                Server Objects 127.0.0.1:36656 Error from InMemDB: Error: Unknown LUA script load
                Server Objects 127.0.0.1:36656 Error from InMemDB: Error: Unknown LUA script load
                Server Cannot move /opt/iobroker/iobroker-data/objects.json.new to /opt/iobroker/iobroker-data/objects.json: ENOENT: no such file or directory, stat '/opt/iobroker/iobroker-data/objects.json.new'. Try direct write as fallback
                
                
                apollon77 1 Reply Last reply Reply Quote 0
                • apollon77
                  apollon77 @sandro_gera last edited by

                  @sandro_gera Ok, nochmal langsam:

                  Zum "Fehler bei Backup": Du hast einen Slave aktualisiert und machst dann ein backup auf dem Slave der damit noch gegen einen "alten" Master verbunden ist? Ja, dann sind solche Meldungen zu erwarten, sollten aber egal sein, kannste also ignorieren.

                  Das Update auf dem master sieht an sich auch ok aus ... bzw ... bleibt er da hängen oder ist das die ganze Ausgabe und danach war ok?? Aber auch hier sind diese Meldungen zu erwarten ...

                  S matthsc 2 Replies Last reply Reply Quote 0
                  • S
                    sandro_gera @apollon77 last edited by

                    @apollon77

                    Danke Apollon, es sieht so aus als ob des update auch auf dem Master funktioniert hat.

                    Ich werd das mal beobachten und falls in den Protokollen was auftaucht was ich nicht verstehe melde ich mich wieder.

                    1 Reply Last reply Reply Quote 1
                    • matthsc
                      matthsc Developer @apollon77 last edited by

                      Ich habe mein Master/Slave System problemlos von 3.3.22 auf 4.0.15 aktualisiert.

                      Master: RPi 4
                      Slaves: 2x RPi Zero (nur BLE Adapter)
                      Redis als State-DB

                      Alle Systeme laufen unter Dietpi/Debian Buster mit NodeJS 14 / NPM 6

                      1 Reply Last reply Reply Quote 1
                      • H
                        hausautomation.digital @Michael Schmitt last edited by

                        @michael-schmitt said in js-controller 4.0.x jetzt für alle User im STABLE!:

                        @apollon77
                        Hi,
                        wie werde ich diese Meldungen los? Kommen nach dem update

                        2022-02-25 22:31:24.720 - warn: deconz.0 (12037) Object Groups.9.xy is invalid: Default value has to be stringified but received type "object"
                        2022-02-25 22:31:24.721 - warn: deconz.0 (12037) This object will not be created in future versions. Please report this to the developer.
                        2022-02-25 22:31:28.989 - warn: deconz.0 (12037) Object Groups.9.xy is invalid: Default value has to be stringified but received type "object"
                        2022-02-25 22:31:28.990 - warn: deconz.0 (12037) This object will not be created in future versions. Please report this to the developer.
                        

                        Geht mir genau so. Gibts da schon eine Lösung??

                        fehler.jpg

                        Michael Schmitt 1 Reply Last reply Reply Quote 0
                        • Michael Schmitt
                          Michael Schmitt @hausautomation.digital last edited by Michael Schmitt

                          @hausautomation-digital

                          installiere mal von NPM die Version 1.3.20 (für deconz)

                          1 Reply Last reply Reply Quote 2
                          • D
                            darkiop Most Active @apollon77 last edited by

                            @apollon77

                            Hi Ingo, mir ist grad aufgefallen, das nach dem Upgrade auf v4 die Disk IO, CPU Last, Ram Bedarf vom Redis LXC gestiegen ist. Der Zeitpunkt des Anstiegs passt genau zum Upgrade-Zeitpunkt.

                            redis-cli 6.0.11
                            js-controller 4.0.15
                            node 14.19.0
                            npm 6.14.16

                            Hast ne Idee?

                            67cabad3-d9e7-4347-94f1-6ee658fcc315-image.png

                            Bildschirmfoto 2022-03-02 um 19.30.10.png

                            apollon77 1 Reply Last reply Reply Quote 0
                            • apollon77
                              apollon77 @darkiop last edited by apollon77

                              @darkiop interessant. So einen Effekt hatte ich noch nicht gesehen was sind das für Werte? AVG über welchen Zeitraum? Was genau ist im redis drin? Also mit einem So geringen Memory footprint vor dem Update war das nur States? Ich würde das da zuerst mal ansetzen was da ggf dazugekommen ist. Weil klar. Mit mehr Daten wird mehr gespeichert und so weiter. Dann sind wir wieder bei der eingestellten persistent.

                              Aber mal mehr Details: objects und States? Oder nur States? Lass es aber am besten in eigenen thread auslagern

                              Bzw auch: da ist 20:33 ein setup custom … was hast du da getan??? Was war vorher? Was nachher?

                              D 1 Reply Last reply Reply Quote 0
                              • D
                                darkiop Most Active @apollon77 last edited by

                                @apollon77

                                Glaub ich leg mich direkt ins Bett. Besch... Tag - eben hats dann geklingelt. Ich hatte kurz nach dem v4 Upgrade auch die Objects auf redis umgestellt - vorher waren es nur die States. Hab das eben nochmal in einer iobroker.json von vorm dem Upgrade Zeitpunkt gegengeprüft 😉

                                Zur Vollständigkeit: Das Chart war ein AVG/Month

                                Muss dann vielleicht auch mal schauen ob ich auf Redis AOF umstelle.

                                PS: Du erinnerst dich an meinen zerstörten GlusterFS Arbiter USB Stick? Ich würd mal vermuten das die Aktivierung von redis@objects ihm den erst gegeben haben 😄

                                apollon77 1 Reply Last reply Reply Quote 0
                                • apollon77
                                  apollon77 @darkiop last edited by

                                  @darkiop hehe. Dann haste deinen Grund.
                                  Aber ja auch meine Erkenntnisse sagen: für nur States ist rdf I/o schonender mit sinnvollen settings als aof. Wenn objects ist ganz klar aof das einzig sinnvolle !

                                  liv-in-sky 1 Reply Last reply Reply Quote 0
                                  • leuchtfuchs
                                    leuchtfuchs last edited by

                                    Bei mir hat das Update nicht geklappt. Bekomme diesen Fehler. IOB startet nicht.

                                    pi@iobroker-pi:~ $ node -v
                                    v14.19.0
                                    pi@iobroker-pi:~ $ npm -v
                                    6.14.16
                                    pi@iobroker-pi:~ $ iob status
                                    Uncaught Rejection: TypeError: Cannot read property 'warning' of undefined
                                        at ObjectsInMemoryServer.initBackupDir (/opt/iobroker/node_modules/@iobroker/db-base/lib/inMemFileDB.js:187:22)
                                        at new InMemoryFileDB (/opt/iobroker/node_modules/@iobroker/db-base/lib/inMemFileDB.js:83:18)
                                        at new ObjectsInMemoryFileDB (/opt/iobroker/node_modules/@iobroker/db-objects-file/lib/objects/objectsInMemFileDB.js:34:9)
                                        at new ObjectsInMemoryJsonlDB (/opt/iobroker/node_modules/@iobroker/db-objects-jsonl/lib/objects/objectsInMemJsonlDB.js:58:9)
                                        at new ObjectsInMemoryServer (/opt/iobroker/node_modules/@iobroker/db-objects-jsonl/lib/objects/objectsInMemServerRedis.js:57:9)
                                        at new ObjectsInMemoryServerClass (/opt/iobroker/node_modules/@iobroker/db-objects-jsonl/lib/objects/objectsInMemServerClass.js:34:30)
                                        at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js:3123:27)
                                    pi@iobroker-pi:~ $ iob version
                                    4.0.15
                                    
                                    apollon77 1 Reply Last reply Reply Quote 0
                                    • apollon77
                                      apollon77 @leuchtfuchs last edited by

                                      @leuchtfuchs Da bist Du in ein Konfigprobkem und nen Mini Code-Fehler gerannt 🙂

                                      Dein problem ist das das Backup Interval der DB bei dir falsch konfiguriert ist.

                                      Quick Fix: Editiere /opt/iobroker/iobroker-data/iobroker.json und schaue das bei objects bzw states das in "backup" das "period" eine Zahl in SEKUNDEN ist ... Der Standard Wert ist 120 (=2h) ... Du hast da irgendeinen viel zu hohen Wert drin.

                                      1 Reply Last reply Reply Quote 0
                                      • liv-in-sky
                                        liv-in-sky @apollon77 last edited by

                                        @apollon77

                                        hilfe - bitte

                                        • iobroker crash der sd karte mit js-cont 3.x
                                        • neue karte, neue installlation - es ist jetzt js-cont. 4.x
                                        • haben iob setup costum ausgeführt und auf file umgestellt - wollten restore machen
                                        • nschliessend sudo npm i iobroker.js-controller@3.3.22 --production

                                        geht nicht - es kommt fehler:

                                        pi@homebridge:/opt/iobroker $ sudo npm i iobroker.js-controller@3.3.22 --production
                                        
                                        > iobroker.js-controller@3.3.22 preinstall /opt/iobroker/node_modules/iobroker.js-controller
                                        > node lib/preinstallCheck.js
                                        
                                        NPM version: 6.14.16
                                        
                                        > iobroker.js-controller@3.3.22 install /opt/iobroker/node_modules/iobroker.js-controller
                                        > node iobroker.js setup first
                                        
                                        Cannot write file. Not critical: EACCES: permission denied, open '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/../../../../reinstall.js'
                                        Cannot delete file. Not critical: EACCES: permission denied, unlink '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/../../_service_iobroker.bat'
                                        Cannot delete file. Not critical: EACCES: permission denied, unlink '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/../../iobroker.bat'
                                        Cannot delete file. Not critical: EACCES: permission denied, unlink '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/../../iob.bat'
                                        internal/fs/utils.js:332
                                            throw err;
                                            ^
                                        
                                        Error: EACCES: permission denied, mkdir '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/../../tmp'
                                            at Object.mkdirSync (fs.js:1013:3)
                                            at Setup.setup (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/setupSetup.js:835:16)
                                            at processCommand (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js:487:23)
                                            at Object.module.exports.execute (/opt/iobroker/node_modules/iobroker.js-controller/lib/setup.js:2912:5)
                                            at Object.<anonymous> (/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js:1:24)
                                            at Module._compile (internal/modules/cjs/loader.js:1085:14)
                                            at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
                                            at Module.load (internal/modules/cjs/loader.js:950:32)
                                            at Function.Module._load (internal/modules/cjs/loader.js:790:12)
                                            at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:75:12) {
                                          errno: -13,
                                          syscall: 'mkdir',
                                          code: 'EACCES',
                                          path: '/opt/iobroker/node_modules/iobroker.js-controller/lib/setup/../../tmp'
                                        }
                                        

                                        was muss ich machen, damit ich den restore fahren kann ?

                                        @Damrak2022

                                        Thomas Braun 1 Reply Last reply Reply Quote 0
                                        • Thomas Braun
                                          Thomas Braun Most Active @liv-in-sky last edited by

                                          @liv-in-sky sagte in js-controller 4.0.x jetzt für alle User im STABLE!:

                                          sudo npm

                                          Bitte

                                          sudo -H -u iobroker npm
                                          

                                          verwenden.

                                          liv-in-sky 1 Reply Last reply Reply Quote 1
                                          • liv-in-sky
                                            liv-in-sky @Thomas Braun last edited by

                                            @thomas-braun

                                            erstmal danke - bitte genau erklären - haben das ganze wieder auf js-c 4.x gebracht und mit jsonl

                                            wie genau müssen wir vorgehen - wieder zuerst iob setup costum

                                            und was dann

                                            sudo -H -u iobroker npm  i iobroker.js-controller@3.3.22 --production
                                            
                                            Thomas Braun apollon77 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            732
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            83
                                            501
                                            109182
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo