Commit Graph

122 Commits

Author SHA1 Message Date
Anna Prosvetova
f35977e84f
CI: Support slashed branches ()
* CI: Support slashed branches
* CI: Create rsync destination directory
2021-10-17 12:41:04 +03:00
Anna Prosvetova
8c5813ef9b
Bump default target to f7 ()
* Bump default target to f7
* Bootloader: set default target to F7

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2021-10-12 18:30:55 +03:00
あく
4456982e27
[FL-1699, FL-1700] Scripts: new radio firmware bundling scheme, manifest for resources. ()
* Scripts: new radio firmware bundling scheme, manifest for resources.
* Scripts: add destination address for copro binaries.
* Bootloader: update linker scripts
* Scripts: resource manifest FsTree.
2021-09-13 12:52:50 +03:00
Anna Prosvetova
a0d2e4c6a4
CI: Fix quick flash link ()
* CI: Fix quick flash link
* CI: Fix default target var
2021-09-10 15:05:09 +03:00
SG
8073992925
[FL-1587] RFID: Clock for emulation timer from antenna ()
* RFID: pull antenna down when emulating
* Rfid: fixed HID emulation by adding zero pulse every 4 bits
* Rfid: HID emulation fixed with DSP based FSK oscillator.
* Rfid: receive 125KHz clock for emulation timer from antenna and comparator
* Rfid: commented unused variable
* Firmware: rollback changes in f6.
* Add F7 target based on F6.
* F7/F6: update cube projects, apply changes to the targets, update linker scripts with correct RAM start values.
* FuriHal: RFID init routine.
* Scripts: update OTP tool for v11 board

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2021-09-10 05:19:02 +03:00
Anna Prosvetova
08f7a290a4
CI: Fix git.mk & post a quick flash link on PR builds ()
* CI: Fix git.mk & post a quick flash link on PR builds
* Makefile: optimize shell invocation in git helper, conditional dependency load.
* Github: better variable naming

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2021-08-26 20:59:23 +03:00
Anna Prosvetova
6966ca8f8f
CI: Use 7-symbol short hashes for consistency () 2021-08-21 01:55:20 +03:00
Anna Prosvetova
b1bbf1730c
CI: Fix branch names () 2021-08-20 20:31:07 +03:00
あく
54278b9adc
Github: proper workflow handling for tags () 2021-08-19 12:56:42 +03:00
Maksim
274e9e8576
CI: Do not upload fork artifacts () 2021-08-17 19:46:12 +03:00
Anna Prosvetova
46502ac44a
Comment on syntax errors () 2021-08-17 18:48:13 +03:00
Anna Prosvetova
fe2b9718e1
CI: Fix artifacts naming ()
* Fix artifacts naming
* Github: build on pull requests
* Github: narrow build trigger criteria.

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2021-08-17 17:45:23 +03:00
あく
f02cec45a0
[FL-1473, FL-1651] Update STM32CubeWB to latest version. Radio firmware bundle. ()
* FuriHal: update STM32CubeWB to latest version.
* Makefile: debug other script
* FuriHal: correctly handle 0 size transfers in VCP
* Dolphin: cleanup and minor timer tuning.
* FuriHal: update FreeRTOS config with bigger timer command queue.
* FuriHal: delayed irq enabling, fixes missing ticks.
* FuriHal: use SFSA to determine free space for internal FS, update linker script to use as much space as theoretically possible.
* Scripts: update core2 flashing scripts and OB data.
* Github: bundle resources, core2 firmware and supplementary data.
* GitHub: versioning for supplemental artifacts
2021-08-17 12:41:08 +03:00
Anna Prosvetova
69f4858168
DFU make rule, update Readme ()
Co-authored-by: あく <alleteam@gmail.com>
2021-08-16 23:22:30 +03:00
Anna Prosvetova
a548525d75
CI: Multiarch Docker toolchain ()
Co-authored-by: あく <alleteam@gmail.com>
2021-08-16 14:55:27 +03:00
Skorpionm
1cfa857f98
[FL-1610] SubGhz: scene based application, PT save and replay ()
* SubGhz: scene based application
* SubGhz: encoder/decoder separation, DMA streaming, update app and cli.
* SubGhz: 2 stage async tx complete, minor cleanup
* SubGhz: 2 stage async tx complete, FIX state pin end transmit
* SubGhz: Pricenton, receive TE signal
* SubGhz: Pricenton, add save data, add load data
* SubGhz: Add Read scene, Fix pricenton save, load funtion
* SubGhz: Add Read, Receiver, SaveName scene
* SubGhz: Read and Save (pricenton)
* SubGhz: add Load scence
* SubGhz: Fix select file scene, add load scene, add transmitter view, add send tx pricenton
* SubGhz: Fix pricenton encoder, fix transmitter send
* SubGhz: modified Pricenton Encoder (added guard time at the beginning), modified CC1101 config, code refactoring
* SubGhz: Fix pricenton encoder defalut TE
* Archive: Fix path and name SubGhz
* Archive: Fix name app SubGhz
* GubGhz: Came: add Save, Load key
* GubGhz: GateTX: add Save, Load key
* GubGhz: NeroSketch: add Save, Load key
* Github: better linters triggers
* SubGhz: adding fast loading keys Archive -> Run in app
* GubGhz: KeeLog: add Save, Load key, key generation from the serial number of the meter and the button
* SubGhz: format sources and fix compilation
* FuriHal: add subghz configuration description for AGC section
* SubGhz: save only protocols that can be saved. Cleanup.
* Github: lint on pull requests

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2021-08-12 17:42:56 +03:00
Anna Prosvetova
8696355556
CI: Use proper target name in DfuSe () 2021-08-11 19:59:16 +03:00
rusdacent
eb83395cc3
Remove action "upload-artifacts" from build workflow ()
* rm upload artifacts to GitHub
* Skip lint_c if no source files were modified

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2021-08-06 02:33:15 +03:00
Anna Prosvetova
fb305eddb2
CI: Fix branch artifacts naming and submodules in the linter ()
* Fix branch artifacts naming
* Port submodules fix from build.yml
* Github: port decontamination to python lint action
* Github: skip decontamination on non existing repos
* Github: skip submodules python lint

Co-authored-by: あく <alleteam@gmail.com>
2021-07-25 14:46:34 +03:00
rusdacent
0c7a8edf51
[FL-1533] CI refactoring ()
* rename artifacts
* add workflow with date
* add debug
* Add branch name to artifact name and rm genpic job
* Add branch name to artifact name for upload job
* Add branch restrictions for dev and user branches
* Add branch restrictions for dev and user branches
* Add cleanup workspace for upload job
* Test ignore branch
* Test release CI workflow
* Rename release CI
* Add pre-release trigger
* Rm branch restriction for CI
* Add release trigger
* rm branch restriction for CI
* rm genpic job
* Github: refactor actions, move linting to parallel actions, separate forlder for artifacts, build cleanup
* Github: build date and commit hash on branches and tag on tags
* Github: minor artifacts name cleanup
* Github: decontaminate previous build leftovers
* Github: better decontamination and release build SUFFIX
* Github: fetch before decontamitation
* Github: change decontamination logic, jump to first commit if submodules are broken
* ReadMe: update links to latest firmware and images

Co-authored-by: あく <alleteam@gmail.com>
2021-07-24 16:53:02 +03:00
あく
421a0f6b97
[FL-1546, FL-1534, FL-1550] Drop F5, Certification preparation, Global application start lock ()
* Firmware: drop F5 target
* Rename app-loader to loader
* Update code owners file
* Loader: global application start lock API, minor refactoring
* Archive: update loader usage
* Cli: Command flags, global application start lock
* Apps: update cli API usage
* Bootloader: minor refactoring
* Firmware: minor build refactoring
* SubGhz: GUI packet test
* SubGhz: drop packet transmission and unused presets
* Github: drop F5 from build
* Archive: favorites
* Archive: a little bit more of Favorites
2021-07-18 21:09:00 +03:00
Anna Prosvetova
5d746234e9
Trigger update reindex after artifacts upload ()
Co-authored-by: あく <alleteam@gmail.com>
2021-06-25 20:08:01 +03:00
shevv
6e6df5e806
[FL-1457] Update link to release ()
Co-authored-by: shevv <shevv@shevv.com>
2021-06-19 22:49:12 +03:00
あく
c2b3084de3
Github: update workflow to match new scheme () 2021-05-28 13:23:16 +03:00
rusdacent
93fbb2e182
Added full.dfu artifact for upload () 2021-05-20 17:31:48 +03:00
あく
734820c137
[FL-1196] Targets: add F6 ()
* Targets: add F6
* F6: Update linker script for use with internal storage
* F6: synchronize with F5, add all changes arriving in V9 board, update cube project. Github workflow: add multi-target build, add F6 to build targets.
* CI: fix full assembly
* CI: better artifact naming scheme
* CI: fix artifacts wildcard
* F6: Swap C10 - A15, vibro and sdcard detect pins
2021-05-18 12:23:14 +03:00
rusdacent
29d10e1b0a
Upload ELFs to update server () 2021-05-10 13:14:33 +03:00
あく
b90d72fadf
Recator application build system: cleaner flags naming, set release flag to yes by default, include unit test and debug apps () 2021-04-30 14:07:13 +03:00
あく
0c3a0a3312
[FL-1104] Fix NFC crash and missing NfcMessageTypeDeviceNotFound event ()
* Remove asserts from platformProtectST25RComm, fix issue with concurrent access.
* NFC Worker: fix bug in nfc_worker_poll causing worker to skip sending ofNfcMessageTypeDeviceNotFound event
* Fix python linter: stick to old beta
2021-04-04 13:45:55 +03:00
its your bedtime
372710c31a
[FL-1019] New main screen and graphics ()
* new status bar, lock menu and dolphin activities screen

* lock icon indication 

* main screen animation, basic scene switching

* level progression calculations based on icounter value 

Co-authored-by: rusdacent <rusdacentx0x08@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2021-03-25 20:48:58 +03:00
rusdacent
799bc89870
Fix generate pic ()
* Add docker for genpic run

* Add docker for genpic run

* Test genpic

* Test genpic

* Restore prod CI settings

Co-authored-by: あく <alleteam@gmail.com>
2021-03-18 14:26:02 +03:00
rusdacent
3f10ce47f0
add option -j for make () 2021-03-08 20:29:44 +03:00
rusdacent
14c5307b98
Bump version for target in CI ()
* set target f5 for CI
* test env var for target version
* remove env variables from names of steps
2021-02-25 13:40:15 +03:00
rusdacent
918202a247
Fix error if dir exists () 2021-02-16 01:50:20 +03:00
rusdacent
2ca70cc6a2
Refactoring CI for storage with updates ()
* refactor CI
* fix depends for genpic CI
* fix paths for dfu files
* fix list of upload files
* add debug for upload
* bump version for docker-layer-caching
* edit opts for rsync
* Add clear remote dir
* Add bin file for upload
* Add new template for pic
* rm debug commands
* restore prod params for gen pic
* fix link to firmware
2021-02-15 02:53:17 +03:00
rusdacent
7c5de59f53
add force remove artifacts dir for CI () 2021-02-12 20:14:07 +03:00
rusdacent
0899c18d38
Add dfu converter ()
* Install hex2dfu in Dockerfile
* Add convert and upload dfu files for bootloader and firmware
2021-02-12 13:04:35 +03:00
DrZlo13
8f9b2513ff
[FL-140] Core api dynamic records ()
* SYSTEM: tickless mode with deep sleep.
* Move FreeRTOS ticks to lptim2
* API: move all sumbodules init routines to one place. Timebase: working lptim2 at tick source.
* API Timebase: lp-timer routines, timer access safe zones prediction and synchronization. FreeRTOS: adjust configuration for tickless mode.
* NFC: support for tickless mode.
* API Timebase: improve tick error handling in IRQ. Apploader: use insomnia mode to run applications.
* BLE: prevent sleep while core2 starting
* HAL: nap while in insomnia mode
* init records work
* try to implement record delete
* tests and flapp
* flapp subsystem
* new core functions to get app stat, simplify core code
* fix thread termination
* add strdup to core
* fix tests
* Refactoring: remove all unusued parts, update API usage, aggreagate API sources and headers, new record storage
* Refactoring: update furi record api usage, cleanup code
* Fix broken merge for freertos apps
* Core, Target: fix compilation warnings
* Drop firmware target local
* HAL Timebase, Power, Clock: semaphore guarded access to clock and power modes, better sleep mode.
* SD-Filesystem: wait for all deps to arrive before adding widget. Core, BLE: disable debug dump to serial.
* delete old app example-ipc
* delete old app fatfs list
* fix strobe app, add input header
* delete old display driver
* comment old app qr-code
* fix sd-card test, add forced widget update
* remove unused new core test
* increase heap to 128k
* comment and assert old core tests
* fix syntax

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2021-01-20 19:09:26 +03:00
rusdacent
c70ed2f349
Sh runner ()
* set self-hosted runner
* set GH runner for pylint
* fix upload to storage
* add workspace cleanup for CI
2021-01-07 22:10:07 +06:00
rusdacent
b7210eaf0e
Sh runner ()
* set self-hosted runner
* set GH runner for pylint
* fix upload to storage
2021-01-07 13:32:19 +06:00
rusdacent
b2b295c3f9
Sh runner ()
* set self-hosted runner
* set GH runner for pylint
2021-01-07 02:51:01 +06:00
coreglitch
c1c069e95f
F2 F3 deprecate ()
* move f3-1 to f4, remove f3
* remove f2
* remove firmware F3 for pipeline
* remove patch for F4 makefile
* fix fw makefile
* migrate bootloader to f4
2020-12-14 19:36:07 +03:00
Anna Prosvetova
c4b1d4b6f0
allow custom ssh port for artifacts server () 2020-12-09 02:31:45 +03:00
rusdacent
ee1e4bbabd
Add option for checkout code 2020-11-16 17:51:48 +03:00
rusdacent
466ea087a0
Refactoring firmware uploading to update server ()
* Replace f2 to f3
2020-11-15 13:14:52 +03:00
rusdacent
835bbffc85
Remove pull request trigger from ci.yml 2020-11-09 12:28:22 +03:00
rusdacent
8b4df4adc8
Remove branch opt from ci.yml 2020-11-09 12:16:59 +03:00
rusdacent
05efc6f41e
Prepare update ()
* Test ssh-action
* Test create full firmware
* Test condition for branch
* Test upload fullfirmware
* Test upload pic
* Test full firmaware and pic
* Fin opts
* Remove name for build job
2020-11-09 10:56:45 +03:00
あく
76e3fd3060
Firmware, Bootloader: add f3 target. ()
* Firmware, Bootloader: add f3 target. Refactor code to be portable across targets.
* Firmware: remove bkpt
* Makefile: debug agent. Debug: f3 platform throw openocd.
* freertos-openocd helper
* separate hal resources
* return of input_dump app
* using hew target resources abstration layer for backlight and blink
* dirty hack for input driver, f3 has no charging pin
* worked input interrupts
* working display
* F3: switch to 32mHz resonator
* F3: configure SD_CS pin
* NFC: port to F3.
* fat uart app
* sd card hal api
* separate CC1101 spi config
* faster spi gpio for sd card
* Assets: disable LFS
* Cube: disable css on LSE
* Input: format code
* Make: add bootloader source code to formatting rule
* F3: enable rf by default, adjust clock settings, map all pins where they should be.
* libs for coreglitch_demo_0
* nvic priority
* bus clocks all to 64
* lf-rfid timer and pin
* irda
* ir rx setup
* tim2 irq handler
* Makefile: environment aware mkdir
* Makefile, Irukagotchi: commit seq number.
* split falling and rising ir rx events
* Makefile: proper git branch detect on old git. Firmware: api fix.
* fix irda
* Makefile,Irukagotchi: date timestamp.
* NFC: adjust SPI speed
* Irukagotchi: format code
* Make: add blackmagic debug in host mode
* Makefile: detach blackmagic from terminal signals
* Makefile,Irukagotchi: stamp target
* add F3 bootloader/firmware to CI

Co-authored-by: Aleksandr Kutuzov <aku@plooks.com>
Co-authored-by: DrZlo13 <who.just.the.doctor@gmail.com>
Co-authored-by: aanper <mail@s3f.ru>
2020-11-06 13:52:50 +03:00
coreglitch
eb2679b982
Refactor F2/local before F3 merge ()
* add files from f3
* rollback lfs
* Move assets from LFS
* remove lfs from build

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2020-11-06 11:31:59 +03:00
Pavel Zhovner
14d77afc5a
Remove wiki from github () 2020-11-04 01:29:36 +03:00
rusdacent
90894cade2
Automatic upload binary firmware to update server ()
Automatic upload binary firmware to update server
2020-10-30 16:32:07 +03:00
あく
665f6d7d9c
Assets, Icons, UI toolkit. Part 1. ()
* Assets: import from gdrive
* Assets: fully working build pipeline and registry
* NFC: menu icon
* Gui: layers. Irukagotchi: base app to handle input on idle screen. Makefile: reboot after flash in dfu mode.
* ValueMutex: with lambda
* Assets: proper animation frames sorting
* ValueMutex: proper furi_open usage
* Assets,GUI: split icon into icon data and icon state.
* Format source code
* Docker: add python3 and imagemagic
* Irukagotchi: cleanup
* GUI: event lock moved to gui.
* Rfid: proper gui layer
* GUI: elements. Menu: frame and scroll
* GUI, Menu: format code.
* Menu: dual font main menu
* Menu: format sources
* GUI: 0 total scrollbar
* CI: enable lfs
* Menu: pixel perfect main menu

Co-authored-by: Aleksandr Kutuzov <aku@plooks.com>
Co-authored-by: aanper <mail@s3f.ru>
2020-10-26 20:00:17 +03:00
rusdacent
c8cc3c7dc8
Refactor pylint ()
* fix pylint paths

* add fake py file for test
* rm fake py file
* add fake txt file for test
* rm fake txt file
* fix paths for pull request
* fix for pull request trigger
* add fake py file for test
* rm fake py file
* add fake text file for test
* rm fake text file for test

Co-authored-by: coreglitch <mail@s3f.ru>
2020-10-26 09:59:16 +03:00
aanper
dc39be505b not build cc1101 in local build, app_release default in CI build 2020-10-19 09:56:12 +03:00
rusdacent
7570ac08a9
Fix codestyle check pipeline ()
* change continue-on-error to false

* add manual trigger

* revert manual trigger

* test fail checkstyle

* restore prev trigger and settings

* fix syntax

* fix exit code for codestyle

* try to break pipeline

* restore pipeline

Co-authored-by: aanper <mail@s3f.ru>
2020-10-15 19:50:21 +03:00
coreglitch
176e608c6d
Add minunit test framework ()
* add minunit tests

* fix logging

* ignore unexisting time service on embedded targets

* fix warning, issue with printf

* add exitcode

* migrate to printf

* indicate test by leds

* add testing description

* redesigned minunit tests to allow testing in separate files

* add test step for local target

* add failure test

* add restore test_check

* testing description

Co-authored-by: rusdacent <rusdacentx0x08@gmail.com>
Co-authored-by: DrZlo13 <who.just.the.doctor@gmail.com>
2020-10-10 13:32:06 +03:00
あく
3c2711102c
Target refactoring and cube update ()
* Lib: move cube to libs. Firmware: prepare for code base refactoring, detach from cube, port to cmsis_os2.

* Firmware, target f2: regenerate project with latest cube package, tim17 for os ticks.

* Firmware: unified codebase.

* Core: do not include semaphore on old targets. Firmware: dfu uplaod target.

* CI: submodules, add firmware build.

* CI: proper submodule config.

* refactor build system

* CI: update chain to use new targets. Documentation: update to match current structure.

* CI: clean before rebuild.

* Add local test

docker-compose exec dev make -C firmware TARGET=local TEST=1 run

* Makefile: target specific build directory. CI: updated artifacts path.

* Makefile: init git submodules if they don't exists.

* Makefile: debug rule now doesn't reset MCU, prevent SIGINT propagation to st-util.

* Makefile: proper rebuild sequence in zz and zzz

* Makefile: timestamp tracking for flash and upload commands.

* Apps: modular build. Input: fix flipper hal inline.

* Wiki: proper bootloader link.

* Applications: fix broken build for local targets.

* add st-flash to docker

* fix build

* force rebuild app

* move app force to firmware part

* fix build deps

* qrcode build ok

* fix example display

* add testing routine

* update build instruction

Co-authored-by: Aleksandr Kutuzov <aku@plooks.com>
Co-authored-by: aanper <mail@s3f.ru>
2020-10-07 12:37:43 +03:00
あく
805bb886c0
Implement bootloader ()
* Boot: switch to DFU routines. Implements  part 1 of 2.

* Boot: boot to DFU shortcut, hard reset USB on each boot. Implements  part 2 of 2.

* Deploy scripts: fix path for deploy dfu.

* Bootloader: initial version. Target_f2: rebase, update deployment scripts.

* Bootloader: cleanup, refactor switch2 proc. Readme,wiki: document bootloader.

* Wiki: deploy symlinks as files, bootloader info.

* Target_f2: valid flash size in linker script.

* Github CI: bootloader build and artifacts.

* Bootloader: rename platforms to targets.

* Bootloader: change dfu/os colors.

* disable set -e

* lint code

* add bootloader testing page

Co-authored-by: Aleksandr Kutuzov <aku@plooks.com>
Co-authored-by: aanper <mail@s3f.ru>
2020-10-01 02:05:04 +03:00
Nikita Beletskii
110a9efc3c
[WIP] Add syntax check for rust and C\C++ code ()
* proof of concept

* fix syntax for rust and add auto fix syntax

* fix syntax for C

* fix bug with files owner

* add information to wiki

* try to add ci

* format code from master

* even more format fixes

* change docker to docker-compose

* Exclude ./target_*/build directories from format check

* Run rustfmt only on project files

* add ulimit setup for long clang list

* merge

* fix rustfmt, exclude target Inc directory

* sync with master

* abspath

Co-authored-by: aanper <mail@s3f.ru>
Co-authored-by: Vadim Kaushan <admin@disasm.info>
2020-09-30 02:18:30 +03:00
Vadim Kaushan
33be546b94
Publish target_f1 artifacts in CI, build target_f2 in CI ()
* Publish target_f1 artifacts in CI

* Add target_f2 to CI
2020-09-29 15:40:47 +03:00
Pavel Zhovner
6dbd71ae40 Ignore wiki updates in CI 2020-09-28 02:36:32 +03:00
LionZXY
892a3b16da
Docker cache try 2 ()
* Docker cache try 2

* Update README.md

* Fix restore-key

* Update README.md
2020-09-17 12:11:06 +03:00
LionZXY
b333617a9b
Add docker cache 2020-09-17 11:06:25 +03:00
Pavel Zhovner
3ee9cf4f94
Fix broken path in publish_wiki action 2020-09-16 16:06:15 +03:00
Pavel Zhovner
748aa6c9bb Rewrite images path to obsolute in wiki repo 2020-09-15 12:26:24 +03:00
Daniel Solmann
0727e1560a
Created a Github Action for Python's Black formatter. ()
* Setup Python Linter

* Setup Rust linting

* Fix Rust lint

* Fixing rust lint again.

* Disabling rust linting, due to bug in current rustfmt release.

* Delete rustlint, cause @nikita-b has a working version.
2020-09-10 16:41:37 +03:00
Henry
a61055939e
Changed wiki deploy script to include subdirectories ()
Co-authored-by: Henry Pauli <henry@mixict.nl>
2020-09-03 11:55:10 +03:00
Vadim Kaushan
f7882dbff4
Remove docker cache to speedup builds () 2020-08-31 23:32:17 +03:00
Vadim Kaushan
a008c38078
Add GitHub Actions CI rules ()
* Prepare Dockerfile for GitHub Actions

* Add Action

* Add CI rules

* Move docker files into the docker directory to prevent fetching build artifacts

* Cache Docker layers

Co-authored-by: aanper <mail@s3f.ru>
2020-08-31 23:12:18 +03:00
Henry
32cbe87b10
Added README.md to wiki/Home.md ()
Co-authored-by: Henry Pauli <henry@mixict.nl>
2020-08-28 21:33:33 +03:00
Henry
c3fb016713
Add github action to publish the wiki ()
Signed-off-by: Henry Pauli <henry@mixict.nl>

Co-authored-by: Henry Pauli <henry@mixict.nl>
2020-08-28 19:21:08 +03:00